Date: Fri, 6 Aug 2010 15:59:09 +0530 From: "Jayachandran C." <c.jayachandran@gmail.com> To: Alan Cox <alc@cs.rice.edu> Cc: "Jayachandran C." <jchandra@freebsd.org>, mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips Message-ID: <AANLkTinxAkRTK8pLRkQ7JwesNkuwmuiRevOZMDpj_aj7@mail.gmail.com> In-Reply-To: <4C5BA088.7060105@cs.rice.edu> References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> <AANLkTinP7eMNm4yp6T2TTteSvthdgLJOj-ihHrQJ4T49@mail.gmail.com> <AANLkTi=vkG-cntJYYEdhO4AzOO91LB6n%2B45dUSxCMTp3@mail.gmail.com> <4C5BA088.7060105@cs.rice.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
--0016363ba3e225e292048d2523fa Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Aug 6, 2010 at 11:11 AM, Alan Cox <alc@cs.rice.edu> wrote: > On 08/05/2010 09:25, Jayachandran C. wrote: >> >> On Thu, Aug 5, 2010 at 4:26 PM, Jayachandran C. >> <c.jayachandran@gmail.com> =A0wrote: >> >>> >>> On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox<alc@cs.rice.edu> =A0wrote: >>> >>>> >>>> Just an observation ... >>>> >>>> Jayachandran C. wrote: >>>> >>>>> >>>>> Author: jchandra >>>>> Date: Wed Aug =A04 14:12:09 2010 >>>>> New Revision: 210846 >>>>> URL: http://svn.freebsd.org/changeset/base/210846 >>>>> >>>>> Log: >>>>> =A0Add 3 level page tables for MIPS in n64. >>>>> =A0 =A0- 32 bit compilation will still use old 2 level page tables >>>>> =A0- re-arrange pmap code so that adding another level is easier >>>>> =A0- pmap code for 3 level page tables for n64 >>>>> =A0- update TLB handler to traverse 3 levels in n64 >>>>> =A0 =A0Reviewed by: =A0 =A0 =A0 =A0jmallett >>>>> >>>> >>>> MIPS doesn't really need to use atomic_cmpset_int() in situations like >>>> this >>>> because the software dirty bit emulation in trap.c acquires the pmap >>>> lock. >>>> =A0Atomics like this appear to be a carryover from i386 where the >>>> hardware-managed TLB might concurrently set the modified bit. >>>> >>> >>> Then I guess we should be able to use *pte directly, without pbits, >>> obits and the retry loop. >>> Will try this change... >>> >> >> Can you have a look at the attached patch and see if it is okay? =A0This >> has the above changes, and I have attempted to fix the other issue you >> had reported on wired mapping count too. >> > > The patch looks good. > >> There are a few calls for loadandclear() on pte too, with pmap lock >> held, can this be avoided too? >> > > I haven't looked at them, but almost certainly yes. The calls are in pmap_remove_pte(), pmap_remove_all() and get_pv_entry(). the attached patch changes it normal pointer operations. Thought I would post it for review before checking in... Thanks, JC. --0016363ba3e225e292048d2523fa Content-Type: text/x-patch; charset=US-ASCII; name="loadandclear.patch" Content-Disposition: attachment; filename="loadandclear.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcivyj9w0 SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv cG1hcC5jCShyZXZpc2lvbiAyMTA5MjIpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu ZyBjb3B5KQpAQCAtMTM1Miw5ICsxMzUyLDExIEBACiAJCQlwbWFwLT5wbV9zdGF0cy5yZXNpZGVu dF9jb3VudC0tOwogCQkJcHRlID0gcG1hcF9wdGUocG1hcCwgdmEpOwogCQkJS0FTU0VSVChwdGUg IT0gTlVMTCwgKCJwdGUiKSk7Ci0JCQlvbGRwdGUgPSBsb2FkYW5kY2xlYXIoKHVfaW50ICopcHRl KTsKKwkJCW9sZHB0ZSA9ICpwdGU7CiAJCQlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkpCiAJCQkJ KnB0ZSA9IFBURV9HOworCQkJZWxzZQorCQkJCSpwdGUgPSAwOwogCQkJS0FTU0VSVCghcHRlX3Rl c3QoJm9sZHB0ZSwgUFRFX1cpLAogCQkJICAgICgid2lyZWQgcHRlIGZvciB1bndpcmVkIHBhZ2Ui KSk7CiAJCQlpZiAobS0+bWQucHZfZmxhZ3MgJiBQVl9UQUJMRV9SRUYpCkBAIC0xNDk0LDkgKzE0 OTYsMTEgQEAKIAltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1ZXVlX210eCwgTUFfT1dORUQpOwogCVBN QVBfTE9DS19BU1NFUlQocG1hcCwgTUFfT1dORUQpOwogCi0Jb2xkcHRlID0gbG9hZGFuZGNsZWFy KCh1X2ludCAqKXB0cSk7CisJb2xkcHRlID0gKnB0cTsKIAlpZiAoaXNfa2VybmVsX3BtYXAocG1h cCkpCiAJCSpwdHEgPSBQVEVfRzsKKwllbHNlCisJCSpwdHEgPSAwOwogCiAJaWYgKHB0ZV90ZXN0 KCZvbGRwdGUsIFBURV9XKSkKIAkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQgLT0gMTsKQEAg LTE2NTcsOSArMTY2MSwxMSBAQAogCiAJCXB0ZSA9IHBtYXBfcHRlKHB2LT5wdl9wbWFwLCBwdi0+ cHZfdmEpOwogCi0JCXRwdGUgPSBsb2FkYW5kY2xlYXIoKHVfaW50ICopcHRlKTsKKwkJdHB0ZSA9 ICpwdGU7CiAJCWlmIChpc19rZXJuZWxfcG1hcChwdi0+cHZfcG1hcCkpCiAJCQkqcHRlID0gUFRF X0c7CisJCWVsc2UKKwkJCSpwdGUgPSAwOwogCiAJCWlmIChwdGVfdGVzdCgmdHB0ZSwgUFRFX1cp KQogCQkJcHYtPnB2X3BtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50LS07Cg== --0016363ba3e225e292048d2523fa--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTinxAkRTK8pLRkQ7JwesNkuwmuiRevOZMDpj_aj7>