From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH-for-4.9 v1 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Fri, 18 Nov 2016 17:13:57 +0000 Message-ID: <1479489244-2201-2-git-send-email-paul.durrant@citrix.com> References: <1479489244-2201-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c7n4z-00059O-OE for xen-devel@lists.xenproject.org; Fri, 18 Nov 2016 17:36:01 +0000 In-Reply-To: <1479489244-2201-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Daniel De Graaf , Paul Durrant , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uYXMgYSBzZXQgb2YgaHlwZXJjYWxscyB0byBiZSB1c2VkIGJ5IGEgZGV2aWNlIG1vZGVsLgoK QXMgc3RhdGVkIGluIHRoZSBuZXcgZG9jcy9kZXNpZ25zL2RtX29wLm1hcmtkb3duOgoKIlRoZSBh aW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50IGEgY29tcHJvbWlzZWQgZGV2aWNlIG1vZGVsIGZyb20K Y29tcHJvbWlzaW5nIGRvbWFpbnMgb3RoZXIgdGhlbiB0aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQg d2l0aC4gKEFuZCBpcwp0aGVyZWZvcmUgbGlrZWx5IGFscmVhZHkgY29tcHJvbWlzZWQpLiIKClNl ZSB0aGF0IGZpbGUgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCgpUaGlzIHBhdGNoIHNpbXBseSBh ZGRzIHRoZSBib2lsZXJwbGF0ZSBmb3IgdGhlIGh5cGVyY2FsbCBhbmQgYnVtcHMKX19YRU5fTEFU RVNUX0lOVEVSRkFDRV9WRVJTSU9OX18gdG8gMHgwMDAwMDQwOTAwLiBTdWJzZXF1ZW50IHBhdGNo ZXMgd2lsbAphZGQgdGhlIGluZGl2aWR1YWwgKHNldHMgb2YpIG9wZXJhdGlvbnMuCgpTaWduZWQt b2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpTdWdnZXN0ZWQt Ynk6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXguY29tPgpTdWdnZXN0ZWQtYnk6IEpl bm5pZmVyIEhlcmJlcnQgPGplbm5pZmVyLmhlcmJlcnRAY2l0cml4LmNvbT4KLS0tCkNjOiBEYW5p ZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KQ2M6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRy ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIGRvY3MvZGVzaWducy9k bW9wLm1hcmtkb3duICAgICAgICB8IDE5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmIHwgICAyICstCiB0b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgfCAgIDEgKwogdG9vbHMvbGlieGMveGNfcHJp dmF0ZS5jICAgICAgICAgIHwgIDcwICsrKysrKysrKysrKysrCiB0b29scy9saWJ4Yy94Y19wcml2 YXRlLmggICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZSAgICAgICAg IHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgICB8IDEzNiArKysrKysr KysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICB8 ICAgMSArCiB4ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMgICAgICAgICAgfCAgIDIgKwogeGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oICAgIHwgIDcwICsrKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS9wdWJsaWMveGVuLWNvbXBhdC5oICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy94 ZW4uaCAgICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmggICAgICAg fCAgIDcgKysKIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAgICB8ICAgNiArKwogeGVu L2luY2x1ZGUveHNtL3hzbS5oICAgICAgICAgICAgIHwgICA2ICsrCiB4ZW4veHNtL2ZsYXNrL2hv b2tzLmMgICAgICAgICAgICAgfCAgIDcgKysKIDE2IGZpbGVzIGNoYW5nZWQsIDUwNSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvY3MvZGVzaWducy9k bW9wLm1hcmtkb3duCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2h2bS9kbS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCgpkaWZmIC0t Z2l0IGEvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24gYi9kb2NzL2Rlc2lnbnMvZG1vcC5tYXJr ZG93bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njg3OGEyCi0tLSAvZGV2 L251bGwKKysrIGIvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KQEAgLTAsMCArMSwxOTMgQEAK K0RNT1AgIChtdWx0aS1idWZmZXIgdmFyaWFudCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworQSBwcmV2aW91cyBwcm9wb3NhbCBm b3IgYSAnRE1PUCcgd2FzIHB1dCBmb3J3YXJkIGJ5IElhbiBKYWNrc29uIG9uIHRoZSAxc3QKK29m IEF1Z3VzdC4gVGhpcyBwcm9wb3NhbCBzZWVtIHZlcnkgcHJvbWlzaW5nLCBob3dldmVyIGEgcHJv YmxlbSB3YXMKK2lkZW50aWZpZWQgd2l0aCBpdCwgdGhhdCB0aGlzIHByb3Bvc2FsIGFkZHJlc3Nl cy4KKworVGhlIGFpbSBvZiBETU9QLCBhcyBiZWZvcmUsIGlzIHRvIHByZXZlbnQgYSBjb21wcm9t aXNlZCBkZXZpY2UgbW9kZWwgZnJvbQorY29tcHJvbWlzaW5nIGRvbWFpbnMgb3RoZXIgdGhlbiB0 aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gKEFuZCBpcwordGhlcmVmb3JlIGxpa2VseSBh bHJlYWR5IGNvbXByb21pc2VkKS4KKworVGhlIHByZXZpb3VzIHByb3Bvc2FsIGFkZHMgYSBETU9Q IGh5cGVyY2FsbCwgZm9yIHVzZSBieSB0aGUgZGV2aWNlIG1vZGVscywKK3doaWNoIHBsYWNlcyB0 aGUgZG9tYWluIElEIGluIGEgZml4ZWQgcGxhY2UsIHdpdGhpbiB0aGUgY2FsbGluZyBhcmdzLAor c3VjaCB0aGF0IHRoZSBwcml2IGRyaXZlciBjYW4gYWx3YXlzIGZpbmQgaXQsIGFuZCBub3QgbmVl ZCB0byBrbm93IGFueQorZnVydGhlciBkZXRhaWxzIGFib3V0IHRoZSBwYXJ0aWN1bGFyIERNT1Ag aW4gb3JkZXIgdG8gdmFsaWRhdGUgaXQgYWdhaW5zdAorcHJldmlvdXNseSBzZXQgKHZpZSBpb2N0 bCkgZG9tYWluLgorCitUaGUgcHJvYmxlbSBvY2N1cnMgd2hlbiB5b3UgaGF2ZSBhIERNT1Agd2l0 aCByZWZlcmVuY2VzIHRvIG90aGVyIHVzZXIgbWVtb3J5CitvYmplY3RzLCBzdWNoIGFzIHdpdGgg VHJhY2sgZGlydHkgVlJBTSAoQXMgdXNlZCB3aXRoIHRoZSBWR0EgYnVmZmVyKS4KK0lzIHRoaXMg Y2FzZSwgdGhlIGFkZHJlc3Mgb2YgdGhpcyBvdGhlciB1c2VyIG9iamVjdCBuZWVkcyB0byBiZSB2 ZXR0ZWQsCit0byBlbnN1cmUgaXQgaXMgbm90IHdpdGhpbiBhIHJlc3RyaWN0ZWQgYWRkcmVzcyBy YW5nZXMsIHN1Y2ggYXMga2VybmVsCittZW1vcnkuIFRoZSByZWFsIHByb2JsZW0gY29tZXMgZG93 biB0byBob3cgeW91IHdvdWxkIHZldCB0aGlzIGFkZHJlc3MgLQordGhlIGlkZWEgcGxhY2UgdG8g ZG8gdGhpcyBpcyB3aXRoaW4gdGhlIHByaXZjbWQgZHJpdmVyLCBzaW5jZSBpdCB3b3VsZCBoYXZl Citrbm93bGVkZ2Ugb2YgdGhlIGFkZHJlc3Mgc3BhY2UgaW52b2x2ZWQuIEhvd2V2ZXIsIHdpdGgg YSBwcmluY2lwYWwgZ29hbAorb2YgRE1PUCB0byBhbGxvdyBwcml2Y21kIHRvIGJlIGZyZWUgZnJv bSBhbnkga25vd2xlZGdlIG9mIERNT1AncyBzdWIgb3BzLAoraXQgd291bGQgaGF2ZSBubyB3YXkg dG8gaWRlbnRpZnkgYW55IHVzZXIgYnVmZmVyICBhZGRyZXNzZXMgdGhhdCBuZWVkCitjaGVja2lu Zy4gIFRoZSBhbHRlcm5hdGl2ZSBvZiBhbGxvd2luZyB0aGUgaHlwZXJ2aXNvciB0byB2ZXQgdGhl IGFkZHJlc3MKK2lzIGFsc28gcHJvYmxlbWF0aWMsIHNpbmNlIGl0IGhhcyBubyBrbm93bGVkZ2Ug b2YgdGhlIGd1ZXN0IG1lbW9yeSBsYXlvdXQuCisKKworVGhlIERlc2lnbgorLS0tLS0tLS0tLQor CitBcyB3aXRoIHRoZSBwcmV2aW91cyBkZXNpZ24sIHdlIHByb3ZpZGUgYSBuZXcgcmVzdHJpY3Rp b24gaW9jdGwsIHdoaWNoCit0YWtlcyBhIGRvbWlkIHBhcmFtZXRlci4gIEFmdGVyIHRoYXQgcmVz dHJpY3Rpb24gaW9jdGwgaXMgY2FsbGVkLCB0aGUKK3ByaXZjbWQgZHJpdmVyIHdpbGwgcGVybWl0 IG9ubHkgRE1PUCBoeXBlcmNhbGxzLCBhbmQgb25seSB3aXRoIHRoZQorc3BlY2lmaWVkIHRhcmdl dCBkb21pZC4KKworSW4gdGhlIHByZXZpb3VzIGRlc2lnbiwgYSBETU9QIGNvbnNpc3RlZCBvZiBv bmUgYnVmZmVyLCBjb250YWluaW5nIGFsbCBvZgordGhlIERNT1AgcGFyYW1ldGVycywgd2hpY2gg bWF5IGluY2x1ZGUgZnVydGhlciBleHBsaWNpdCByZWZlcmVuY2VzIHRvCittb3JlIGJ1ZmZlcnMu ICBJbiB0aGlzIGRlc2lnbiwgYW4gYXJyYXkgb2YgYnVmZmVycyB3aXRoIGxlbmd0aCBpcyBwcmVz ZW50ZWQsCit3aXRoIHRoZSBmaXJzdCBvbmUgY29udGFpbmluZyB0aGUgRE1PUCBwYXJhbWV0ZXJz LCB3aGljaCBjb3VsZCBpbXBsaWNpdGx5CityZWZlcmVuY2UgdG8gZnVydGhlciBidWZmZXJzIGZy b20gd2l0aGluIGluIHRoZSBhcnJheS4gSGVyZSwgdGhlIG9ubHkKK3VzZXIgYnVmZmVycyBwYXNz ZWQsIGFyZSB0aGF0IGZvdW5kIHdpdGggdGhlIGFycmF5LCBhbmQgc28gYWxsIGNhbiBiZQorYXVk aXRlZCBmcm9tIHByaXZjbWQuICBXaXRoIHRoZSBwYXNzaW5nIG9mIHRoZSBsZW5ndGggb2YgdGhl IGJ1ZmZlcnMgYXJyYXksCitwcml2Y21kIGRvZXMgbm90IG5lZWQgdG8ga25vdyB3aGljaCBETU9Q IGl0IGlzIHRvIGF1ZGl0IHRoZW0uCisKK0lmIHRoZSBoeXBlcnZpc29yIGVuZHMgdXAgd2l0aCB0 aGUgd3JvbmcgbnVtYmVyIG9mIGJ1ZmZlcnMsIGl0IGNhbiByZWplY3QKK3RoZSBETU9QIGF0IHRo YXQgcG9pbnQuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlzIGlkZWE6CisK K3N0cnVjdCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0IHhlbl9k bV9vcF9idWYgeworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgaDsKKyAgICB1aW50NjRfdCBz aXplOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9kbV9vcF9idWYgeGVuX2RtX29wX2J1Zl90Owor CitlbnVtIG5lZ19lcnJub3ZhbAorSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAorICAg ICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgKmJ1ZnMsCisgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBucl9idWZzKQorCitAZG9taWQgaXMgdGhlIGRvbWFpbiB0aGUgaHlwZXJjYWxs IG9wZXJhdGVzIG9uLgorQGJ1ZnMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGJ1ZmZlcnMgd2hlcmUg QGJ1ZnNbMF0gY29udGFpbnMgYSBzdHJ1Y3QKK2RtX29wLCBkZXNjcmliaW5nIHRoZSBzcGVjaWZp YyBkZXZpY2UgbW9kZWwgb3BlcmF0aW9uIGFuZCBpdHMgcGFyYW1ldGVycy4KK0BidWZzWzEuLl0g bWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBvZgor cGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBmcm9tIHRoZSBkb21haW4uCitAbnJfYnVm cyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhlIEBidWZzIGFycmF5LgorCisKK0l0IGlz IGZvcmJpZGRlbiBmb3IgdGhlIGFib3ZlIHN0cnVjdCAoZG1fb3ApIHRvIGNvbnRhaW4gYW55Citn dWVzdCBoYW5kbGVzIC0gaWYgdGhleSBhcmUgbmVlZGVkLCB0aGV5IHNob3VsZCBpbnN0ZWFkIGJl IGluCitIWVBFUlZJU09SX2RtX29wLT5idWZmZXJzLgorCitWYWxpZGF0aW9uIGJ5IHByaXZjbWQg ZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIHByaXZjbWQg ZHJpdmVyIGhhcyBiZWVuIHJlc3RyaWN0ZWQgdG8gc3BlY2lmaWMgZG9tYWluICh1c2luZyBhCisg bmV3IGlvY3RsKSwgd2hlbiBpdCByZWNlaXZlZCBhbiBvcCwgaXQgd2lsbDoKKworMS4gQ2hlY2sg aHlwZXJjYWxsIGlzIERNT1AuCisKKzIuIENoZWNrIGRvbWlkID09IHJlc3RyaWN0ZWQgZG9taWQu CisKKzMuIEZvciBlYWNoIEBucl9idWZmZXJzIGluIEBidWZmZXJzOiBDaGVjayBAaCBhbmQgQGxl biBnaXZlIGEgYnVmZmVyCisgICB3aG9sZXkgaW4gdGhlIHVzZXIgc3BhY2UgcGFydCBvZiB0aGUg dmlydHVhbCBhZGRyZXNzIHNwYWNlLiAoZS5nLiwKKyAgIG9uIExpbnV4IHVzZSBhY2Nlc3Nfb2so KSkuCisKKworWGVuIEltcGxlbWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KKworU2luY2Ug YSBETU9QIHN1YiBvZiBtYXkgbmVlZCB0byBjb3B5IG9yIHJldHVybiBhIGJ1ZmZlciBmcm9tIHRo ZSBndWVzdCwKK2FzIHdlbGwgYXMgdGhlIERNT1AgaXRzZWxmIHRvIGdpdCB0aGUgaW5pdGlhbCBi dWZmZXIsIGZ1bmN0aW9ucyBmb3IgZG9pbmcKK3RoaXMgd291bGQgYmUgd3JpdHRlbiBhcyBiZWxv dy4gIE5vdGUgdGhhdCBjYXJlIGlzIHRha2VuIHRvIHByZXZlbnQKK2RhbWFnZSBmcm9tIGJ1ZmZl ciB1bmRlciBvciBvdmVyIHJ1biBzaXR1YXRpb25zLiAgSWYgdGhlIERNT1AgaXMgY2FsbGVkCit3 aXRoIGluc3VmZmljaWVudCBidWZmZXJzLCB6ZXJvcyB3aWxsIGJlIHJlYWQsIHdoaWxlIGV4dHJh IGlzIGlnbm9yZWQuCisKK3N0YXRpYyBpbnQgZG1fb3BfZ2V0X2J1ZihYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbnJfYnVmcywgdW5zaWduZWQgaW50IGlkeCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiAqYnVmKQoreworICAgIGlmICggaWR4ID49IG5y X2J1ZnMgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIHJldHVybiBjb3B5X2Zyb21f Z3Vlc3Rfb2Zmc2V0KGJ1ZiwgYnVmcywgaWR4LCAxKTsKK30KKworc3RhdGljIGludCBkbV9vcF9j b3B5X2J1Zl9mcm9tX2d1ZXN0KFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90 KSBidWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBucl9idWZzLCB2b2lkICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGlkeCwgc2l6ZV90IGRzdF9zaXplKQoreworICAgIHN0cnVjdCB4ZW5f ZG1fb3BfYnVmIGJ1ZjsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmM7CisKKyAgICBtZW1z ZXQoZHN0LCAwLCBkc3Rfc2l6ZSk7CisKKyAgICByYyA9IGRtX29wX2dldF9idWYoYnVmcywgbnJf YnVmcywgaWR4LCAmYnVmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7 CisKKyAgICBzaXplID0gbWluKGRzdF9zaXplLCBidWYuc2l6ZSk7CisKKyAgICByYyA9IGNvcHlf ZnJvbV9ndWVzdChkc3QsIGJ1Zi5oLCBzaXplKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGRtX29wX2NvcHlfYnVmX3Rv X2d1ZXN0KC4uLikKK3sKKyAgICAvKiBTaW1pbGFyIHRvIHRoZSBhYm92ZSwgZXhjZXB0IGNvcHlp bmcgdGhlIHRoZSBvdGhlcgorICAgICAgIGRpcmVjdGlvbi4gKi8KK30KKworVGhpcyBsZWF2ZXMg ZG9fZG1fb3AgZWFzeSB0byBpbXBsZW1lbnQgYXMgYmVsb3c6CisKK2xvbmcgZG9fZG1fb3AoZG9t aWRfdCBkb21pZCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgICAg ICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzKTsKKwkg ICAgICB7CisgICAgc3RydWN0IGRvbWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOwor ICAgIGJvb2wgcmVzdGFydDsKKyAgICBsb25nIHJjOworCisgICAgcmMgPSByY3VfbG9ja19yZW1v dGVfZG9tYWluX2J5X2lkKGRvbWlkLCAmZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVy biByYzsKKworICAgIGlmICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCisgICAgICAg IGdvdG8gb3V0OworCisgICAgcmMgPSB4c21fZG1fb3AoWFNNX0RNX1BSSVYsIGQpOworICAgIGlm ICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gY29weV9kbV9vcF9idWZfZnJv bV9ndWVzdChidWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkpOworICAgIGlmICggcmMg KQorICAgICAgICBnb3RvIG91dDsKKworICAgIHN3aXRjaCAoIG9wLm9wICkgeworICAgIGRlZmF1 bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIHJlc3RhcnQgPSAocmMgPT0gLUVSRVNUQVJUKTsKKworICAgIGlmICggIXJlc3RhcnQgJiYg cmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gY29weV9kbV9vcF9idWZfdG9fZ3Vl c3QoYnVmcywgbnJfYnVmcywgMCwgJm9wLCBzaXplb2Yob3ApKTsKKworb3V0OgorICAgIHJjdV91 bmxvY2tfZG9tYWluKGQpOworCisgICAgaWYgKCByZXN0YXJ0ICYmICFyYyApCisgICAgICAgIHJj ID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24oX19IWVBFUlZJU09SX2RtX29wLCAiaWlo IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgbnJf YnVmcywgYnVmcyk7CisKKyAgICByZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS90b29scy9mbGFz ay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4u aWYKaW5kZXggZWI2NDZmNS4uNzc5MjMyZSAxMDA2NDQKLS0tIGEvdG9vbHMvZmxhc2svcG9saWN5 L21vZHVsZXMveGVuLmlmCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZgpA QCAtMTUxLDcgKzE1MSw3IEBAIGRlZmluZShgZGV2aWNlX21vZGVsJywgYAogCiAJYWxsb3cgJDEg JDJfdGFyZ2V0OmRvbWFpbiB7IGdldGRvbWFpbmluZm8gc2h1dGRvd24gfTsKIAlhbGxvdyAkMSAk Ml90YXJnZXQ6bW11IHsgbWFwX3JlYWQgbWFwX3dyaXRlIGFkanVzdCBwaHlzbWFwIHRhcmdldF9o YWNrIH07Ci0JYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFtIHNldHBhcmFtIHRyYWNr ZGlydHl2cmFtIGh2bWN0bCBpcnFsZXZlbCBwY2lyb3V0ZSBwY2lsZXZlbCBjYWNoZWF0dHIgc2Vu ZF9pcnEgfTsKKwlhbGxvdyAkMSAkMl90YXJnZXQ6aHZtIHsgZ2V0cGFyYW0gc2V0cGFyYW0gdHJh Y2tkaXJ0eXZyYW0gaHZtY3RsIGlycWxldmVsIHBjaXJvdXRlIHBjaWxldmVsIGNhY2hlYXR0ciBz ZW5kX2lycSBkbSB9OwogJykKIAogIyBtYWtlX2RldmljZV9tb2RlbChwcml2LCBkbV9kb20sIGh2 bV9kb20pCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDJjODM1NDQuLmNjMzc3NTIgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAj aW5jbHVkZSA8eGVuL21lbW9yeS5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgorI2lu Y2x1ZGUgPHhlbi9odm0vZG1fb3AuaD4KICNpbmNsdWRlIDx4ZW4vaHZtL3BhcmFtcy5oPgogI2lu Y2x1ZGUgPHhlbi94c20vZmxhc2tfb3AuaD4KICNpbmNsdWRlIDx4ZW4vdG1lbS5oPgpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5j CmluZGV4IGQ1N2MzOWEuLjgzZjIyNGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZh dGUuYworKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKQEAgLTc3Niw2ICs3NzYsNzYgQEAg aW50IHhjX2ZmczY0KHVpbnQ2NF90IHgpCiAgICAgcmV0dXJuIGwgPyB4Y19mZnMzMihsKSA6IGgg PyB4Y19mZnMzMihoKSArIDMyIDogMDsKIH0KIAoraW50IGRvX2RtX29wKHhjX2ludGVyZmFjZSAq eGNoLCBkb21pZF90IGRvbWlkLCB1bnNpZ25lZCBpbnQgbnJfYnVmcywgLi4uKQoreworICAgIGlu dCByZXQgPSAtMTsKKyAgICBzdHJ1Y3QgIHsKKyAgICAgICAgdm9pZCAqdTsKKyAgICAgICAgdm9p ZCAqaDsKKyAgICB9ICpib3VuY2U7CisgICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVSKHhlbl9k bV9vcF9idWZfdCwgYnVmcyk7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHVuc2lnbmVkIGludCBp ZHg7CisKKyAgICBib3VuY2UgPSBjYWxsb2MobnJfYnVmcywgc2l6ZW9mKCpib3VuY2UpKTsKKyAg ICBpZiAoIGJvdW5jZSA9PSBOVUxMICkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIGJ1ZnMg PSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYnVmcywgc2l6ZW9mKCpidWZzKSAqIG5y X2J1ZnMpOworICAgIGlmICggYnVmcyA9PSBOVUxMICkKKyAgICAgICAgZ290byBmYWlsMjsKKwor ICAgIHZhX3N0YXJ0KGFyZ3MsIG5yX2J1ZnMpOworICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgbnJf YnVmczsgaWR4KyspCisgICAgeworICAgICAgICB2b2lkICp1ID0gdmFfYXJnKGFyZ3MsIHZvaWQg Kik7CisgICAgICAgIHNpemVfdCBzaXplID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7CisKKyAgICAg ICAgYm91bmNlW2lkeF0uaCA9IHhlbmNhbGxfYWxsb2NfYnVmZmVyKHhjaC0+eGNhbGwsIHNpemUp OworICAgICAgICBpZiAoIGJvdW5jZVtpZHhdLmggPT0gTlVMTCApCisgICAgICAgICAgICBnb3Rv IGZhaWwzOworCisgICAgICAgIG1lbWNweShib3VuY2VbaWR4XS5oLCB1LCBzaXplKTsKKyAgICAg ICAgYm91bmNlW2lkeF0udSA9IHU7CisKKyAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGVfcmF3 KGJ1ZnNbaWR4XS5oLCBib3VuY2VbaWR4XS5oKTsKKyAgICAgICAgYnVmc1tpZHhdLnNpemUgPSBz aXplOworICAgIH0KKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICByZXQgPSB4ZW5jYWxsMyh4Y2gt PnhjYWxsLCBfX0hZUEVSVklTT1JfZG1fb3AsCisgICAgICAgICAgICAgICAgICAgZG9taWQsIG5y X2J1ZnMsIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGJ1ZnMpKTsKKyAgICBpZiAoIHJldCA8IDAg KQorICAgICAgICBnb3RvIGZhaWw0OworCisgICAgd2hpbGUgKCBpZHgtLSAhPSAwICkKKyAgICB7 CisgICAgICAgIG1lbWNweShib3VuY2VbaWR4XS51LCBib3VuY2VbaWR4XS5oLCBidWZzW2lkeF0u c2l6ZSk7CisgICAgICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoeGNoLT54Y2FsbCwgYm91bmNlW2lk eF0uaCk7CisgICAgfQorCisgICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYnVmcyk7 CisKKyAgICBmcmVlKGJvdW5jZSk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDQ6CisgICAgaWR4 ID0gbnJfYnVmczsKKworZmFpbDM6CisgICAgd2hpbGUgKCBpZHgtLSAhPSAwICkKKyAgICAgICAg eGVuY2FsbF9mcmVlX2J1ZmZlcih4Y2gtPnhjYWxsLCBib3VuY2VbaWR4XS5oKTsKKworICAgIHhj X2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGJ1ZnMpOworCitmYWlsMjoKKyAgICBmcmVlKGJv dW5jZSk7CisKK2ZhaWwxOgorICAgIHJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJp YWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmgg Yi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKaW5kZXggOTc0NDVhZS4uZjE5MTMyMCAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZh dGUuaApAQCAtNDIyLDYgKzQyMiw4IEBAIGludCB4Y192bV9ldmVudF9jb250cm9sKHhjX2ludGVy ZmFjZSAqeGNoLCBkb21pZF90IGRvbWFpbl9pZCwgdW5zaWduZWQgaW50IG9wLAogdm9pZCAqeGNf dm1fZXZlbnRfZW5hYmxlKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWFpbl9pZCwgaW50 IHBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpwb3J0KTsKIAoraW50 IGRvX2RtX29wKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLCB1bnNpZ25lZCBpbnQg bnJfYnVmcywgLi4uKTsKKwogI2VuZGlmIC8qIF9fWENfUFJJVkFURV9IX18gKi8KIAogLyoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvaHZtL01h a2VmaWxlCmluZGV4IGY3NTBkMTMuLjU4NjlkMWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQpAQCAtMiw2ICsyLDcg QEAgc3ViZGlyLXkgKz0gc3ZtCiBzdWJkaXIteSArPSB2bXgKIAogb2JqLXkgKz0gYXNpZC5vCitv YmoteSArPSBkbS5vCiBvYmoteSArPSBlbXVsYXRlLm8KIG9iai15ICs9IGhwZXQubwogb2JqLXkg Kz0gaHZtLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4 Ni9odm0vZG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTdiOGY2Ci0t LSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCkBAIC0wLDAgKzEsMTM2IEBA CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICog QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB TlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi9oeXBlcmNh bGwuaD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVk Lmg+CisjaW5jbHVkZSA8YXNtL2h2bS9pb3JlcS5oPgorI2luY2x1ZGUgPHhzbS94c20uaD4KKwor c3RhdGljIGludCBkbV9vcF9nZXRfYnVmKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29w X2J1Zl90KSBidWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9i dWZzLCB1bnNpZ25lZCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4 ZW5fZG1fb3BfYnVmICpidWYpCit7CisgICAgaWYgKCBpZHggPj0gbnJfYnVmcyApCisgICAgICAg IHJldHVybiAtRUZBVUxUOworCisgICAgcmV0dXJuIGNvcHlfZnJvbV9ndWVzdF9vZmZzZXQoYnVm LCBidWZzLCBpZHgsIDEpOworfQorCitzdGF0aWMgaW50IGRtX29wX2NvcHlfYnVmX2Zyb21fZ3Vl c3QoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHZvaWQg KmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg aWR4LCBzaXplX3QgZHN0X3NpemUpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgYnVmOwor ICAgIHNpemVfdCBzaXplOworICAgIGludCByYzsKKworICAgIG1lbXNldChkc3QsIDAsIGRzdF9z aXplKTsKKworICAgIHJjID0gZG1fb3BfZ2V0X2J1ZihidWZzLCBucl9idWZzLCBpZHgsICZidWYp OworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIHNpemUgPSBt aW4oZHN0X3NpemUsIGJ1Zi5zaXplKTsKKworICAgIHJjID0gY29weV9mcm9tX2d1ZXN0KGRzdCwg YnVmLmgsIHNpemUpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRtX29wX2NvcHlfYnVmX3RvX2d1ZXN0KFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdW5zaWduZWQgaW50 IGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLCBzaXpl X3Qgc3JjX3NpemUpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgYnVmOworICAgIHNpemVf dCBzaXplOworICAgIGludCByYzsKKworICAgIHJjID0gZG1fb3BfZ2V0X2J1ZihidWZzLCBucl9i dWZzLCBpZHgsICZidWYpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsK KworICAgIHNpemUgPSBtaW4oYnVmLnNpemUsIHNyY19zaXplKTsKKworICAgIHJjID0gY29weV90 b19ndWVzdChidWYuaCwgc3JjLCBzaXplKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJu IC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBkb19kbV9vcChkb21pZF90IGRv bWlkLAorICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAg WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpCit7CisgICAgc3Ry dWN0IGRvbWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIGJvb2wgcmVzdGFy dDsKKyAgICBsb25nIHJjOworCisgICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lk KGRvbWlkLCAmZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJl c3RhcnQgPSBmYWxzZTsKKworICAgIGlmICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAp CisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c21fZG1fb3AoWFNNX0RNX1BSSVYsIGQp OworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gZG1fb3BfY29w eV9idWZfZnJvbV9ndWVzdChidWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkpOworICAg IGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHN3aXRjaCAoIG9wLm9wICkKKyAg ICB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJl YWs7CisgICAgfQorCisgICAgaWYgKCByYyA9PSAtRVJFU1RBUlQgKQorICAgICAgICByZXN0YXJ0 ID0gdHJ1ZTsKKworICAgIGlmICggIXJlc3RhcnQgJiYgcmMgKQorICAgICAgICBnb3RvIG91dDsK KworICAgIHJjID0gZG1fb3BfY29weV9idWZfdG9fZ3Vlc3QoYnVmcywgbnJfYnVmcywgMCwgJm9w LCBzaXplb2Yob3ApKTsKKworb3V0OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworCisgICAg aWYgKCByZXN0YXJ0ICYmICFyYyApCisgICAgICAgIHJjID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250 aW51YXRpb24oX19IWVBFUlZJU09SX2RtX29wLCAiaWloIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgbnJfYnVmcywgYnVmcyk7CisKKyAgICByZXR1 cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNzA0ZmQ2NC4u MjVjMzJlNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJj aC94ODYvaHZtL2h2bS5jCkBAIC00MjU5LDYgKzQyNTksNyBAQCBzdGF0aWMgY29uc3QgaHlwZXJj YWxsX3RhYmxlX3QgaHZtX2h5cGVyY2FsbF90YWJsZVtdID0gewogICAgIENPTVBBVF9DQUxMKHBs YXRmb3JtX29wKSwKICAgICBDT01QQVRfQ0FMTChtbXVleHRfb3ApLAogICAgIEhZUEVSQ0FMTCh4 ZW5wbXVfb3ApLAorICAgIEhZUEVSQ0FMTChkbV9vcCksCiAgICAgSFlQRVJDQUxMKGFyY2hfMSkK IH07CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyBiL3hlbi9hcmNoL3g4 Ni9oeXBlcmNhbGwuYwppbmRleCBkMmI1MzMxLi4wYTE2M2FjIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaHlwZXJjYWxsLmMKKysrIGIveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jCkBAIC02Niw2 ICs2Niw3IEBAIGNvbnN0IGh5cGVyY2FsbF9hcmdzX3QgaHlwZXJjYWxsX2FyZ3NfdGFibGVbTlJf aHlwZXJjYWxsc10gPQogICAgIEFSR1Moa2V4ZWNfb3AsIDIpLAogICAgIEFSR1ModG1lbV9vcCwg MSksCiAgICAgQVJHUyh4ZW5wbXVfb3AsIDIpLAorICAgIEFSR1MoZG1fb3AsIDMpLAogICAgIEFS R1MobWNhLCAxKSwKICAgICBBUkdTKGFyY2hfMSwgMSksCiB9OwpAQCAtMTI4LDYgKzEyOSw3IEBA IHN0YXRpYyBjb25zdCBoeXBlcmNhbGxfdGFibGVfdCBwdl9oeXBlcmNhbGxfdGFibGVbXSA9IHsK ICAgICBIWVBFUkNBTEwodG1lbV9vcCksCiAjZW5kaWYKICAgICBIWVBFUkNBTEwoeGVucG11X29w KSwKKyAgICBIWVBFUkNBTEwoZG1fb3ApLAogICAgIEhZUEVSQ0FMTChtY2EpLAogICAgIEhZUEVS Q0FMTChhcmNoXzEpLAogfTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1f b3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zZWIzN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUv cHVibGljL2h2bS9kbV9vcC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTYsIENpdHJpeCBTeXN0ZW1zIEluYworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAq IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu ZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U IFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBf X1hFTl9QVUJMSUNfSFZNX0RNX09QX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0RNX09Q X0hfXworCisjaWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisK KyNpbmNsdWRlICIuLi94ZW4uaCIKKworI2RlZmluZSBETU9QX2ludmFsaWQgMAorCitzdHJ1Y3Qg eGVuX2RtX29wIHsKKyAgICB1aW50MzJfdCBvcDsKK307CisKK3N0cnVjdCB4ZW5fZG1fb3BfYnVm IHsKKyAgICBYRU5fR1VFU1RfSEFORExFKHZvaWQpIGg7CisgICAgdWludDY0X3Qgc2l6ZTsKK307 Cit0eXBlZGVmIHN0cnVjdCB4ZW5fZG1fb3BfYnVmIHhlbl9kbV9vcF9idWZfdDsKK0RFRklORV9Y RU5fR1VFU1RfSEFORExFKHhlbl9kbV9vcF9idWZfdCk7CisKKy8qIGAgZW51bSBuZWdfZXJybm92 YWwKKyAqIGAgSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAorICogYCAgICAgICAgICAg ICAgICAgIHhlbl9kbV9vcF9idWZfdCAqYnVmcywKKyAqIGAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbnJfYnVmcykKKyAqIGAKKyAqCisgKiBAZG9taWQgaXMgdGhlIGRvbWFpbiB0aGUg aHlwZXJjYWxsIG9wZXJhdGVzIG9uLgorICogQGJ1ZnMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGJ1 ZmZlcnMgd2hlcmUgQGJ1ZnNbMF0gY29udGFpbnMgYSBzdHJ1Y3QKKyAqIGRtX29wLCBkZXNjcmli aW5nIHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgb3BlcmF0aW9uIGFuZCBpdHMgcGFyYW1ldGVy cy4KKyAqIEBidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9y IHRoZSBwdXJwb3NlcyBvZgorICogcGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBmcm9t IHRoZSBkb21haW4uCisgKiBAbnJfYnVmcyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhl IEBidWZzIGFycmF5LgorICovCisKKyNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmlu ZWQoX19YRU5fVE9PTFNfXykgKi8KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fRE1fT1Bf SF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUt c3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBp bmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvcHVibGljL3hlbi1jb21wYXQuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4tY29tcGF0LmgK aW5kZXggZGQ4YTVjMC4uYjY3MzY1MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3hl bi1jb21wYXQuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLWNvbXBhdC5oCkBAIC0yNyw3 ICsyNyw3IEBACiAjaWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXwogI2RlZmluZSBf X1hFTl9QVUJMSUNfWEVOX0NPTVBBVF9IX18KIAotI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5URVJG QUNFX1ZFUlNJT05fXyAweDAwMDQwODAwCisjZGVmaW5lIF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0Vf VkVSU0lPTl9fIDB4MDAwNDA5MDAKIAogI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChf X1hFTl9UT09MU19fKQogLyogWGVuIGlzIGJ1aWx0IHdpdGggbWF0Y2hpbmcgaGVhZGVycyBhbmQg aW1wbGVtZW50cyB0aGUgbGF0ZXN0IGludGVyZmFjZS4gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAppbmRleCAzMzZhYTNm Li4yMTNiOTRkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKKysrIGIveGVu L2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC0xMjAsNiArMTIwLDcgQEAgREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoeGVuX3Vsb25nX3QpOwogI2RlZmluZSBfX0hZUEVSVklTT1JfdG1lbV9vcCAgICAg ICAgICAgICAgMzgKICNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2VydmVkX29wICAgICAgIDM5 IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8KICNkZWZpbmUgX19IWVBFUlZJU09SX3hlbnBt dV9vcCAgICAgICAgICAgIDQwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kbV9vcCAgICAgICAgICAg ICAgICA0MQogCiAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25z LiAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCBiL3hlbi9pbmNsdWRlL3hlbi9oeXBl cmNhbGwuaAppbmRleCAyMDdhMGU4Li5mZWU3OGY3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94 ZW4vaHlwZXJjYWxsLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCkBAIC0xNSw2 ICsxNSw3IEBACiAjaW5jbHVkZSA8cHVibGljL3RtZW0uaD4KICNpbmNsdWRlIDxwdWJsaWMvdmVy c2lvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9wbXUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaHZtL2Rt X29wLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVyY2FsbC5oPgogI2luY2x1ZGUgPHhzbS94c20uaD4K IApAQCAtMTQxLDYgKzE0MiwxMiBAQCBkb194ZW5vcHJvZl9vcChpbnQgb3AsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKTsKIGV4dGVybiBsb25nCiBkb194ZW5wbXVfb3AodW5zaWdu ZWQgaW50IG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9wbXVfcGFyYW1zX3QpIGFyZyk7 CiAKK2V4dGVybiBsb25nCitkb19kbV9vcCgKKyAgICBkb21pZF90IGRvbWlkLAorICAgIHVuc2ln bmVkIGludCBucl9idWZzLAorICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1 Zl90KSBidWZzKTsKKwogI2lmZGVmIENPTkZJR19DT01QQVQKIAogZXh0ZXJuIGludApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApp bmRleCA5NTQ2MGFmLi43MTEzMThlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXku aAorKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApAQCAtNzI3LDYgKzcyNywxMiBAQCBzdGF0 aWMgWFNNX0lOTElORSBpbnQgeHNtX3BtdV9vcCAoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludAogICAgIH0KIH0KIAorc3RhdGljIFhTTV9JTkxJTkUgaW50IHhz bV9kbV9vcCAoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgWFNNX0FT U0VSVF9BQ1RJT04oWFNNX0RNX1BSSVYpOworICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24o YWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAq LwogCiAjaW5jbHVkZSA8cHVibGljL3ZlcnNpb24uaD4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hzbS94c20uaCBiL3hlbi9pbmNsdWRlL3hzbS94c20uaAppbmRleCA1ZGM1OWRkLi5jOTRjMWEy IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20veHNtLmgKKysrIGIveGVuL2luY2x1ZGUveHNt L3hzbS5oCkBAIC0xODQsNiArMTg0LDcgQEAgc3RydWN0IHhzbV9vcGVyYXRpb25zIHsKICAgICBp bnQgKCppb3BvcnRfcGVybWlzc2lvbikgKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVp bnQzMl90IGUsIHVpbnQ4X3QgYWxsb3cpOwogICAgIGludCAoKmlvcG9ydF9tYXBwaW5nKSAoc3Ry dWN0IGRvbWFpbiAqZCwgdWludDMyX3QgcywgdWludDMyX3QgZSwgdWludDhfdCBhbGxvdyk7CiAg ICAgaW50ICgqcG11X29wKSAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IG9wKTsKKyAg ICBpbnQgKCpkbV9vcCkgKHN0cnVjdCBkb21haW4gKmQpOwogI2VuZGlmCiAgICAgaW50ICgqeGVu X3ZlcnNpb24pICh1aW50MzJfdCBjbWQpOwogfTsKQEAgLTcyMiw2ICs3MjMsMTEgQEAgc3RhdGlj IGlubGluZSBpbnQgeHNtX3BtdV9vcCAoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGludAogICAgIHJldHVybiB4c21fb3BzLT5wbXVfb3AoZCwgb3ApOwogfQog CitzdGF0aWMgaW5saW5lIGludCB4c21fZG1fb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3Qg ZG9tYWluICpkKQoreworICAgIHJldHVybiB4c21fb3BzLT5kbV9vcChkKTsKK30KKwogI2VuZGlm IC8qIENPTkZJR19YODYgKi8KIAogc3RhdGljIGlubGluZSBpbnQgeHNtX3hlbl92ZXJzaW9uICh4 c21fZGVmYXVsdF90IGRlZiwgdWludDMyX3Qgb3ApCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNr L2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggMTc3YzExZi4uZDI0YmMwMSAx MDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hlbi94c20vZmxhc2svaG9v a3MuYwpAQCAtMTYzMiw2ICsxNjMyLDEyIEBAIHN0YXRpYyBpbnQgZmxhc2tfcG11X29wIChzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgb3ApCiAgICAgICAgIHJldHVybiAtRVBFUk07CiAg ICAgfQogfQorCitzdGF0aWMgaW50IGZsYXNrX2RtX29wIChzdHJ1Y3QgZG9tYWluICpkKQorewor ICAgIHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0hWTSwgSFZNX19ETSk7Cit9 CisKICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCiAKIHN0YXRpYyBpbnQgZmxhc2tfeGVuX3ZlcnNp b24gKHVpbnQzMl90IG9wKQpAQCAtMTgxMSw2ICsxODE3LDcgQEAgc3RhdGljIHN0cnVjdCB4c21f b3BlcmF0aW9ucyBmbGFza19vcHMgPSB7CiAgICAgLmlvcG9ydF9wZXJtaXNzaW9uID0gZmxhc2tf aW9wb3J0X3Blcm1pc3Npb24sCiAgICAgLmlvcG9ydF9tYXBwaW5nID0gZmxhc2tfaW9wb3J0X21h cHBpbmcsCiAgICAgLnBtdV9vcCA9IGZsYXNrX3BtdV9vcCwKKyAgICAuZG1fb3AgPSBmbGFza19k bV9vcCwKICNlbmRpZgogICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNrX3hlbl92ZXJzaW9uLAogfTsK LS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==