Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jun 2010 21:08:40 +0530
From:      "Jayachandran C." <c.jayachandran@gmail.com>
To:        Randall Stewart <rrs@lakerest.net>, Juli Mallett <jmallett@freebsd.org>,  "M. Warner Losh" <imp@bsdimp.com>, freebsd-mips@freebsd.org
Subject:   Merging 64 bit changes to -HEAD - part 2
Message-ID:  <AANLkTimmIBz1sfRx8I8E0OhNQz8wEtBihr1YZ26QfYL0@mail.gmail.com>

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

On Tue, Jun 15, 2010 at 7:06 PM, Jayachandran C.
<c.jayachandran@gmail.com> wrote:
> I have volunteered to merge Juli's 64-bit work into HEAD, =A0and
> hopefully get it to work on XLR too. The tree
> (http://svn.freebsd.org/base/user/jmallett/octeon) has quite a bit of
> changes, so I would like to do this over multiple changesets and
> without breaking the current o32 code.

Here's part 2, containing two patches:

pmap-PTE-to-PG.patch :

This is a renaming patch with minor cleanup, The PTE_* flags are
renamed to PG_ and related changes are made to other files. I have
tried to make this patch limited to just the renaming and the changes
related to it.  I will make another patch for the rest of the minor
changes in pmap.c.

My comment on this patch: The name PG_C_CNC for value 3 in pte.h may
be confusing, at least on XLR. We don't have cached non-coherent mode,
the cached memory is coherent(except L1 I-cache), so I would prefer
PG_CACHED and PG_UNCACHED names.

pmap-lgmem-lock-remove.patch :

Remove the lock in local_sysmaps, and sched_pin()/unpin() in the
PMAP_LMEM_ macros.

The 64-bit support changes would be next - comments on the patches
esp. the first one is welcome.

Thanks,
JC.

--00c09f8e5b59fa198104893ba12e
Content-Type: text/x-patch; charset=US-ASCII; name="pmap-PTE-to-PG.patch"
Content-Disposition: attachment; filename="pmap-PTE-to-PG.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gajrc9j94

SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvdm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9pbmNs
dWRlL3ZtLmgJKHJldmlzaW9uIDIwOTI0MykKKysrIHN5cy9taXBzL2luY2x1ZGUvdm0uaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPG1hY2hpbmUvcHRlLmg+CiAK
IC8qIE1lbW9yeSBhdHRyaWJ1dGVzLiAqLwotI2RlZmluZQlWTV9NRU1BVFRSX1VOQ0FDSEVECQkJ
KCh2bV9tZW1hdHRyX3QpUFRFX1VOQ0FDSEVEKQotI2RlZmluZQlWTV9NRU1BVFRSX0NBQ0hFQUJM
RV9OT05DT0hFUkVOVAkoKHZtX21lbWF0dHJfdClQVEVfQ0FDSEUpCisjZGVmaW5lCVZNX01FTUFU
VFJfVU5DQUNIRUQJCQkoKHZtX21lbWF0dHJfdClQR19DX1VDKQorI2RlZmluZQlWTV9NRU1BVFRS
X0NBQ0hFQUJMRV9OT05DT0hFUkVOVAkoKHZtX21lbWF0dHJfdClQR19DX0NOQykKIAogI2RlZmlu
ZQlWTV9NRU1BVFRSX0RFRkFVTFQJCVZNX01FTUFUVFJfQ0FDSEVBQkxFX05PTkNPSEVSRU5UCiAK
SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvcHRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvaW5j
bHVkZS9wdGUuaAkocmV2aXNpb24gMjA5MjQzKQorKysgc3lzL21pcHMvaW5jbHVkZS9wdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQAogI2RlZmluZQlUTEJMT19QRk5fVE9fUEEo
cGZuKQkoKHZtX3BhZGRyX3QpKChwZm4pID4+IFRMQkxPX1BGTl9TSElGVCkgPDwgVExCX1BBR0Vf
U0hJRlQpCiAjZGVmaW5lCVRMQkxPX1BURV9UT19QRk4ocHRlKQkoKHB0ZSkgJiBUTEJMT19QRk5f
TUFTSykKICNkZWZpbmUJVExCTE9fUFRFX1RPX1BBKHB0ZSkJKFRMQkxPX1BGTl9UT19QQShUTEJM
T19QVEVfVE9fUEZOKChwdGUpKSkpCi0gIAorCiAvKgogICogVlBOIGZvciBFbnRyeUhpIHJlZ2lz
dGVyLiAgVXBwZXIgdHdvIGJpdHMgc2VsZWN0IHVzZXIsIHN1cGVydmlzb3IsCiAgKiBvciBrZXJu
ZWwuICBCaXRzIDYxIHRvIDQwIGNvcHkgYml0IDYzLiAgVlBOMiBpcyBiaXRzIDM5IGFuZCBkb3du
IHRvCkBAIC03Niw1NCArNzYsNDkgQEAKICNkZWZpbmUJVExCSElfRU5UUlkodmEsIGFzaWQpCSgo
KHZhKSAmIH5QQUdFX01BU0spIHwgKChhc2lkKSAmIFRMQkhJX0FTSURfTUFTSykpCiAKICNpZm5k
ZWYgX0xPQ09SRQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRfZW50cnlfdDsKLXR5cGVkZWYgcHRf
ZW50cnlfdCAqcGRfZW50cnlfdDsKK3R5cGVkZWYJdWludDMyX3QgcHRfZW50cnlfdDsKK3R5cGVk
ZWYJcHRfZW50cnlfdCAqcGRfZW50cnlfdDsKICNlbmRpZgogCisKICNkZWZpbmUJUERFU0laRQkJ
c2l6ZW9mKHBkX2VudHJ5X3QpCS8qIGZvciBhc3NlbWJseSBmaWxlcyAqLwogI2RlZmluZQlQVEVT
SVpFCQlzaXplb2YocHRfZW50cnlfdCkJLyogZm9yIGFzc2VtYmx5IGZpbGVzICovCiAKLSNkZWZp
bmUJUFRfRU5UUllfTlVMTAkoKHB0X2VudHJ5X3QgKikgMCkKKy8qCisgKiBUTEIgZmxhZ3MgbWFu
YWdlZCBpbiBoYXJkd2FyZToKKyAqIAlDOglDYWNoZSBhdHRyaWJ1dGUuCisgKiAJRDoJRGlydHkg
Yml0LiAgVGhpcyBtZWFucyBhIHBhZ2UgaXMgd3JpdGFibGUuICBJdCBpcyBub3QKKyAqIAkJc2V0
IGF0IGZpcnN0LCBhbmQgYSB3cml0ZSBpcyB0cmFwcGVkLCBhbmQgdGhlIGRpcnR5CisgKiAJCWJp
dCBpcyBzZXQuICBTZWUgYWxzbyBQR19STy4KKyAqIAlWOglWYWxpZCBiaXQuICBPYnZpb3VzLCBp
c24ndCBpdD8KKyAqIAlHOglHbG9iYWwgYml0LiAgVGhpcyBtZWFucyB0aGF0IHRoaXMgbWFwcGlu
ZyBpcyBwcmVzZW50CisgKiAJCWluIEVWRVJZIGFkZHJlc3Mgc3BhY2UsIGFuZCB0byBpZ25vcmUg
dGhlIEFTSUQgd2hlbgorICogCQlpdCBpcyBtYXRjaGVkLgorICovCisjZGVmaW5lCVBHX0MoYXR0
cikJKChhdHRyICYgMHgwNykgPDwgMykKKyNkZWZpbmUJUEdfQ19VQwkJKFBHX0MoMHgwMikpCisj
ZGVmaW5lCVBHX0NfQ05DCShQR19DKDB4MDMpKQorI2RlZmluZQlQR19ECQkweDA0CisjZGVmaW5l
CVBHX1YJCTB4MDIKKyNkZWZpbmUJUEdfRwkJMHgwMQogCi0jZGVmaW5lCVBURV9XSVJFRAkweDgw
MDAwMDAwCS8qIFNXICovCi0jZGVmaW5lCVBURV9XCQlQVEVfV0lSRUQKLSNkZWZpbmUJUFRFX1JP
CQkweDQwMDAwMDAwCS8qIFNXICovCisvKgorICogVk0gZmxhZ3MgbWFuYWdlZCBpbiBzb2Z0d2Fy
ZToKKyAqIAlSTzoJUmVhZCBvbmx5LiAgTmV2ZXIgc2V0IFBHX0Qgb24gdGhpcyBwYWdlLCBhbmQg
ZG9uJ3QKKyAqIAkJbGlzdGVuIHRvIHJlcXVlc3RzIHRvIHdyaXRlIHRvIGl0LgorICogCVc6CVdp
cmVkLiAgPz8/CisgKi8KKyNkZWZpbmUJUEdfUk8JKDB4MDEgPDwgVExCTE9fU1dCSVRTX1NISUZU
KQorI2RlZmluZQlQR19XCSgweDAyIDw8IFRMQkxPX1NXQklUU19TSElGVCkKIAotI2RlZmluZQlQ
VEVfRwkJMHgwMDAwMDAwMQkvKiBIVyAqLwotI2RlZmluZQlQVEVfVgkJMHgwMDAwMDAwMgotLyoj
ZGVmaW5lCVBURV9OVgkJMHgwMDAwMDAwMCAgICAgICBOb3QgVXNlZCAqLwotI2RlZmluZQlQVEVf
TQkJMHgwMDAwMDAwNAotI2RlZmluZQlQVEVfUlcJCVBURV9NCi0jZGVmaW5lIFBURV9PRERQRyAg
ICAgICAweDAwMDAxMDAwIAotLyojZGVmaW5lCVBHX0FUVFIJCTB4MDAwMDAwM2YgIE5vdCBVc2Vk
ICovCi0jZGVmaW5lCVBURV9VTkNBQ0hFRAkweDAwMDAwMDEwCi0jaWZkZWYgQ1BVX1NCMQotI2Rl
ZmluZQlQVEVfQ0FDSEUJMHgwMDAwMDAyOAkvKiBjYWNoZWFibGUgY29oZXJlbnQgKi8KLSNlbHNl
Ci0jZGVmaW5lCVBURV9DQUNIRQkweDAwMDAwMDE4Ci0jZW5kaWYKLS8qI2RlZmluZQlQR19DQUNI
RU1PREUJMHgwMDAwMDAzOCBOb3QgVXNlZCovCi0jZGVmaW5lCVBURV9ST1BBR0UJKFBURV9WIHwg
UFRFX1JPIHwgUFRFX0NBQ0hFKSAvKiBXcml0ZSBwcm90ZWN0ZWQgKi8KLSNkZWZpbmUJUFRFX1JX
UEFHRQkoUFRFX1YgfCBQVEVfTSB8IFBURV9DQUNIRSkgIC8qIE5vdCB3ci1wcm90IG5vdCBjbGVh
biAqLwotI2RlZmluZQlQVEVfQ1dQQUdFCShQVEVfViB8IFBURV9DQUNIRSkJICAgLyogTm90IHdy
LXByb3QgYnV0IGNsZWFuICovCi0jZGVmaW5lCVBURV9JT1BBR0UJKFBURV9HIHwgUFRFX1YgfCBQ
VEVfTSB8IFBURV9VTkNBQ0hFRCkKLSNkZWZpbmUJUFRFX0ZSQU1FCTB4M2ZmZmZmYzAKLSNkZWZp
bmUgUFRFX0hWUE4gICAgICAgIDB4ZmZmZmUwMDAgICAgICAvKiBIYXJkd2FyZSBwYWdlIG5vIG1h
c2sgKi8KLSNkZWZpbmUgUFRFX0FTSUQgICAgICAgIDB4MDAwMDAwZmYgICAgICAvKiBBZGRyZXNz
IHNwYWNlIElEICovCisvKgorICogUFRFIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGZvciBiaXRzIGRl
ZmluZWQgYWJvdmUuCisgKgorICogWFhYIENhbiBtYWtlIHRoZXNlIGF0b21pY3MsIGJ1dCBzb21l
IHVzZXJzIG9mIHRoZW0gYXJlIHVzaW5nIFBURXMgaW4gbG9jYWwKKyAqIHJlZ2lzdGVycyBhbmQg
c3VjaCBhbmQgZG9uJ3QgbmVlZCB0aGUgb3ZlcmhlYWQuCisgKi8KKyNkZWZpbmUJcHRlX2NsZWFy
KHB0ZSwgYml0KQkoKCpwdGUpICY9IH4oYml0KSkKKyNkZWZpbmUJcHRlX3NldChwdGUsIGJpdCkJ
KCgqcHRlKSB8PSAoYml0KSkKKyNkZWZpbmUJcHRlX3Rlc3QocHRlLCBiaXQpCSgoKCpwdGUpICYg
KGJpdCkpID09IChiaXQpKQogCi0KLS8qIFVzZXIgdmlydHVhbCB0byBwdGUgb2Zmc2V0IGluIHBh
Z2UgdGFibGUgKi8KLSNkZWZpbmUJdmFkX3RvX3B0ZV9vZmZzZXQoYWRyKQkoKChhZHIpID4+IFBB
R0VfU0hJRlQpICYgKE5QVEVQRyAtMSkpCi0KLSNkZWZpbmUJbWlwc19wZ192KGVudHJ5KQkoKGVu
dHJ5KSAmIFBURV9WKQotI2RlZmluZQltaXBzX3BnX3dpcmVkKGVudHJ5KQkoKGVudHJ5KSAmIFBU
RV9XSVJFRCkKLSNkZWZpbmUJbWlwc19wZ19tX2JpdCgpCQkoUFRFX00pCi0jZGVmaW5lCW1pcHNf
cGdfcndfYml0KCkJKFBURV9NKQotI2RlZmluZQltaXBzX3BnX3JvX2JpdCgpCShQVEVfUk8pCi0j
ZGVmaW5lCW1pcHNfcGdfcm9wYWdlX2JpdCgpCShQVEVfUk9QQUdFKQotI2RlZmluZQltaXBzX3Bn
X3J3cGFnZV9iaXQoKQkoUFRFX1JXUEFHRSkKLSNkZWZpbmUJbWlwc19wZ19jd3BhZ2VfYml0KCkJ
KFBURV9DV1BBR0UpCi0jZGVmaW5lCW1pcHNfcGdfZ2xvYmFsX2JpdCgpCShQVEVfRykKLSNkZWZp
bmUJbWlwc19wZ193aXJlZF9iaXQoKQkoUFRFX1dJUkVEKQotCiAjZW5kaWYgLyogIV9NQUNISU5F
X1BURV9IXyAqLwpJbmRleDogc3lzL21pcHMvbWlwcy92bV9tYWNoZGVwLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3lzL21pcHMvbWlwcy92bV9tYWNoZGVwLmMJKHJldmlzaW9uIDIwOTI0MykKKysrIHN5cy9t
aXBzL21pcHMvdm1fbWFjaGRlcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAK
IAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgS1NUQUNLX1BBR0VTOyBpKyspIHsKIAkJcHRlID0gcG1h
cF9wdGUoa2VybmVsX3BtYXAsIHRkLT50ZF9rc3RhY2sgKyBpICogUEFHRV9TSVpFKTsKLQkJdGQt
PnRkX21kLm1kX3VwdGVbaV0gPSAqcHRlICYgfihQVEVfUk98UFRFX1dJUkVEKTsKKwkJdGQtPnRk
X21kLm1kX3VwdGVbaV0gPSAqcHRlICYgflRMQkxPX1NXQklUU19NQVNLOwogCX0KIH0KIApAQCAt
MjQxLDcgKzI0MSw3IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgS1NUQUNLX1BBR0VTOyBpKyspIHsK
IAkJcHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHRkLT50ZF9rc3RhY2sgKyBpICogUEFHRV9T
SVpFKTsKLQkJdGQtPnRkX21kLm1kX3VwdGVbaV0gPSAqcHRlICYgfihQVEVfUk98UFRFX1dJUkVE
KTsKKwkJdGQtPnRkX21kLm1kX3VwdGVbaV0gPSAqcHRlICYgflRMQkxPX1NXQklUU19NQVNLOwog
CX0KIH0KIApJbmRleDogc3lzL21pcHMvbWlwcy9leGNlcHRpb24uUwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
eXMvbWlwcy9taXBzL2V4Y2VwdGlvbi5TCShyZXZpc2lvbiAyMDkyNDMpCisrKyBzeXMvbWlwcy9t
aXBzL2V4Y2VwdGlvbi5TCSh3b3JraW5nIGNvcHkpCkBAIC04MTUsNyArODE1LDcgQEAKIAlsdwkJ
azAsIDAoazEpCQkJIyBrMD10aGlzIFBURQogCiAJLyogVmFsaWRhdGUgcGFnZSB0YWJsZSBlbnRy
eS4gICovCi0JYW5kaQkJazAsIFBURV9WCisJYW5kaQkJazAsIFBHX1YKIAliZXF6CQlrMCwgM2YK
IAlub3AKIApJbmRleDogc3lzL21pcHMvbWlwcy9wbWFwLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21p
cHMvbWlwcy9wbWFwLmMJKHJldmlzaW9uIDIwOTI0MykKKysrIHN5cy9taXBzL21pcHMvcG1hcC5j
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+
CiBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAKLSNpbmNsdWRlICJvcHRfZGRiLmgiCiAjaW5jbHVk
ZSAib3B0X21zZ2J1Zi5oIgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9z
eXN0bS5oPgpAQCAtMTIwLDIyICsxMTksMTMgQEAKIC8qCiAgKiBHZXQgUERFcyBhbmQgUFRFcyBm
b3IgdXNlci9rZXJuZWwgYWRkcmVzcyBzcGFjZQogICovCi0jZGVmaW5lCXBtYXBfcGRlKG0sIHYp
CSAgICAgICAoJigobSktPnBtX3NlZ3RhYlsodm1fb2Zmc2V0X3QpKHYpID4+IFNFR1NISUZUXSkp
CisjZGVmaW5lCXBtYXBfcGRlKG0sIHYpCQkoJigobSktPnBtX3NlZ3RhYlsodm1fb2Zmc2V0X3Qp
KHYpID4+IFNFR1NISUZUXSkpCiAjZGVmaW5lCXNlZ3RhYl9wZGUobSwgdikJKG1bKHZtX29mZnNl
dF90KSh2KSA+PiBTRUdTSElGVF0pCiAKLSNkZWZpbmUJcG1hcF9wdGVfdyhwdGUpCQkoKCooaW50
ICopcHRlICYgUFRFX1cpICE9IDApCi0jZGVmaW5lCXBtYXBfcGRlX3YocHRlKQkJKCgqKGludCAq
KXB0ZSkgIT0gMCkKLSNkZWZpbmUJcG1hcF9wdGVfbShwdGUpCQkoKCooaW50ICopcHRlICYgUFRF
X00pICE9IDApCi0jZGVmaW5lCXBtYXBfcHRlX3YocHRlKQkJKCgqKGludCAqKXB0ZSAmIFBURV9W
KSAhPSAwKQotCi0jZGVmaW5lCXBtYXBfcHRlX3NldF93KHB0ZSwgdikJKCh2KT8oKihpbnQgKilw
dGUgfD0gUFRFX1cpOigqKGludCAqKXB0ZSAmPSB+UFRFX1cpKQotI2RlZmluZQlwbWFwX3B0ZV9z
ZXRfcHJvdChwdGUsIHYpICgoKihpbnQgKilwdGUgJj0gflBHX1BST1QpLCAoKihpbnQgKilwdGUg
fD0gKHYpKSkKLQogI2RlZmluZQlNSVBTX1NFR1NJWkUJCSgxTCA8PCBTRUdTSElGVCkKICNkZWZp
bmUJbWlwc19zZWd0cnVuYyh2YSkJKCh2YSkgJiB+KE1JUFNfU0VHU0laRS0xKSkKLSNkZWZpbmUJ
cG1hcF9UTEJfaW52YWxpZGF0ZV9hbGwoKSBNSVBTX1RCSUFQKCkKLSNkZWZpbmUJcG1hcF92YV9h
c2lkKHBtYXAsIHZhKQkoKHZhKSB8ICgocG1hcCktPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5h
c2lkIDw8IFZNVExCX1BJRF9TSElGVCkpCiAjZGVmaW5lCWlzX2tlcm5lbF9wbWFwKHgpCSgoeCkg
PT0ga2VybmVsX3BtYXApCisjZGVmaW5lCXZhZF90b19wdGVfb2Zmc2V0KGFkcikJKCgoYWRyKSA+
PiBQQUdFX1NISUZUKSAmIChOUFRFUEcgLTEpKQogCiBzdHJ1Y3QgcG1hcCBrZXJuZWxfcG1hcF9z
dG9yZTsKIHBkX2VudHJ5X3QgKmtlcm5lbF9zZWdtYXA7CkBAIC0xNzIsOSArMTYyLDEwIEBACiBz
dGF0aWMgaW50IHBtYXBfcmVtb3ZlX3B0ZShzdHJ1Y3QgcG1hcCAqcG1hcCwgcHRfZW50cnlfdCAq
cHRxLCB2bV9vZmZzZXRfdCB2YSk7CiBzdGF0aWMgdm9pZCBwbWFwX3JlbW92ZV9wYWdlKHN0cnVj
dCBwbWFwICpwbWFwLCB2bV9vZmZzZXRfdCB2YSk7CiBzdGF0aWMgdm9pZCBwbWFwX3JlbW92ZV9l
bnRyeShzdHJ1Y3QgcG1hcCAqcG1hcCwgdm1fcGFnZV90IG0sIHZtX29mZnNldF90IHZhKTsKLXN0
YXRpYyBib29sZWFuX3QgcG1hcF90ZXN0Yml0KHZtX3BhZ2VfdCBtLCBpbnQgYml0KTsKIHN0YXRp
YyBib29sZWFuX3QgcG1hcF90cnlfaW5zZXJ0X3B2X2VudHJ5KHBtYXBfdCBwbWFwLCB2bV9wYWdl
X3QgbXB0ZSwKICAgICB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0pOworc3RhdGljIF9faW5s
aW5lIHZvaWQKK3BtYXBfaW52YWxpZGF0ZV9wYWdlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2
YSk7CiAKIHN0YXRpYyB2bV9wYWdlX3QgcG1hcF9hbGxvY3B0ZShwbWFwX3QgcG1hcCwgdm1fb2Zm
c2V0X3QgdmEsIGludCBmbGFncyk7CiAKQEAgLTIyMSwxMCArMjEyLDEwIEBACiAJc2NoZWRfcGlu
KCk7CQkJCQkJCVwKIAl2YSA9IHN5c20tPmJhc2U7CQkJCQkJXAogCW5wdGUgPSBUTEJMT19QQV9U
T19QRk4ocGh5cykgfAkJCQkJXAotCSAgICBQVEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cg
fCBQVEVfQ0FDSEU7CQkJXAorCSAgIFBHX0QgfCBQR19WIHwgUEdfRyB8IFBHX1cgfCBQR19DX0NO
QzsJCQlcCiAJcHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHZhKTsJCQkJXAogCSpwdGUgPSBu
cHRlOwkJCQkJCQlcCi0Jc3lzbS0+dmFsaWQxID0gMTsKKwlzeXNtLT52YWxpZDEgPSAxCiAKICNk
ZWZpbmUJUE1BUF9MTUVNX01BUDIodmExLCBwaHlzMSwgdmEyLCBwaHlzMikJCQkJXAogCWludCBj
cHU7CQkJCQkJCVwKQEAgLTIzOSwyOCArMjMwLDI4IEBACiAJdmExID0gc3lzbS0+YmFzZTsJCQkJ
CQlcCiAJdmEyID0gc3lzbS0+YmFzZSArIFBBR0VfU0laRTsJCQkJCVwKIAlucHRlID0gVExCTE9f
UEFfVE9fUEZOKHBoeXMxKSB8CQkJCQlcCi0JICAgIFBURV9SVyB8IFBURV9WIHwgUFRFX0cgfCBQ
VEVfVyB8IFBURV9DQUNIRTsJCQlcCisJICAgIFBHX0QgfCBQR19WIHwgUEdfRyB8IFBHX1cgfCBQ
R19DX0NOQzsJCQlcCiAJcHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHZhMSk7CQkJCVwKIAkq
cHRlID0gbnB0ZTsJCQkJCQkJXAogCW5wdGUgPSAgVExCTE9fUEFfVE9fUEZOKHBoeXMyKSB8CQkJ
CVwKLQkgICAgUFRFX1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBURV9XIHwgUFRFX0NBQ0hFOwkJCVwK
KwkgICAgUEdfRCB8IFBHX1YgfCBQR19HIHwgUEdfVyB8IFBHX0NfQ05DOwkJCVwKIAlwdGUgPSBw
bWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEyKTsJCQkJXAogCSpwdGUgPSBucHRlOwkJCQkJCQlcCiAJ
c3lzbS0+dmFsaWQxID0gMTsJCQkJCQlcCi0Jc3lzbS0+dmFsaWQyID0gMTsKKwlzeXNtLT52YWxp
ZDIgPSAxCiAKICNkZWZpbmUJUE1BUF9MTUVNX1VOTUFQKCkJCQkJCQlcCiAJcHRlID0gcG1hcF9w
dGUoa2VybmVsX3BtYXAsIHN5c20tPmJhc2UpOwkJCVwKLQkqcHRlID0gUFRFX0c7CQkJCQkJCVwK
KwkqcHRlID0gUEdfRzsJCQkJCQkJXAogCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3Moa2VybmVsX3Bt
YXAsIHN5c20tPmJhc2UpOwkJXAogCXN5c20tPnZhbGlkMSA9IDA7CQkJCQkJXAogCXB0ZSA9IHBt
YXBfcHRlKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlICsgUEFHRV9TSVpFKTsJCVwKLQkqcHRlID0g
UFRFX0c7CQkJCQkJCVwKKwkqcHRlID0gUEdfRzsJCQkJCQkJXAogCXRsYl9pbnZhbGlkYXRlX2Fk
ZHJlc3Moa2VybmVsX3BtYXAsIHN5c20tPmJhc2UgKyBQQUdFX1NJWkUpOwlcCiAJc3lzbS0+dmFs
aWQyID0gMDsJCQkJCQlcCiAJc2NoZWRfdW5waW4oKTsJCQkJCQkJXAogCWludHJfcmVzdG9yZShp
bnRyKTsJCQkJCQlcCi0JUE1BUF9MR01FTV9VTkxPQ0soc3lzbSk7CisJUE1BUF9MR01FTV9VTkxP
Q0soc3lzbSkKIAogcGRfZW50cnlfdAogcG1hcF9zZWdtYXAocG1hcF90IHBtYXAsIHZtX29mZnNl
dF90IHZhKQpAQCAtNDc1LDcgKzQ2Niw3IEBACiAJICogaW4gdGhlIHRsYi4KIAkgKi8KIAlmb3Ig
KGkgPSAwLCBwdGUgPSBwZ3RhYjsgaSA8IChua3B0ICogTlBURVBHKTsgaSsrLCBwdGUrKykKLQkJ
KnB0ZSA9IFBURV9HOworCQkqcHRlID0gUEdfRzsKIAogCS8qCiAJICogVGhlIHNlZ21lbnQgdGFi
bGUgY29udGFpbnMgdGhlIEtWQSBvZiB0aGUgcGFnZXMgaW4gdGhlIHNlY29uZApAQCAtNTUxLDcg
KzU0Miw3IEBACiBzdGF0aWMgaW50CiBwbWFwX253X21vZGlmaWVkKHB0X2VudHJ5X3QgcHRlKQog
ewotCWlmICgocHRlICYgKFBURV9NIHwgUFRFX1JPKSkgPT0gKFBURV9NIHwgUFRFX1JPKSkKKwlp
ZiAoKHB0ZSAmIChQR19EIHwgUEdfUk8pKSA9PSAoUEdfRCB8IFBHX1JPKSkKIAkJcmV0dXJuICgx
KTsKIAllbHNlCiAJCXJldHVybiAoMCk7CkBAIC03MDIsOCArNjkzLDggQEAKIAlQTUFQX0xPQ0so
cG1hcCk7CiByZXRyeToKIAlwdGUgPSAqcG1hcF9wdGUocG1hcCwgdmEpOwotCWlmIChwdGUgIT0g
MCAmJiBwbWFwX3B0ZV92KCZwdGUpICYmCi0JICAgICgocHRlICYgUFRFX1JXKSB8fCAocHJvdCAm
IFZNX1BST1RfV1JJVEUpID09IDApKSB7CisJaWYgKHB0ZSAhPSAwICYmIHB0ZV90ZXN0KCZwdGUs
IFBHX1YpICYmCisJICAgIChwdGVfdGVzdCgmcHRlLCBQR19EKSB8fCAocHJvdCAmIFZNX1BST1Rf
V1JJVEUpID09IDApKSB7CiAJCWlmICh2bV9wYWdlX3BhX3RyeXJlbG9jayhwbWFwLCBUTEJMT19Q
VEVfVE9fUEEocHRlKSwgJnBhKSkKIAkJCWdvdG8gcmV0cnk7CiAKQEAgLTcyNSwxOCArNzE2LDE4
IEBACiAgLyogUE1BUF9JTkxJTkUgKi8gdm9pZAogcG1hcF9rZW50ZXIodm1fb2Zmc2V0X3QgdmEs
IHZtX3BhZGRyX3QgcGEpCiB7Ci0JcmVnaXN0ZXIgcHRfZW50cnlfdCAqcHRlOwotCXB0X2VudHJ5
X3QgbnB0ZSwgb3B0ZTsKKwlwdF9lbnRyeV90ICpwdGU7CisJcHRfZW50cnlfdCBvcHRlLCBucHRl
OwogCiAjaWZkZWYgUE1BUF9ERUJVRwotCXByaW50ZigicG1hcF9rZW50ZXI6ICB2YTogMHglMDh4
IC0+IHBhOiAweCUwOHhcbiIsIHZhLCBwYSk7CisJcHJpbnRmKCJwbWFwX2tlbnRlcjogIHZhOiAl
cCAtPiBwYTogJXBcbiIsICh2b2lkICopdmEsICh2b2lkICopcGEpOwogI2VuZGlmCi0JbnB0ZSA9
IFRMQkxPX1BBX1RPX1BGTihwYSkgfCBQVEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1c7CisJ
bnB0ZSA9IFRMQkxPX1BBX1RPX1BGTihwYSkgfCBQR19EIHwgUEdfViB8IFBHX0cgfCBQR19XOwog
CiAJaWYgKGlzX2NhY2hlYWJsZV9tZW0ocGEpKQotCQlucHRlIHw9IFBURV9DQUNIRTsKKwkJbnB0
ZSB8PSBQR19DX0NOQzsKIAllbHNlCi0JCW5wdGUgfD0gUFRFX1VOQ0FDSEVEOworCQlucHRlIHw9
IFBHX0NfVUM7CiAKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEpOwogCW9wdGUgPSAq
cHRlOwpAQCAtNzUxLDcgKzc0Miw3IEBACiAgLyogUE1BUF9JTkxJTkUgKi8gdm9pZAogcG1hcF9r
cmVtb3ZlKHZtX29mZnNldF90IHZhKQogewotCXJlZ2lzdGVyIHB0X2VudHJ5X3QgKnB0ZTsKKwlw
dF9lbnRyeV90ICpwdGU7CiAKIAkvKgogCSAqIFdyaXRlIGJhY2sgYWxsIGNhY2hlcyBmcm9tIHRo
ZSBwYWdlIGJlaW5nIGRlc3Ryb3llZApAQCAtNzU5LDcgKzc1MCw3IEBACiAJbWlwc19kY2FjaGVf
d2JpbnZfcmFuZ2VfaW5kZXgodmEsIFBBR0VfU0laRSk7CiAKIAlwdGUgPSBwbWFwX3B0ZShrZXJu
ZWxfcG1hcCwgdmEpOwotCSpwdGUgPSBQVEVfRzsKKwkqcHRlID0gUEdfRzsKIAlwbWFwX2ludmFs
aWRhdGVfcGFnZShrZXJuZWxfcG1hcCwgdmEpOwogfQogCkBAIC0xMjMyLDcgKzEyMjMsNyBAQAog
CQkgKiBwcm9kdWNlIGEgZ2xvYmFsIGJpdCB0byBzdG9yZSBpbiB0aGUgdGxiLgogCQkgKi8KIAkJ
Zm9yIChpID0gMDsgaSA8IE5QVEVQRzsgaSsrLCBwdGUrKykKLQkJCSpwdGUgPSBQVEVfRzsKKwkJ
CSpwdGUgPSBQR19HOwogCiAJCWtlcm5lbF92bV9lbmQgPSAoa2VybmVsX3ZtX2VuZCArIFBBR0Vf
U0laRSAqIE5QVEVQRykgJgogCQkgICAgfihQQUdFX1NJWkUgKiBOUFRFUEcgLSAxKTsKQEAgLTEz
MTIsMTIgKzEzMDMsMTIgQEAKIAkJCUtBU1NFUlQocHRlICE9IE5VTEwsICgicHRlIikpOwogCQkJ
b2xkcHRlID0gbG9hZGFuZGNsZWFyKCh1X2ludCAqKXB0ZSk7CiAJCQlpZiAoaXNfa2VybmVsX3Bt
YXAocG1hcCkpCi0JCQkJKnB0ZSA9IFBURV9HOwotCQkJS0FTU0VSVCgob2xkcHRlICYgUFRFX1cp
ID09IDAsCisJCQkJKnB0ZSA9IFBHX0c7CisJCQlLQVNTRVJUKCFwdGVfdGVzdCgmb2xkcHRlLCBQ
R19XKSwKIAkJCSAgICAoIndpcmVkIHB0ZSBmb3IgdW53aXJlZCBwYWdlIikpOwogCQkJaWYgKG0t
Pm1kLnB2X2ZsYWdzICYgUFZfVEFCTEVfUkVGKQogCQkJCXZtX3BhZ2VfZmxhZ19zZXQobSwgUEdf
UkVGRVJFTkNFRCk7Ci0JCQlpZiAob2xkcHRlICYgUFRFX00pCisJCQlpZiAocHRlX3Rlc3QoJm9s
ZHB0ZSwgUEdfRCkpCiAJCQkJdm1fcGFnZV9kaXJ0eShtKTsKIAkJCXBtYXBfaW52YWxpZGF0ZV9w
YWdlKHBtYXAsIHZhKTsKIAkJCVRBSUxRX1JFTU9WRSgmcG1hcC0+cG1fcHZsaXN0LCBwdiwgcHZf
cGxpc3QpOwpAQCAtMTQ1NSw5ICsxNDQ2LDkgQEAKIAogCW9sZHB0ZSA9IGxvYWRhbmRjbGVhcigo
dV9pbnQgKilwdHEpOwogCWlmIChpc19rZXJuZWxfcG1hcChwbWFwKSkKLQkJKnB0cSA9IFBURV9H
OworCQkqcHRxID0gUEdfRzsKIAotCWlmIChvbGRwdGUgJiBQVEVfVykKKwlpZiAocHRlX3Rlc3Qo
Jm9sZHB0ZSwgUEdfVykpCiAJCXBtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50IC09IDE7CiAKIAlw
bWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCAtPSAxOwpAQCAtMTQ2NSw3ICsxNDU2LDcgQEAK
IAogCWlmIChwYWdlX2lzX21hbmFnZWQocGEpKSB7CiAJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEp
OwotCQlpZiAob2xkcHRlICYgUFRFX00pIHsKKwkJaWYgKHB0ZV90ZXN0KCZvbGRwdGUsIFBHX0Qp
KSB7CiAjaWYgZGVmaW5lZChQTUFQX0RJQUdOT1NUSUMpCiAJCQlpZiAocG1hcF9ud19tb2RpZmll
ZChvbGRwdGUpKSB7CiAJCQkJcHJpbnRmKApAQCAtMTQ5MCw3ICsxNDgxLDcgQEAKIHN0YXRpYyB2
b2lkCiBwbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBwbWFwICpwbWFwLCB2bV9vZmZzZXRfdCB2YSkK
IHsKLQlyZWdpc3RlciBwdF9lbnRyeV90ICpwdHE7CisJcHRfZW50cnlfdCAqcHRxOwogCiAJbXR4
X2Fzc2VydCgmdm1fcGFnZV9xdWV1ZV9tdHgsIE1BX09XTkVEKTsKIAlQTUFQX0xPQ0tfQVNTRVJU
KHBtYXAsIE1BX09XTkVEKTsKQEAgLTE0OTksNyArMTQ5MCw3IEBACiAJLyoKIAkgKiBpZiB0aGVy
ZSBpcyBubyBwdGUgZm9yIHRoaXMgYWRkcmVzcywganVzdCBza2lwIGl0ISEhCiAJICovCi0JaWYg
KCFwdHEgfHwgIXBtYXBfcHRlX3YocHRxKSkgeworCWlmICghcHRxIHx8ICFwdGVfdGVzdChwdHEs
IFBHX1YpKSB7CiAJCXJldHVybjsKIAl9CiAKQEAgLTE1NzUsOCArMTU2Niw4IEBACiB2b2lkCiBw
bWFwX3JlbW92ZV9hbGwodm1fcGFnZV90IG0pCiB7Ci0JcmVnaXN0ZXIgcHZfZW50cnlfdCBwdjsK
LQlyZWdpc3RlciBwdF9lbnRyeV90ICpwdGUsIHRwdGU7CisJcHZfZW50cnlfdCBwdjsKKwlwdF9l
bnRyeV90ICpwdGUsIHRwdGU7CiAKIAlLQVNTRVJUKChtLT5mbGFncyAmIFBHX0ZJQ1RJVElPVVMp
ID09IDAsCiAJICAgICgicG1hcF9yZW1vdmVfYWxsOiBwYWdlICVwIGlzIGZpY3RpdGlvdXMiLCBt
KSk7CkBAIC0xNjAxLDE1ICsxNTkyLDE1IEBACiAKIAkJdHB0ZSA9IGxvYWRhbmRjbGVhcigodV9p
bnQgKilwdGUpOwogCQlpZiAoaXNfa2VybmVsX3BtYXAocHYtPnB2X3BtYXApKQotCQkJKnB0ZSA9
IFBURV9HOworCQkJKnB0ZSA9IFBHX0c7CiAKLQkJaWYgKHRwdGUgJiBQVEVfVykKKwkJaWYgKHB0
ZV90ZXN0KCZ0cHRlLCBQR19XKSkKIAkJCXB2LT5wdl9wbWFwLT5wbV9zdGF0cy53aXJlZF9jb3Vu
dC0tOwogCiAJCS8qCiAJCSAqIFVwZGF0ZSB0aGUgdm1fcGFnZV90IGNsZWFuIGFuZCByZWZlcmVu
Y2UgYml0cy4KIAkJICovCi0JCWlmICh0cHRlICYgUFRFX00pIHsKKwkJaWYgKHB0ZV90ZXN0KCZ0
cHRlLCBQR19EKSkgewogI2lmIGRlZmluZWQoUE1BUF9ESUFHTk9TVElDKQogCQkJaWYgKHBtYXBf
bndfbW9kaWZpZWQodHB0ZSkpIHsKIAkJCQlwcmludGYoCkBAIC0xNjcxLDcgKzE2NjIsNyBAQAog
CQkgKiBJZiBwdGUgaXMgaW52YWxpZCwgc2tpcCB0aGlzIHBhZ2UKIAkJICovCiAJCXB0ZSA9IHBt
YXBfcHRlKHBtYXAsIHN2YSk7Ci0JCWlmICghcG1hcF9wdGVfdihwdGUpKSB7CisJCWlmICghcHRl
X3Rlc3QocHRlLCBQR19WKSkgewogCQkJc3ZhICs9IFBBR0VfU0laRTsKIAkJCWNvbnRpbnVlOwog
CQl9CkBAIC0xNjc5LDEyICsxNjcwLDEzIEBACiAJCW9iaXRzID0gcGJpdHMgPSAqcHRlOwogCQlw
YSA9IFRMQkxPX1BURV9UT19QQShwYml0cyk7CiAKLQkJaWYgKHBhZ2VfaXNfbWFuYWdlZChwYSkg
JiYgKHBiaXRzICYgUFRFX00pICE9IDApIHsKKwkJaWYgKHBhZ2VfaXNfbWFuYWdlZChwYSkgJiYg
cHRlX3Rlc3QoJnBiaXRzLCBQR19EKSkgewogCQkJbSA9IFBIWVNfVE9fVk1fUEFHRShwYSk7CiAJ
CQl2bV9wYWdlX2RpcnR5KG0pOwogCQkJbS0+bWQucHZfZmxhZ3MgJj0gflBWX1RBQkxFX01PRDsK
IAkJfQotCQlwYml0cyA9IChwYml0cyAmIH5QVEVfTSkgfCBQVEVfUk87CisJCXB0ZV9jbGVhcigm
cGJpdHMsIFBHX0QpOworCQlwdGVfc2V0KCZwYml0cywgUEdfUk8pOwogCiAJCWlmIChwYml0cyAh
PSAqcHRlKSB7CiAJCQlpZiAoIWF0b21pY19jbXBzZXRfaW50KCh1X2ludCAqKXB0ZSwgb2JpdHMs
IHBiaXRzKSkKQEAgLTE3MTQsNyArMTcwNiw3IEBACiAgICAgdm1fcHJvdF90IHByb3QsIGJvb2xl
YW5fdCB3aXJlZCkKIHsKIAl2bV9vZmZzZXRfdCBwYSwgb3BhOwotCXJlZ2lzdGVyIHB0X2VudHJ5
X3QgKnB0ZTsKKwlwdF9lbnRyeV90ICpwdGU7CiAJcHRfZW50cnlfdCBvcmlncHRlLCBuZXdwdGU7
CiAJcHZfZW50cnlfdCBwdjsKIAl2bV9wYWdlX3QgbXB0ZSwgb207CkBAIC0xNzU4LDE2ICsxNzUw
LDE2IEBACiAJLyoKIAkgKiBNYXBwaW5nIGhhcyBub3QgY2hhbmdlZCwgbXVzdCBiZSBwcm90ZWN0
aW9uIG9yIHdpcmluZyBjaGFuZ2UuCiAJICovCi0JaWYgKChvcmlncHRlICYgUFRFX1YpICYmIChv
cGEgPT0gcGEpKSB7CisJaWYgKHB0ZV90ZXN0KCZvcmlncHRlLCBQR19WKSAmJiBvcGEgPT0gcGEp
IHsKIAkJLyoKIAkJICogV2lyaW5nIGNoYW5nZSwganVzdCB1cGRhdGUgc3RhdHMuIFdlIGRvbid0
IHdvcnJ5IGFib3V0CiAJCSAqIHdpcmluZyBQVCBwYWdlcyBhcyB0aGV5IHJlbWFpbiByZXNpZGVu
dCBhcyBsb25nIGFzIHRoZXJlCiAJCSAqIGFyZSB2YWxpZCBtYXBwaW5ncyBpbiB0aGVtLiBIZW5j
ZSwgaWYgYSB1c2VyIHBhZ2UgaXMKIAkJICogd2lyZWQsIHRoZSBQVCBwYWdlIHdpbGwgYmUgYWxz
by4KIAkJICovCi0JCWlmICh3aXJlZCAmJiAoKG9yaWdwdGUgJiBQVEVfVykgPT0gMCkpCisJCWlm
ICh3aXJlZCAmJiAhcHRlX3Rlc3QoJm9yaWdwdGUsIFBHX1cpKQogCQkJcG1hcC0+cG1fc3RhdHMu
d2lyZWRfY291bnQrKzsKLQkJZWxzZSBpZiAoIXdpcmVkICYmIChvcmlncHRlICYgUFRFX1cpKQor
CQllbHNlIGlmICghd2lyZWQgJiYgcHRlX3Rlc3QoJm9yaWdwdGUsIFBHX1cpKQogCQkJcG1hcC0+
cG1fc3RhdHMud2lyZWRfY291bnQtLTsKIAogI2lmIGRlZmluZWQoUE1BUF9ESUFHTk9TVElDKQpA
QCAtMTc5Nyw3ICsxNzg5LDcgQEAKIAkgKiBoYW5kbGUgdmFsaWRhdGluZyBuZXcgbWFwcGluZy4K
IAkgKi8KIAlpZiAob3BhKSB7Ci0JCWlmIChvcmlncHRlICYgUFRFX1cpCisJCWlmIChwdGVfdGVz
dCgmb3JpZ3B0ZSwgUEdfVykpCiAJCQlwbWFwLT5wbV9zdGF0cy53aXJlZF9jb3VudC0tOwogCiAJ
CWlmIChwYWdlX2lzX21hbmFnZWQob3BhKSkgewpAQCAtMTg0NSwzMSArMTgzNywzMCBAQAogCXJ3
ID0gaW5pdF9wdGVfcHJvdCh2YSwgbSwgcHJvdCk7CiAKICNpZmRlZiBQTUFQX0RFQlVHCi0JcHJp
bnRmKCJwbWFwX2VudGVyOiAgdmE6IDB4JTA4eCAtPiBwYTogMHglMDh4XG4iLCB2YSwgcGEpOwor
CXByaW50ZigicG1hcF9lbnRlcjogIHZhOiAlcCAtPiBwYTogJXBcbiIsICh2b2lkICopdmEsICh2
b2lkICopcGEpOwogI2VuZGlmCiAJLyoKIAkgKiBOb3cgdmFsaWRhdGUgbWFwcGluZyB3aXRoIGRl
c2lyZWQgcHJvdGVjdGlvbi93aXJpbmcuCiAJICovCi0JbmV3cHRlID0gVExCTE9fUEFfVE9fUEZO
KHBhKSB8IHJ3IHwgUFRFX1Y7CisJbmV3cHRlID0gVExCTE9fUEFfVE9fUEZOKHBhKSB8IHJ3IHwg
UEdfVjsKIAogCWlmIChpc19jYWNoZWFibGVfbWVtKHBhKSkKLQkJbmV3cHRlIHw9IFBURV9DQUNI
RTsKKwkJbmV3cHRlIHw9IFBHX0NfQ05DOwogCWVsc2UKLQkJbmV3cHRlIHw9IFBURV9VTkNBQ0hF
RDsKKwkJbmV3cHRlIHw9IFBHX0NfVUM7CiAKIAlpZiAod2lyZWQpCi0JCW5ld3B0ZSB8PSBQVEVf
VzsKKwkJbmV3cHRlIHw9IFBHX1c7CiAKLQlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkpIHsKLQkg
ICAgICAgICBuZXdwdGUgfD0gUFRFX0c7Ci0JfQorCWlmIChpc19rZXJuZWxfcG1hcChwbWFwKSkK
KwkgICAgICAgICBuZXdwdGUgfD0gUEdfRzsKIAogCS8qCiAJICogaWYgdGhlIG1hcHBpbmcgb3Ig
cGVybWlzc2lvbiBiaXRzIGFyZSBkaWZmZXJlbnQsIHdlIG5lZWQgdG8KIAkgKiB1cGRhdGUgdGhl
IHB0ZS4KIAkgKi8KIAlpZiAob3JpZ3B0ZSAhPSBuZXdwdGUpIHsKLQkJaWYgKG9yaWdwdGUgJiBQ
VEVfVikgeworCQlpZiAocHRlX3Rlc3QoJm9yaWdwdGUsIFBHX1YpKSB7CiAJCQkqcHRlID0gbmV3
cHRlOwogCQkJaWYgKHBhZ2VfaXNfbWFuYWdlZChvcGEpICYmIChvcGEgIT0gcGEpKSB7CiAJCQkJ
aWYgKG9tLT5tZC5wdl9mbGFncyAmIFBWX1RBQkxFX1JFRikKQEAgLTE4NzcsOCArMTg2OCw4IEBA
CiAJCQkJb20tPm1kLnB2X2ZsYWdzICY9CiAJCQkJICAgIH4oUFZfVEFCTEVfUkVGIHwgUFZfVEFC
TEVfTU9EKTsKIAkJCX0KLQkJCWlmIChvcmlncHRlICYgUFRFX00pIHsKLQkJCQlLQVNTRVJUKChv
cmlncHRlICYgUFRFX1JXKSwKKwkJCWlmIChwdGVfdGVzdCgmb3JpZ3B0ZSwgUEdfRCkpIHsKKwkJ
CQlLQVNTRVJUKCFwdGVfdGVzdCgmb3JpZ3B0ZSwgUEdfUk8pLAogCQkJCSAgICAoInBtYXBfZW50
ZXI6IG1vZGlmaWVkIHBhZ2Ugbm90IHdyaXRhYmxlOiIKIAkJCQkgICAgIiB2YTogJXAsIHB0ZTog
MHgleCIsICh2b2lkICopdmEsIG9yaWdwdGUpKTsKIAkJCQlpZiAocGFnZV9pc19tYW5hZ2VkKG9w
YSkpCkBAIC0xOTg2LDcgKzE5NzcsNyBAQAogCX0KIAogCXB0ZSA9IHBtYXBfcHRlKHBtYXAsIHZh
KTsKLQlpZiAocG1hcF9wdGVfdihwdGUpKSB7CisJaWYgKHB0ZV90ZXN0KHB0ZSwgUEdfVikpIHsK
IAkJaWYgKG1wdGUgIT0gTlVMTCkgewogCQkJbXB0ZS0+d2lyZV9jb3VudC0tOwogCQkJbXB0ZSA9
IE5VTEw7CkBAIC0yMDE2LDE3ICsyMDA3LDE3IEBACiAJLyoKIAkgKiBOb3cgdmFsaWRhdGUgbWFw
cGluZyB3aXRoIFJPIHByb3RlY3Rpb24KIAkgKi8KLQkqcHRlID0gVExCTE9fUEFfVE9fUEZOKHBh
KSB8IFBURV9WOworCSpwdGUgPSBUTEJMT19QQV9UT19QRk4ocGEpIHwgUEdfVjsKIAogCWlmIChp
c19jYWNoZWFibGVfbWVtKHBhKSkKLQkJKnB0ZSB8PSBQVEVfQ0FDSEU7CisJCSpwdGUgfD0gUEdf
Q19DTkM7CiAJZWxzZQotCQkqcHRlIHw9IFBURV9VTkNBQ0hFRDsKKwkJKnB0ZSB8PSBQR19DX1VD
OwogCiAJaWYgKGlzX2tlcm5lbF9wbWFwKHBtYXApKQotCQkqcHRlIHw9IFBURV9HOworCQkqcHRl
IHw9IFBHX0c7CiAJZWxzZSB7Ci0JCSpwdGUgfD0gUFRFX1JPOworCQkqcHRlIHw9IFBHX1JPOwog
CQkvKgogCQkgKiBTeW5jIEkgJiBEIGNhY2hlcy4gIERvIHRoaXMgb25seSBpZiB0aGUgdGhlIHRh
cmdldCBwbWFwCiAJCSAqIGJlbG9uZ3MgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIE90aGVyd2lz
ZSwgYW4KQEAgLTIwNjksNyArMjA2MCw3IEBACiAJCWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKIAkJ
c3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVdOwogCQkvKiBTaW5jZSB0aGlzIGlzIGZvciB0aGUgZGVi
dWdnZXIsIG5vIGxvY2tzIG9yIGFueSBvdGhlciBmdW4gKi8KLQkJbnB0ZSA9IFRMQkxPX1BBX1RP
X1BGTihwYSkgfCBQVEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ0FDSEU7CisJ
CW5wdGUgPSBUTEJMT19QQV9UT19QRk4ocGEpIHwgUEdfRCB8IFBHX1YgfCBQR19HIHwgUEdfVyB8
IFBHX0NfQ05DOwogCQlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgc3lzbS0+YmFzZSk7CiAJ
CSpwdGUgPSBucHRlOwogCQlzeXNtLT52YWxpZDEgPSAxOwpAQCAtMjA5OCw3ICsyMDg5LDcgQEAK
IAogCQlpbnRyID0gaW50cl9kaXNhYmxlKCk7CiAJCXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFw
LCBzeXNtLT5iYXNlKTsKLQkJKnB0ZSA9IFBURV9HOworCQkqcHRlID0gUEdfRzsKIAkJcG1hcF9p
bnZhbGlkYXRlX3BhZ2Uoa2VybmVsX3BtYXAsIHN5c20tPmJhc2UpOwogCQlpbnRyX3Jlc3RvcmUo
aW50cik7CiAJCXN5c20tPnZhbGlkMSA9IDA7CkBAIC0yMTY4LDcgKzIxNTksNyBAQAogdm9pZAog
cG1hcF9jaGFuZ2Vfd2lyaW5nKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgYm9vbGVhbl90
IHdpcmVkKQogewotCXJlZ2lzdGVyIHB0X2VudHJ5X3QgKnB0ZTsKKwlwdF9lbnRyeV90ICpwdGU7
CiAKIAlpZiAocG1hcCA9PSBOVUxMKQogCQlyZXR1cm47CkBAIC0yMTc2LDE2ICsyMTY3LDE5IEBA
CiAJUE1BUF9MT0NLKHBtYXApOwogCXB0ZSA9IHBtYXBfcHRlKHBtYXAsIHZhKTsKIAotCWlmICh3
aXJlZCAmJiAhcG1hcF9wdGVfdyhwdGUpKQorCWlmICh3aXJlZCAmJiAhcHRlX3Rlc3QocHRlLCBQ
R19XKSkKIAkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQrKzsKLQllbHNlIGlmICghd2lyZWQg
JiYgcG1hcF9wdGVfdyhwdGUpKQorCWVsc2UgaWYgKCF3aXJlZCAmJiBwdGVfdGVzdChwdGUsIFBH
X1cpKQogCQlwbWFwLT5wbV9zdGF0cy53aXJlZF9jb3VudC0tOwogCiAJLyoKIAkgKiBXaXJpbmcg
aXMgbm90IGEgaGFyZHdhcmUgY2hhcmFjdGVyaXN0aWMgc28gdGhlcmUgaXMgbm8gbmVlZCB0bwog
CSAqIGludmFsaWRhdGUgVExCLgogCSAqLwotCXBtYXBfcHRlX3NldF93KHB0ZSwgd2lyZWQpOwor
CWlmICh3aXJlZCkKKwkJcHRlX3NldChwdGUsIFBHX1cpOworCWVsc2UKKwkJcHRlX2NsZWFyKHB0
ZSwgUEdfVyk7CiAJUE1BUF9VTkxPQ0socG1hcCk7CiB9CiAKQEAgLTIzNzEsMTggKzIzNjUsMTgg
QEAKIAlmb3IgKHB2ID0gVEFJTFFfRklSU1QoJnBtYXAtPnBtX3B2bGlzdCk7IHB2OyBwdiA9IG5w
dikgewogCiAJCXB0ZSA9IHBtYXBfcHRlKHB2LT5wdl9wbWFwLCBwdi0+cHZfdmEpOwotCQlpZiAo
IXBtYXBfcHRlX3YocHRlKSkKKwkJaWYgKCFwdGVfdGVzdChwdGUsIFBHX1YpKQogCQkJcGFuaWMo
InBtYXBfcmVtb3ZlX3BhZ2VzOiBwYWdlIG9uIHBtX3B2bGlzdCBoYXMgbm8gcHRlXG4iKTsKIAkJ
dHB0ZSA9ICpwdGU7CiAKIC8qCiAgKiBXZSBjYW5ub3QgcmVtb3ZlIHdpcmVkIHBhZ2VzIGZyb20g
YSBwcm9jZXNzJyBtYXBwaW5nIGF0IHRoaXMgdGltZQogICovCi0JCWlmICh0cHRlICYgUFRFX1cp
IHsKKwkJaWYgKHB0ZV90ZXN0KCZ0cHRlLCBQR19XKSkgewogCQkJbnB2ID0gVEFJTFFfTkVYVChw
diwgcHZfcGxpc3QpOwogCQkJY29udGludWU7CiAJCX0KLQkJKnB0ZSA9IGlzX2tlcm5lbF9wbWFw
KHBtYXApID8gUFRFX0cgOiAwOworCQkqcHRlID0gaXNfa2VybmVsX3BtYXAocG1hcCkgPyBQR19H
IDogMDsKIAogCQltID0gUEhZU19UT19WTV9QQUdFKFRMQkxPX1BURV9UT19QQSh0cHRlKSk7CiAJ
CUtBU1NFUlQobSAhPSBOVUxMLApAQCAtMjM5Myw3ICsyMzg3LDcgQEAKIAkJLyoKIAkJICogVXBk
YXRlIHRoZSB2bV9wYWdlX3QgY2xlYW4gYW5kIHJlZmVyZW5jZSBiaXRzLgogCQkgKi8KLQkJaWYg
KHRwdGUgJiBQVEVfTSkgeworCQlpZiAocHRlX3Rlc3QoJnRwdGUsIFBHX0QpKSB7CiAJCQl2bV9w
YWdlX2RpcnR5KG0pOwogCQl9CiAJCW5wdiA9IFRBSUxRX05FWFQocHYsIHB2X3BsaXN0KTsKQEAg
LTI0NDEsNyArMjQzNSw3IEBACiAjZW5kaWYKIAkJUE1BUF9MT0NLKHB2LT5wdl9wbWFwKTsKIAkJ
cHRlID0gcG1hcF9wdGUocHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7Ci0JCXJ2ID0gKCpwdGUgJiBi
aXQpICE9IDA7CisJCXJ2ID0gcHRlX3Rlc3QocHRlLCBiaXQpOwogCQlQTUFQX1VOTE9DSyhwdi0+
cHZfcG1hcCk7CiAJCWlmIChydikKIAkJCWJyZWFrOwpAQCAtMjQ1MCwxMyArMjQ0NCwxMyBAQAog
fQogCiAvKgotICogdGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gbW9kaWZ5IGJpdHMgaW4gcHRlcwor
ICogdGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gY2xlYXIgZGlydHkgYml0cyBpbiBwdGVzCiAgKi8K
IHN0YXRpYyBfX2lubGluZSB2b2lkCiBwbWFwX2NoYW5nZWJpdCh2bV9wYWdlX3QgbSwgaW50IGJp
dCwgYm9vbGVhbl90IHNldGVtKQogewotCXJlZ2lzdGVyIHB2X2VudHJ5X3QgcHY7Ci0JcmVnaXN0
ZXIgcHRfZW50cnlfdCAqcHRlOworCXB2X2VudHJ5X3QgcHY7CisJcHRfZW50cnlfdCAqcHRlOwog
CiAJaWYgKG0tPmZsYWdzICYgUEdfRklDVElUSU9VUykKIAkJcmV0dXJuOwpAQCAtMjQ4NCwxMiAr
MjQ3OCwxMSBAQAogCQkJdm1fb2Zmc2V0X3QgcGJpdHMgPSAqKHZtX29mZnNldF90ICopcHRlOwog
CiAJCQlpZiAocGJpdHMgJiBiaXQpIHsKLQkJCQlpZiAoYml0ID09IFBURV9SVykgewotCQkJCQlp
ZiAocGJpdHMgJiBQVEVfTSkgeworCQkJCWlmIChiaXQgPT0gUEdfRCkgeworCQkJCQlpZiAocGJp
dHMgJiBQR19EKSB7CiAJCQkJCQl2bV9wYWdlX2RpcnR5KG0pOwogCQkJCQl9Ci0JCQkJCSooaW50
ICopcHRlID0gKHBiaXRzICYgfihQVEVfTSB8IFBURV9SVykpIHwKLQkJCQkJICAgIFBURV9STzsK
KwkJCQkJKihpbnQgKilwdGUgPSAocGJpdHMgJiB+UEdfRCkgfCBQR19STzsKIAkJCQl9IGVsc2Ug
ewogCQkJCQkqKGludCAqKXB0ZSA9IHBiaXRzICYgfmJpdDsKIAkJCQl9CkBAIC0yNDk4LDcgKzI0
OTEsNyBAQAogCQl9CiAJCVBNQVBfVU5MT0NLKHB2LT5wdl9wbWFwKTsKIAl9Ci0JaWYgKCFzZXRl
bSAmJiBiaXQgPT0gUFRFX1JXKQorCWlmICghc2V0ZW0gJiYgYml0ID09IFBHX0QpCiAJCXZtX3Bh
Z2VfZmxhZ19jbGVhcihtLCBQR19XUklURUFCTEUpOwogfQogCkBAIC0yNTU1LDggKzI1NDgsNyBA
QAogCWZvciAocHYgPSBUQUlMUV9GSVJTVCgmbS0+bWQucHZfbGlzdCk7IHB2OyBwdiA9IG5wdikg
ewogCQlucHYgPSBUQUlMUV9ORVhUKHB2LCBwdl9wbGlzdCk7CiAJCXB0ZSA9IHBtYXBfcHRlKHB2
LT5wdl9wbWFwLCBwdi0+cHZfdmEpOwotCi0JCWlmICgocHRlID09IE5VTEwpIHx8ICFtaXBzX3Bn
X3YoKnB0ZSkpCisJCWlmIChwdGUgPT0gTlVMTCB8fCAhcHRlX3Rlc3QocHRlLCBQR19WKSkKIAkJ
CXBhbmljKCJwYWdlIG9uIHBtX3B2bGlzdCBoYXMgbm8gcHRlXG4iKTsKIAogCQl2YSA9IHB2LT5w
dl92YTsKQEAgLTI2MDQsNyArMjU5Niw3IEBACiAJLyoKIAkgKiBJZiB0aGUgcGFnZSBpcyBub3Qg
VlBPX0JVU1ksIHRoZW4gUEdfV1JJVEVBQkxFIGNhbm5vdCBiZQogCSAqIGNvbmN1cnJlbnRseSBz
ZXQgd2hpbGUgdGhlIG9iamVjdCBpcyBsb2NrZWQuICBUaHVzLCBpZiBQR19XUklURUFCTEUKLQkg
KiBpcyBjbGVhciwgbm8gUFRFcyBjYW4gaGF2ZSBQVEVfTSBzZXQuCisJICogaXMgY2xlYXIsIG5v
IFBURXMgY2FuIGhhdmUgUEdfRCBzZXQuCiAJICovCiAJVk1fT0JKRUNUX0xPQ0tfQVNTRVJUKG0t
Pm9iamVjdCwgTUFfT1dORUQpOwogCWlmICgobS0+b2ZsYWdzICYgVlBPX0JVU1kpID09IDAgJiYK
QEAgLTI2MTQsNyArMjYwNiw3IEBACiAJaWYgKG0tPm1kLnB2X2ZsYWdzICYgUFZfVEFCTEVfTU9E
KQogCQlydiA9IFRSVUU7CiAJZWxzZQotCQlydiA9IHBtYXBfdGVzdGJpdChtLCBQVEVfTSk7CisJ
CXJ2ID0gcG1hcF90ZXN0Yml0KG0sIFBHX0QpOwogCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwog
CXJldHVybiAocnYpOwogfQpAQCAtMjY1Nyw3ICsyNjQ5LDcgQEAKIAkgICAgKCJwbWFwX2NsZWFy
X21vZGlmeTogcGFnZSAlcCBpcyBidXN5IiwgbSkpOwogCiAJLyoKLQkgKiBJZiB0aGUgcGFnZSBp
cyBub3QgUEdfV1JJVEVBQkxFLCB0aGVuIG5vIFBURXMgY2FuIGhhdmUgUFRFX00gc2V0LgorCSAq
IElmIHRoZSBwYWdlIGlzIG5vdCBQR19XUklURUFCTEUsIHRoZW4gbm8gUFRFcyBjYW4gaGF2ZSBQ
R19EIHNldC4KIAkgKiBJZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhZ2UgaXMgbG9ja2Vk
IGFuZCB0aGUgcGFnZSBpcyBub3QKIAkgKiBWUE9fQlVTWSwgdGhlbiBQR19XUklURUFCTEUgY2Fu
bm90IGJlIGNvbmN1cnJlbnRseSBzZXQuCiAJICovCkBAIC0yNjY1LDcgKzI2NTcsNyBAQAogCQly
ZXR1cm47CiAJdm1fcGFnZV9sb2NrX3F1ZXVlcygpOwogCWlmIChtLT5tZC5wdl9mbGFncyAmIFBW
X1RBQkxFX01PRCkgewotCQlwbWFwX2NoYW5nZWJpdChtLCBQVEVfTSwgRkFMU0UpOworCQlwbWFw
X2NoYW5nZWJpdChtLCBQR19ELCBGQUxTRSk7CiAJCW0tPm1kLnB2X2ZsYWdzICY9IH5QVl9UQUJM
RV9NT0Q7CiAJfQogCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwpAQCAtMjc4NCwxMiArMjc3Niwx
MiBAQAogcmV0cnk6CiAJcHRlcCA9IHBtYXBfcHRlKHBtYXAsIGFkZHIpOwogCXB0ZSA9IChwdGVw
ICE9IE5VTEwpID8gKnB0ZXAgOiAwOwotCWlmICghbWlwc19wZ192KHB0ZSkpIHsKKwlpZiAoIXB0
ZV90ZXN0KCZwdGUsIFBHX1YpKSB7CiAJCXZhbCA9IDA7CiAJCWdvdG8gb3V0OwogCX0KIAl2YWwg
PSBNSU5DT1JFX0lOQ09SRTsKLQlpZiAoKHB0ZSAmIFBURV9NKSAhPSAwKQorCWlmIChwdGVfdGVz
dCgmcHRlLCBQR19EKSkKIAkJdmFsIHw9IE1JTkNPUkVfTU9ESUZJRUQgfCBNSU5DT1JFX01PRElG
SUVEX09USEVSOwogCXBhID0gVExCTE9fUFRFX1RPX1BBKHB0ZSk7CiAJbWFuYWdlZCA9IHBhZ2Vf
aXNfbWFuYWdlZChwYSk7CkBAIC0yOTE1LDEzICsyOTA3LDEzIEBACiAJCQkJdW5zaWduZWQgYmFz
ZSA9IGkgPDwgU0VHU0hJRlQ7CiAKIAkJCQlwZGUgPSAmcG1hcC0+cG1fc2VndGFiW2ldOwotCQkJ
CWlmIChwZGUgJiYgcG1hcF9wZGVfdihwZGUpKSB7CisJCQkJaWYgKHBkZSAmJiAqcGRlICE9IDAp
IHsKIAkJCQkJZm9yIChqID0gMDsgaiA8IDEwMjQ7IGorKykgewogCQkJCQkJdm1fb2Zmc2V0X3Qg
dmEgPSBiYXNlICsKIAkJCQkJCShqIDw8IFBBR0VfU0hJRlQpOwogCiAJCQkJCQlwdGUgPSBwbWFw
X3B0ZShwbWFwLCB2YSk7Ci0JCQkJCQlpZiAocHRlICYmIHBtYXBfcHRlX3YocHRlKSkgeworCQkJ
CQkJaWYgKHB0ZSAmJiBwdGVfdGVzdChwdGUsIFBHX1YpKSB7CiAJCQkJCQkJdm1fb2Zmc2V0X3Qg
cGE7CiAJCQkJCQkJdm1fcGFnZV90IG07CiAKQEAgLTMwNTgsMTYgKzMwNTAsMTYgQEAKIAlpbnQg
cnc7CiAKIAlpZiAoIShwcm90ICYgVk1fUFJPVF9XUklURSkpCi0JCXJ3ID0gUFRFX1JPUEFHRTsK
KwkJcncgPSAgUEdfViB8IFBHX1JPIHwgUEdfQ19DTkM7ICAvKiBST1BBR0UgKi8KIAllbHNlIGlm
ICgobS0+ZmxhZ3MgJiAoUEdfRklDVElUSU9VUyB8IFBHX1VOTUFOQUdFRCkpID09IDApIHsKIAkJ
aWYgKChtLT5tZC5wdl9mbGFncyAmIFBWX1RBQkxFX01PRCkgIT0gMCkKLQkJCXJ3ID0gUFRFX1JX
UEFHRTsKKwkJCXJ3ID0gIFBHX1YgfCBQR19EIHwgUEdfQ19DTkM7IC8qIFJXUEFHRSAqLwogCQll
bHNlCi0JCQlydyA9IFBURV9DV1BBR0U7CisJCQlydyA9IFBHX1YgfCBQR19DX0NOQzsgIC8qIENX
UEFHRSAqLwogCQl2bV9wYWdlX2ZsYWdfc2V0KG0sIFBHX1dSSVRFQUJMRSk7CiAJfSBlbHNlCiAJ
CS8qIE5lZWRuJ3QgZW11bGF0ZSBhIG1vZGlmaWVkIGJpdCBmb3IgdW5tYW5hZ2VkIHBhZ2VzLiAq
LwotCQlydyA9IFBURV9SV1BBR0U7CisJCXJ3ID0gIFBHX1YgfCBQR19EIHwgUEdfQ19DTkM7IC8q
IFJXUEFHRSAqLwogCXJldHVybiAocncpOwogfQogCkluZGV4OiBzeXMvbWlwcy9taXBzL21hY2hk
ZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL21hY2hkZXAuYwkocmV2aXNpb24gMjA5
MjQzKQorKysgc3lzL21pcHMvbWlwcy9tYWNoZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw3
ICs0MjEsNyBAQAogCSAqIFdlIHVzZSBhIHdpcmVkIHRsYiBpbmRleCB0byBkbyB0aGlzIG9uZS10
aW1lIG1hcHBpbmcuCiAJICovCiAJcGEgPSB2dG9waHlzKHBjcHUpOwotCXB0ZSA9IFBURV9SVyB8
IFBURV9WIHwgUFRFX0cgfCBQVEVfQ0FDSEU7CisJcHRlID0gUEdfRCB8IFBHX1YgfCBQR19HIHwg
UEdfQ19DTkM7CiAJdGxiX2luc2VydF93aXJlZChQQ1BVX1RMQl9FTlRSWSwgKHZtX29mZnNldF90
KXBjcHVwLAogCQkJIFRMQkxPX1BBX1RPX1BGTihwYSkgfCBwdGUsCiAJCQkgVExCTE9fUEFfVE9f
UEZOKHBhICsgUEFHRV9TSVpFKSB8IHB0ZSk7CkluZGV4OiBzeXMvbWlwcy9taXBzL3RyYXAuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL3RyYXAuYwkocmV2aXNpb24gMjA5MjQzKQorKysg
c3lzL21pcHMvbWlwcy90cmFwLmMJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcsNyBAQAog
I2lmZGVmIFNNUAogCQlwcmludGYoImNwdWlkID0gJWRcbiIsIFBDUFVfR0VUKGNwdWlkKSk7CiAj
ZW5kaWYKLQkJTWFjaFRMQkdldFBJRChwaWQpOworCQlwaWQgPSBtaXBzX3JkX2VudHJ5aGkoKSAm
IFRMQkhJX0FTSURfTUFTSzsKIAkJcHJpbnRmKCJiYWRhZGRyID0gJSNqeCwgcGMgPSAlI2p4LCBy
YSA9ICUjangsIHNwID0gJSNqeCwgc3IgPSAlangsIHBpZCA9ICVkLCBBU0lEID0gJXVcbiIsCiAJ
CSAgICAoaW50bWF4X3QpdHJhcGZyYW1lLT5iYWR2YWRkciwgKGludG1heF90KXRyYXBmcmFtZS0+
cGMsIChpbnRtYXhfdCl0cmFwZnJhbWUtPnJhLAogCQkgICAgKGludG1heF90KXRyYXBmcmFtZS0+
c3AsIChpbnRtYXhfdCl0cmFwZnJhbWUtPnNyLApAQCAtMzc4LDIzICszNzgsMjMgQEAKIAkJCQlw
YW5pYygidHJhcDoga3RsYm1vZDogY2FuJ3QgZmluZCBQVEUiKTsKICNpZmRlZiBTTVAKIAkJCS8q
IEl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBvdGhlciBDUFUgY2hhbmdlZCBtLWJpdCAqLwotCQkJ
aWYgKCFtaXBzX3BnX3YoKnB0ZSkgfHwgKCpwdGUgJiBtaXBzX3BnX21fYml0KCkpKSB7CisJCQlp
ZiAoIXB0ZV90ZXN0KHB0ZSwgUEdfVikgfHwgcHRlX3Rlc3QocHRlLCBQR19EKSkgewogCQkJCXBt
YXBfdXBkYXRlX3BhZ2Uoa2VybmVsX3BtYXAsCiAJCQkJICAgIHRyYXBmcmFtZS0+YmFkdmFkZHIs
ICpwdGUpOwogCQkJCVBNQVBfVU5MT0NLKGtlcm5lbF9wbWFwKTsKIAkJCQlyZXR1cm4gKHRyYXBm
cmFtZS0+cGMpOwogCQkJfQogI2Vsc2UKLQkJCWlmICghbWlwc19wZ192KCpwdGUpIHx8ICgqcHRl
ICYgbWlwc19wZ19tX2JpdCgpKSkKKwkJCWlmICghcHRlX3Rlc3QocHRlLCBQR19WKSB8fCBwdGVf
dGVzdChwdGUsIFBHX0QpKQogCQkJCXBhbmljKCJ0cmFwOiBrdGxibW9kOiBpbnZhbGlkIHB0ZSIp
OwogI2VuZGlmCi0JCQlpZiAoKnB0ZSAmIG1pcHNfcGdfcm9fYml0KCkpIHsKKwkJCWlmIChwdGVf
dGVzdChwdGUsIFBHX1JPKSkgewogCQkJCS8qIHdyaXRlIHRvIHJlYWQgb25seSBwYWdlIGluIHRo
ZSBrZXJuZWwgKi8KIAkJCQlmdHlwZSA9IFZNX1BST1RfV1JJVEU7CiAJCQkJUE1BUF9VTkxPQ0so
a2VybmVsX3BtYXApOwogCQkJCWdvdG8ga2VybmVsX2ZhdWx0OwogCQkJfQotCQkJKnB0ZSB8PSBt
aXBzX3BnX21fYml0KCk7CisJCQlwdGVfc2V0KHB0ZSwgUEdfRCk7CiAJCQlwbWFwX3VwZGF0ZV9w
YWdlKGtlcm5lbF9wbWFwLCB0cmFwZnJhbWUtPmJhZHZhZGRyLCAqcHRlKTsKIAkJCXBhID0gVExC
TE9fUFRFX1RPX1BBKCpwdGUpOwogCQkJaWYgKCFwYWdlX2lzX21hbmFnZWQocGEpKQpAQCAtNDE3
LDIzICs0MTcsMjMgQEAKIAkJCQlwYW5pYygidHJhcDogdXRsYm1vZDogY2FuJ3QgZmluZCBQVEUi
KTsKICNpZmRlZiBTTVAKIAkJCS8qIEl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBvdGhlciBDUFUg
Y2hhbmdlZCBtLWJpdCAqLwotCQkJaWYgKCFtaXBzX3BnX3YoKnB0ZSkgfHwgKCpwdGUgJiBtaXBz
X3BnX21fYml0KCkpKSB7CisJCQlpZiAoIXB0ZV90ZXN0KHB0ZSwgUEdfVikgfHwgcHRlX3Rlc3Qo
cHRlLCBQR19EKSkgewogCQkJCXBtYXBfdXBkYXRlX3BhZ2UocG1hcCwgdHJhcGZyYW1lLT5iYWR2
YWRkciwgKnB0ZSk7CiAJCQkJUE1BUF9VTkxPQ0socG1hcCk7CiAJCQkJZ290byBvdXQ7CiAJCQl9
CiAjZWxzZQotCQkJaWYgKCFtaXBzX3BnX3YoKnB0ZSkgfHwgKCpwdGUgJiBtaXBzX3BnX21fYml0
KCkpKQorCQkJaWYgKCFwdGVfdGVzdChwdGUsIFBHX1YpIHx8IHB0ZV90ZXN0KHB0ZSwgUEdfRCkp
CiAJCQkJcGFuaWMoInRyYXA6IHV0bGJtb2Q6IGludmFsaWQgcHRlIik7CiAjZW5kaWYKIAotCQkJ
aWYgKCpwdGUgJiBtaXBzX3BnX3JvX2JpdCgpKSB7CisJCQlpZiAocHRlX3Rlc3QocHRlLCBQR19S
TykpIHsKIAkJCQkvKiB3cml0ZSB0byByZWFkIG9ubHkgcGFnZSAqLwogCQkJCWZ0eXBlID0gVk1f
UFJPVF9XUklURTsKIAkJCQlQTUFQX1VOTE9DSyhwbWFwKTsKIAkJCQlnb3RvIGRvZmF1bHQ7CiAJ
CQl9Ci0JCQkqcHRlIHw9IG1pcHNfcGdfbV9iaXQoKTsKKwkJCXB0ZV9zZXQocHRlLCBQR19EKTsK
IAkJCXBtYXBfdXBkYXRlX3BhZ2UocG1hcCwgdHJhcGZyYW1lLT5iYWR2YWRkciwgKnB0ZSk7CiAJ
CQlwYSA9IFRMQkxPX1BURV9UT19QQSgqcHRlKTsKIAkJCWlmICghcGFnZV9pc19tYW5hZ2VkKHBh
KSkK
--00c09f8e5b59fa198104893ba12e
Content-Type: text/x-patch; charset=US-ASCII;
	name="pmap-lgmem-lock-remove.patch"
Content-Disposition: attachment; filename="pmap-lgmem-lock-remove.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gajrcc4x5

SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv
cG1hcC5jCShyZXZpc2lvbiAyMDkyNDMpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw2IEBACiBzdGF0aWMgdW1hX3pvbmVfdCBwdHBnem9uZTsK
IAogc3RydWN0IGxvY2FsX3N5c21hcHMgewotCXN0cnVjdCBtdHggbG9jazsKIAl2bV9vZmZzZXRf
dCBiYXNlOwogCXVpbnQxNl90IHZhbGlkMSwgdmFsaWQyOwogfTsKQEAgLTIxNCwxMSArMjEzLDkg
QEAKIAlzdHJ1Y3QgbG9jYWxfc3lzbWFwcyAqc3lzbTsJCQkJCVwKIAlwdF9lbnRyeV90ICpwdGUs
IG5wdGU7CQkJCQkJXAogCQkJCQkJCQkJXAorCWludHIgPSBpbnRyX2Rpc2FibGUoKTsJCQkJCQlc
CiAJY3B1ID0gUENQVV9HRVQoY3B1aWQpOwkJCQkJCVwKIAlzeXNtID0gJnN5c21hcF9sbWVtW2Nw
dV07CQkJCQlcCi0JUE1BUF9MR01FTV9MT0NLKHN5c20pOwkJCQkJCVwKLQlpbnRyID0gaW50cl9k
aXNhYmxlKCk7CQkJCQkJXAotCXNjaGVkX3BpbigpOwkJCQkJCQlcCiAJdmEgPSBzeXNtLT5iYXNl
OwkJCQkJCVwKIAlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBoeXMpIHwJCQkJCVwKIAkgICAgUFRF
X1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBURV9XIHwgUFRFX0NBQ0hFOwkJCVwKQEAgLTIzMSwxMSAr
MjI4LDkgQEAKIAlzdHJ1Y3QgbG9jYWxfc3lzbWFwcyAqc3lzbTsJCQkJCVwKIAlwdF9lbnRyeV90
ICpwdGUsIG5wdGU7CQkJCQkJXAogCQkJCQkJCQkJXAorCWludHIgPSBpbnRyX2Rpc2FibGUoKTsJ
CQkJCQlcCiAJY3B1ID0gUENQVV9HRVQoY3B1aWQpOwkJCQkJCVwKIAlzeXNtID0gJnN5c21hcF9s
bWVtW2NwdV07CQkJCQlcCi0JUE1BUF9MR01FTV9MT0NLKHN5c20pOwkJCQkJCVwKLQlpbnRyID0g
aW50cl9kaXNhYmxlKCk7CQkJCQkJXAotCXNjaGVkX3BpbigpOwkJCQkJCQlcCiAJdmExID0gc3lz
bS0+YmFzZTsJCQkJCQlcCiAJdmEyID0gc3lzbS0+YmFzZSArIFBBR0VfU0laRTsJCQkJCVwKIAlu
cHRlID0gVExCTE9fUEFfVE9fUEZOKHBoeXMxKSB8CQkJCQlcCkBAIC0yNTgsOSArMjUzLDcgQEAK
IAkqcHRlID0gUFRFX0c7CQkJCQkJCVwKIAl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKGtlcm5lbF9w
bWFwLCBzeXNtLT5iYXNlICsgUEFHRV9TSVpFKTsJXAogCXN5c20tPnZhbGlkMiA9IDA7CQkJCQkJ
XAotCXNjaGVkX3VucGluKCk7CQkJCQkJCVwKIAlpbnRyX3Jlc3RvcmUoaW50cik7CQkJCQkJXAot
CVBNQVBfTEdNRU1fVU5MT0NLKHN5c20pCiAKIHBkX2VudHJ5X3QKIHBtYXBfc2VnbWFwKHBtYXBf
dCBwbWFwLCB2bV9vZmZzZXRfdCB2YSkKQEAgLTQzNiw3ICs0MjksNiBAQAogCQkJc3lzbWFwX2xt
ZW1baV0uYmFzZSA9IHZpcnR1YWxfYXZhaWw7CiAJCQl2aXJ0dWFsX2F2YWlsICs9IFBBR0VfU0la
RSAqIDI7CiAJCQlzeXNtYXBfbG1lbVtpXS52YWxpZDEgPSBzeXNtYXBfbG1lbVtpXS52YWxpZDIg
PSAwOwotCQkJUE1BUF9MR01FTV9MT0NLX0lOSVQoJnN5c21hcF9sbWVtW2ldKTsKIAkJfQogCX0K
IApJbmRleDogc3lzL21pcHMvaW5jbHVkZS9wbWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMv
aW5jbHVkZS9wbWFwLmgJKHJldmlzaW9uIDIwOTI0MykKKysrIHN5cy9taXBzL2luY2x1ZGUvcG1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTIgKzExNiw2IEBACiAjZGVmaW5lCVBNQVBfVFJZ
TE9DSyhwbWFwKQltdHhfdHJ5bG9jaygmKHBtYXApLT5wbV9tdHgpCiAjZGVmaW5lCVBNQVBfVU5M
T0NLKHBtYXApCW10eF91bmxvY2soJihwbWFwKS0+cG1fbXR4KQogCi0jZGVmaW5lIFBNQVBfTEdN
RU1fTE9DS19JTklUKHN5c21hcCkgbXR4X2luaXQoJihzeXNtYXApLT5sb2NrLCAicG1hcC1sZ21l
bSIsIFwKLQkJCQkgICAgInBlci1jcHUtbWFwIiwgKE1UWF9ERUZ8IE1UWF9EVVBPSykpCi0jZGVm
aW5lIFBNQVBfTEdNRU1fTE9DSyhzeXNtYXApIG10eF9sb2NrKCYoc3lzbWFwKS0+bG9jaykKLSNk
ZWZpbmUgUE1BUF9MR01FTV9VTkxPQ0soc3lzbWFwKSBtdHhfdW5sb2NrKCYoc3lzbWFwKS0+bG9j
aykKLSNkZWZpbmUgUE1BUF9MR01FTV9ERVNUUk9ZKHN5c21hcCkgbXR4X2Rlc3Ryb3koJihzeXNt
YXApLT5sb2NrKQotCiAvKgogICogRm9yIGVhY2ggdm1fcGFnZV90LCB0aGVyZSBpcyBhIGxpc3Qg
b2YgYWxsIGN1cnJlbnRseSB2YWxpZCB2aXJ0dWFsCiAgKiBtYXBwaW5ncyBvZiB0aGF0IHBhZ2Uu
ICBBbiBlbnRyeSBpcyBhIHB2X2VudHJ5X3QsIHRoZSBsaXN0IGlzIHB2X3RhYmxlLgo=
--00c09f8e5b59fa198104893ba12e--



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