Date: Sat, 1 May 2010 04:46:50 +0530 From: "C. Jayachandran" <c.jayachandran@gmail.com> To: freebsd-mips@freebsd.org, Randall Stewart <rrs@lakerest.net> Subject: Re: Alternate scheme for page table page allocation Message-ID: <m2m98a59be81004301616nd3f1b6b0yc0db67ad93a870f7@mail.gmail.com> In-Reply-To: <t2m98a59be81004300404x408e4b7fx8eea156061153b30@mail.gmail.com> References: <t2m98a59be81004300404x408e4b7fx8eea156061153b30@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--001636b2ac73204f5704857c70c3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Here's a version which will apply on HEAD (also at http://sites.google.com/site/cjayachandran/files). Regards, JC. On Fri, Apr 30, 2010 at 4:34 PM, C. Jayachandran <c.jayachandran@gmail.com> wrote: > I was looking at a hang I get during 'make -j32 buildworld' on XLR > SMP, and as far as I can see, it is caused by the way page table pages > are allocated when we have >512MB memory. > > The attached patch > (http://sites.google.com/site/cjayachandran/files//pmap-page-alloc.patch) > changes the way pages for the PTE/PDE entries are allocated in systems > with >512M. This scheme uses vm_phys_alloc_contig to allocate page > table pages KSEG0 region and =A0has a UMA zone to cache them. This will > allow us to avoid multi-TLB misses that happen when we access page > table entires in the TLB miss handler. I think a similar approach can > be taken to allocate 8K page-pairs for N32(for >4GB RAM) and N64. > > With this patch, 'make -j32 buildworld' consistently works with 32 > cpus =A0on an XLR is booted SMP with 4GB RAM. =A0With the current page > alloc code, I get a hang about an hour into buildworld. > > The patch is based off r206712 - I still have not found a fix for the > crashes I see in versions after that. Please let me know your > comments, =A0especially if you can think of a better way of doing this. > I can make a version of this patch for HEAD if this is acceptable. > > JC. --001636b2ac73204f5704857c70c3 Content-Type: application/octet-stream; name="pmap-page-alloc-HEAD.patch" Content-Disposition: attachment; filename="pmap-page-alloc-HEAD.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g8nmgnva1 SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv cG1hcC5jCShyZXZpc2lvbiAyMDc0NTEpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu ZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQAogCiAjaW5jbHVkZSA8dm0vdm0uaD4KICNpbmNsdWRl IDx2bS92bV9wYXJhbS5oPgorI2luY2x1ZGUgPHZtL3ZtX3BoeXMuaD4KICNpbmNsdWRlIDxzeXMv bG9jay5oPgogI2luY2x1ZGUgPHN5cy9tdXRleC5oPgogI2luY2x1ZGUgPHZtL3ZtX2tlcm4uaD4K QEAgLTEwOSw2ICsxMTAsMTAgQEAKICNkZWZpbmUJUE1BUF9TSFBHUEVSUFJPQyAyMDAKICNlbmRp ZgogCisjaWYgZGVmaW5lZChUQVJHRVRfWExSX1hMUykKKyNkZWZpbmUgSElHSE1FTV9TVVBQT1JU CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKFBNQVBfRElBR05PU1RJQykKICNkZWZpbmUJUE1BUF9J TkxJTkUgX19pbmxpbmUKICNlbHNlCkBAIC0xODMsMTIgKzE4OCwxOCBAQAogc3RhdGljIGludCBp bml0X3B0ZV9wcm90KHZtX29mZnNldF90IHZhLCB2bV9wYWdlX3QgbSwgdm1fcHJvdF90IHByb3Qp Owogc3RhdGljIHZvaWQgcG1hcF9UTEJfaW52YWxpZGF0ZV9rZXJuZWwodm1fb2Zmc2V0X3QpOwog c3RhdGljIHZvaWQgcG1hcF9UTEJfdXBkYXRlX2tlcm5lbCh2bV9vZmZzZXRfdCwgcHRfZW50cnlf dCk7CitzdGF0aWMgdm1fcGFnZV90IHBtYXBfYWxsb2NfcHRlX3BhZ2UocG1hcF90LCB1bnNpZ25l ZCBpbnQsIGludCwgdm1fb2Zmc2V0X3QgKik7CitzdGF0aWMgdm9pZCBwbWFwX3JlbGVhc2VfcHRl X3BhZ2Uodm1fcGFnZV90KTsKIAogI2lmZGVmIFNNUAogc3RhdGljIHZvaWQgcG1hcF9pbnZhbGlk YXRlX3BhZ2VfYWN0aW9uKHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBwbWFwX2ludmFsaWRhdGVf YWxsX2FjdGlvbih2b2lkICphcmcpOwogc3RhdGljIHZvaWQgcG1hcF91cGRhdGVfcGFnZV9hY3Rp b24odm9pZCAqYXJnKTsKKyNlbmRpZgogCisjaWZkZWYgSElHSE1FTV9TVVBQT1JUCitzdGF0aWMg dm9pZCAqIHBtYXBfcHRwZ3pvbmVfYWxsb2NmKHVtYV96b25lX3QsIGludCwgdV9pbnQ4X3QqLCBp bnQpOworc3RhdGljIHVtYV96b25lX3QgcHRwZ3pvbmU7CiAjZW5kaWYKIAogc3RydWN0IGxvY2Fs X3N5c21hcHMgewpAQCAtNTMwLDYgKzU0MSwxMiBAQAogCXB2X2VudHJ5X21heCA9IFBNQVBfU0hQ R1BFUlBST0MgKiBtYXhwcm9jICsgY250LnZfcGFnZV9jb3VudDsKIAlwdl9lbnRyeV9oaWdoX3dh dGVyID0gOSAqIChwdl9lbnRyeV9tYXggLyAxMCk7CiAJdW1hX3pvbmVfc2V0X29iaihwdnpvbmUs ICZwdnpvbmVfb2JqLCBwdl9lbnRyeV9tYXgpOworCisjaWZkZWYgSElHSE1FTV9TVVBQT1JUCisJ cHRwZ3pvbmUgPSB1bWFfemNyZWF0ZSgiUFQgRU5UUlkiLCBQQUdFX1NJWkUsIE5VTEwsCisJICAg IE5VTEwsIE5VTEwsIE5VTEwsIFBBR0VfU0laRS0xLCBVTUFfWk9ORV9OT0ZSRUUpOworCXVtYV96 b25lX3NldF9hbGxvY2YocHRwZ3pvbmUsIHBtYXBfcHRwZ3pvbmVfYWxsb2NmKTsKKyNlbmRpZgog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CkBAIC04ODcsNyArOTA0LDcgQEAKIAkvKgogCSAqIElmIHRoZSBwYWdlIGlzIGZpbmFsbHkgdW53 aXJlZCwgc2ltcGx5IGZyZWUgaXQuCiAJICovCi0Jdm1fcGFnZV9mcmVlX3plcm8obSk7CisJcG1h cF9yZWxlYXNlX3B0ZV9wYWdlKG0pOwogCWF0b21pY19zdWJ0cmFjdF9pbnQoJmNudC52X3dpcmVf Y291bnQsIDEpOwogCXJldHVybiAoMSk7CiB9CkBAIC05NDcsNiArOTY0LDExOCBAQAogCWJ6ZXJv KCZwbWFwLT5wbV9zdGF0cywgc2l6ZW9mIHBtYXAtPnBtX3N0YXRzKTsKIH0KIAorI2lmZGVmIEhJ R0hNRU1fU1VQUE9SVAorc3RhdGljIHZvaWQgKgorcG1hcF9wdHBnem9uZV9hbGxvY2YodW1hX3pv bmVfdCB6b25lLCBpbnQgYnl0ZXMsIHVfaW50OF90ICpmbGFncywgaW50IHdhaXQpCit7CisJdm1f cGFnZV90IG07CisJdm1fcGFkZHJfdCBwYWRkcjsKKworCSpmbGFncyA9IFVNQV9TTEFCX1BSSVY7 CisJbSA9IHZtX3BoeXNfYWxsb2NfY29udGlnKDEsIDAsIE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlT LAorCSAgICAgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmIChtID09IE5VTEwpCisJCXJldHVy biAoTlVMTCk7CisKKwlwYWRkciA9IFZNX1BBR0VfVE9fUEhZUyhtKTsKKwlyZXR1cm4gKCh2b2lk ICopTUlQU19QSFlTX1RPX0tTRUcwKHBhZGRyKSk7Cit9CQorCitzdGF0aWMgdm1fcGFnZV90Citw bWFwX2FsbG9jX3B0ZV9wYWdlKHBtYXBfdCBwbWFwLCB1bnNpZ25lZCBpbnQgaW5kZXgsIGludCB3 YWl0LCB2bV9vZmZzZXRfdCAqdmFwKQoreworCXZtX3BhZGRyX3QgcGFkZHI7CisJdm9pZCAqdmE7 CisJdm1fcGFnZV90IG07CisJaW50IGxvY2tlZDsKKworCWxvY2tlZCA9IG10eF9vd25lZCgmcG1h cC0+cG1fbXR4KTsKKwlpZiAobG9ja2VkKSB7CisJCW10eF9hc3NlcnQoJnZtX3BhZ2VfcXVldWVf bXR4LCBNQV9PV05FRCk7CisJCVBNQVBfVU5MT0NLKHBtYXApOworCQl2bV9wYWdlX3VubG9ja19x dWV1ZXMoKTsKKwl9CisJdmEgPSB1bWFfemFsbG9jKHB0cGd6b25lLCB3YWl0KTsKKwlpZiAobG9j a2VkKSB7CisJCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKKwkJUE1BUF9MT0NLKHBtYXApOworCX0K KwlpZiAodmEgPT0gTlVMTCkKKwkJcmV0dXJuIChOVUxMKTsKKworCXBhZGRyID0gTUlQU19LU0VH MF9UT19QSFlTKHZhKTsKKwltID0gUEhZU19UT19WTV9QQUdFKHBhZGRyKTsKKwkKKwlpZiAoKG0t PmZsYWdzICYgUEdfWkVSTykgPT0gMCkKKwkJYnplcm8odmEsIFBBR0VfU0laRSk7CisJbS0+cGlu ZGV4ID0gaW5kZXg7CisJbS0+dmFsaWQgPSBWTV9QQUdFX0JJVFNfQUxMOworCW0tPndpcmVfY291 bnQgPSAxOworCWF0b21pY19hZGRfaW50KCZjbnQudl93aXJlX2NvdW50LCAxKTsKKwkqdmFwID0g KHZtX29mZnNldF90KXZhOworCXJldHVybiAobSk7Cit9CisKK3N0YXRpYyB2b2lkCitwbWFwX3Jl bGVhc2VfcHRlX3BhZ2Uodm1fcGFnZV90IG0pCit7CisJdm9pZCAqdmE7CisJdm1fcGFkZHJfdCBw YWRkcjsKKworCXBhZGRyID0gVk1fUEFHRV9UT19QSFlTKG0pOworCXZhID0gKHZvaWQgKilNSVBT X1BIWVNfVE9fS1NFRzAocGFkZHIpOworCXVtYV96ZnJlZShwdHBnem9uZSwgdmEpOworfQorI2Vs c2UKK3N0YXRpYyB2bV9wYWdlX3QKK3BtYXBfYWxsb2NfcHRlX3BhZ2UocG1hcF90IHBtYXAsIHVu c2lnbmVkIGludCBpbmRleCwgaW50IHdhaXQsIHZtX29mZnNldF90ICp2YXApCit7CisJdm1fb2Zm c2V0X3QgdmE7CisJdm1fcGFnZV90IG07CisJaW50IGxvY2tlZCwgcmVxOworCisJbG9ja2VkID0g bXR4X293bmVkKCZwbWFwLT5wbV9tdHgpOworCXJlcSA9IFZNX0FMTE9DX1dJUkVEIHwgVk1fQUxM T0NfTk9PQko7CisJaWYgKHdhaXQgJiBNX1dBSVRPSykKKwkJcmVxIHw9IFZNX0FMTE9DX05PUk1B TDsKKwllbHNlCisJCXJlcSB8PSBWTV9BTExPQ19JTlRFUlJVUFQ7CisKKwltID0gdm1fcGFnZV9h bGxvYyhOVUxMLCBpbmRleCwgcmVxKTsKKwlpZiAobSA9PSBOVUxMKSB7CisJCWlmICh3YWl0ICYg TV9XQUlUT0spIHsKKwkJCWlmIChsb2NrZWQpIHsKKwkJCQltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1 ZXVlX210eCwgTUFfT1dORUQpOworCQkJCVBNQVBfVU5MT0NLKHBtYXApOworCQkJCXZtX3BhZ2Vf dW5sb2NrX3F1ZXVlcygpOworCQkJfQorCQkJVk1fV0FJVDsKKwkJCWlmIChsb2NrZWQpIHsKKwkJ CQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7CisJCQkJUE1BUF9MT0NLKHBtYXApOworCQkJfQorCQl9 CisJCXJldHVybiBOVUxMOworCX0KKwkKKwl2YSA9IE1JUFNfUEhZU19UT19LU0VHMChWTV9QQUdF X1RPX1BIWVMobSkpOworCWlmICgobS0+ZmxhZ3MgJiBQR19aRVJPKSA9PSAwKQorCQliemVybygo dm9pZCAqKXZhLCBQQUdFX1NJWkUpOworCWVsc2UKKwkJdm1fcGFnZV9mbGFnX2NsZWFyKG0sIFBH X1pFUk8pOworCQorCW0tPnZhbGlkID0gVk1fUEFHRV9CSVRTX0FMTDsKKwkqdmFwID0gKHZtX29m ZnNldF90KXZhOworCXJldHVybiAobSk7Cit9CisKK3N0YXRpYyB2b2lkCitwbWFwX3JlbGVhc2Vf cHRlX3BhZ2Uodm1fcGFnZV90IG0pCit7CisJdm1fcGFnZV9mcmVlKG0pOworfQorI2VuZGlmCisK IC8qCiAgKiBJbml0aWFsaXplIGEgcHJlYWxsb2NhdGVkIGFuZCB6ZXJvZWQgcG1hcCBzdHJ1Y3R1 cmUsCiAgKiBzdWNoIGFzIG9uZSBpbiBhIHZtc3BhY2Ugc3RydWN0dXJlLgpAQCAtOTU1LDM3ICsx MDg0LDE2IEBACiBwbWFwX3Bpbml0KHBtYXBfdCBwbWFwKQogewogCXZtX29mZnNldF90IHB0ZHZh OwotCXZtX3BhZGRyX3QgcHRkcGE7CiAJdm1fcGFnZV90IHB0ZHBnOwogCWludCBpOwotCWludCBy ZXE7CiAKIAlQTUFQX0xPQ0tfSU5JVChwbWFwKTsKIAotCXJlcSA9IFZNX0FMTE9DX05PT0JKIHwg Vk1fQUxMT0NfTk9STUFMIHwgVk1fQUxMT0NfV0lSRUQgfAotCSAgICBWTV9BTExPQ19aRVJPOwot CiAJLyoKIAkgKiBhbGxvY2F0ZSB0aGUgcGFnZSBkaXJlY3RvcnkgcGFnZQogCSAqLwotCXdoaWxl ICgocHRkcGcgPSB2bV9wYWdlX2FsbG9jKE5VTEwsIE5VU0VSUEdUQkxTLCByZXEpKSA9PSBOVUxM KQotCQlWTV9XQUlUOwotCi0JcHRkcGctPnZhbGlkID0gVk1fUEFHRV9CSVRTX0FMTDsKLQotCXB0 ZHBhID0gVk1fUEFHRV9UT19QSFlTKHB0ZHBnKTsKLQlpZiAocHRkcGEgPCBNSVBTX0tTRUcwX0xB UkdFU1RfUEhZUykgewotCQlwdGR2YSA9IE1JUFNfUEhZU19UT19LU0VHMChwdGRwYSk7Ci0JfSBl bHNlIHsKLQkJcHRkdmEgPSBrbWVtX2FsbG9jX25vZmF1bHQoa2VybmVsX21hcCwgUEFHRV9TSVpF KTsKLQkJaWYgKHB0ZHZhID09IDApCi0JCQlwYW5pYygicG1hcF9waW5pdDogdW5hYmxlIHRvIGFs bG9jYXRlIGt2YSIpOwotCQlwbWFwX2tlbnRlcihwdGR2YSwgcHRkcGEpOwotCX0KLQorCXB0ZHBn ID0gcG1hcF9hbGxvY19wdGVfcGFnZShwbWFwLCBOVVNFUlBHVEJMUywgTV9XQUlUT0ssICZwdGR2 YSk7CiAJcG1hcC0+cG1fc2VndGFiID0gKHBkX2VudHJ5X3QgKilwdGR2YTsKLQlpZiAoKHB0ZHBn LT5mbGFncyAmIFBHX1pFUk8pID09IDApCi0JCWJ6ZXJvKHBtYXAtPnBtX3NlZ3RhYiwgUEFHRV9T SVpFKTsKIAogCXBtYXAtPnBtX2FjdGl2ZSA9IDA7CiAJcG1hcC0+cG1fcHRwaGludCA9IE5VTEw7 CkBAIC0xMDA2LDcgKzExMTQsNyBAQAogc3RhdGljIHZtX3BhZ2VfdAogX3BtYXBfYWxsb2NwdGUo cG1hcF90IHBtYXAsIHVuc2lnbmVkIHB0ZXBpbmRleCwgaW50IGZsYWdzKQogewotCXZtX29mZnNl dF90IHB0ZXZhLCBwdGVwYTsKKwl2bV9vZmZzZXRfdCBwdGV2YTsKIAl2bV9wYWdlX3QgbTsKIAlp bnQgcmVxOwogCkBAIC0xMDE4LDYwICsxMTI2LDIyIEBACiAJLyoKIAkgKiBGaW5kIG9yIGZhYnJp Y2F0ZSBhIG5ldyBwYWdldGFibGUgcGFnZQogCSAqLwotCWlmICgobSA9IHZtX3BhZ2VfYWxsb2Mo TlVMTCwgcHRlcGluZGV4LCByZXEpKSA9PSBOVUxMKSB7Ci0JCWlmIChmbGFncyAmIE1fV0FJVE9L KSB7Ci0JCQlQTUFQX1VOTE9DSyhwbWFwKTsKLQkJCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwot CQkJVk1fV0FJVDsKLQkJCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKLQkJCVBNQVBfTE9DSyhwbWFw KTsKLQkJfQotCQkvKgotCQkgKiBJbmRpY2F0ZSB0aGUgbmVlZCB0byByZXRyeS4JV2hpbGUgd2Fp dGluZywgdGhlIHBhZ2UKLQkJICogdGFibGUgcGFnZSBtYXkgaGF2ZSBiZWVuIGFsbG9jYXRlZC4K LQkJICovCisJbSA9IHBtYXBfYWxsb2NfcHRlX3BhZ2UocG1hcCwgcHRlcGluZGV4LCBmbGFncywg JnB0ZXZhKTsKKwlpZiAobSA9PSBOVUxMKQogCQlyZXR1cm4gKE5VTEwpOwotCX0KLQlpZiAoKG0t PmZsYWdzICYgUEdfWkVSTykgPT0gMCkKLQkJcG1hcF96ZXJvX3BhZ2UobSk7CiAKLQlLQVNTRVJU KG0tPnF1ZXVlID09IFBRX05PTkUsCi0JICAgICgiX3BtYXBfYWxsb2NwdGU6ICVwLT5xdWV1ZSAh PSBQUV9OT05FIiwgbSkpOwotCiAJLyoKIAkgKiBNYXAgdGhlIHBhZ2V0YWJsZSBwYWdlIGludG8g dGhlIHByb2Nlc3MgYWRkcmVzcyBzcGFjZSwgaWYgaXQKIAkgKiBpc24ndCBhbHJlYWR5IHRoZXJl LgogCSAqLwogCiAJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQrKzsKLQotCXB0ZXBhID0g Vk1fUEFHRV9UT19QSFlTKG0pOwotCWlmIChwdGVwYSA8IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlT KSB7Ci0JCXB0ZXZhID0gTUlQU19QSFlTX1RPX0tTRUcwKHB0ZXBhKTsKLQl9IGVsc2UgewotCQlw dGV2YSA9IGttZW1fYWxsb2Nfbm9mYXVsdChrZXJuZWxfbWFwLCBQQUdFX1NJWkUpOwotCQlpZiAo cHRldmEgPT0gMCkKLQkJCXBhbmljKCJfcG1hcF9hbGxvY3B0ZTogdW5hYmxlIHRvIGFsbG9jYXRl IGt2YSIpOwotCQlwbWFwX2tlbnRlcihwdGV2YSwgcHRlcGEpOwotCX0KLQogCXBtYXAtPnBtX3Nl Z3RhYltwdGVwaW5kZXhdID0gKHBkX2VudHJ5X3QpcHRldmE7CiAKIAkvKgogCSAqIFNldCB0aGUg cGFnZSB0YWJsZSBoaW50CiAJICovCiAJcG1hcC0+cG1fcHRwaGludCA9IG07Ci0KLQkvKgotCSAq IEtlcm5lbCBwYWdlIHRhYmxlcyBhcmUgYWxsb2NhdGVkIGluIHBtYXBfYm9vdHN0cmFwKCkgb3IK LQkgKiBwbWFwX2dyb3drZXJuZWwoKS4KLQkgKi8KLQlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkp Ci0JCXBhbmljKCJfcG1hcF9hbGxvY3B0ZSgpIGNhbGxlZCBmb3Iga2VybmVsIHBtYXBcbiIpOwot Ci0JbS0+dmFsaWQgPSBWTV9QQUdFX0JJVFNfQUxMOwotCXZtX3BhZ2VfZmxhZ19jbGVhcihtLCBQ R19aRVJPKTsKLQogCXJldHVybiAobSk7CiB9CiAKQEAgLTExNTgsMTcgKzEyMjgsMTIgQEAKIAlw dGR2YSA9ICh2bV9vZmZzZXRfdClwbWFwLT5wbV9zZWd0YWI7CiAJcHRkcGcgPSBQSFlTX1RPX1ZN X1BBR0UodnRvcGh5cyhwdGR2YSkpOwogCi0JaWYgKHB0ZHZhID49IFZNX01JTl9LRVJORUxfQURE UkVTUykgewotCQlwbWFwX2tyZW1vdmUocHRkdmEpOwotCQlrbWVtX2ZyZWUoa2VybmVsX21hcCwg cHRkdmEsIFBBR0VfU0laRSk7Ci0JfSBlbHNlIHsKLQkJS0FTU0VSVChNSVBTX0lTX0tTRUcwX0FE RFIocHRkdmEpLAotCQkgICAgKCJwbWFwX3JlbGVhc2U6IDB4JTBseCBpcyBub3QgaW4ga3NlZzAi LCAobG9uZylwdGR2YSkpOwotCX0KKwlLQVNTRVJUKE1JUFNfSVNfS1NFRzBfQUREUihwdGR2YSks CisJICAgICgicG1hcF9yZWxlYXNlOiAweCUwbHggaXMgbm90IGluIGtzZWcwIiwgKGxvbmcpcHRk dmEpKTsKIAogCXB0ZHBnLT53aXJlX2NvdW50LS07CiAJYXRvbWljX3N1YnRyYWN0X2ludCgmY250 LnZfd2lyZV9jb3VudCwgMSk7Ci0Jdm1fcGFnZV9mcmVlX3plcm8ocHRkcGcpOworCXBtYXBfcmVs ZWFzZV9wdGVfcGFnZShwdGRwZyk7CiAJUE1BUF9MT0NLX0RFU1RST1kocG1hcCk7CiB9CiAKQEAg LTExNzgsMTAgKzEyNDMsMTAgQEAKIHZvaWQKIHBtYXBfZ3Jvd2tlcm5lbCh2bV9vZmZzZXRfdCBh ZGRyKQogewotCXZtX29mZnNldF90IHB0cHBhZGRyOworCXZtX29mZnNldF90IHBhZ2V2YTsKIAl2 bV9wYWdlX3QgbmtwZzsKIAlwdF9lbnRyeV90ICpwdGU7Ci0JaW50IGksIHJlcTsKKwlpbnQgaTsK IAogCW10eF9hc3NlcnQoJmtlcm5lbF9tYXAtPnN5c3RlbV9tdHgsIE1BX09XTkVEKTsKIAlpZiAo a2VybmVsX3ZtX2VuZCA9PSAwKSB7CkBAIC0xMjEzLDI2ICsxMjc4LDEzIEBACiAJCS8qCiAJCSAq IFRoaXMgaW5kZXggaXMgYm9ndXMsIGJ1dCBvdXQgb2YgdGhlIHdheQogCQkgKi8KLQkJcmVxID0g Vk1fQUxMT0NfSU5URVJSVVBUIHwgVk1fQUxMT0NfV0lSRUQgfCBWTV9BTExPQ19OT09CSjsKLQkJ bmtwZyA9IHZtX3BhZ2VfYWxsb2MoTlVMTCwgbmtwdCwgcmVxKTsKKwkJbmtwZyA9IHBtYXBfYWxs b2NfcHRlX3BhZ2Uoa2VybmVsX3BtYXAsIG5rcHQsIE1fTk9XQUlULCAmcGFnZXZhKTsKKwogCQlp ZiAoIW5rcGcpCiAJCQlwYW5pYygicG1hcF9ncm93a2VybmVsOiBubyBtZW1vcnkgdG8gZ3JvdyBr ZXJuZWwiKTsKIAogCQlua3B0Kys7Ci0KLQkJcHRwcGFkZHIgPSBWTV9QQUdFX1RPX1BIWVMobmtw Zyk7Ci0JCWlmIChwdHBwYWRkciA+PSBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUykgewotCQkJLyoK LQkJCSAqIFdlIG5lZWQgdG8gZG8gc29tZXRoaW5nIGhlcmUsIGJ1dCBJIGFtIG5vdCBzdXJlCi0J CQkgKiB3aGF0LiBXZSBjYW4gYWNjZXNzIGFueXRoaW5nIGluIHRoZSAwIC0gNTEyTWVnCi0JCQkg KiByZWdpb24sIGJ1dCBpZiB3ZSBnZXQgYSBwYWdlIHRvIGdvIGluIHRoZSBrZXJuZWwKLQkJCSAq IHNlZ21hcCB0aGF0IGlzIG91dHNpZGUgb2Ygb2YgdGhhdCB3ZSByZWFsbHkgbmVlZAotCQkJICog dG8gaGF2ZSBhbm90aGVyIG1hcHBpbmcgYmV5b25kIHRoZSB0ZW1wb3Jhcnkgb25lcwotCQkJICog SSBoYXZlLiBOb3Qgc3VyZSBob3cgdG8gZG8gdGhpcyB5ZXQuIEZJWE1FIEZJWE1FLgotCQkJICov Ci0JCQlwYW5pYygiR2FrLCBjYW4ndCBoYW5kbGUgYSBrLXBhZ2UgdGFibGUgb3V0c2lkZSBvZiBs b3dlciA1MTJNZWciKTsKLQkJfQotCQlwdGUgPSAocHRfZW50cnlfdCAqKU1JUFNfUEhZU19UT19L U0VHMChwdHBwYWRkcik7CisJCXB0ZSA9IChwdF9lbnRyeV90ICopcGFnZXZhOwogCQlzZWd0YWJf cGRlKGtlcm5lbF9zZWdtYXAsIGtlcm5lbF92bV9lbmQpID0gKHBkX2VudHJ5X3QpcHRlOwogCiAJ CS8qCkBAIC0xMzk2LDcgKzE0NDgsOCBAQAogCQl9CiAJfQogCi0JS0FTU0VSVChwdiAhPSBOVUxM LCAoInBtYXBfcmVtb3ZlX2VudHJ5OiBwdiBub3QgZm91bmQiKSk7CisJS0FTU0VSVChwdiAhPSBO VUxMLCAoInBtYXBfcmVtb3ZlX2VudHJ5OiBwdiBub3QgZm91bmQsIHBhICVseCB2YSAlbHgiLAor CSAgICAgKHVfbG9uZylWTV9QQUdFX1RPX1BIWVMobSksICh1X2xvbmcpdmEpKTsKIAlUQUlMUV9S RU1PVkUoJm0tPm1kLnB2X2xpc3QsIHB2LCBwdl9saXN0KTsKIAltLT5tZC5wdl9saXN0X2NvdW50 LS07CiAJaWYgKFRBSUxRX0ZJUlNUKCZtLT5tZC5wdl9saXN0KSA9PSBOVUxMKQo= --001636b2ac73204f5704857c70c3--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m2m98a59be81004301616nd3f1b6b0yc0db67ad93a870f7>