Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jun 2010 10:20:43 +0530
From:      "C. Jayachandran" <c.jayachandran@gmail.com>
To:        Alan Cox <alc@cs.rice.edu>
Cc:        "Jayachandran C." <jchandra@freebsd.org>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Randall Stewart <rrs@lakerest.net>
Subject:   Re: svn commit: r208589 - head/sys/mips/mips
Message-ID:  <AANLkTimIa3jmBPMhWIOcY6DenGpZ2ZYmqwDTWspVx0-u@mail.gmail.com>
In-Reply-To: <4C0731A5.7090301@cs.rice.edu>
References:  <201005271005.o4RA5eVu032269@svn.freebsd.org> <4C058145.3000707@cs.rice.edu> <AANLkTil955Ek-a3tek4Ony9NqrK5l2j7lNA4baRVPBzb@mail.gmail.com> <4C05F9BC.40409@cs.rice.edu> <AANLkTikdnvXsTwm8onl3MZPQmVfV-2GovB9--KMNnMgC@mail.gmail.com> <4C0731A5.7090301@cs.rice.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
--000e0cd1aa3efa00ac048818f237
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Thu, Jun 3, 2010 at 10:07 AM, Alan Cox <alc@cs.rice.edu> wrote:
> C. Jayachandran wrote:
>>
>> On Wed, Jun 2, 2010 at 11:57 AM, Alan Cox <alc@cs.rice.edu> wrote:
>>
>>>
>>> C. Jayachandran wrote:
>>>
>>>>
>>>> On Wed, Jun 2, 2010 at 3:23 AM, Alan Cox <alc@cs.rice.edu> wrote:
>>>>
>>>>
>>>>>
>>>>> On 5/27/2010 5:05 AM, Jayachandran C. wrote:
>>>>>
>>>>>
>>>>>>
>>>>>> Author: jchandra
>>>>>> Date: Thu May 27 10:05:40 2010
>>>>>> New Revision: 208589
>>>>>> URL: http://svn.freebsd.org/changeset/base/208589
>>>>>>
>>>>>> Log:
>>>>>> =A0Call VM_WAIT in pmap_ptpgzone_allocf() if =A0M_WAITOK is set.
>>>>>> =A0Removed unused variable.
>>>>>>
>>>>>> =A0Approved by: rrs (mentor)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> I'm afraid that this will work some of the time, but not all of the
>>>>> time.
>>>>> =A0Specifically, there is no guarantee that any of the available free=
 (or
>>>>> cached) pages after the VM_WAIT will fall within the range of suitabl=
e
>>>>> physical addresses. =A0Moreover, and perhaps most worrisome, is that =
this
>>>>> function could do a lot of spinning. =A0Every time this function slee=
ps
>>>>> and
>>>>> a
>>>>> single page is freed (or cached) by someone else, this function will =
be
>>>>> reawakened. =A0With a little bad luck, you could spin indefinitely.
>>>>>
>>>>> For essentially this reason, contigmalloc(), kmem_alloc_contig(), and
>>>>> kmem_alloc_attr() don't use VM_WAIT, but instead a function called
>>>>> vm_contig_grow_cache().
>>>>>
>>>>>
>>>>
>>>> I had seen the vm_contig_grow_cache() usage, but could not use it as
>>>> it was defined as a static function.
>>>>
>>>> I did not want to use contigmalloc()/kmem_alloc_contig() either,
>>>> because the pages in that memory region are already direct mapped and
>>>> setting up another mapping is not necessary. The overall idea is to
>>>> allocate pages in the direct mapped region for the page table entries
>>>> so that we don't take a TLB exception while accessing page tables
>>>> (which is costly as MIPS has a software TLB exception handler).
>>>>
>>>> Can you suggest the right way to do this? I will make the changes and
>>>> send a patch for approval.
>>>>
>>>>
>>>
>>> I would encourage you to make vm_contig_grow_cache() an extern function
>>> and
>>> use it. =A0(vm/vm_pageout.h is probably the best place for the function
>>> prototype.)
>>>
>>
>> I'll create a patch for this and related changes in mips/mips/pmap.c
>>
>>
>
> Great. =A0Thanks!
>
>>> If you're interested in taking this a small step further, it would make
>>> sense to add two parameters to vm_contig_grow_cache() and
>>> vm_contig_launder(): a "low" and a "high" physical address.
>>> =A0vm_contig_launder() could then skip pages that are outside the desir=
ed
>>> range.
>>>
>>
>> I am looking at this now, =A0part of the logic which
>> vm_phys_alloc_contig() uses to check pages address should work here.
>> Will send out changes for this, if it works out.
>>
>>
>
> I suspect that you'll just need to add two or three lines to
> vm_contig_launder(). =A0If something doesn't make sense, just e-mail me.

The current changes I have is attached - still testing it.

JC.

--000e0cd1aa3efa00ac048818f237
Content-Type: text/x-diff; charset=US-ASCII; name="vm_contig_grow_cache.patch"
Content-Disposition: attachment; filename="vm_contig_grow_cache.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g9z3vczo0

SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv
cG1hcC5jCShyZXZpc2lvbiAyMDg3NTMpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu
ZyBjb3B5KQpAQCAtOTY3LDE5ICs5NjcsMjMgQEAKIHsKIAl2bV9wYWdlX3QgbTsKIAl2bV9wYWRk
cl90IHBhZGRyOworCWludCB0cmllczsKIAkKIAlLQVNTRVJUKGJ5dGVzID09IFBBR0VfU0laRSwK
IAkJKCJwbWFwX3B0cGd6b25lX2FsbG9jZjogaW52YWxpZCBhbGxvY2F0aW9uIHNpemUgJWQiLCBi
eXRlcykpOwogCiAJKmZsYWdzID0gVU1BX1NMQUJfUFJJVjsKLQlmb3IgKDs7KSB7Ci0JCW0gPSB2
bV9waHlzX2FsbG9jX2NvbnRpZygxLCAwLCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUywKLQkJICAg
IFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKLQkJaWYgKG0gIT0gTlVMTCkKLQkJCWJyZWFrOwotCQlp
ZiAoKHdhaXQgJiBNX1dBSVRPSykgPT0gMCkKKwl0cmllcyA9IDA7CityZXRyeToKKwltID0gdm1f
cGh5c19hbGxvY19jb250aWcoMSwgMCwgTUlQU19LU0VHMF9MQVJHRVNUX1BIWVMsCisJICAgIFBB
R0VfU0laRSwgUEFHRV9TSVpFKTsKKwlpZiAobSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRyaWVzIDwgKCh3YWl0ICYgTV9OT1dBSVQpICE9IDAgPyAxIDogMykpIHsKKwkJCXZtX2Nv
bnRpZ19ncm93X2NhY2hlKHRyaWVzLCAwLCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUyk7CisJCQl0
cmllcysrOworCQkJZ290byByZXRyeTsKKwkJfSBlbHNlCiAJCQlyZXR1cm4gKE5VTEwpOwotCQlW
TV9XQUlUOwogCX0KIAogCXBhZGRyID0gVk1fUEFHRV9UT19QSFlTKG0pOwpJbmRleDogc3lzL3Zt
L3ZtX3BhZ2VvdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvdm0vdm1fcGFnZW91dC5oCShyZXZpc2lv
biAyMDg3NTMpCisrKyBzeXMvdm0vdm1fcGFnZW91dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NSArMTA1LDYgQEAKIGludCB2bV9wYWdlb3V0X2ZsdXNoKHZtX3BhZ2VfdCAqLCBpbnQsIGludCk7
CiB2b2lkIHZtX3BhZ2VvdXRfb29tKGludCBzaG9ydGFnZSk7CiBib29sZWFuX3Qgdm1fcGFnZW91
dF9wYWdlX2xvY2sodm1fcGFnZV90LCB2bV9wYWdlX3QgKik7Cit2b2lkIHZtX2NvbnRpZ19ncm93
X2NhY2hlKGludCwgdm1fcGFkZHJfdCwgdm1fcGFkZHJfdCk7CiAjZW5kaWYKICNlbmRpZgkvKiBf
Vk1fVk1fUEFHRU9VVF9IXyAqLwpJbmRleDogc3lzL3ZtL3ZtX2NvbnRpZy5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy92bS92bV9jb250aWcuYwkocmV2aXNpb24gMjA4NzUzKQorKysgc3lzL3ZtL3ZtX2Nv
bnRpZy5jCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw2IEBACiAjaW5jbHVkZSA8dm0vdm1f
cGh5cy5oPgogI2luY2x1ZGUgPHZtL3ZtX2V4dGVybi5oPgogCi1zdGF0aWMgdm9pZCB2bV9jb250
aWdfZ3Jvd19jYWNoZShpbnQgdHJpZXMpOwotCiBzdGF0aWMgaW50CiB2bV9jb250aWdfbGF1bmRl
cl9wYWdlKHZtX3BhZ2VfdCBtLCB2bV9wYWdlX3QgKm5leHQpCiB7CkBAIC0xNTcsOSArMTU1LDEw
IEBACiB9CiAKIHN0YXRpYyBpbnQKLXZtX2NvbnRpZ19sYXVuZGVyKGludCBxdWV1ZSkKK3ZtX2Nv
bnRpZ19sYXVuZGVyKGludCBxdWV1ZSwgdm1fcGFkZHJfdCBsb3csIHZtX3BhZGRyX3QgaGlnaCkK
IHsKIAl2bV9wYWdlX3QgbSwgbmV4dDsKKwl2bV9wYWRkcl90IHBhOwogCWludCBlcnJvcjsKIAog
CVRBSUxRX0ZPUkVBQ0hfU0FGRShtLCAmdm1fcGFnZV9xdWV1ZXNbcXVldWVdLnBsLCBwYWdlcSwg
bmV4dCkgewpAQCAtMTY4LDggKzE2NywxMyBAQAogCQlpZiAoKG0tPmZsYWdzICYgUEdfTUFSS0VS
KSAhPSAwKQogCQkJY29udGludWU7CiAKKwkJcGEgPSBWTV9QQUdFX1RPX1BIWVMobSk7CisJCWlm
IChwYSA8IGxvdyAmJiBwYSArIFBBR0VfU0laRSA+IGhpZ2gpCisJCQljb250aW51ZTsKKwogCQlp
ZiAoIXZtX3BhZ2VvdXRfcGFnZV9sb2NrKG0sICZuZXh0KSkKIAkJCWNvbnRpbnVlOworCiAJCUtB
U1NFUlQoVk1fUEFHRV9JTlFVRVVFMihtLCBxdWV1ZSksCiAJCSAgICAoInZtX2NvbnRpZ19sYXVu
ZGVyOiBwYWdlICVwJ3MgcXVldWUgaXMgbm90ICVkIiwgbSwgcXVldWUpKTsKIAkJZXJyb3IgPSB2
bV9jb250aWdfbGF1bmRlcl9wYWdlKG0sICZuZXh0KTsKQEAgLTIwMSw4ICsyMDUsOCBAQAogLyoK
ICAqIEluY3JlYXNlIHRoZSBudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLgogICovCi1zdGF0aWMgdm9p
ZAotdm1fY29udGlnX2dyb3dfY2FjaGUoaW50IHRyaWVzKQordm9pZAordm1fY29udGlnX2dyb3df
Y2FjaGUoaW50IHRyaWVzLCB2bV9wYWRkcl90IGxvdywgdm1fcGFkZHJfdCBoaWdoKQogewogCWlu
dCBhY3RsLCBhY3RtYXgsIGluYWN0bCwgaW5hY3RtYXg7CiAKQEAgLTIxMiwxMSArMjE2LDExIEBA
CiAJYWN0bCA9IDA7CiAJYWN0bWF4ID0gdHJpZXMgPCAyID8gMCA6IGNudC52X2FjdGl2ZV9jb3Vu
dDsKIGFnYWluOgotCWlmIChpbmFjdGwgPCBpbmFjdG1heCAmJiB2bV9jb250aWdfbGF1bmRlcihQ
UV9JTkFDVElWRSkpIHsKKwlpZiAoaW5hY3RsIDwgaW5hY3RtYXggJiYgdm1fY29udGlnX2xhdW5k
ZXIoUFFfSU5BQ1RJVkUsIGxvdywgaGlnaCkpIHsKIAkJaW5hY3RsKys7CiAJCWdvdG8gYWdhaW47
CiAJfQotCWlmIChhY3RsIDwgYWN0bWF4ICYmIHZtX2NvbnRpZ19sYXVuZGVyKFBRX0FDVElWRSkp
IHsKKwlpZiAoYWN0bCA8IGFjdG1heCAmJiB2bV9jb250aWdfbGF1bmRlcihQUV9BQ1RJVkUsIGxv
dywgaGlnaCkpIHsKIAkJYWN0bCsrOwogCQlnb3RvIGFnYWluOwogCX0KQEAgLTI1OSw3ICsyNjMs
NyBAQAogCQkJaWYgKHRyaWVzIDwgKChmbGFncyAmIE1fTk9XQUlUKSAhPSAwID8gMSA6IDMpKSB7
CiAJCQkJVk1fT0JKRUNUX1VOTE9DSyhvYmplY3QpOwogCQkJCXZtX21hcF91bmxvY2sobWFwKTsK
LQkJCQl2bV9jb250aWdfZ3Jvd19jYWNoZSh0cmllcyk7CisJCQkJdm1fY29udGlnX2dyb3dfY2Fj
aGUodHJpZXMsIGxvdywgaGlnaCk7CiAJCQkJdm1fbWFwX2xvY2sobWFwKTsKIAkJCQlWTV9PQkpF
Q1RfTE9DSyhvYmplY3QpOwogCQkJCWdvdG8gcmV0cnk7CkBAIC0zNjYsNyArMzcwLDcgQEAKIAlw
YWdlcyA9IHZtX3BoeXNfYWxsb2NfY29udGlnKG5wZ3MsIGxvdywgaGlnaCwgYWxpZ25tZW50LCBi
b3VuZGFyeSk7CiAJaWYgKHBhZ2VzID09IE5VTEwpIHsKIAkJaWYgKHRyaWVzIDwgKChmbGFncyAm
IE1fTk9XQUlUKSAhPSAwID8gMSA6IDMpKSB7Ci0JCQl2bV9jb250aWdfZ3Jvd19jYWNoZSh0cmll
cyk7CisJCQl2bV9jb250aWdfZ3Jvd19jYWNoZSh0cmllcywgbG93LCBoaWdoKTsKIAkJCXRyaWVz
Kys7CiAJCQlnb3RvIHJldHJ5OwogCQl9Cg==
--000e0cd1aa3efa00ac048818f237--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTimIa3jmBPMhWIOcY6DenGpZ2ZYmqwDTWspVx0-u>