From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v6 05/14] public / x86: introduce __HYPERCALL_iommu_op Date: Thu, 23 Aug 2018 10:47:02 +0100 Message-ID: <20180823094711.21376-6-paul.durrant@citrix.com> References: <20180823094711.21376-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fsmD2-00005d-3g for xen-devel@lists.xenproject.org; Thu, 23 Aug 2018 09:47:20 +0000 In-Reply-To: <20180823094711.21376-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBib2lsZXJwbGF0ZSBmb3IgYSBuZXcgaHlwZXJjYWxs IHRvIGFsbG93IGEKZG9tYWluIHRvIGNvbnRyb2wgSU9NTVUgbWFwcGluZ3MgZm9yIGl0cyBvd24g cGFnZXMuCldoaWxzdCB0aGVyZSBpcyBkdXBsaWNhdGlvbiBvZiBjb2RlIGJldHdlZW4gdGhlIG5h dGl2ZSBhbmQgY29tcGF0IGVudHJ5CnBvaW50cyB3aGljaCBhcHBlYXJzIHJpcGUgZm9yIHNvbWUg Zm9ybSBvZiBjb21iaW5hdGlvbiwgSSB0aGluayBpdCBpcwpiZXR0ZXIgdG8gbWFpbnRhaW4gdGhl IHNlcGFyYXRpb24gYXMtaXMgYmVjYXVzZSB0aGUgY29tcGF0IGVudHJ5IHBvaW50CndpbGwgbmVj ZXNzYXJpbHkgZ2FpbiBjb21wbGV4aXR5IGluIHN1YnNlcXVlbnQgcGF0Y2hlcy4KCk5PVEU6IFRo aXMgaHlwZXJjYWxsIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9yIHg4NiBhbmQgaXMgY3VycmVudGx5 CiAgICAgIHJlc3RyaWN0ZWQgYnkgWFNNIHRvIGRvbTAuIEl0cyBzY29wZSBjYW4gYmUgZXhwYW5k ZWQgaW4gZnV0dXJlCiAgICAgIGlmIG5lZWQgYmUuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJh bnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpBY2tlZC1ieTogRGFuaWVsIERlIEdyYWFmIDxk Z2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+Ci0tLQpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4 LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFu IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGlu aUBrZXJuZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3 ZWkubGl1MkBjaXRyaXguY29tPgoKdjY6CiAtIE1vdmUgaW9tbXVfb3AuYyB0byB4ZW4vY29tbW9u IGFzIHN1Z2dlc3RlZCBieSBLZXZpbiwgYnV0IG9ubHkgYnVpbGQgZm9yCiAgIHg4NiAoYXMgc3Vn Z2VzdGVkIGJ5IEphbikuCgp2MzoKIC0gUHVzaCBvcCBjb2RlIGludG8gWFNNIGNoZWNrLgoKdjI6 CiAtIEdldCByaWQgb2YgdGhlIGNhbl9jb250cm9sX2lvbW11KCkgZnVuY3Rpb24sIGxlYXZpbmcg dGhpcyBwYXRjaCBhcyBwdXJlCiAgIGJvaWxlcnBsYXRlLgogLSBSZS1zdHJ1Y3R1cmUgdGhlIGh5 cGVyY2FsbCB0byB1c2UgYSBidWZmZXIgYXJyYXksIHNpbWlsYXIgdG8gdGhhdCB1c2VkCiAgIGJ5 IF9fSFlQRVJDQUxMX2RtX29wLCB0byBhbGxvdyBmb3IgZnV0dXJlIGV4cGFuc2lvbiBvZiBvcCBz dHJ1Y3R1cmUKICAgd2l0aG91dCBhZmZlY3RpbmcgYmluYXJ5IGNvbXBhdGliaWxpdHkuCiAtIERy b3AgdXNlIG9mIF9fIGluIHB1YmxpYyBoZWFkZXIgZ3VhcmQuCi0tLQogdG9vbHMvZmxhc2svcG9s aWN5L21vZHVsZXMveGVuLmlmICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwu YyAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jICAgICAgICAgICAgfCAg IDEgKwogeGVuL2FyY2gveDg2L3B2L2h5cGVyY2FsbC5jICAgICAgICAgfCAgIDEgKwogeGVuL2Nv bW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi9pb21tdV9v cC5jICAgICAgICAgICAgICAgfCAxODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB4ZW4vaW5jbHVkZS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMiArCiB4ZW4vaW5j bHVkZS9wdWJsaWMvaW9tbXVfb3AuaCAgICAgICB8ICA2NCArKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS9wdWJsaWMveGVuLmggICAgICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS94ZW4vaHlw ZXJjYWxsLmggICAgICAgICB8ICAxMiArKysKIHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAgICAg ICAgICAgIHwgICAyICsKIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAgICAgIHwgICA2 ICsrCiB4ZW4vaW5jbHVkZS94c20veHNtLmggICAgICAgICAgICAgICB8ICAgNiArKwogeGVuL3hz bS9kdW1teS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL3hzbS9mbGFzay9ob29r cy5jICAgICAgICAgICAgICAgfCAgIDYgKysKIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192 ZWN0b3JzIHwgICAyICsKIDE2IGZpbGVzIGNoYW5nZWQsIDI5MSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9pb21tdV9vcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKCmRpZmYgLS1naXQgYS90b29scy9mbGFzay9w b2xpY3kvbW9kdWxlcy94ZW4uaWYgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYK aW5kZXggNjFiMGU3NjcxNS4uZTNhZTM5Yzc2NCAxMDA2NDQKLS0tIGEvdG9vbHMvZmxhc2svcG9s aWN5L21vZHVsZXMveGVuLmlmCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5p ZgpAQCAtNjAsNiArNjAsNyBAQCBkZWZpbmUoYGNyZWF0ZV9kb21haW5fY29tbW9uJywgYAogCWFs bG93ICQxICQyOmdyYW50IHNldHVwOwogCWFsbG93ICQxICQyOmh2bSB7IGdldHBhcmFtIGh2bWN0 bCBzZXRodm1jCiAJCQlzZXRwYXJhbSBuZXN0ZWQgYWx0cDJtaHZtIGFsdHAybWh2bV9vcCBkbSB9 OworCWFsbG93ICQxICQyOnJlc291cmNlIGNvbnRyb2xfaW9tbXU7CiAnKQogCiAjIGNyZWF0ZV9k b21haW4ocHJpdiwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9oeXBlcmNh bGwuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMKaW5kZXggODVlYWNkN2QzMy4uMzU3 NDk2NjgyNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwuYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RhdGljIGNv bnN0IGh5cGVyY2FsbF90YWJsZV90IGh2bV9oeXBlcmNhbGxfdGFibGVbXSA9IHsKICAgICBDT01Q QVRfQ0FMTChtbXVleHRfb3ApLAogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAogICAgIENPTVBB VF9DQUxMKGRtX29wKSwKKyAgICBDT01QQVRfQ0FMTChpb21tdV9vcCksCiAgICAgSFlQRVJDQUxM KGFyY2hfMSkKIH07CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyBiL3hl bi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwppbmRleCA5MGU4OGMxZDJjLi4wNDU3NTNlNzAyIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMKKysrIGIveGVuL2FyY2gveDg2L2h5cGVy Y2FsbC5jCkBAIC02OCw2ICs2OCw3IEBAIGNvbnN0IGh5cGVyY2FsbF9hcmdzX3QgaHlwZXJjYWxs X2FyZ3NfdGFibGVbTlJfaHlwZXJjYWxsc10gPQogICAgIEFSR1MoeGVucG11X29wLCAyKSwKICAg ICBBUkdTKGRtX29wLCAzKSwKICAgICBBUkdTKG1jYSwgMSksCisgICAgQVJHUyhpb21tdV9vcCwg MiksCiAgICAgQVJHUyhhcmNoXzEsIDEpLAogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3B2L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L3B2L2h5cGVyY2FsbC5jCmluZGV4IGJiYzMw MTFkMWEuLmQyM2Y5YWY0MmYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9oeXBlcmNhbGwu YworKysgYi94ZW4vYXJjaC94ODYvcHYvaHlwZXJjYWxsLmMKQEAgLTgwLDYgKzgwLDcgQEAgY29u c3QgaHlwZXJjYWxsX3RhYmxlX3QgcHZfaHlwZXJjYWxsX3RhYmxlW10gPSB7CiAgICAgSFlQRVJD QUxMKHhlbnBtdV9vcCksCiAgICAgQ09NUEFUX0NBTEwoZG1fb3ApLAogICAgIEhZUEVSQ0FMTCht Y2EpLAorICAgIENPTVBBVF9DQUxMKGlvbW11X29wKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKSwK IH07CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFrZWZpbGUgYi94ZW4vY29tbW9uL01ha2Vm aWxlCmluZGV4IDZhMDVmZmZjN2EuLjYzNDFiZGNjZWUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v TWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAtMTMsNiArMTMsNyBAQCBvYmot JChDT05GSUdfQ1JBU0hfREVCVUcpICs9IGdkYnN0dWIubwogb2JqLXkgKz0gZ3JhbnRfdGFibGUu bwogb2JqLXkgKz0gZ3Vlc3Rjb3B5Lm8KIG9iai1iaW4teSArPSBndW56aXAuaW5pdC5vCitvYmot JChDT05GSUdfWDg2KSArPSBpb21tdV9vcC5vCiBvYmoteSArPSBpcnEubwogb2JqLXkgKz0ga2Vy bmVsLm8KIG9iai15ICs9IGtleWhhbmRsZXIubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9pb21t dV9vcC5jIGIveGVuL2NvbW1vbi9pb21tdV9vcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjc0NGMwZmNlMjcKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vY29tbW9uL2lv bW11X29wLmMKQEAgLTAsMCArMSwxODQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHg4 Ni9pb21tdV9vcC5jCisgKgorICogUGFyYXZpcnR1YWxpc2VkIElPTU1VIGZ1bmN0aW9uYWxpdHkK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogQ29weXJpZ2h0IChDKSAy MDE4IENpdHJpeCBTeXN0ZW1zIEluYworICovCisKKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNp bmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgor CitzdGF0aWMgdm9pZCBpb21tdV9vcCh4ZW5faW9tbXVfb3BfdCAqb3ApCit7CisgICAgc3dpdGNo ICggb3AtPm9wICkKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3AtPnN0YXR1cyA9IC1F T1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2ludCBkb19vbmVfaW9tbXVf b3AoeGVuX2lvbW11X29wX2J1Zl90ICpidWYpCit7CisgICAgeGVuX2lvbW11X29wX3Qgb3A7Cisg ICAgaW50IHJjOworCisgICAgaWYgKCBidWYtPnNpemUgPCBzaXplb2Yob3ApICkKKyAgICAgICAg cmV0dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgodm9pZCAqKSZvcCwg YnVmLT5oLCBzaXplb2Yob3ApKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgaWYg KCBvcC5wYWQgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJjID0geHNtX2lvbW11 X29wKFhTTV9QUklWLCBjdXJyZW50LT5kb21haW4sIG9wLm9wKTsKKyAgICBpZiAoIHJjICkKKyAg ICAgICAgcmV0dXJuIHJjOworCisgICAgaW9tbXVfb3AoJm9wKTsKKworICAgIGlmICggX19jb3B5 X2ZpZWxkX3RvX2d1ZXN0KGd1ZXN0X2hhbmRsZV9jYXN0KGJ1Zi0+aCwgeGVuX2lvbW11X29wX3Qp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcCwgc3RhdHVzKSApCisgICAgICAg IHJldHVybiAtRUZBVUxUOworCisgICAgcmV0dXJuIDA7Cit9CisKK2xvbmcgZG9faW9tbXVfb3Ao dW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oeGVuX2lvbW11X29wX2J1Zl90KSBidWZzKQoreworICAgIHVuc2lnbmVkIGludCBpOwor ICAgIGxvbmcgcmMgPSAwOworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9idWZzOyBpKysgKQor ICAgIHsKKyAgICAgICAgeGVuX2lvbW11X29wX2J1Zl90IGJ1ZjsKKworICAgICAgICBpZiAoICgo aSAmIDB4ZmYpID09IDB4ZmYpICYmIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAgICAg ICB7CisgICAgICAgICAgICByYyA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor CisgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0X29mZnNldCgmYnVmLCBidWZzLCBpLCAxKSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBkb19vbmVfaW9tbXVfb3AoJmJ1Zik7CisgICAg ICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCByYyA+ IDAgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJjIDwgbnJfYnVmcyk7CisgICAgICAgIG5yX2J1 ZnMgLT0gcmM7CisgICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KGJ1ZnMsIHJjKTsKKwor ICAgICAgICByYyA9IGh5cGVyY2FsbF9jcmVhdGVfY29udGludWF0aW9uKF9fSFlQRVJWSVNPUl9p b21tdV9vcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWgi LCBucl9idWZzLCBidWZzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBjb21w YXRfb25lX2lvbW11X29wKGNvbXBhdF9pb21tdV9vcF9idWZfdCAqYnVmKQoreworICAgIGNvbXBh dF9pb21tdV9vcF90IGNtcDsKKyAgICB4ZW5faW9tbXVfb3BfdCBuYXQ7CisgICAgaW50IHJjOwor CisgICAgaWYgKCBidWYtPnNpemUgPCBzaXplb2YoY21wKSApCisgICAgICAgIHJldHVybiAtRUZB VUxUOworCisgICAgaWYgKCBjb3B5X2Zyb21fY29tcGF0KCh2b2lkICopJmNtcCwgYnVmLT5oLCBz aXplb2YoY21wKSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIGlmICggY21wLnBh ZCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmMgPSB4c21faW9tbXVfb3AoWFNN X1BSSVYsIGN1cnJlbnQtPmRvbWFpbiwgY21wLm9wKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAg cmV0dXJuIHJjOworCisgICAgWExBVF9pb21tdV9vcCgmbmF0LCAmY21wKTsKKworICAgIGlvbW11 X29wKCZuYXQpOworCisgICAgWExBVF9pb21tdV9vcCgmY21wLCAmbmF0KTsKKworICAgIGlmICgg X19jb3B5X2ZpZWxkX3RvX2NvbXBhdChjb21wYXRfaGFuZGxlX2Nhc3QoYnVmLT5oLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0X2lvbW11 X29wX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY21wLCBzdGF0dXMpICkK KyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGNvbXBh dF9pb21tdV9vcCh1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAgICAgICAgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTShjb21wYXRfaW9tbXVfb3BfYnVmX3QpIGJ1ZnMpCit7CisgICAg dW5zaWduZWQgaW50IGk7CisgICAgbG9uZyByYyA9IDA7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8 IG5yX2J1ZnM7IGkrKyApCisgICAgeworICAgICAgICBjb21wYXRfaW9tbXVfb3BfYnVmX3QgYnVm OworCisgICAgICAgIGlmICggKChpICYgMHhmZikgPT0gMHhmZikgJiYgaHlwZXJjYWxsX3ByZWVt cHRfY2hlY2soKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gaTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0 KCZidWYsIGJ1ZnMsIGksIDEpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSAtRUZBVUxU OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByYyA9IGNvbXBhdF9v bmVfaW9tbXVfb3AoJmJ1Zik7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgYnJlYWs7 CisgICAgfQorCisgICAgaWYgKCByYyA+IDAgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJjIDwg bnJfYnVmcyk7CisgICAgICAgIG5yX2J1ZnMgLT0gcmM7CisgICAgICAgIGd1ZXN0X2hhbmRsZV9h ZGRfb2Zmc2V0KGJ1ZnMsIHJjKTsKKworICAgICAgICByYyA9IGh5cGVyY2FsbF9jcmVhdGVfY29u dGludWF0aW9uKF9fSFlQRVJWSVNPUl9pb21tdV9vcCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiaWgiLCBucl9idWZzLCBidWZzKTsKKyAgICB9CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvTWFrZWZpbGUgYi94ZW4vaW5jbHVkZS9NYWtlZmlsZQppbmRleCBkZjA0MTgyOTY1 Li5hZjU0ZDg4MzNmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9NYWtlZmlsZQorKysgYi94ZW4v aW5jbHVkZS9NYWtlZmlsZQpAQCAtMTEsNiArMTEsNyBAQCBoZWFkZXJzLXkgOj0gXAogICAgIGNv bXBhdC9mZWF0dXJlcy5oIFwKICAgICBjb21wYXQvZ3JhbnRfdGFibGUuaCBcCiAgICAgY29tcGF0 L2tleGVjLmggXAorICAgIGNvbXBhdC9pb21tdV9vcC5oIFwKICAgICBjb21wYXQvbWVtb3J5Lmgg XAogICAgIGNvbXBhdC9ubWkuaCBcCiAgICAgY29tcGF0L3BoeXNkZXYuaCBcCkBAIC0yOSw2ICsz MCw3IEBAIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0gY29tcGF0L2FyY2gteDg2L3hlbi0k KGNvbXBhdC1hcmNoLXkpLmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0gY29tcGF0L2h2 bS9kbV9vcC5oCiBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9odm0vaHZtX29w LmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0gY29tcGF0L2h2bS9odm1fdmNwdS5oCito ZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9pb21tdV9vcC5oCiBoZWFkZXJzLXkg ICAgICAgICAgICAgICAgICs9IGNvbXBhdC9hcmNoLSQoY29tcGF0LWFyY2gteSkuaCBjb21wYXQv cG11LmggY29tcGF0L3hsYXQuaAogaGVhZGVycy0kKENPTkZJR19GTEFTSykgICArPSBjb21wYXQv eHNtL2ZsYXNrX29wLmgKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29w LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5jM2I2OGY2NjVhCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL2lvbW11X29wLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg aW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu IElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBD b3B5cmlnaHQgKEMpIDIwMTggQ2l0cml4IFN5c3RlbXMgSW5jCisgKi8KKworI2lmbmRlZiBYRU5f UFVCTElDX0lPTU1VX09QX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT01NVV9PUF9ICisKKyNpbmNs dWRlICJ4ZW4uaCIKKworc3RydWN0IHhlbl9pb21tdV9vcCB7CisgICAgdWludDE2X3Qgb3A7ICAg IC8qIG9wIHR5cGUgKi8KKyAgICB1aW50MTZfdCBwYWQ7CisgICAgaW50MzJfdCBzdGF0dXM7IC8q IG9wIGNvbXBsZXRpb24gc3RhdHVzOiAqLworICAgICAgICAgICAgICAgICAgICAvKiAwIGZvciBz dWNjZXNzIG90aGVyd2lzZSwgbmVnYXRpdmUgZXJybm8gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4 ZW5faW9tbXVfb3AgeGVuX2lvbW11X29wX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f aW9tbXVfb3BfdCk7CisKK3N0cnVjdCB4ZW5faW9tbXVfb3BfYnVmIHsKKyAgICBYRU5fR1VFU1Rf SEFORExFKHZvaWQpIGg7CisgICAgeGVuX3Vsb25nX3Qgc2l6ZTsKK307Cit0eXBlZGVmIHN0cnVj dCB4ZW5faW9tbXVfb3BfYnVmIHhlbl9pb21tdV9vcF9idWZfdDsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9pb21tdV9vcF9idWZfdCk7CisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwKKyAq IGAgSFlQRVJWSVNPUl9pb21tdV9vcCh1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAqIGAgICAgICAg ICAgICAgICAgICAgICB4ZW5faW9tbXVfb3BfYnVmX3QgYnVmc1tdKQorICogYAorICoKKyAqIEBu cl9idWZzIGlzIHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbiB0aGUgQGJ1ZnMgYXJyYXkuCisgKiBA YnVmcyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgYnVmZmVycyB3aGVyZSBlYWNoIGNvbnRhaW5zIGEg c3RydWN0CisgKiB4ZW5faW9tbXVfb3AuCisgKi8KKworI2VuZGlmIC8qIFhFTl9QVUJMSUNfSU9N TVVfT1BfSCAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAppbmRleCBmYjFk ZjhmMjkzLi42OGIwOTY4ZTdkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC0xMjEsNiArMTIxLDcgQEAgREVGSU5F X1hFTl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3QpOwogI2RlZmluZSBfX0hZUEVSVklTT1JfeGNf cmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwogI2RlZmlu ZSBfX0hZUEVSVklTT1JfeGVucG11X29wICAgICAgICAgICAgNDAKICNkZWZpbmUgX19IWVBFUlZJ U09SX2RtX29wICAgICAgICAgICAgICAgIDQxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9pb21tdV9v cCAgICAgICAgICAgICA0MgogCiAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRl ZmluaXRpb25zLiAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAg NDgKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCBiL3hlbi9pbmNsdWRl L3hlbi9oeXBlcmNhbGwuaAppbmRleCBjYzk5YWVhNTdkLi4yZWJjOTk5ZjRiIDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2h5cGVy Y2FsbC5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8cHVibGljL3ZlcnNpb24uaD4KICNp bmNsdWRlIDxwdWJsaWMvcG11Lmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9kbV9vcC5oPgorI2lu Y2x1ZGUgPHB1YmxpYy9pb21tdV9vcC5oPgogI2luY2x1ZGUgPGFzbS9oeXBlcmNhbGwuaD4KICNp bmNsdWRlIDx4c20veHNtLmg+CiAKQEAgLTE0OCw2ICsxNDksMTAgQEAgZG9fZG1fb3AoCiAgICAg dW5zaWduZWQgaW50IG5yX2J1ZnMsCiAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1f b3BfYnVmX3QpIGJ1ZnMpOwogCitleHRlcm4gbG9uZworZG9faW9tbXVfb3AodW5zaWduZWQgaW50 IG5yX2J1ZnMsCisgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9pb21tdV9v cF9idWZfdCkgYnVmcyk7CisKICNpZmRlZiBDT05GSUdfQ09NUEFUCiAKIGV4dGVybiBpbnQKQEAg LTIwNSw2ICsyMTAsMTMgQEAgY29tcGF0X2RtX29wKAogICAgIHVuc2lnbmVkIGludCBucl9idWZz LAogICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYnVmcyk7CiAKKyNpbmNsdWRlIDxj b21wYXQvaW9tbXVfb3AuaD4KKworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY29tcGF0X2lvbW11 X29wX2J1Zl90KTsKK2V4dGVybiBpbnQKK2NvbXBhdF9pb21tdV9vcCh1bnNpZ25lZCBpbnQgbnJf YnVmcywKKyAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNvbXBhdF9pb21t dV9vcF9idWZfdCkgYnVmcyk7CisKICNlbmRpZgogCiB2b2lkIGFyY2hfZ2V0X3hlbl9jYXBzKHhl bl9jYXBhYmlsaXRpZXNfaW5mb190ICppbmZvKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hs YXQubHN0IGIveGVuL2luY2x1ZGUveGxhdC5sc3QKaW5kZXggNTI3MzMyMDU0YS4uM2IxNWMxOGM0 ZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGxhdC5sc3QKKysrIGIveGVuL2luY2x1ZGUveGxh dC5sc3QKQEAgLTc3LDYgKzc3LDggQEAKID8JdmNwdV9odm1fY29udGV4dAkJaHZtL2h2bV92Y3B1 LmgKID8JdmNwdV9odm1feDg2XzMyCQkJaHZtL2h2bV92Y3B1LmgKID8JdmNwdV9odm1feDg2XzY0 CQkJaHZtL2h2bV92Y3B1LmgKKyEJaW9tbXVfb3AJCQlpb21tdV9vcC5oCishCWlvbW11X29wX2J1 ZgkJCWlvbW11X29wLmgKID8Ja2V4ZWNfZXhlYwkJCWtleGVjLmgKICEJa2V4ZWNfaW1hZ2UJCQlr ZXhlYy5oCiAhCWtleGVjX3JhbmdlCQkJa2V4ZWMuaApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCBiMGFjMWY2NmIzLi4z NGI3ODY5OTNkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAorKysgYi94ZW4v aW5jbHVkZS94c20vZHVtbXkuaApAQCAtNzE1LDYgKzcxNSwxMiBAQCBzdGF0aWMgWFNNX0lOTElO RSBpbnQgeHNtX2RtX29wKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJl dHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOwogfQog CitzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2lvbW11X29wKFhTTV9ERUZBVUxUX0FSRyBzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgb3ApCit7CisgICAgWFNNX0FTU0VSVF9BQ1RJT04o WFNNX1BSSVYpOworICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50 LT5kb21haW4sIGQpOworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiAjaW5jbHVkZSA8 cHVibGljL3ZlcnNpb24uaD4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hzbS94c20uaCBiL3hl bi9pbmNsdWRlL3hzbS94c20uaAppbmRleCA3NjM2YmNiYjQyLi43ZDc1ZDAwNzZlIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS94c20veHNtLmgKKysrIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCkBA IC0xNzgsNiArMTc4LDcgQEAgc3RydWN0IHhzbV9vcGVyYXRpb25zIHsKICAgICBpbnQgKCppb3Bv cnRfbWFwcGluZykgKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVpbnQzMl90IGUsIHVp bnQ4X3QgYWxsb3cpOwogICAgIGludCAoKnBtdV9vcCkgKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBvcCk7CiAgICAgaW50ICgqZG1fb3ApIChzdHJ1Y3QgZG9tYWluICpkKTsKKyAgICBp bnQgKCppb21tdV9vcCkgKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBvcCk7CiAjZW5k aWYKICAgICBpbnQgKCp4ZW5fdmVyc2lvbikgKHVpbnQzMl90IGNtZCk7CiAgICAgaW50ICgqZG9t YWluX3Jlc291cmNlX21hcCkgKHN0cnVjdCBkb21haW4gKmQpOwpAQCAtNjg2LDYgKzY4NywxMSBA QCBzdGF0aWMgaW5saW5lIGludCB4c21fZG1fb3AoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBk b21haW4gKmQpCiAgICAgcmV0dXJuIHhzbV9vcHMtPmRtX29wKGQpOwogfQogCitzdGF0aWMgaW5s aW5lIGludCB4c21faW9tbXVfb3AoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBvcCkKK3sKKyAgICByZXR1cm4geHNtX29wcy0+aW9tbXVfb3AoZCwgb3Ap OworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiBzdGF0aWMgaW5saW5lIGludCB4c21f eGVuX3ZlcnNpb24gKHhzbV9kZWZhdWx0X3QgZGVmLCB1aW50MzJfdCBvcCkKZGlmZiAtLWdpdCBh L3hlbi94c20vZHVtbXkuYyBiL3hlbi94c20vZHVtbXkuYwppbmRleCAzMjkwZDA0NTI3Li44NTMy Yjc0YjlhIDEwMDY0NAotLS0gYS94ZW4veHNtL2R1bW15LmMKKysrIGIveGVuL3hzbS9kdW1teS5j CkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBfX2luaXQgeHNtX2ZpeHVwX29wcyAoc3RydWN0IHhz bV9vcGVyYXRpb25zICpvcHMpCiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBpb3BvcnRf bWFwcGluZyk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBwbXVfb3ApOwogICAgIHNl dF90b19kdW1teV9pZl9udWxsKG9wcywgZG1fb3ApOworICAgIHNldF90b19kdW1teV9pZl9udWxs KG9wcywgaW9tbXVfb3ApOwogI2VuZGlmCiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCB4 ZW5fdmVyc2lvbik7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBkb21haW5fcmVzb3Vy Y2VfbWFwKTsKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20vZmxh c2svaG9va3MuYwppbmRleCBhNGZiZTYyYWMzLi4xYzliZTIyMTEyIDEwMDY0NAotLS0gYS94ZW4v eHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCkBAIC0xNjY5LDYg KzE2NjksMTEgQEAgc3RhdGljIGludCBmbGFza19kbV9vcChzdHJ1Y3QgZG9tYWluICpkKQogICAg IHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0hWTSwgSFZNX19ETSk7CiB9CiAK K3N0YXRpYyBpbnQgZmxhc2tfaW9tbXVfb3Aoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICByZXR1 cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19SRVNPVVJDRSwgUkVTT1VSQ0VfX0NPTlRS T0xfSU9NTVUpOworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiBzdGF0aWMgaW50IGZs YXNrX3hlbl92ZXJzaW9uICh1aW50MzJfdCBvcCkKQEAgLTE4NDcsNiArMTg1Miw3IEBAIHN0YXRp YyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxhc2tfb3BzID0gewogICAgIC5pb3BvcnRfbWFwcGlu ZyA9IGZsYXNrX2lvcG9ydF9tYXBwaW5nLAogICAgIC5wbXVfb3AgPSBmbGFza19wbXVfb3AsCiAg ICAgLmRtX29wID0gZmxhc2tfZG1fb3AsCisgICAgLmlvbW11X29wID0gZmxhc2tfaW9tbXVfb3As CiAjZW5kaWYKICAgICAueGVuX3ZlcnNpb24gPSBmbGFza194ZW5fdmVyc2lvbiwKICAgICAuZG9t YWluX3Jlc291cmNlX21hcCA9IGZsYXNrX2RvbWFpbl9yZXNvdXJjZV9tYXAsCmRpZmYgLS1naXQg YS94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycyBiL3hlbi94c20vZmxhc2svcG9s aWN5L2FjY2Vzc192ZWN0b3JzCmluZGV4IGI3Njg4NzBmMzcuLjAwZGI2YTFjZjcgMTAwNjQ0Ci0t LSBhL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzCisrKyBiL3hlbi94c20vZmxh c2svcG9saWN5L2FjY2Vzc192ZWN0b3JzCkBAIC00NzEsNiArNDcxLDggQEAgY2xhc3MgcmVzb3Vy Y2UKICMgY2hlY2tlZCBmb3IgUEhZU0RFVk9QX3NldHVwX2dzaSAodGFyZ2V0IElSUSkKICMgY2hl Y2tlZCBmb3IgUEhZU0RFVk9QX3BjaV9tbWNmZ19yZXNlcnZlZCAodGFyZ2V0IHhlbl90KQogICAg IHNldHVwCisjIGNoZWNrZWQgZm9yIElPTU1VX09QCisgICAgY29udHJvbF9pb21tdQogfQogCiAj IENsYXNzIHNlY3VyaXR5IGRlc2NyaWJlcyB0aGUgRkxBU0sgc2VjdXJpdHkgc2VydmVyIGl0c2Vs ZjsgdGhlc2Ugb3BlcmF0aW9ucwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==