Date: Mon, 16 Aug 2010 21:40:00 +0530 From: "Jayachandran C." <c.jayachandran@gmail.com> To: Juli Mallett <jmallett@freebsd.org>, "M. Warner Losh" <imp@bsdimp.com>, Alan Cox <alc@cs.rice.edu>, Randall Stewart <rrs@lakerest.net>, Neel Natu <neelnatu@gmail.com> Cc: freebsd-mips@freebsd.org Subject: [PATCH] Move from kseg0 to xkphys for 64 bit. Message-ID: <AANLkTinc2P7mO2qu%2BAiDtB=%2BoH3Winfc0AOAUxXS2XBh@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--0016367f9f6a8ae7a3048df31007 Content-Type: text/plain; charset=ISO-8859-1 I've attached the changes to move the 64bit port to use 64bit XKPHYS mapping of the physical memory instead of the current KSEG0. With this changes the 64bit port will use just one freelist, and can allocate page table pages from anywhere in the memory. The changes are mainly to introduce macros like MIPS_PHYS_TO_DIRECT(pa), MIPS_DIRECT_TO_PHYS(), which will use KSEG0 in 32 bit compilation and XKPHYS in 64 bit compilation. I also ended up changing the macro based PMAP_LMEM_MAP1(), PMAP_LMEM_MAP2(), PMAP_LMEM_UNMAP() to inline functions. I have also introduced a macro MIPS_DIRECT_MAPPABLE(pa), which will further reduce the cases in which we will need to have a special case for 64 bit compilation. Please let me know your comments. Thanks, JC. --0016367f9f6a8ae7a3048df31007 Content-Type: application/octet-stream; name="64-xkphys.patch" Content-Disposition: attachment; filename="64-xkphys.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcxihmsd0 SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1cmVncy5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBz L2luY2x1ZGUvY3B1cmVncy5oCShyZXZpc2lvbiAyMTEzMzIpCisrKyBzeXMvbWlwcy9pbmNsdWRl L2NwdXJlZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYsMTAgQEAKICAqIENhY2hpbmcg b2YgbWFwcGVkIGFkZHJlc3NlcyBpcyBjb250cm9sbGVkIGJ5IGJpdHMgaW4gdGhlIFRMQiBlbnRy eS4KICAqLwogCi0jZGVmaW5lCU1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTICAgICAgICAgKDB4MjAw MDAwMDApCisjZGVmaW5lCU1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTCQkoMHgyMDAwMDAwMCkKICNk ZWZpbmUJTUlQU19QSFlTX01BU0sJCQkoMHgxZmZmZmZmZikKKyNkZWZpbmUJTUlQU19YS1BIWVNf TEFSR0VTVF9QSFlTCSgweDEwMDAwMDAwMDAwKQorI2RlZmluZQlNSVBTX1hQSFlTX01BU0sJCQko MHgwZmZmZmZmZmZmZikKIAogI2lmbmRlZiBMT0NPUkUKICNkZWZpbmUJTUlQU19LVVNFR19TVEFS VAkJMHgwMDAwMDAwMApAQCAtMTA3LDkgKzEwOSw2IEBACiAjZGVmaW5lCU1JUFNfSVNfVkFMSURf UFRSKHgpCQkoTUlQU19JU19LU0VHMF9BRERSKHgpIHx8IFwKIAkJCQkJICAgIE1JUFNfSVNfS1NF RzFfQUREUih4KSkKIAotI2RlZmluZQlNSVBTX1hLUEhZU19TVEFSVAkJMHg4MDAwMDAwMDAwMDAw MDAwCi0jZGVmaW5lCU1JUFNfWEtQSFlTX0VORAkJCTB4YmZmZmZmZmZmZmZmZmZmZgotCiAvKgog ICogQ2FjaGUgQ29oZXJlbmN5IEF0dHJpYnV0ZXM6CiAgKglVQzoJVW5jYWNoZWQuCkBAIC0xODAs MTkgKzE3OSwzNCBAQAogI2RlZmluZQlNSVBTX1BIWVNfVE9fWEtQSFlTX1VOQ0FDSEVEKHgpIFwK IAkoKDB4MlVMTCA8PCA2MikgfCAoKHVuc2lnbmVkIGxvbmcgbG9uZykoTUlQU19DQ0FfVU5DQUNI RUQpIDw8IDU5KSB8ICh4KSkKIAotI2RlZmluZQlNSVBTX1hLUEhZU19UT19QSFlTKHgpCQkoKHgp ICYgMHgwN2ZmZmZmZmZmZmZmZmZmVUxMKQorI2RlZmluZQlNSVBTX1hLUEhZU19UT19QSFlTKHgp CQkoKHVpbnRwdHJfdCkoeCkgJiAweDA3ZmZmZmZmZmZmZmZmZmYpCiAKKyNkZWZpbmUJTUlQU19Y S1BIWVNfU1RBUlQJCTB4ODAwMDAwMDAwMDAwMDAwMAorI2RlZmluZQlNSVBTX1hLUEhZU19FTkQJ CQkweGJmZmZmZmZmZmZmZmZmZmYKICNkZWZpbmUJTUlQU19YVVNFR19TVEFSVAkJMHgwMDAwMDAw MDAwMDAwMDAwCiAjZGVmaW5lCU1JUFNfWFVTRUdfRU5ECQkJMHgwMDAwMDEwMDAwMDAwMDAwCi0K ICNkZWZpbmUJTUlQU19YS1NFR19TVEFSVAkJMHhjMDAwMDAwMDAwMDAwMDAwCiAjZGVmaW5lCU1J UFNfWEtTRUdfRU5ECQkJMHhjMDAwMDBmZjgwMDAwMDAwCiAKKyNpZmRlZiBfX21pcHNfbjY0Cisj ZGVmaW5lCU1JUFNfRElSRUNUX01BUFBBQkxFKHBhKQkxCisjZGVmaW5lCU1JUFNfUEhZU19UT19E SVJFQ1QocGEpCQlNSVBTX1BIWVNfVE9fWEtQSFlTX0NBQ0hFRChwYSkKKyNkZWZpbmUJTUlQU19Q SFlTX1RPX0RJUkVDVF9VTkNBQ0hFRChwYSkJTUlQU19QSFlTX1RPX1hLUEhZU19VTkNBQ0hFRChw YSkKKyNkZWZpbmUJTUlQU19ESVJFQ1RfVE9fUEhZUyh2YSkJCU1JUFNfWEtQSFlTX1RPX1BIWVMo dmEpCisjZWxzZQorI2RlZmluZQlNSVBTX0RJUkVDVF9NQVBQQUJMRShwYSkJKChwYSkgPCBNSVBT X0tTRUcwX0xBUkdFU1RfUEhZUykKKyNkZWZpbmUJTUlQU19QSFlTX1RPX0RJUkVDVChwYSkJCU1J UFNfUEhZU19UT19LU0VHMChwYSkKKyNkZWZpbmUJTUlQU19QSFlTX1RPX0RJUkVDVF9VTkNBQ0hF RChwYSkJTUlQU19QSFlTX1RPX0tTRUcxKHBhKQorI2RlZmluZQlNSVBTX0RJUkVDVF9UT19QSFlT KHZhKQkJTUlQU19LU0VHMF9UT19QSFlTKHZhKQorI2VuZGlmCisKIC8qIENQVSBkZXBlbmRlbnQg bXRjMCBoYXphcmQgaG9vayAqLwogI2lmZGVmIENQVV9DTk1JUFMKICNkZWZpbmUJQ09QMF9TWU5D ICBub3A7IG5vcDsgbm9wOyBub3A7IG5vcDsKICNlbGlmIGRlZmluZWQoQ1BVX1NCMSkKICNkZWZp bmUgQ09QMF9TWU5DICBzc25vcDsgc3Nub3A7IHNzbm9wOyBzc25vcDsgc3Nub3A7IHNzbm9wOyBz c25vcDsgc3Nub3A7IHNzbm9wCisjZWxpZiBkZWZpbmVkKENQVV9STUkpCisjZGVmaW5lIENPUDBf U1lOQwogI2Vsc2UKIC8qCiAgKiBQaWNrIGEgcmVhc29uYWJsZSBkZWZhdWx0IGJhc2VkIG9uIHRo ZSAidHlwaWNhbCIgc3BhY2luZyBkZXNjcmliZWQgaW4gdGhlCkluZGV4OiBzeXMvbWlwcy9pbmNs dWRlL3ZtcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9pbmNsdWRlL3ZtcGFyYW0uaAko cmV2aXNpb24gMjExMzMyKQorKysgc3lzL21pcHMvaW5jbHVkZS92bXBhcmFtLmgJKHdvcmtpbmcg Y29weSkKQEAgLTk2LDcgKzk2LDcgQEAKICNkZWZpbmUJVk1fTUlOVVNFUl9BRERSRVNTCSgodm1f b2Zmc2V0X3QpMHgwMDAwMDAwMCkKICNkZWZpbmUJVk1fTUFYX01NQVBfQUREUglWTV9NQVhVU0VS X0FERFJFU1MKIAotI2lmIGRlZmluZWQoX19taXBzX242NCkKKyNpZmRlZiBfX21pcHNfbjY0CiAj ZGVmaW5lCVZNX01BWFVTRVJfQUREUkVTUwkoVk1fTUlOVVNFUl9BRERSRVNTICsgKE5QREVQRyAq IE5CU0VHKSkKICNkZWZpbmUJVk1fTUlOX0tFUk5FTF9BRERSRVNTCSgodm1fb2Zmc2V0X3QpMHhj MDAwMDAwMDAwMDAwMDAwKQogI2RlZmluZQlWTV9NQVhfS0VSTkVMX0FERFJFU1MJKFZNX01JTl9L RVJORUxfQUREUkVTUyArIChOUERFUEcgKiBOQlNFRykpCkBAIC0xODUsNyArMTg1LDcgQEAKICAq CSAgYWxsb2NhdGlvbnMgdXNlIEhJR0hNRU0gaWYgYXZhaWxhYmxlLCBhbmQgdGhlbiBERUZBVUxU LiAKICAqCS0gSElHSE1FTSBmb3Igb3RoZXIgcGFnZXMgCiAgKi8KLSNpZiAwIC8qIE5vdCB5ZXQs IGNoYW5nZSBuNjQgdG8gdXNlIHhrcGh5cyAqLworI2lmZGVmIF9fbWlwc19uNjQKICNkZWZpbmUJ Vk1fTkZSRUVMSVNUCQkxCiAjZGVmaW5lCVZNX0ZSRUVMSVNUX0RFRkFVTFQJMAogI2RlZmluZQlW TV9GUkVFTElTVF9ESVJFQ1QJVk1fRlJFRUxJU1RfREVGQVVMVApJbmRleDogc3lzL21pcHMvbWlw cy9wbWFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy9wbWFwLmMJKHJldmlzaW9uIDIx MTMzMikKKysrIHN5cy9taXBzL21pcHMvcG1hcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNzUg KzE5OCwxNDMgQEAKIHN0YXRpYyB2b2lkIHBtYXBfdXBkYXRlX3BhZ2VfYWN0aW9uKHZvaWQgKmFy Zyk7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9fbWlwc19uNjQpCisjaWZuZGVmIF9fbWlwc19u NjQKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBpcyBmb3IgaGlnaCBtZW1vcnkgKG1lbW9yeSBhYm92 ZSA1MTJNZWcgaW4gMzIgYml0KQorICogVGhpcyBtZW1vcnkgYXJlYSBkb2VzIG5vdCBoYXZlIGRp cmVjdCBtYXBwaW5nLCBzbyB3ZSBhIG1lY2hhbmlzbSB0byBkbworICogdGVtcG9yYXJ5IHBlci1D UFUgbWFwcGluZyB0byBhY2Nlc3MgdGhlc2UgYWRkcmVzc2VzLgorICoKKyAqIEF0IGJvb3R1cCB3 ZSByZXNlcnZlIDIgdmlydHVhbCBwYWdlcyBwZXIgQ1BVIGZvciBtYXBwaW5nIGhpZ2htZW0gcGFn ZXMsIHRvIAorICogYWNjZXNzIGEgaGlnaG1lbSBwaHlzaWNhbCBhZGRyZXNzIG9uIGEgQ1BVLCB3 ZSB3aWxsIGRpc2FibGUgaW50ZXJydXB0cyBhbmQKKyAqIGFkZCB0aGUgbWFwcGluZyBmcm9tIHRo ZSByZXNlcnZlZCB2aXJ0dWFsIGFkZHJlc3MgZm9yIHRoZSBDUFUgdG8gdGhlIHBoeXNpY2FsCisg KiBhZGRyZXNzIGluIHRoZSBrZXJuZWwgcGFnZXRhYmxlLgorICovCiBzdHJ1Y3QgbG9jYWxfc3lz bWFwcyB7Ci0Jdm1fb2Zmc2V0X3QgYmFzZTsKLQl1aW50MTZfdCB2YWxpZDEsIHZhbGlkMjsKKwl2 bV9vZmZzZXRfdAliYXNlOworCXVpbnQzMl90CXNhdmVkX2ludHI7CisJdWludDE2X3QJdmFsaWQx LCB2YWxpZDI7CiB9OwotCi0vKiBUaGlzIHN0cnVjdHVyZSBpcyBmb3IgbGFyZ2UgbWVtb3J5Ci0g KiBhYm92ZSA1MTJNZWcuIFdlIGNhbid0IChpbiAzMiBiaXQgbW9kZSkKLSAqIGp1c3QgdXNlIHRo ZSBkaXJlY3QgbWFwcGVkIE1JUFNfS1NFRzBfVE9fUEhZUygpCi0gKiBtYWNyb3Mgc2luY2Ugd2Ug Y2FuJ3Qgc2VlIHRoZSBtZW1vcnkgYW5kIG11c3QKLSAqIG1hcCBpdCBpbiB3aGVuIHdlIG5lZWQg dG8gYWNjZXNzIGl0LiBJbiA2NAotICogYml0IG1vZGUgdGhpcyBnb2VzIGF3YXkuCi0gKi8KIHN0 YXRpYyBzdHJ1Y3QgbG9jYWxfc3lzbWFwcyBzeXNtYXBfbG1lbVtNQVhDUFVdOwogCi0jZGVmaW5l CVBNQVBfTE1FTV9NQVAxKHZhLCBwaHlzKQkJCQkJXAotCWludCBjcHU7CQkJCQkJCVwKLQlzdHJ1 Y3QgbG9jYWxfc3lzbWFwcyAqc3lzbTsJCQkJCVwKLQlwdF9lbnRyeV90ICpwdGUsIG5wdGU7CQkJ CQkJXAotCQkJCQkJCQkJXAotCWludHIgPSBpbnRyX2Rpc2FibGUoKTsJCQkJCQlcCi0JY3B1ID0g UENQVV9HRVQoY3B1aWQpOwkJCQkJCVwKLQlzeXNtID0gJnN5c21hcF9sbWVtW2NwdV07CQkJCQlc Ci0JdmEgPSBzeXNtLT5iYXNlOwkJCQkJCVwKLQlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBoeXMp IHwJCQkJCVwKLQkgICAgUFRFX0QgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ19DQUNI RTsJCVwKLQlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEpOwkJCQlcCi0JKnB0ZSA9IG5w dGU7CQkJCQkJCVwKLQlzeXNtLT52YWxpZDEgPSAxCitzdGF0aWMgX19pbmxpbmUgdm9pZAorcG1h cF9hbGxvY19sbWVtX21hcCh2b2lkKQoreworCWludCBpOwogCi0jZGVmaW5lCVBNQVBfTE1FTV9N QVAyKHZhMSwgcGh5czEsIHZhMiwgcGh5czIpCQkJCVwKLQlpbnQgY3B1OwkJCQkJCQlcCi0Jc3Ry dWN0IGxvY2FsX3N5c21hcHMgKnN5c207CQkJCQlcCi0JcHRfZW50cnlfdCAqcHRlLCBucHRlOwkJ CQkJCVwKLQkJCQkJCQkJCVwKLQlpbnRyID0gaW50cl9kaXNhYmxlKCk7CQkJCQkJXAotCWNwdSA9 IFBDUFVfR0VUKGNwdWlkKTsJCQkJCQlcCi0Jc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVdOwkJCQkJ XAotCXZhMSA9IHN5c20tPmJhc2U7CQkJCQkJXAotCXZhMiA9IHN5c20tPmJhc2UgKyBQQUdFX1NJ WkU7CQkJCQlcCi0JbnB0ZSA9IFRMQkxPX1BBX1RPX1BGTihwaHlzMSkgfAkJCQkJXAotCSAgICBQ VEVfRCB8IFBURV9WIHwgUFRFX0cgfCBQVEVfVyB8IFBURV9DX0NBQ0hFOwkJXAotCXB0ZSA9IHBt YXBfcHRlKGtlcm5lbF9wbWFwLCB2YTEpOwkJCQlcCi0JKnB0ZSA9IG5wdGU7CQkJCQkJCVwKLQlu cHRlID0gIFRMQkxPX1BBX1RPX1BGTihwaHlzMikgfAkJCQlcCi0JICAgIFBURV9EIHwgUFRFX1Yg fCBQVEVfRyB8IFBURV9XIHwgUFRFX0NfQ0FDSEU7CQlcCi0JcHRlID0gcG1hcF9wdGUoa2VybmVs X3BtYXAsIHZhMik7CQkJCVwKLQkqcHRlID0gbnB0ZTsJCQkJCQkJXAotCXN5c20tPnZhbGlkMSA9 IDE7CQkJCQkJXAorCWZvciAoaSA9IDA7IGkgPCBNQVhDUFU7IGkrKykgeworCQlzeXNtYXBfbG1l bVtpXS5iYXNlID0gdmlydHVhbF9hdmFpbDsKKwkJdmlydHVhbF9hdmFpbCArPSBQQUdFX1NJWkUg KiAyOworCQlzeXNtYXBfbG1lbVtpXS52YWxpZDEgPSBzeXNtYXBfbG1lbVtpXS52YWxpZDIgPSAw OworCX0KK30KKworc3RhdGljIF9faW5saW5lIHZtX29mZnNldF90CitwbWFwX2xtZW1fbWFwMSh2 bV9wYWRkcl90IHBoeXMpCit7CisJc3RydWN0IGxvY2FsX3N5c21hcHMgKnN5c207CisJcHRfZW50 cnlfdCAqcHRlLCBucHRlOworCXZtX29mZnNldF90IHZhOworCXVpbnQzMl90IGludHI7CisJaW50 IGNwdTsKKworCWludHIgPSBpbnRyX2Rpc2FibGUoKTsKKwljcHUgPSBQQ1BVX0dFVChjcHVpZCk7 CisJc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVdOworCXN5c20tPnNhdmVkX2ludHIgPSBpbnRyOwor CXZhID0gc3lzbS0+YmFzZTsKKwlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBoeXMpIHwKKwkgICAg UFRFX0QgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ19DQUNIRTsKKwlwdGUgPSBwbWFw X3B0ZShrZXJuZWxfcG1hcCwgdmEpOworCSpwdGUgPSBucHRlOworCXN5c20tPnZhbGlkMSA9IDE7 CisJcmV0dXJuIHZhOworfQorCitzdGF0aWMgX19pbmxpbmUgdm1fb2Zmc2V0X3QKK3BtYXBfbG1l bV9tYXAyKHZtX3BhZGRyX3QgcGh5czEsIHZtX3BhZGRyX3QgcGh5czIpCit7CisJc3RydWN0IGxv Y2FsX3N5c21hcHMgKnN5c207CisJcHRfZW50cnlfdCAqcHRlLCBucHRlOworCXZtX29mZnNldF90 IHZhMSwgdmEyOworCXVpbnQzMl90IGludHI7CisJaW50IGNwdTsKKworCWludHIgPSBpbnRyX2Rp c2FibGUoKTsKKwljcHUgPSBQQ1BVX0dFVChjcHVpZCk7CisJc3lzbSA9ICZzeXNtYXBfbG1lbVtj cHVdOworCXN5c20tPnNhdmVkX2ludHIgPSBpbnRyOworCXZhMSA9IHN5c20tPmJhc2U7CisJdmEy ID0gc3lzbS0+YmFzZSArIFBBR0VfU0laRTsKKwlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBoeXMx KSB8CisJICAgIFBURV9EIHwgUFRFX1YgfCBQVEVfRyB8IFBURV9XIHwgUFRFX0NfQ0FDSEU7CisJ cHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHZhMSk7CisJKnB0ZSA9IG5wdGU7CisJbnB0ZSA9 ICBUTEJMT19QQV9UT19QRk4ocGh5czIpIHwKKwkgICAgUFRFX0QgfCBQVEVfViB8IFBURV9HIHwg UFRFX1cgfCBQVEVfQ19DQUNIRTsKKwlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEyKTsK KwkqcHRlID0gbnB0ZTsKKwlzeXNtLT52YWxpZDEgPSAxOwogCXN5c20tPnZhbGlkMiA9IDE7CisJ cmV0dXJuIHZhMTsKK30KIAotI2RlZmluZQlQTUFQX0xNRU1fVU5NQVAoKQkJCQkJCVwKLQlwdGUg PSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgc3lzbS0+YmFzZSk7CQkJXAotCSpwdGUgPSBQVEVfRzsJ CQkJCQkJXAotCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3Moa2VybmVsX3BtYXAsIHN5c20tPmJhc2Up OwkJXAotCXN5c20tPnZhbGlkMSA9IDA7CQkJCQkJXAotCXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9w bWFwLCBzeXNtLT5iYXNlICsgUEFHRV9TSVpFKTsJCVwKLQkqcHRlID0gUFRFX0c7CQkJCQkJCVwK LQl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlICsgUEFHRV9T SVpFKTsJXAotCXN5c20tPnZhbGlkMiA9IDA7CQkJCQkJXAotCWludHJfcmVzdG9yZShpbnRyKQot I2VuZGlmCitzdGF0aWMgX19pbmxpbmUgdm9pZAorcG1hcF9sbWVtX3VubWFwKHZvaWQpCit7CisJ c3RydWN0IGxvY2FsX3N5c21hcHMgKnN5c207CisJcHRfZW50cnlfdCAqcHRlOworCWludCBjcHU7 CiAKKwljcHUgPSBQQ1BVX0dFVChjcHVpZCk7CisJc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVdOwor CXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlKTsKKwkqcHRlID0gUFRFX0c7 CisJdGxiX2ludmFsaWRhdGVfYWRkcmVzcyhrZXJuZWxfcG1hcCwgc3lzbS0+YmFzZSk7CisJc3lz bS0+dmFsaWQxID0gMDsKKwlpZiAoc3lzbS0+dmFsaWQyKSB7CisJCXB0ZSA9IHBtYXBfcHRlKGtl cm5lbF9wbWFwLCBzeXNtLT5iYXNlICsgUEFHRV9TSVpFKTsKKwkJKnB0ZSA9IFBURV9HOworCQl0 bGJfaW52YWxpZGF0ZV9hZGRyZXNzKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlICsgUEFHRV9TSVpF KTsKKwkJc3lzbS0+dmFsaWQyID0gMDsKKwl9CisJaW50cl9yZXN0b3JlKHN5c20tPnNhdmVkX2lu dHIpOworfQorI2Vsc2UgIC8qIF9fbWlwc19uNjQgKi8KKworc3RhdGljIF9faW5saW5lIHZvaWQK K3BtYXBfYWxsb2NfbG1lbV9tYXAodm9pZCkKK3sKK30KKworc3RhdGljIF9faW5saW5lIHZtX29m ZnNldF90CitwbWFwX2xtZW1fbWFwMSh2bV9wYWRkcl90IHBoeXMpCit7CisKKwlyZXR1cm4gKDAp OworfQorCitzdGF0aWMgX19pbmxpbmUgdm1fb2Zmc2V0X3QKK3BtYXBfbG1lbV9tYXAyKHZtX3Bh ZGRyX3QgcGh5czEsIHZtX3BhZGRyX3QgcGh5czIpCit7CisKKwlyZXR1cm4gKDApOworfQorCitz dGF0aWMgX19pbmxpbmUgdm1fb2Zmc2V0X3QgCitwbWFwX2xtZW1fdW5tYXAodm9pZCkKK3sKKwor CXJldHVybiAoMCk7Cit9CisjZW5kaWYgLyogIV9fbWlwc19uNjQgKi8KKwogLyoKICAqIFBhZ2Ug dGFibGUgZW50cnkgbG9va3VwIHJvdXRpbmVzLgogICovCiBzdGF0aWMgX19pbmxpbmUgcGRfZW50 cnlfdCAqCiBwbWFwX3NlZ21hcChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEpCiB7CisKIAly ZXR1cm4gKCZwbWFwLT5wbV9zZWd0YWJbcG1hcF9zZWdfaW5kZXgodmEpXSk7CiB9CiAKQEAgLTI5 NSwxMiArMzYzLDE0IEBACiBzdGF0aWMgX19pbmxpbmUgcGRfZW50cnlfdCAqCiBwbWFwX3BkcGVf dG9fcGRlKHBkX2VudHJ5X3QgKnBkcGUsIHZtX29mZnNldF90IHZhKQogeworCiAJcmV0dXJuIHBk cGU7CiB9CiAKIHN0YXRpYyBfX2lubGluZSAKIHBkX2VudHJ5X3QgKnBtYXBfcGRlKHBtYXBfdCBw bWFwLCB2bV9vZmZzZXRfdCB2YSkKIHsKKwogCXJldHVybiBwbWFwX3NlZ21hcChwbWFwLCB2YSk7 CiB9CiAjZW5kaWYKQEAgLTM1MSwxMCArNDIxLDkgQEAKIAogCXBhID0gcGh5c19hdmFpbFswXTsK IAlwaHlzX2F2YWlsWzBdICs9IHNpemU7Ci0JaWYgKHBhID49IE1JUFNfS1NFRzBfTEFSR0VTVF9Q SFlTKSB7CisJaWYgKE1JUFNfRElSRUNUX01BUFBBQkxFKHBhKSA9PSAwKQogCQlwYW5pYygiT3V0 IG9mIG1lbW9yeSBiZWxvdyA1MTJNZWc/Iik7Ci0JfQotCXZhID0gTUlQU19QSFlTX1RPX0tTRUcw KHBhKTsKKwl2YSA9IE1JUFNfUEhZU19UT19ESVJFQ1QocGEpOwogCWJ6ZXJvKChjYWRkcl90KXZh LCBzaXplKTsKIAlyZXR1cm4gdmE7CiB9CkBAIC00MjYsOSArNDk1LDcgQEAKIHBtYXBfYm9vdHN0 cmFwKHZvaWQpCiB7CiAJaW50IGk7Ci0jaWYgIWRlZmluZWQoX19taXBzX242NCkKLQlpbnQgbWVt b3J5X2xhcmdlcl90aGFuXzUxMm1lZyA9IDA7Ci0jZW5kaWYKKwlpbnQgbmVlZF9sb2NhbF9tYXBw aW5ncyA9IDA7IAogCiAJLyogU29ydC4gKi8KIGFnYWluOgpAQCAtNDU2LDEwICs1MjMsMTMgQEAK IAkJfQogCX0KIAotI2lmICFkZWZpbmVkKF9fbWlwc19uNjQpCi0JaWYgKHBoeXNfYXZhaWxbaSAt IDFdID49IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTKQotCQltZW1vcnlfbGFyZ2VyX3RoYW5fNTEy bWVnID0gMTsKLSNlbmRpZgorICAgICAgIAkvKgorCSAqIEluIDMyIGJpdCwgd2UgbWF5IGhhdmUg bWVtb3J5IHdoaWNoIGNhbm5vdCBiZSBtYXBwZWQgZGlyZWN0bHkKKwkgKiB0aGlzIG1lbW9yeSB3 aWxsIG5lZWQgdGVtcG9yYXJ5IG1hcHBpbmcgYmVmb3JlIGl0IGNhbiBiZQorCSAqIGFjY2Vzc2Vk LgorCSAqLworCWlmICghTUlQU19ESVJFQ1RfTUFQUEFCTEUocGh5c19hdmFpbFtpIC0gMV0pKQor CQluZWVkX2xvY2FsX21hcHBpbmdzID0gMTsKIAogCS8qCiAJICogQ29weSB0aGUgcGh5c19hdmFp bFtdIGFycmF5IGJlZm9yZSB3ZSBzdGFydCBzdGVhbGluZyBtZW1vcnkgZnJvbSBpdC4KQEAgLTUx OCwyMiArNTg4LDggQEAKIAkJcHJpbnRmKCJwY3B1IGlzIGF2YWlsYWJsZSBhdCB2aXJ0dWFsIGFk ZHJlc3MgJXAuXG4iLCBwY3B1cCk7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9fbWlwc19uNjQp Ci0JLyoKLQkgKiBTdGVhbCBzb21lIHZpcnR1YWwgc3BhY2UgdGhhdCB3aWxsIG5vdCBiZSBpbiBr ZXJuZWxfc2VnbWFwLiBUaGlzCi0JICogdmEgbWVtb3J5IHNwYWNlIHdpbGwgYmUgdXNlZCB0byBt YXAgaW4ga2VybmVsIHBhZ2VzIHRoYXQgYXJlCi0JICogb3V0c2lkZSB0aGUgNTEyTWVnIHJlZ2lv bi4gTm90ZSB0aGF0IHdlIG9ubHkgZG8gdGhpcyBzdGVhbCB3aGVuCi0JICogd2UgZG8gaGF2ZSBt ZW1vcnkgaW4gdGhpcyByZWdpb24sIHRoYXQgd2F5IGZvciBzeXN0ZW1zIHdpdGgKLQkgKiBzbWFs bGVyIG1lbW9yeSB3ZSBkb24ndCAic3RlYWwiIGFueSB2YSByYW5nZXMgOi0pCi0JICovCi0JaWYg KG1lbW9yeV9sYXJnZXJfdGhhbl81MTJtZWcpIHsKLQkJZm9yIChpID0gMDsgaSA8IE1BWENQVTsg aSsrKSB7Ci0JCQlzeXNtYXBfbG1lbVtpXS5iYXNlID0gdmlydHVhbF9hdmFpbDsKLQkJCXZpcnR1 YWxfYXZhaWwgKz0gUEFHRV9TSVpFICogMjsKLQkJCXN5c21hcF9sbWVtW2ldLnZhbGlkMSA9IHN5 c21hcF9sbWVtW2ldLnZhbGlkMiA9IDA7Ci0JCX0KLQl9Ci0jZW5kaWYKKwlpZiAobmVlZF9sb2Nh bF9tYXBwaW5ncykKKwkJcG1hcF9hbGxvY19sbWVtX21hcCgpOwogCXBtYXBfY3JlYXRlX2tlcm5l bF9wYWdldGFibGUoKTsKIAlwbWFwX21heF9hc2lkID0gVk1OVU1fUElEUzsKIAltaXBzX3dyX2Vu dHJ5aGkoMCk7CkBAIC04NDcsMjAgKzkwMywxMyBAQAogICoKICAqCVVzZSBYS1BIWVMgZm9yIDY0 IGJpdCwgYW5kIEtTRUcwIHdoZXJlIHBvc3NpYmxlIGZvciAzMiBiaXQuCiAgKi8KLSNpZiBkZWZp bmVkKF9fbWlwc19uNjQpCiB2bV9vZmZzZXRfdAogcG1hcF9tYXAodm1fb2Zmc2V0X3QgKnZpcnQs IHZtX29mZnNldF90IHN0YXJ0LCB2bV9vZmZzZXRfdCBlbmQsIGludCBwcm90KQogewotCXJldHVy biAoTUlQU19QSFlTX1RPX1hLUEhZU19DQUNIRUQoc3RhcnQpKTsKLX0KLSNlbHNlCi12bV9vZmZz ZXRfdAotcG1hcF9tYXAodm1fb2Zmc2V0X3QgKnZpcnQsIHZtX29mZnNldF90IHN0YXJ0LCB2bV9v ZmZzZXRfdCBlbmQsIGludCBwcm90KQotewogCXZtX29mZnNldF90IHZhLCBzdmE7CiAKLQlpZiAo ZW5kIDw9IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTKQotCQlyZXR1cm4gKE1JUFNfUEhZU19UT19L U0VHMChzdGFydCkpOworCWlmIChNSVBTX0RJUkVDVF9NQVBQQUJMRShlbmQpKQorCQlyZXR1cm4g KE1JUFNfUEhZU19UT19ESVJFQ1Qoc3RhcnQpKTsKIAogCXZhID0gc3ZhID0gKnZpcnQ7CiAJd2hp bGUgKHN0YXJ0IDwgZW5kKSB7CkBAIC04NzEsNyArOTIwLDYgQEAKIAkqdmlydCA9IHZhOwogCXJl dHVybiAoc3ZhKTsKIH0KLSNlbmRpZgogCiAvKgogICogQWRkIGEgbGlzdCBvZiB3aXJlZCBwYWdl cyB0byB0aGUga3ZhCkBAIC05NjgsNyArMTAxNiw3IEBACiAJCSAqIFJlY3Vyc2l2ZWx5IGRlY3Jl bWVudCBuZXh0IGxldmVsIHBhZ2V0YWJsZSByZWZjb3VudAogCQkgKi8KIAkJcGRwID0gKHBkX2Vu dHJ5X3QgKikqcG1hcF9zZWdtYXAocG1hcCwgdmEpOwotCQlwZHBnID0gUEhZU19UT19WTV9QQUdF KE1JUFNfS1NFRzBfVE9fUEhZUyhwZHApKTsKKwkJcGRwZyA9IFBIWVNfVE9fVk1fUEFHRShNSVBT X0RJUkVDVF9UT19QSFlTKHBkcCkpOwogCQlwbWFwX3Vud2lyZV9wdGVfaG9sZChwbWFwLCB2YSwg cGRwZyk7CiAJfQogI2VuZGlmCkBAIC0xMDAzLDcgKzEwNTEsNyBAQAogCQkJbXB0ZSA9IHBtYXAt PnBtX3B0cGhpbnQ7CiAJCX0gZWxzZSB7CiAJCQlwdGV2YSA9ICpwbWFwX3BkZShwbWFwLCB2YSk7 Ci0JCQltcHRlID0gUEhZU19UT19WTV9QQUdFKE1JUFNfS1NFRzBfVE9fUEhZUyhwdGV2YSkpOwor CQkJbXB0ZSA9IFBIWVNfVE9fVk1fUEFHRShNSVBTX0RJUkVDVF9UT19QSFlTKHB0ZXZhKSk7CiAJ CQlwbWFwLT5wbV9wdHBoaW50ID0gbXB0ZTsKIAkJfQogCX0KQEAgLTEwMzIsNyArMTA4MCwxMSBA QAogcG1hcF9ncm93X3B0ZV9wYWdlX2NhY2hlKCkKIHsKIAorI2lmZGVmIF9fbWlwc19uNjQKKwl2 bV9jb250aWdfZ3Jvd19jYWNoZSgzLCAwLCAweGZmZmZmZmZmZmZVTCk7CisjZWxzZQogCXZtX2Nv bnRpZ19ncm93X2NhY2hlKDMsIDAsIE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTKTsKKyNlbmRpZgog fQogCiBzdGF0aWMgdm1fcGFnZV90CkBAIC0xMDcyLDcgKzExMjQsNyBAQAogCXdoaWxlICgocHRk cGcgPSBwbWFwX2FsbG9jX3B0ZV9wYWdlKE5VU0VSUEdUQkxTLCBWTV9BTExPQ19OT1JNQUwpKSA9 PSBOVUxMKQogCSAgICAgICBwbWFwX2dyb3dfcHRlX3BhZ2VfY2FjaGUoKTsKIAotCXB0ZHZhID0g TUlQU19QSFlTX1RPX0tTRUcwKFZNX1BBR0VfVE9fUEhZUyhwdGRwZykpOworCXB0ZHZhID0gTUlQ U19QSFlTX1RPX0RJUkVDVChWTV9QQUdFX1RPX1BIWVMocHRkcGcpKTsKIAlwbWFwLT5wbV9zZWd0 YWIgPSAocGRfZW50cnlfdCAqKXB0ZHZhOwogCXBtYXAtPnBtX2FjdGl2ZSA9IDA7CiAJcG1hcC0+ cG1fcHRwaGludCA9IE5VTEw7CkBAIC0xMTIzLDcgKzExNzUsNyBAQAogCSAqIE1hcCB0aGUgcGFn ZXRhYmxlIHBhZ2UgaW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLCBpZiBpdAogCSAqIGlz bid0IGFscmVhZHkgdGhlcmUuCiAJICovCi0JcGFnZXZhID0gTUlQU19QSFlTX1RPX0tTRUcwKFZN X1BBR0VfVE9fUEhZUyhtKSk7CisJcGFnZXZhID0gTUlQU19QSFlTX1RPX0RJUkVDVChWTV9QQUdF X1RPX1BIWVMobSkpOwogCiAjaWZkZWYgX19taXBzX242NAogCWlmIChwdGVwaW5kZXggPj0gTlVQ REUpIHsKQEAgLTExNDYsNyArMTE5OCw3IEBACiAJCQkJcmV0dXJuIChOVUxMKTsKIAkJCX0KIAkJ fSBlbHNlIHsKLQkJCXBnID0gUEhZU19UT19WTV9QQUdFKE1JUFNfS1NFRzBfVE9fUEhZUygqcGRl cCkpOworCQkJcGcgPSBQSFlTX1RPX1ZNX1BBR0UoTUlQU19ESVJFQ1RfVE9fUEhZUygqcGRlcCkp OwogCQkJcGctPndpcmVfY291bnQrKzsKIAkJfQogCQkvKiBOZXh0IGxldmVsIGVudHJ5ICovCkBA IC0xMTk5LDcgKzEyNTEsNyBAQAogCQkgICAgKHBtYXAtPnBtX3B0cGhpbnQtPnBpbmRleCA9PSBw dGVwaW5kZXgpKSB7CiAJCQltID0gcG1hcC0+cG1fcHRwaGludDsKIAkJfSBlbHNlIHsKLQkJCW0g PSBQSFlTX1RPX1ZNX1BBR0UoTUlQU19LU0VHMF9UT19QSFlTKCpwZGUpKTsKKwkJCW0gPSBQSFlT X1RPX1ZNX1BBR0UoTUlQU19ESVJFQ1RfVE9fUEhZUygqcGRlKSk7CiAJCQlwbWFwLT5wbV9wdHBo aW50ID0gbTsKIAkJfQogCQltLT53aXJlX2NvdW50Kys7CkBAIC0xMjQ3LDcgKzEyOTksNyBAQAog CSAgICBwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCkpOwogCiAJcHRkdmEgPSAodm1fb2Zm c2V0X3QpcG1hcC0+cG1fc2VndGFiOwotCXB0ZHBnID0gUEhZU19UT19WTV9QQUdFKE1JUFNfS1NF RzBfVE9fUEhZUyhwdGR2YSkpOworCXB0ZHBnID0gUEhZU19UT19WTV9QQUdFKE1JUFNfRElSRUNU X1RPX1BIWVMocHRkdmEpKTsKIAogCXB0ZHBnLT53aXJlX2NvdW50LS07CiAJYXRvbWljX3N1YnRy YWN0X2ludCgmY250LnZfd2lyZV9jb3VudCwgMSk7CkBAIC0xMjc4LDcgKzEzMzAsNyBAQAogCQkJ bmtwZyA9IHBtYXBfYWxsb2NfcHRlX3BhZ2UobmtwdCwgVk1fQUxMT0NfSU5URVJSVVBUKTsKIAkJ CWlmIChua3BnID09IE5VTEwpCiAJCQkJcGFuaWMoInBtYXBfZ3Jvd2tlcm5lbDogbm8gbWVtb3J5 IHRvIGdyb3cga2VybmVsIik7Ci0JCQkqcGRwZSA9IChwZF9lbnRyeV90KU1JUFNfUEhZU19UT19L U0VHMChWTV9QQUdFX1RPX1BIWVMobmtwZykpOworCQkJKnBkcGUgPSAocGRfZW50cnlfdClNSVBT X1BIWVNfVE9fRElSRUNUKFZNX1BBR0VfVE9fUEhZUyhua3BnKSk7CiAJCQljb250aW51ZTsgLyog dHJ5IGFnYWluICovCiAJCX0KICNlbmRpZgpAQCAtMTI5OSw3ICsxMzUxLDcgQEAKIAkJaWYgKCFu a3BnKQogCQkJcGFuaWMoInBtYXBfZ3Jvd2tlcm5lbDogbm8gbWVtb3J5IHRvIGdyb3cga2VybmVs Iik7CiAJCW5rcHQrKzsKLQkJKnBkZSA9IChwZF9lbnRyeV90KU1JUFNfUEhZU19UT19LU0VHMChW TV9QQUdFX1RPX1BIWVMobmtwZykpOworCQkqcGRlID0gKHBkX2VudHJ5X3QpTUlQU19QSFlTX1RP X0RJUkVDVChWTV9QQUdFX1RPX1BIWVMobmtwZykpOwogCiAJCS8qCiAJCSAqIFRoZSBSWzQtN10/ MDAgc3RvcmVzIG9ubHkgb25lIGNvcHkgb2YgdGhlIEdsb2JhbCBiaXQgaW4KQEAgLTIwNzcsNyAr MjEyOSw3IEBACiAJCQkJCW1wdGUgPSBwbWFwLT5wbV9wdHBoaW50OwogCQkJCX0gZWxzZSB7CiAJ CQkJCW1wdGUgPSBQSFlTX1RPX1ZNX1BBR0UoCi0JCQkJCQlNSVBTX0tTRUcwX1RPX1BIWVMoKnBk ZSkpOworCQkJCQkJTUlQU19ESVJFQ1RfVE9fUEhZUygqcGRlKSk7CiAJCQkJCXBtYXAtPnBtX3B0 cGhpbnQgPSBtcHRlOwogCQkJCX0KIAkJCQltcHRlLT53aXJlX2NvdW50Kys7CkBAIC0yMTUzLDMw ICsyMjA1LDIxIEBACiAgKgogICogVXNlIFhLUEhZUyBmb3IgNjQgYml0LCBhbmQgS1NFRzAgd2hl cmUgcG9zc2libGUgZm9yIDMyIGJpdC4KICAqLwotI2lmIGRlZmluZWQoX19taXBzX242NCkKIHZv aWQgKgogcG1hcF9rZW50ZXJfdGVtcG9yYXJ5KHZtX3BhZGRyX3QgcGEsIGludCBpKQogewotCXJl dHVybiAoKHZvaWQgKilNSVBTX1BIWVNfVE9fWEtQSFlTX0NBQ0hFRChwYSkpOwotfQotdm9pZAot cG1hcF9rZW50ZXJfdGVtcG9yYXJ5X2ZyZWUodm1fcGFkZHJfdCBwYSkKLXsKLX0KLSNlbHNlCi12 b2lkICoKLXBtYXBfa2VudGVyX3RlbXBvcmFyeSh2bV9wYWRkcl90IHBhLCBpbnQgaSkKLXsKIAl2 bV9vZmZzZXRfdCB2YTsKLQlyZWdpc3Rlcl90IGludHI7CisKIAlpZiAoaSAhPSAwKQogCQlwcmlu dGYoIiVzOiBFUlJPUiEhISBNb3JlIHRoYW4gb25lIHBhZ2Ugb2YgdmlydHVhbCBhZGRyZXNzIG1h cHBpbmcgbm90IHN1cHBvcnRlZFxuIiwKIAkJICAgIF9fZnVuY19fKTsKIAotCWlmIChwYSA8IE1J UFNfS1NFRzBfTEFSR0VTVF9QSFlTKSB7Ci0JCXZhID0gTUlQU19QSFlTX1RPX0tTRUcwKHBhKTsK KwlpZiAoTUlQU19ESVJFQ1RfTUFQUEFCTEUocGEpKSB7CisJCXZhID0gTUlQU19QSFlTX1RPX0RJ UkVDVChwYSk7CiAJfSBlbHNlIHsKKyNpZm5kZWYgX19taXBzX242NCAgICAvKiBYWFggOiB0byBi ZSBjb252ZXJ0ZWQgdG8gbmV3IHN0eWxlICovCiAJCWludCBjcHU7CisJCXJlZ2lzdGVyX3QgaW50 cjsKIAkJc3RydWN0IGxvY2FsX3N5c21hcHMgKnN5c207CiAJCXB0X2VudHJ5X3QgKnB0ZSwgbnB0 ZTsKIApAQCAtMjE5Niw2ICsyMjM5LDcgQEAKIAkJcG1hcF91cGRhdGVfcGFnZShrZXJuZWxfcG1h cCwgc3lzbS0+YmFzZSwgbnB0ZSk7CiAJCXZhID0gc3lzbS0+YmFzZTsKIAkJaW50cl9yZXN0b3Jl KGludHIpOworI2VuZGlmCiAJfQogCXJldHVybiAoKHZvaWQgKil2YSk7CiB9CkBAIC0yMjAzLDE0 ICsyMjQ3LDE3IEBACiB2b2lkCiBwbWFwX2tlbnRlcl90ZW1wb3JhcnlfZnJlZSh2bV9wYWRkcl90 IHBhKQogeworI2lmbmRlZiBfX21pcHNfbjY0ICAgIC8qIFhYWCA6IHRvIGJlIGNvbnZlcnRlZCB0 byBuZXcgc3R5bGUgKi8KIAlpbnQgY3B1OwogCXJlZ2lzdGVyX3QgaW50cjsKIAlzdHJ1Y3QgbG9j YWxfc3lzbWFwcyAqc3lzbTsKKyNlbmRpZgogCi0JaWYgKHBhIDwgTUlQU19LU0VHMF9MQVJHRVNU X1BIWVMpIHsKKwlpZiAoTUlQU19ESVJFQ1RfTUFQUEFCTEUocGEpKSB7CiAJCS8qIG5vdGhpbmcg dG8gZG8gZm9yIHRoaXMgY2FzZSAqLwogCQlyZXR1cm47CiAJfQorI2lmbmRlZiBfX21pcHNfbjY0 ICAgIC8qIFhYWCA6IHRvIGJlIGNvbnZlcnRlZCB0byBuZXcgc3R5bGUgKi8KIAljcHUgPSBQQ1BV X0dFVChjcHVpZCk7CiAJc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVdOwogCWlmIChzeXNtLT52YWxp ZDEpIHsKQEAgLTIyMjMsOCArMjI3MCw4IEBACiAJCWludHJfcmVzdG9yZShpbnRyKTsKIAkJc3lz bS0+dmFsaWQxID0gMDsKIAl9Ci19CiAjZW5kaWYKK30KIAogLyoKICAqIE1vdmVkIHRoZSBjb2Rl IHRvIE1hY2hpbmUgSW5kZXBlbmRlbnQKQEAgLTIzMzMsMTEzICsyMzgwLDY1IEBACiAgKgogICog CVVzZSBYS1BIWVMgZm9yIDY0IGJpdCwgYW5kIEtTRUcwIHdoZXJlIHBvc3NpYmxlIGZvciAzMiBi aXQuCiAgKi8KLSNpZiBkZWZpbmVkIChfX21pcHNfbjY0KQogdm9pZAogcG1hcF96ZXJvX3BhZ2Uo dm1fcGFnZV90IG0pCiB7CiAJdm1fb2Zmc2V0X3QgdmE7CiAJdm1fcGFkZHJfdCBwaHlzID0gVk1f UEFHRV9UT19QSFlTKG0pOwogCi0JdmEgPSBNSVBTX1BIWVNfVE9fWEtQSFlTX0NBQ0hFRChwaHlz KTsKLQliemVybygoY2FkZHJfdCl2YSwgUEFHRV9TSVpFKTsKLQltaXBzX2RjYWNoZV93Ymludl9y YW5nZSh2YSwgUEFHRV9TSVpFKTsKLX0KLSNlbHNlCi12b2lkCi1wbWFwX3plcm9fcGFnZSh2bV9w YWdlX3QgbSkKLXsKLQl2bV9vZmZzZXRfdCB2YTsKLQl2bV9wYWRkcl90IHBoeXMgPSBWTV9QQUdF X1RPX1BIWVMobSk7Ci0JcmVnaXN0ZXJfdCBpbnRyOwotCi0JaWYgKHBoeXMgPCBNSVBTX0tTRUcw X0xBUkdFU1RfUEhZUykgewotCQl2YSA9IE1JUFNfUEhZU19UT19LU0VHMChwaHlzKTsKLQorCWlm IChNSVBTX0RJUkVDVF9NQVBQQUJMRShwaHlzKSkgeworCQl2YSA9IE1JUFNfUEhZU19UT19ESVJF Q1QocGh5cyk7CiAJCWJ6ZXJvKChjYWRkcl90KXZhLCBQQUdFX1NJWkUpOwogCQltaXBzX2RjYWNo ZV93Ymludl9yYW5nZSh2YSwgUEFHRV9TSVpFKTsKIAl9IGVsc2UgewotCQlQTUFQX0xNRU1fTUFQ MSh2YSwgcGh5cyk7Ci0KKwkJdmEgPSBwbWFwX2xtZW1fbWFwMShwaHlzKTsKIAkJYnplcm8oKGNh ZGRyX3QpdmEsIFBBR0VfU0laRSk7CiAJCW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhLCBQQUdF X1NJWkUpOwotCi0JCVBNQVBfTE1FTV9VTk1BUCgpOworCQlwbWFwX2xtZW1fdW5tYXAoKTsKIAl9 CiB9Ci0jZW5kaWYKKwogLyoKICAqCXBtYXBfemVyb19wYWdlX2FyZWEgemVyb3MgdGhlIHNwZWNp ZmllZCBoYXJkd2FyZSBwYWdlIGJ5IG1hcHBpbmcKICAqCXRoZSBwYWdlIGludG8gS1ZNIGFuZCB1 c2luZyBiemVybyB0byBjbGVhciBpdHMgY29udGVudHMuCiAgKgogICoJb2ZmIGFuZCBzaXplIG1h eSBub3QgY292ZXIgYW4gYXJlYSBiZXlvbmQgYSBzaW5nbGUgaGFyZHdhcmUgcGFnZS4KICAqLwot I2lmIGRlZmluZWQgKF9fbWlwc19uNjQpCiB2b2lkCiBwbWFwX3plcm9fcGFnZV9hcmVhKHZtX3Bh Z2VfdCBtLCBpbnQgb2ZmLCBpbnQgc2l6ZSkKIHsKIAl2bV9vZmZzZXRfdCB2YTsKIAl2bV9wYWRk cl90IHBoeXMgPSBWTV9QQUdFX1RPX1BIWVMobSk7CiAKLQl2YSA9IE1JUFNfUEhZU19UT19YS1BI WVNfQ0FDSEVEKHBoeXMpOwotCWJ6ZXJvKChjaGFyICopKGNhZGRyX3QpdmEgKyBvZmYsIHNpemUp OwotCW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhICsgb2ZmLCBzaXplKTsKLX0KLSNlbHNlCi12 b2lkCi1wbWFwX3plcm9fcGFnZV9hcmVhKHZtX3BhZ2VfdCBtLCBpbnQgb2ZmLCBpbnQgc2l6ZSkK LXsKLQl2bV9vZmZzZXRfdCB2YTsKLQl2bV9wYWRkcl90IHBoeXMgPSBWTV9QQUdFX1RPX1BIWVMo bSk7Ci0JcmVnaXN0ZXJfdCBpbnRyOwotCi0JaWYgKHBoeXMgPCBNSVBTX0tTRUcwX0xBUkdFU1Rf UEhZUykgewotCQl2YSA9IE1JUFNfUEhZU19UT19LU0VHMChwaHlzKTsKKwlpZiAoTUlQU19ESVJF Q1RfTUFQUEFCTEUocGh5cykpIHsKKwkJdmEgPSBNSVBTX1BIWVNfVE9fRElSRUNUKHBoeXMpOwog CQliemVybygoY2hhciAqKShjYWRkcl90KXZhICsgb2ZmLCBzaXplKTsKIAkJbWlwc19kY2FjaGVf d2JpbnZfcmFuZ2UodmEgKyBvZmYsIHNpemUpOwogCX0gZWxzZSB7Ci0JCVBNQVBfTE1FTV9NQVAx KHZhLCBwaHlzKTsKLQorCQl2YSA9IHBtYXBfbG1lbV9tYXAxKHBoeXMpOwogCQliemVybygoY2hh ciAqKXZhICsgb2ZmLCBzaXplKTsKIAkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2UodmEgKyBvZmYs IHNpemUpOwotCi0JCVBNQVBfTE1FTV9VTk1BUCgpOworCQlwbWFwX2xtZW1fdW5tYXAoKTsKIAl9 CiB9Ci0jZW5kaWYKIAotI2lmIGRlZmluZWQgKF9fbWlwc19uNjQpCiB2b2lkCiBwbWFwX3plcm9f cGFnZV9pZGxlKHZtX3BhZ2VfdCBtKQogewogCXZtX29mZnNldF90IHZhOwogCXZtX3BhZGRyX3Qg cGh5cyA9IFZNX1BBR0VfVE9fUEhZUyhtKTsKIAotCXZhID0gTUlQU19QSFlTX1RPX1hLUEhZU19D QUNIRUQocGh5cyk7Ci0JYnplcm8oKGNhZGRyX3QpdmEsIFBBR0VfU0laRSk7Ci0JbWlwc19kY2Fj aGVfd2JpbnZfcmFuZ2UodmEsIFBBR0VfU0laRSk7Ci19Ci0jZWxzZQotdm9pZAotcG1hcF96ZXJv X3BhZ2VfaWRsZSh2bV9wYWdlX3QgbSkKLXsKLQl2bV9vZmZzZXRfdCB2YTsKLQl2bV9wYWRkcl90 IHBoeXMgPSBWTV9QQUdFX1RPX1BIWVMobSk7Ci0JcmVnaXN0ZXJfdCBpbnRyOwotCi0JaWYgKHBo eXMgPCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUykgewotCQl2YSA9IE1JUFNfUEhZU19UT19LU0VH MChwaHlzKTsKKwlpZiAoTUlQU19ESVJFQ1RfTUFQUEFCTEUocGh5cykpIHsKKwkJdmEgPSBNSVBT X1BIWVNfVE9fRElSRUNUKHBoeXMpOwogCQliemVybygoY2FkZHJfdCl2YSwgUEFHRV9TSVpFKTsK IAkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2UodmEsIFBBR0VfU0laRSk7CiAJfSBlbHNlIHsKLQkJ UE1BUF9MTUVNX01BUDEodmEsIHBoeXMpOwotCisJCXZhID0gcG1hcF9sbWVtX21hcDEocGh5cyk7 CiAJCWJ6ZXJvKChjYWRkcl90KXZhLCBQQUdFX1NJWkUpOwogCQltaXBzX2RjYWNoZV93Ymludl9y YW5nZSh2YSwgUEFHRV9TSVpFKTsKLQotCQlQTUFQX0xNRU1fVU5NQVAoKTsKKwkJcG1hcF9sbWVt X3VubWFwKCk7CiAJfQogfQotI2VuZGlmCiAKIC8qCiAgKglwbWFwX2NvcHlfcGFnZSBjb3BpZXMg dGhlIHNwZWNpZmllZCAobWFjaGluZSBpbmRlcGVuZGVudCkKQEAgLTI0NDksMzEgKzI0NDgsMTQg QEAKICAqCiAgKiAJVXNlIFhLUEhZUyBmb3IgNjQgYml0LCBhbmQgS1NFRzAgd2hlcmUgcG9zc2li bGUgZm9yIDMyIGJpdC4KICAqLwotI2lmIGRlZmluZWQgKF9fbWlwc19uNjQpCiB2b2lkCiBwbWFw X2NvcHlfcGFnZSh2bV9wYWdlX3Qgc3JjLCB2bV9wYWdlX3QgZHN0KQogewogCXZtX29mZnNldF90 IHZhX3NyYywgdmFfZHN0OwotCXZtX3BhZGRyX3QgcGh5X3NyYyA9IFZNX1BBR0VfVE9fUEhZUyhz cmMpOwotCXZtX3BhZGRyX3QgcGh5X2RzdCA9IFZNX1BBR0VfVE9fUEhZUyhkc3QpOworCXZtX3Bh ZGRyX3QgcGh5c19zcmMgPSBWTV9QQUdFX1RPX1BIWVMoc3JjKTsKKwl2bV9wYWRkcl90IHBoeXNf ZHN0ID0gVk1fUEFHRV9UT19QSFlTKGRzdCk7CiAKLQlwbWFwX2ZsdXNoX3B2Y2FjaGUoc3JjKTsK LQltaXBzX2RjYWNoZV93Ymludl9yYW5nZV9pbmRleChNSVBTX1BIWVNfVE9fWEtQSFlTX0NBQ0hF RChwaHlfZHN0KSwgUEFHRV9TSVpFKTsKLQl2YV9zcmMgPSBNSVBTX1BIWVNfVE9fWEtQSFlTX0NB Q0hFRChwaHlfc3JjKTsKLQl2YV9kc3QgPSBNSVBTX1BIWVNfVE9fWEtQSFlTX0NBQ0hFRChwaHlf ZHN0KTsKLQliY29weSgoY2FkZHJfdCl2YV9zcmMsIChjYWRkcl90KXZhX2RzdCwgUEFHRV9TSVpF KTsKLQltaXBzX2RjYWNoZV93Ymludl9yYW5nZSh2YV9kc3QsIFBBR0VfU0laRSk7Ci19Ci0jZWxz ZQotdm9pZAotcG1hcF9jb3B5X3BhZ2Uodm1fcGFnZV90IHNyYywgdm1fcGFnZV90IGRzdCkKLXsK LQl2bV9vZmZzZXRfdCB2YV9zcmMsIHZhX2RzdDsKLQl2bV9wYWRkcl90IHBoeV9zcmMgPSBWTV9Q QUdFX1RPX1BIWVMoc3JjKTsKLQl2bV9wYWRkcl90IHBoeV9kc3QgPSBWTV9QQUdFX1RPX1BIWVMo ZHN0KTsKLQlyZWdpc3Rlcl90IGludHI7Ci0KLQlpZiAoKHBoeV9zcmMgPCBNSVBTX0tTRUcwX0xB UkdFU1RfUEhZUykgJiYgKHBoeV9kc3QgPCBNSVBTX0tTRUcwX0xBUkdFU1RfUEhZUykpIHsKKwlp ZiAoTUlQU19ESVJFQ1RfTUFQUEFCTEUocGh5c19zcmMpICYmIE1JUFNfRElSRUNUX01BUFBBQkxF KHBoeXNfZHN0KSkgewogCQkvKiBlYXN5IGNhc2UsIGFsbCBjYW4gYmUgYWNjZXNzZWQgdmlhIEtT RUcwICovCiAJCS8qCiAJCSAqIEZsdXNoIGFsbCBjYWNoZXMgZm9yIFZBIHRoYXQgYXJlIG1hcHBl ZCB0byB0aGlzIHBhZ2UKQEAgLTI0ODEsMjEgKzI0NjMsMTkgQEAKIAkJICovCiAJCXBtYXBfZmx1 c2hfcHZjYWNoZShzcmMpOwogCQltaXBzX2RjYWNoZV93Ymludl9yYW5nZV9pbmRleCgKLQkJICAg IE1JUFNfUEhZU19UT19LU0VHMChwaHlfZHN0KSwgUEFHRV9TSVpFKTsKLQkJdmFfc3JjID0gTUlQ U19QSFlTX1RPX0tTRUcwKHBoeV9zcmMpOwotCQl2YV9kc3QgPSBNSVBTX1BIWVNfVE9fS1NFRzAo cGh5X2RzdCk7CisJCSAgICBNSVBTX1BIWVNfVE9fRElSRUNUKHBoeXNfZHN0KSwgUEFHRV9TSVpF KTsKKwkJdmFfc3JjID0gTUlQU19QSFlTX1RPX0RJUkVDVChwaHlzX3NyYyk7CisJCXZhX2RzdCA9 IE1JUFNfUEhZU19UT19ESVJFQ1QocGh5c19kc3QpOwogCQliY29weSgoY2FkZHJfdCl2YV9zcmMs IChjYWRkcl90KXZhX2RzdCwgUEFHRV9TSVpFKTsKIAkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2Uo dmFfZHN0LCBQQUdFX1NJWkUpOwogCX0gZWxzZSB7Ci0JCVBNQVBfTE1FTV9NQVAyKHZhX3NyYywg cGh5X3NyYywgdmFfZHN0LCBwaHlfZHN0KTsKLQorCQl2YV9zcmMgPSBwbWFwX2xtZW1fbWFwMihw aHlzX3NyYywgcGh5c19kc3QpOworCQl2YV9kc3QgPSB2YV9zcmMgKyBQQUdFX1NJWkU7CiAJCWJj b3B5KCh2b2lkICopdmFfc3JjLCAodm9pZCAqKXZhX2RzdCwgUEFHRV9TSVpFKTsKIAkJbWlwc19k Y2FjaGVfd2JpbnZfcmFuZ2UodmFfZHN0LCBQQUdFX1NJWkUpOwotCi0JCVBNQVBfTE1FTV9VTk1B UCgpOworCQlwbWFwX2xtZW1fdW5tYXAoKTsKIAl9CiB9Ci0jZW5kaWYKIAogLyoKICAqIFJldHVy bnMgdHJ1ZSBpZiB0aGUgcG1hcCdzIHB2IGlzIG9uZSBvZiB0aGUgZmlyc3QKQEAgLTI5MTEsMjkg KzI4OTEsMTcgQEAKICAqCiAgKiBVc2UgWEtQSFlTIHVuY2FjaGVkIGZvciA2NCBiaXQsIGFuZCBL U0VHMSB3aGVyZSBwb3NzaWJsZSBmb3IgMzIgYml0LgogICovCi0jaWYgZGVmaW5lZChfX21pcHNf bjY0KQogdm9pZCAqCiBwbWFwX21hcGRldih2bV9vZmZzZXRfdCBwYSwgdm1fc2l6ZV90IHNpemUp CiB7Ci0JcmV0dXJuICgodm9pZCAqKU1JUFNfUEhZU19UT19YS1BIWVNfVU5DQUNIRUQocGEpKTsK LX0KLQotdm9pZAotcG1hcF91bm1hcGRldih2bV9vZmZzZXRfdCB2YSwgdm1fc2l6ZV90IHNpemUp Ci17Ci19Ci0jZWxzZQotdm9pZCAqCi1wbWFwX21hcGRldih2bV9vZmZzZXRfdCBwYSwgdm1fc2l6 ZV90IHNpemUpCi17CiAgICAgICAgIHZtX29mZnNldF90IHZhLCB0bXB2YSwgb2Zmc2V0OwogCiAJ LyogCiAJICogS1NFRzEgbWFwcyBvbmx5IGZpcnN0IDUxMk0gb2YgcGh5cyBhZGRyZXNzIHNwYWNl LiBGb3IgCiAJICogcGEgPiAweDIwMDAwMDAwIHdlIHNob3VsZCBtYWtlIHByb3BlciBtYXBwaW5n ICogdXNpbmcgcG1hcF9rZW50ZXIuCiAJICovCi0JaWYgKChwYSArIHNpemUgLSAxKSA8IE1JUFNf S1NFRzBfTEFSR0VTVF9QSFlTKQotCQlyZXR1cm4gKHZvaWQgKilNSVBTX1BIWVNfVE9fS1NFRzEo cGEpOworCWlmIChNSVBTX0RJUkVDVF9NQVBQQUJMRShwYSArIHNpemUgLSAxKSkKKwkJcmV0dXJu ICh2b2lkICopTUlQU19QSFlTX1RPX0RJUkVDVF9VTkNBQ0hFRChwYSk7CiAJZWxzZSB7CiAJCW9m ZnNldCA9IHBhICYgUEFHRV9NQVNLOwogCQlzaXplID0gcm91bmR1cChzaXplICsgb2Zmc2V0LCBQ QUdFX1NJWkUpOwpAQCAtMjk1Niw2ICsyOTI0LDcgQEAKIHZvaWQKIHBtYXBfdW5tYXBkZXYodm1f b2Zmc2V0X3QgdmEsIHZtX3NpemVfdCBzaXplKQogeworI2lmbmRlZiBfX21pcHNfbjY0CiAJdm1f b2Zmc2V0X3QgYmFzZSwgb2Zmc2V0LCB0bXB2YTsKIAogCS8qIElmIHRoZSBhZGRyZXNzIGlzIHdp dGhpbiBLU0VHMSB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gKi8KQEAgLTI5NjgsOCArMjkz Nyw4IEBACiAJZm9yICh0bXB2YSA9IGJhc2U7IHRtcHZhIDwgYmFzZSArIHNpemU7IHRtcHZhICs9 IFBBR0VfU0laRSkKIAkJcG1hcF9rcmVtb3ZlKHRtcHZhKTsKIAlrbWVtX2ZyZWUoa2VybmVsX21h cCwgYmFzZSwgc2l6ZSk7Ci19CiAjZW5kaWYKK30KIAogLyoKICAqIHBlcmZvcm0gdGhlIHBtYXAg d29yayBmb3IgbWluY29yZQo= --0016367f9f6a8ae7a3048df31007--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTinc2P7mO2qu%2BAiDtB=%2BoH3Winfc0AOAUxXS2XBh>