From owner-freebsd-mips@FreeBSD.ORG Thu Jun 17 15:38:49 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D18C9106564A; Thu, 17 Jun 2010 15:38:49 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-qy0-f182.google.com (mail-qy0-f182.google.com [209.85.216.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4FFA08FC15; Thu, 17 Jun 2010 15:38:49 +0000 (UTC) Received: by qyk11 with SMTP id 11so1710969qyk.13 for ; Thu, 17 Jun 2010 08:38:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=ofzBbCeLScwIHncTBcjABRdxR+UZRlOOX8blPbNGL9k=; b=EMcu8e13JPHoRPVfmqzlI3NVrz2RV1+KGOWZJzQGeQLrKCz67IkXVaMtTojYCpYtCN n0+Oj6GsKhycIytrwSSAQM5cqmMsD25lCT8NQHE3njuPC0fquulvBTP6zxNViJtshxIZ AsgcNV6i2hQe0irVlppXckk6P9r69+m5wK7Fg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=LnAhsAcTZbPoFiXYKx87bWLJN0qQ7EIpaX0nmmPfS8NF/68P2X99omWECGEbPX9QWY 3sDnwz47wL8Lg5YF/ybFTSzz7UTP7lLFZ/xO0KDwlUeKMHv+/TWpgVg3nQgne9wYcyW9 Qc30mpxO5N5vURg0s82ZkC3+NCN48Grpk2HRs= MIME-Version: 1.0 Received: by 10.224.19.100 with SMTP id z36mr5544433qaa.84.1276789120386; Thu, 17 Jun 2010 08:38:40 -0700 (PDT) Received: by 10.224.37.139 with HTTP; Thu, 17 Jun 2010 08:38:40 -0700 (PDT) Date: Thu, 17 Jun 2010 21:08:40 +0530 Message-ID: From: "Jayachandran C." To: Randall Stewart , Juli Mallett , "M. Warner Losh" , freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=00c09f8e5b59fa198104893ba12e Cc: Subject: Merging 64 bit changes to -HEAD - part 2 X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2010 15:38:50 -0000 --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. 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--