Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jun 2010 23:41:57 +0530
From:      "Jayachandran C." <c.jayachandran@gmail.com>
To:        Alan Cox <alc@cs.rice.edu>
Cc:        Kostik Belousov <kostikbel@gmail.com>, "Jayachandran C." <jchandra@freebsd.org>, mips@freebsd.org
Subject:   Re: svn commit: r208589 - head/sys/mips/mips
Message-ID:  <AANLkTimRND9G9udHWzhN06wTJcRCN-OEjPPXctOoyj9_@mail.gmail.com>
In-Reply-To: <AANLkTimWh77REpi3ZD0BOihZit5qKNYNbtAx5PWQRYBX@mail.gmail.com>
References:  <AANLkTimIa3jmBPMhWIOcY6DenGpZ2ZYmqwDTWspVx0-u@mail.gmail.com> <AANLkTil2gE1niUWCHnsTlQvibhxBh7QYwD0TTWo0rj5c@mail.gmail.com> <AANLkTinA2D5iTDGPbflHVzLyAZW-ZewjJkUWWL8FVskr@mail.gmail.com> <4C07E07B.9060802@cs.rice.edu> <AANLkTimjyPc_AXKP1yaJaF1BN7CAGBeNikVzcp9OCb4P@mail.gmail.com> <4C09345F.9040300@cs.rice.edu> <AANLkTinmFOZY3OlaoKStxlNIRBt2G2I4ILkQ1P0CjozG@mail.gmail.com> <4C0D2BEA.6060103@cs.rice.edu> <AANLkTikZxx_30H9geHvZYkYd0sE-wiuZljEd0PAi14ca@mail.gmail.com> <4C0D3F40.2070101@cs.rice.edu> <20100607202844.GU83316@deviant.kiev.zoral.com.ua> <4C0D64B7.7060604@cs.rice.edu> <AANLkTilBxdXxXrWC1cAT0wX9ubmFrvaAdk4feG6PwDYQ@mail.gmail.com> <4C0DE424.9080601@cs.rice.edu> <AANLkTinzIUOykgwtHlJ2vDwYS9as3ha_BYiy_qRd5h2Q@mail.gmail.com> <AANLkTimWh77REpi3ZD0BOihZit5qKNYNbtAx5PWQRYBX@mail.gmail.com>

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

On Wed, Jun 9, 2010 at 11:20 AM, Jayachandran C.
<c.jayachandran@gmail.com> wrote:
> On Wed, Jun 9, 2010 at 3:01 AM, Jayachandran C.
> <c.jayachandran@gmail.com> wrote:
>> On Tue, Jun 8, 2010 at 12:03 PM, Alan Cox <alc@cs.rice.edu> wrote:
>>>
>>> VM_FREEPOOL_DIRECT is used by at least amd64 and ia64 for page table pa=
ges
>>> and small kernel memory allocations. =A0Unlike mips, these machines don=
't have
>>> MMU support for a direct map. =A0Their direct maps are just a range of
>>> mappings in the regular (kernel) page table. =A0So, unlike mips, access=
es
>>> through their direct map may still miss in the TLB and require a page t=
able
>>> walk. =A0VM_FREEPOOL_* is a way to increase the physical locality (or
>>> clustering) of page allocations, so that, for example, page table page
>>> accesses by the pmap on amd64 are less likely to miss in the TLB. =A0Ho=
wever,
>>> it doesn't place a hard restriction on the range of physical addresses =
that
>>> will be used, which you need for mips.
>>>
>>> The impact of this clustering can be significant. =A0For example, on am=
d64 we
>>> use 2MB page mappings to implement the direct map. =A0However, old Opte=
rons
>>> only had 8 data TLB entries for 2MB page mappings. =A0For a uniprocesso=
r
>>> kernel running on such an Opteron, I measured an 18% reduction in syste=
m
>>> time during a buildworld with the introduction of VM_FREEPOOL_DIRECT. =
=A0(See
>>> the commit logs for vm/vm_phys.c and the comment that precedes the
>>> VM_NFREEORDER definition on amd64.)
>>>
>>> Until such time as superpage support is ported to mips from the amd64/i=
386
>>> pmaps, I don't think there is a point in having more than one VM_FREEPO=
OL_*
>>> on mips. =A0And then, the point would be to reduce fragmentation of the
>>> physical memory that could be caused by small allocations, such as page
>>> table pages.
>>
>> Thanks for the detailed explanation.
>>
>> Also, after looking at the code again, =A0I think vm_phys_alloc_contig()
>> can optimized not to look into segments which lie outside the area of
>> interest. The patch is:
> [...]
>> This change, along with the vmparam.h changes for HIGHMEM, I think we
>> should be able to use =A0vm_phys_alloc_contig() for page table pages (or
>> have I again missed something fundamental?).
>
> That patch was obviously wrong - many segments can map to a freelist
> as the comment right above my change noted.
>
> But the idea of eliminating freelists for which all the segments are
> outside (low,high) may still be useful, will look at this some more.

I have attached a patch (also at
http://people.freebsd.org/~jchandra/pmap-with-HIGHMEM-freelist.patch)
which reverts most of the changes I did to convert the page table page
allocation to use UMA zone, and replaces it with an implementation
using vm_phys_alloc_contig() and vm_contig_grow_cache(). This creates
a new HIGHMEM freelist for mips for memory outside the KSEG0 area, and
makes a few changes in vm_phys_alloc_contig() to skip freelists for
which all the segments fall outside the address range requested.

With this the buildworld perf on MIPS is similar to what I got with
the older code with zones.

If this approach is okay, I will do another round of
testing(buildworld passes, but I haven't really tested the case where
grow_cache is called).  If the changes are not okay, I will add
another page allocator which takes freelist as argument as you had
suggested earlier, instead of the vm_phys_alloc_contig() changes.

Thanks,
JC.

--0016364edd086c06ef04889cd7fe
Content-Type: application/octet-stream; 
	name="pmap-with-HIGHMEM-freelist.patch"
Content-Disposition: attachment; filename="pmap-with-HIGHMEM-freelist.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ga8h2ua20

SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvdm1wYXJhbS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBz
L2luY2x1ZGUvdm1wYXJhbS5oCShyZXZpc2lvbiAyMDg4OTApCisrKyBzeXMvbWlwcy9pbmNsdWRl
L3ZtcGFyYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw5IEBACiAjZGVmaW5lCVZN
X01BWFVTRVJfQUREUkVTUwkoKHZtX29mZnNldF90KTB4ODAwMDAwMDApCiAjZGVmaW5lCVZNX01B
WF9NTUFQX0FERFIJVk1fTUFYVVNFUl9BRERSRVNTCiAKLSNkZWZpbmUJVk1fTUlOX0tFUk5FTF9B
RERSRVNTCQkoKHZtX29mZnNldF90KTB4QzAwMDAwMDApCi0jZGVmaW5lCVZNX01BWF9LRVJORUxf
QUREUkVTUwkJKCh2bV9vZmZzZXRfdCkweEZGRkZDMDAwKQorI2RlZmluZQlWTV9NSU5fS0VSTkVM
X0FERFJFU1MJKCh2bV9vZmZzZXRfdCkweEMwMDAwMDAwKQorI2RlZmluZQlWTV9NQVhfS0VSTkVM
X0FERFJFU1MJKCh2bV9vZmZzZXRfdCkweEZGRkZDMDAwKQorI2RlZmluZQlWTV9ISUdITUVNX0FE
RFJFU1MJKCh2bV9wYWRkcl90KTB4MjAwMDAwMDApCiAjaWYgMAogI2RlZmluZQlLRVJOQkFTRQkJ
KFZNX01JTl9LRVJORUxfQUREUkVTUykKICNlbHNlCkBAIC0xNjgsMTMgKzE2OSwxNSBAQAogI2Rl
ZmluZQlWTV9GUkVFUE9PTF9ESVJFQ1QJMQogCiAvKgotICogd2Ugc3VwcG9ydCAxIGZyZWUgbGlz
dDoKKyAqIHdlIHN1cHBvcnQgMiBmcmVlIGxpc3RzOgogICoKLSAqCS0gREVGQVVMVCBmb3IgYWxs
IHN5c3RlbXMKKyAqCS0gREVGQVVMVCBmb3IgZGlyZWN0IG1hcHBlZCAoS1NFRzApIHBhZ2VzCisg
KgktIEhJR0hNRU0gZm9yIG90aGVyIHBhZ2VzIAogICovCiAKLSNkZWZpbmUJVk1fTkZSRUVMSVNU
CQkxCi0jZGVmaW5lCVZNX0ZSRUVMSVNUX0RFRkFVTFQJMAorI2RlZmluZQlWTV9ORlJFRUxJU1QJ
CTIKKyNkZWZpbmUJVk1fRlJFRUxJU1RfREVGQVVMVAkxCisjZGVmaW5lCVZNX0ZSRUVMSVNUX0hJ
R0hNRU0JMAogCiAvKgogICogVGhlIGxhcmdlc3QgYWxsb2NhdGlvbiBzaXplIGlzIDFNQi4KSW5k
ZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvcG1h
cC5jCShyZXZpc2lvbiAyMDg4OTApCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2luZyBj
b3B5KQpAQCAtMTg0LDggKzE4NCw2IEBACiBzdGF0aWMgaW50IGluaXRfcHRlX3Byb3Qodm1fb2Zm
c2V0X3QgdmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCk7CiBzdGF0aWMgdm9pZCBwbWFw
X1RMQl9pbnZhbGlkYXRlX2tlcm5lbCh2bV9vZmZzZXRfdCk7CiBzdGF0aWMgdm9pZCBwbWFwX1RM
Ql91cGRhdGVfa2VybmVsKHZtX29mZnNldF90LCBwdF9lbnRyeV90KTsKLXN0YXRpYyB2bV9wYWdl
X3QgcG1hcF9hbGxvY19wdGVfcGFnZShwbWFwX3QsIHVuc2lnbmVkIGludCwgaW50LCB2bV9vZmZz
ZXRfdCAqKTsKLXN0YXRpYyB2b2lkIHBtYXBfcmVsZWFzZV9wdGVfcGFnZSh2bV9wYWdlX3QpOwog
CiAjaWZkZWYgU01QCiBzdGF0aWMgdm9pZCBwbWFwX2ludmFsaWRhdGVfcGFnZV9hY3Rpb24odm9p
ZCAqYXJnKTsKQEAgLTE5MywxMCArMTkxLDYgQEAKIHN0YXRpYyB2b2lkIHBtYXBfdXBkYXRlX3Bh
Z2VfYWN0aW9uKHZvaWQgKmFyZyk7CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcG1hcF9wdHBnem9u
ZV9kdG9yKHZvaWQgKm1lbSwgaW50IHNpemUsIHZvaWQgKmFyZyk7Ci1zdGF0aWMgdm9pZCAqcG1h
cF9wdHBnem9uZV9hbGxvY2YodW1hX3pvbmVfdCwgaW50LCB1X2ludDhfdCAqLCBpbnQpOwotc3Rh
dGljIHVtYV96b25lX3QgcHRwZ3pvbmU7Ci0KIHN0cnVjdCBsb2NhbF9zeXNtYXBzIHsKIAlzdHJ1
Y3QgbXR4IGxvY2s7CiAJdm1fb2Zmc2V0X3QgYmFzZTsKQEAgLTMyOSw3ICszMjMsNyBAQAogfQog
CiAvKgotICoJQm9vdHN0cmFwIHRoZSBzeXN0ZW0gZW5vdWdoIHRvIHJ1biB3aXRoIHZpcnR1YWwg
bWVtb3J5LiAgVGhpcworICogQm9vdHN0cmFwIHRoZSBzeXN0ZW0gZW5vdWdoIHRvIHJ1biB3aXRo
IHZpcnR1YWwgbWVtb3J5LiAgVGhpcwogICogYXNzdW1lcyB0aGF0IHRoZSBwaHlzX2F2YWlsIGFy
cmF5IGhhcyBiZWVuIGluaXRpYWxpemVkLgogICovCiB2b2lkCkBAIC01MzUsMTAgKzUyOSw2IEBA
CiAJcHZfZW50cnlfbWF4ID0gUE1BUF9TSFBHUEVSUFJPQyAqIG1heHByb2MgKyBjbnQudl9wYWdl
X2NvdW50OwogCXB2X2VudHJ5X2hpZ2hfd2F0ZXIgPSA5ICogKHB2X2VudHJ5X21heCAvIDEwKTsK
IAl1bWFfem9uZV9zZXRfb2JqKHB2em9uZSwgJnB2em9uZV9vYmosIHB2X2VudHJ5X21heCk7Ci0K
LQlwdHBnem9uZSA9IHVtYV96Y3JlYXRlKCJQVCBFTlRSWSIsIFBBR0VfU0laRSwgTlVMTCwgcG1h
cF9wdHBnem9uZV9kdG9yLAotCSAgICBOVUxMLCBOVUxMLCBQQUdFX1NJWkUgLSAxLCBVTUFfWk9O
RV9OT0ZSRUUgfCBVTUFfWk9ORV9aSU5JVCk7Ci0JdW1hX3pvbmVfc2V0X2FsbG9jZihwdHBnem9u
ZSwgcG1hcF9wdHBnem9uZV9hbGxvY2YpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC04ODUsMTIgKzg3NSw4IEBACiAJLyoKIAkg
KiBJZiB0aGUgcGFnZSBpcyBmaW5hbGx5IHVud2lyZWQsIHNpbXBseSBmcmVlIGl0LgogCSAqLwor
CXZtX3BhZ2VfZnJlZV96ZXJvKG0pOwogCWF0b21pY19zdWJ0cmFjdF9pbnQoJmNudC52X3dpcmVf
Y291bnQsIDEpOwotCVBNQVBfVU5MT0NLKHBtYXApOwotCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygp
OwotCXBtYXBfcmVsZWFzZV9wdGVfcGFnZShtKTsKLQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7Ci0J
UE1BUF9MT0NLKHBtYXApOwogCXJldHVybiAoMSk7CiB9CiAKQEAgLTk0OSw5NiArOTM1LDM2IEBA
CiAJYnplcm8oJnBtYXAtPnBtX3N0YXRzLCBzaXplb2YgcG1hcC0+cG1fc3RhdHMpOwogfQogCisK
IHN0YXRpYyB2b2lkCi1wbWFwX3B0cGd6b25lX2R0b3Iodm9pZCAqbWVtLCBpbnQgc2l6ZSwgdm9p
ZCAqYXJnKQorcG1hcF9ncm93X3BhZ2VfY2FjaGUoaW50IHdhaXQpCiB7Ci0jaWZkZWYgSU5WQVJJ
QU5UUwotCXN0YXRpYyBjaGFyIHplcm9wYWdlW1BBR0VfU0laRV07Ci0KLQlLQVNTRVJUKHNpemUg
PT0gUEFHRV9TSVpFLAotCQkoInBtYXBfcHRwZ3pvbmVfZHRvcjogaW52YWxpZCBzaXplICVkIiwg
c2l6ZSkpOwotCUtBU1NFUlQoYmNtcChtZW0sIHplcm9wYWdlLCBQQUdFX1NJWkUpID09IDAsCi0J
CSgicG1hcF9wdHBnem9uZV9kdG9yOiBmcmVlaW5nIGEgbm9uLXplcm9lZCBwYWdlIikpOwotI2Vu
ZGlmCisJcHJpbnRmKCJbJXNdIHdhaXQgJXhcbiIsIF9fZnVuY19fLCB3YWl0KTsKKwl2bV9jb250
aWdfZ3Jvd19jYWNoZSgzLCAwLCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUyk7CiB9CiAKLXN0YXRp
YyB2b2lkICoKLXBtYXBfcHRwZ3pvbmVfYWxsb2NmKHVtYV96b25lX3Qgem9uZSwgaW50IGJ5dGVz
LCB1X2ludDhfdCAqZmxhZ3MsIGludCB3YWl0KQotewotCXZtX3BhZ2VfdCBtOwotCXZtX3BhZGRy
X3QgcGFkZHI7Ci0JaW50IHRyaWVzOwotCQotCUtBU1NFUlQoYnl0ZXMgPT0gUEFHRV9TSVpFLAot
CQkoInBtYXBfcHRwZ3pvbmVfYWxsb2NmOiBpbnZhbGlkIGFsbG9jYXRpb24gc2l6ZSAlZCIsIGJ5
dGVzKSk7CiAKLQkqZmxhZ3MgPSBVTUFfU0xBQl9QUklWOwotCXRyaWVzID0gMDsKLXJldHJ5Ogot
CW0gPSB2bV9waHlzX2FsbG9jX2NvbnRpZygxLCAwLCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUywK
LQkgICAgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwotCWlmIChtID09IE5VTEwpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodHJpZXMgPCAoKHdhaXQgJiBNX05PV0FJVCkgIT0gMCA/IDEgOiAzKSkgewot
CQkJdm1fY29udGlnX2dyb3dfY2FjaGUodHJpZXMsIDAsIE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlT
KTsKLQkJCXRyaWVzKys7Ci0JCQlnb3RvIHJldHJ5OwotCQl9IGVsc2UKLQkJCXJldHVybiAoTlVM
TCk7Ci0JfQotCi0JcGFkZHIgPSBWTV9QQUdFX1RPX1BIWVMobSk7Ci0JcmV0dXJuICgodm9pZCAq
KU1JUFNfUEhZU19UT19LU0VHMChwYWRkcikpOwotfQkKLQogc3RhdGljIHZtX3BhZ2VfdAotcG1h
cF9hbGxvY19wdGVfcGFnZShwbWFwX3QgcG1hcCwgdW5zaWduZWQgaW50IGluZGV4LCBpbnQgd2Fp
dCwgdm1fb2Zmc2V0X3QgKnZhcCkKK3BtYXBfYWxsb2NfcHRlX3BhZ2UodW5zaWduZWQgaW50IGlu
ZGV4LCBpbnQgd2FpdCkKIHsKLQl2bV9wYWRkcl90IHBhZGRyOwotCXZvaWQgKnZhOwogCXZtX3Bh
Z2VfdCBtOwotCWludCBsb2NrZWQ7CiAKLQlsb2NrZWQgPSBtdHhfb3duZWQoJnBtYXAtPnBtX210
eCk7Ci0JaWYgKGxvY2tlZCkgewotCQltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1ZXVlX210eCwgTUFf
T1dORUQpOwotCQlQTUFQX1VOTE9DSyhwbWFwKTsKLQkJdm1fcGFnZV91bmxvY2tfcXVldWVzKCk7
Ci0JfQotCXZhID0gdW1hX3phbGxvYyhwdHBnem9uZSwgd2FpdCk7Ci0JaWYgKGxvY2tlZCkgewot
CQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7Ci0JCVBNQVBfTE9DSyhwbWFwKTsKLQl9Ci0JaWYgKHZh
ID09IE5VTEwpCisJbSA9IHZtX3BoeXNfYWxsb2NfY29udGlnKDEsIDAsIE1JUFNfS1NFRzBfTEFS
R0VTVF9QSFlTLAorCSAgICBQQUdFX1NJWkUsIDApOworCWlmIChtID09IE5VTEwpCiAJCXJldHVy
biAoTlVMTCk7CiAKLQlwYWRkciA9IE1JUFNfS1NFRzBfVE9fUEhZUyh2YSk7Ci0JbSA9IFBIWVNf
VE9fVk1fUEFHRShwYWRkcik7Ci0JCi0JaWYgKCFsb2NrZWQpCi0JCXZtX3BhZ2VfbG9ja19xdWV1
ZXMoKTsKKwlpZiAoKG0tPmZsYWdzICYgUEdfWkVSTykgPT0gMCkKKwkJcG1hcF96ZXJvX3BhZ2Uo
bSk7CisKIAltLT5waW5kZXggPSBpbmRleDsKIAltLT52YWxpZCA9IFZNX1BBR0VfQklUU19BTEw7
Ci0JbS0+d2lyZV9jb3VudCA9IDE7Ci0JaWYgKCFsb2NrZWQpCi0JCXZtX3BhZ2VfdW5sb2NrX3F1
ZXVlcygpOwotCiAJYXRvbWljX2FkZF9pbnQoJmNudC52X3dpcmVfY291bnQsIDEpOwotCSp2YXAg
PSAodm1fb2Zmc2V0X3QpdmE7CisJbS0+d2lyZV9jb3VudCA9IDE7CiAJcmV0dXJuIChtKTsKIH0K
IAotc3RhdGljIHZvaWQKLXBtYXBfcmVsZWFzZV9wdGVfcGFnZSh2bV9wYWdlX3QgbSkKLXsKLQl2
b2lkICp2YTsKLQl2bV9wYWRkcl90IHBhZGRyOwogCi0JcGFkZHIgPSBWTV9QQUdFX1RPX1BIWVMo
bSk7Ci0JdmEgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMChwYWRkcik7Ci0JdW1hX3pmcmVl
KHB0cGd6b25lLCB2YSk7Ci19Ci0KIC8qCiAgKiBJbml0aWFsaXplIGEgcHJlYWxsb2NhdGVkIGFu
ZCB6ZXJvZWQgcG1hcCBzdHJ1Y3R1cmUsCiAgKiBzdWNoIGFzIG9uZSBpbiBhIHZtc3BhY2Ugc3Ry
dWN0dXJlLgpAQCAtMTA1NSwxMCArOTgxLDEwIEBACiAJLyoKIAkgKiBhbGxvY2F0ZSB0aGUgcGFn
ZSBkaXJlY3RvcnkgcGFnZQogCSAqLwotCXB0ZHBnID0gcG1hcF9hbGxvY19wdGVfcGFnZShwbWFw
LCBOVVNFUlBHVEJMUywgTV9XQUlUT0ssICZwdGR2YSk7Ci0JaWYgKHB0ZHBnID09IE5VTEwpCi0J
CXJldHVybiAoMCk7CisJd2hpbGUgKChwdGRwZyA9IHBtYXBfYWxsb2NfcHRlX3BhZ2UoTlVTRVJQ
R1RCTFMsIE1fV0FJVE9LKSkgPT0gTlVMTCkKKwkgICAgICAgcG1hcF9ncm93X3BhZ2VfY2FjaGUo
TV9XQUlUT0spOwogCisJcHRkdmEgPSBNSVBTX1BIWVNfVE9fS1NFRzAoVk1fUEFHRV9UT19QSFlT
KHB0ZHBnKSk7CiAJcG1hcC0+cG1fc2VndGFiID0gKHBkX2VudHJ5X3QgKilwdGR2YTsKIAlwbWFw
LT5wbV9hY3RpdmUgPSAwOwogCXBtYXAtPnBtX3B0cGhpbnQgPSBOVUxMOwpAQCAtMTA4OSwxNSAr
MTAxNSwyOCBAQAogCS8qCiAJICogRmluZCBvciBmYWJyaWNhdGUgYSBuZXcgcGFnZXRhYmxlIHBh
Z2UKIAkgKi8KLQltID0gcG1hcF9hbGxvY19wdGVfcGFnZShwbWFwLCBwdGVwaW5kZXgsIGZsYWdz
LCAmcHRldmEpOwotCWlmIChtID09IE5VTEwpCisJaWYgKChtID0gcG1hcF9hbGxvY19wdGVfcGFn
ZShwdGVwaW5kZXgsIGZsYWdzKSkgPT0gTlVMTCkgeworCQlpZiAoZmxhZ3MgJiBNX1dBSVRPSykg
eworCQkJUE1BUF9VTkxPQ0socG1hcCk7CisJCQl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKKwkJ
CXBtYXBfZ3Jvd19wYWdlX2NhY2hlKGZsYWdzKTsKKwkJCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsK
KwkJCVBNQVBfTE9DSyhwbWFwKTsKKwkJfQorCisJCS8qCisJCSAqIEluZGljYXRlIHRoZSBuZWVk
IHRvIHJldHJ5LglXaGlsZSB3YWl0aW5nLCB0aGUgcGFnZQorCQkgKiB0YWJsZSBwYWdlIG1heSBo
YXZlIGJlZW4gYWxsb2NhdGVkLgorCQkgKi8KIAkJcmV0dXJuIChOVUxMKTsKKwl9CiAKIAkvKgog
CSAqIE1hcCB0aGUgcGFnZXRhYmxlIHBhZ2UgaW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNl
LCBpZiBpdAogCSAqIGlzbid0IGFscmVhZHkgdGhlcmUuCiAJICovCiAKKwlwdGV2YSA9IE1JUFNf
UEhZU19UT19LU0VHMChWTV9QQUdFX1RPX1BIWVMobSkpOwogCXBtYXAtPnBtX3N0YXRzLnJlc2lk
ZW50X2NvdW50Kys7CiAJcG1hcC0+cG1fc2VndGFiW3B0ZXBpbmRleF0gPSAocGRfZW50cnlfdClw
dGV2YTsKIApAQCAtMTE5Myw3ICsxMTMyLDcgQEAKIAogCXB0ZHBnLT53aXJlX2NvdW50LS07CiAJ
YXRvbWljX3N1YnRyYWN0X2ludCgmY250LnZfd2lyZV9jb3VudCwgMSk7Ci0JcG1hcF9yZWxlYXNl
X3B0ZV9wYWdlKHB0ZHBnKTsKKwl2bV9wYWdlX2ZyZWVfemVybyhwdGRwZyk7CiAJUE1BUF9MT0NL
X0RFU1RST1kocG1hcCk7CiB9CiAKQEAgLTEyMDMsNyArMTE0Miw2IEBACiB2b2lkCiBwbWFwX2dy
b3drZXJuZWwodm1fb2Zmc2V0X3QgYWRkcikKIHsKLQl2bV9vZmZzZXRfdCBwYWdldmE7CiAJdm1f
cGFnZV90IG5rcGc7CiAJcHRfZW50cnlfdCAqcHRlOwogCWludCBpOwpAQCAtMTIzOCwxMyArMTE3
NiwxMyBAQAogCQkvKgogCQkgKiBUaGlzIGluZGV4IGlzIGJvZ3VzLCBidXQgb3V0IG9mIHRoZSB3
YXkKIAkJICovCi0JCW5rcGcgPSBwbWFwX2FsbG9jX3B0ZV9wYWdlKGtlcm5lbF9wbWFwLCBua3B0
LCBNX05PV0FJVCwgJnBhZ2V2YSk7CisJCW5rcGcgPSBwbWFwX2FsbG9jX3B0ZV9wYWdlKG5rcHQs
IE1fTk9XQUlUKTsKIAogCQlpZiAoIW5rcGcpCiAJCQlwYW5pYygicG1hcF9ncm93a2VybmVsOiBu
byBtZW1vcnkgdG8gZ3JvdyBrZXJuZWwiKTsKIAogCQlua3B0Kys7Ci0JCXB0ZSA9IChwdF9lbnRy
eV90ICopcGFnZXZhOworCQlwdGUgPSAocHRfZW50cnlfdCAqKU1JUFNfUEhZU19UT19LU0VHMChW
TV9QQUdFX1RPX1BIWVMobmtwZykpOwogCQlzZWd0YWJfcGRlKGtlcm5lbF9zZWdtYXAsIGtlcm5l
bF92bV9lbmQpID0gKHBkX2VudHJ5X3QpcHRlOwogCiAJCS8qCkluZGV4OiBzeXMvdm0vdm1fcGh5
cy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHN5cy92bS92bV9waHlzLmMJKHJldmlzaW9uIDIwODg5MCkKKysr
IHN5cy92bS92bV9waHlzLmMJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKIAl2bV9w
YWRkcl90CWVuZDsKIAl2bV9wYWdlX3QJZmlyc3RfcGFnZTsKIAlzdHJ1Y3Qgdm1fZnJlZWxpc3Qg
KCpmcmVlX3F1ZXVlcylbVk1fTkZSRUVQT09MXVtWTV9ORlJFRU9SREVSXTsKKwlpbnQJCWZsaW5k
OwogfTsKIAogc3RhdGljIHN0cnVjdCB2bV9waHlzX3NlZyB2bV9waHlzX3NlZ3NbVk1fUEhZU1NF
R19NQVhdOwpAQCAtMTg4LDYgKzE4OSw3IEBACiAJc2VnID0gJnZtX3BoeXNfc2Vnc1t2bV9waHlz
X25zZWdzKytdOwogCXNlZy0+c3RhcnQgPSBzdGFydDsKIAlzZWctPmVuZCA9IGVuZDsKKwlzZWct
PmZsaW5kID0gZmxpbmQ7CiAjaWZkZWYgVk1fUEhZU1NFR19TUEFSU0UKIAlzZWctPmZpcnN0X3Bh
Z2UgPSAmdm1fcGFnZV9hcnJheVtwYWdlc107CiAjZWxzZQpAQCAtNTk1LDcgKzU5Nyw4IEBACiAJ
dm1fb2JqZWN0X3QgbV9vYmplY3Q7CiAJdm1fcGFkZHJfdCBwYSwgcGFfbGFzdCwgc2l6ZTsKIAl2
bV9wYWdlX3QgZGVmZXJyZWRfdmRyb3BfbGlzdCwgbSwgbV9yZXQ7Ci0JaW50IGZsaW5kLCBpLCBv
aW5kLCBvcmRlciwgcGluZDsKKwlpbnQgZmxpbmQsIGksIG9pbmQsIG9yZGVyLCBwaW5kLCBzZWdp
bmQ7CisJaW50IGZsX2dvb2RbVk1fTkZSRUVMSVNUXTsKIAogCXNpemUgPSBucGFnZXMgPDwgUEFH
RV9TSElGVDsKIAlLQVNTRVJUKHNpemUgIT0gMCwKQEAgLTYwNywxMSArNjEwLDIyIEBACiAJZGVm
ZXJyZWRfdmRyb3BfbGlzdCA9IE5VTEw7CiAJLyogQ29tcHV0ZSB0aGUgcXVldWUgdGhhdCBpcyB0
aGUgYmVzdCBmaXQgZm9yIG5wYWdlcy4gKi8KIAlmb3IgKG9yZGVyID0gMDsgKDEgPDwgb3JkZXIp
IDwgbnBhZ2VzOyBvcmRlcisrKTsKKwkvKiBDb21wdXRlIHRoZSBmcmVlbGlzdHMgdGhhdCBzaG91
bGQgYmUgc2VhcmNoZWQgKi8KKwlmb3IgKGZsaW5kID0gMDsgZmxpbmQgPCB2bV9uZnJlZWxpc3Rz
OyBmbGluZCsrKQorCQlmbF9nb29kW2ZsaW5kXSA9IDA7CisJZm9yIChzZWdpbmQgPSAwOyBzZWdp
bmQgPCB2bV9waHlzX25zZWdzOyBzZWdpbmQrKykgeworCQlzZWcgPSAmdm1fcGh5c19zZWdzW3Nl
Z2luZF07CisJCWlmIChsb3cgPCBzZWctPmVuZCAmJiBoaWdoID4gc2VnLT5zdGFydCkKKwkJCWZs
X2dvb2Rbc2VnLT5mbGluZF0rKzsKKwl9CiAJbXR4X2xvY2soJnZtX3BhZ2VfcXVldWVfZnJlZV9t
dHgpOwogI2lmIFZNX05SRVNFUlZMRVZFTCA+IDAKIHJldHJ5OgogI2VuZGlmCiAJZm9yIChmbGlu
ZCA9IDA7IGZsaW5kIDwgdm1fbmZyZWVsaXN0czsgZmxpbmQrKykgeworCQlpZiAoZmxfZ29vZFtm
bGluZF0gPT0gMCkKKwkJCWNvbnRpbnVlOworCiAJCWZvciAob2luZCA9IG1pbihvcmRlciwgVk1f
TkZSRUVPUkRFUiAtIDEpOyBvaW5kIDwgVk1fTkZSRUVPUkRFUjsgb2luZCsrKSB7CiAJCQlmb3Ig
KHBpbmQgPSAwOyBwaW5kIDwgVk1fTkZSRUVQT09MOyBwaW5kKyspIHsKIAkJCQlmbCA9IHZtX3Bo
eXNfZnJlZV9xdWV1ZXNbZmxpbmRdW3BpbmRdOwo=
--0016364edd086c06ef04889cd7fe--



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