From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Tue, 6 Dec 2016 13:46:12 +0000 Message-ID: <1481031979-4751-2-git-send-email-paul.durrant@citrix.com> References: <1481031979-4751-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEGQN-0007z1-0c for xen-devel@lists.xenproject.org; Tue, 06 Dec 2016 14:08:51 +0000 In-Reply-To: <1481031979-4751-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: Wei Liu , Andrew Cooper , Jennifer Herbert , Paul Durrant , Jan Beulich , Ian Jackson , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org Li4uYXMgYSBzZXQgb2YgaHlwZXJjYWxscyB0byBiZSB1c2VkIGJ5IGEgZGV2aWNlIG1vZGVsLgoK QXMgc3RhdGVkIGluIHRoZSBuZXcgZG9jcy9kZXNpZ25zL2RtX29wLm1hcmtkb3duOgoKIlRoZSBh aW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50IGEgY29tcHJvbWlzZWQgZGV2aWNlIG1vZGVsIGZyb20K Y29tcHJvbWlzaW5nIGRvbWFpbnMgb3RoZXIgdGhlbiB0aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQg d2l0aC4gKEFuZCBpcwp0aGVyZWZvcmUgbGlrZWx5IGFscmVhZHkgY29tcHJvbWlzZWQpLiIKClNl ZSB0aGF0IGZpbGUgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCgpUaGlzIHBhdGNoIHNpbXBseSBh ZGRzIHRoZSBib2lsZXJwbGF0ZSBmb3IgdGhlIGh5cGVyY2FsbC4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClN1Z2dlc3RlZC1ieTogSWFuIEph Y2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+ClN1Z2dlc3RlZC1ieTogSmVubmlmZXIgSGVy YmVydCA8amVubmlmZXIuaGVyYmVydEBjaXRyaXguY29tPgotLS0KQ2M6IElhbiBKYWNrc29uIDxp YW4uamFja3NvbkBjaXRyaXguY29tPgpDYzogSmVubmlmZXIgSGVyYmVydCA8amVubmlmZXIuaGVy YmVydEBjaXRyaXguY29tPgpDYzogRGFuaWVsIERlIEdyYWFmIDxkZ2RlZ3JhQHR5Y2hvLm5zYS5n b3Y+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KCnYyOgotIEFkZHJlc3NlZCBzZXZlcmFsIGNvbW1lbnRzIGZyb20gSmFuLgotIFJlbW92 ZWQgbW9kaWZpY2F0aW9uIG9mIF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0VfVkVSU0lPTl9fIGFzIGl0 IGlzIG5vdAogIG5lZWRlZCBpbiB0aGlzIHBhdGNoLgotLS0KIGRvY3MvZGVzaWducy9kbW9wLm1h cmtkb3duICAgICAgICB8IDE4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmIHwgICAyICstCiB0b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgfCAgIDEgKwogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5j ICAgICAgICAgIHwgIDcwICsrKysrKysrKysrKysrKwogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5o ICAgICAgICAgIHwgICAyICsKIHhlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUgICAgICAgICB8ICAg MSArCiB4ZW4vYXJjaC94ODYvaHZtL2RtLmMgICAgICAgICAgICAgfCAxMTggKysrKysrKysrKysr KysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgIHwgICAxICsK IHhlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyAgICAgICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2RtX29wLmggICAgfCAgNzEgKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9w dWJsaWMveGVuLmggICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5o ICAgICAgIHwgICA3ICsrCiB4ZW4vaW5jbHVkZS94c20vZHVtbXkuaCAgICAgICAgICAgfCAgIDYg KysKIHhlbi9pbmNsdWRlL3hzbS94c20uaCAgICAgICAgICAgICB8ICAgNiArKwogeGVuL3hzbS9m bGFzay9ob29rcy5jICAgICAgICAgICAgIHwgICA3ICsrCiAxNSBmaWxlcyBjaGFuZ2VkLCA0NzUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvY3MvZGVz aWducy9kbW9wLm1hcmtkb3duCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2h2bS9k bS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCgpk aWZmIC0tZ2l0IGEvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24gYi9kb2NzL2Rlc2lnbnMvZG1v cC5tYXJrZG93bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2NiN2U2Ci0t LSAvZGV2L251bGwKKysrIGIvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KQEAgLTAsMCArMSwx ODEgQEAKK0RNT1AgIChtdWx0aS1idWZmZXIgdmFyaWFudCkKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworQSBwcmV2aW91cyBwcm9w b3NhbCBmb3IgYSAnRE1PUCcgd2FzIHB1dCBmb3J3YXJkIGJ5IElhbiBKYWNrc29uIG9uIHRoZSAx c3QKK29mIEF1Z3VzdC4gVGhpcyBwcm9wb3NhbCBzZWVtIHZlcnkgcHJvbWlzaW5nLCBob3dldmVy IGEgcHJvYmxlbSB3YXMKK2lkZW50aWZpZWQgd2l0aCBpdCwgdGhhdCB0aGlzIHByb3Bvc2FsIGFk ZHJlc3Nlcy4KKworVGhlIGFpbSBvZiBETU9QLCBhcyBiZWZvcmUsIGlzIHRvIHByZXZlbnQgYSBj b21wcm9taXNlZCBkZXZpY2UgbW9kZWwgZnJvbQorY29tcHJvbWlzaW5nIGRvbWFpbnMgb3RoZXIg dGhlbiB0aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gKEFuZCBpcwordGhlcmVmb3JlIGxp a2VseSBhbHJlYWR5IGNvbXByb21pc2VkKS4KKworVGhlIHByZXZpb3VzIHByb3Bvc2FsIGFkZHMg YSBETU9QIGh5cGVyY2FsbCwgZm9yIHVzZSBieSB0aGUgZGV2aWNlIG1vZGVscywKK3doaWNoIHBs YWNlcyB0aGUgZG9tYWluIElEIGluIGEgZml4ZWQgcGxhY2UsIHdpdGhpbiB0aGUgY2FsbGluZyBh cmdzLAorc3VjaCB0aGF0IHRoZSBwcml2IGRyaXZlciBjYW4gYWx3YXlzIGZpbmQgaXQsIGFuZCBu b3QgbmVlZCB0byBrbm93IGFueQorZnVydGhlciBkZXRhaWxzIGFib3V0IHRoZSBwYXJ0aWN1bGFy IERNT1AgaW4gb3JkZXIgdG8gdmFsaWRhdGUgaXQgYWdhaW5zdAorcHJldmlvdXNseSBzZXQgKHZp ZSBpb2N0bCkgZG9tYWluLgorCitUaGUgcHJvYmxlbSBvY2N1cnMgd2hlbiB5b3UgaGF2ZSBhIERN T1Agd2l0aCByZWZlcmVuY2VzIHRvIG90aGVyIHVzZXIgbWVtb3J5CitvYmplY3RzLCBzdWNoIGFz IHdpdGggVHJhY2sgZGlydHkgVlJBTSAoQXMgdXNlZCB3aXRoIHRoZSBWR0EgYnVmZmVyKS4KK0lz IHRoaXMgY2FzZSwgdGhlIGFkZHJlc3Mgb2YgdGhpcyBvdGhlciB1c2VyIG9iamVjdCBuZWVkcyB0 byBiZSB2ZXR0ZWQsCit0byBlbnN1cmUgaXQgaXMgbm90IHdpdGhpbiBhIHJlc3RyaWN0ZWQgYWRk cmVzcyByYW5nZXMsIHN1Y2ggYXMga2VybmVsCittZW1vcnkuIFRoZSByZWFsIHByb2JsZW0gY29t ZXMgZG93biB0byBob3cgeW91IHdvdWxkIHZldCB0aGlzIGFkZHJlc3MgLQordGhlIGlkZWEgcGxh Y2UgdG8gZG8gdGhpcyBpcyB3aXRoaW4gdGhlIHByaXZjbWQgZHJpdmVyLCBzaW5jZSBpdCB3b3Vs ZCBoYXZlCitrbm93bGVkZ2Ugb2YgdGhlIGFkZHJlc3Mgc3BhY2UgaW52b2x2ZWQuIEhvd2V2ZXIs IHdpdGggYSBwcmluY2lwYWwgZ29hbAorb2YgRE1PUCB0byBhbGxvdyBwcml2Y21kIHRvIGJlIGZy ZWUgZnJvbSBhbnkga25vd2xlZGdlIG9mIERNT1AncyBzdWIgb3BzLAoraXQgd291bGQgaGF2ZSBu byB3YXkgdG8gaWRlbnRpZnkgYW55IHVzZXIgYnVmZmVyICBhZGRyZXNzZXMgdGhhdCBuZWVkCitj aGVja2luZy4gIFRoZSBhbHRlcm5hdGl2ZSBvZiBhbGxvd2luZyB0aGUgaHlwZXJ2aXNvciB0byB2 ZXQgdGhlIGFkZHJlc3MKK2lzIGFsc28gcHJvYmxlbWF0aWMsIHNpbmNlIGl0IGhhcyBubyBrbm93 bGVkZ2Ugb2YgdGhlIGd1ZXN0IG1lbW9yeSBsYXlvdXQuCisKKworVGhlIERlc2lnbgorLS0tLS0t LS0tLQorCitBcyB3aXRoIHRoZSBwcmV2aW91cyBkZXNpZ24sIHdlIHByb3ZpZGUgYSBuZXcgcmVz dHJpY3Rpb24gaW9jdGwsIHdoaWNoCit0YWtlcyBhIGRvbWlkIHBhcmFtZXRlci4gIEFmdGVyIHRo YXQgcmVzdHJpY3Rpb24gaW9jdGwgaXMgY2FsbGVkLCB0aGUKK3ByaXZjbWQgZHJpdmVyIHdpbGwg cGVybWl0IG9ubHkgRE1PUCBoeXBlcmNhbGxzLCBhbmQgb25seSB3aXRoIHRoZQorc3BlY2lmaWVk IHRhcmdldCBkb21pZC4KKworSW4gdGhlIHByZXZpb3VzIGRlc2lnbiwgYSBETU9QIGNvbnNpc3Rl ZCBvZiBvbmUgYnVmZmVyLCBjb250YWluaW5nIGFsbCBvZgordGhlIERNT1AgcGFyYW1ldGVycywg d2hpY2ggbWF5IGluY2x1ZGUgZnVydGhlciBleHBsaWNpdCByZWZlcmVuY2VzIHRvCittb3JlIGJ1 ZmZlcnMuICBJbiB0aGlzIGRlc2lnbiwgYW4gYXJyYXkgb2YgYnVmZmVycyB3aXRoIGxlbmd0aCBp cyBwcmVzZW50ZWQsCit3aXRoIHRoZSBmaXJzdCBvbmUgY29udGFpbmluZyB0aGUgRE1PUCBwYXJh bWV0ZXJzLCB3aGljaCBjb3VsZCBpbXBsaWNpdGx5CityZWZlcmVuY2UgdG8gZnVydGhlciBidWZm ZXJzIGZyb20gd2l0aGluIGluIHRoZSBhcnJheS4gSGVyZSwgdGhlIG9ubHkKK3VzZXIgYnVmZmVy cyBwYXNzZWQsIGFyZSB0aGF0IGZvdW5kIHdpdGggdGhlIGFycmF5LCBhbmQgc28gYWxsIGNhbiBi ZQorYXVkaXRlZCBmcm9tIHByaXZjbWQuICBXaXRoIHRoZSBwYXNzaW5nIG9mIHRoZSBsZW5ndGgg b2YgdGhlIGJ1ZmZlcnMgYXJyYXksCitwcml2Y21kIGRvZXMgbm90IG5lZWQgdG8ga25vdyB3aGlj aCBETU9QIGl0IGlzIHRvIGF1ZGl0IHRoZW0uCisKK0lmIHRoZSBoeXBlcnZpc29yIGVuZHMgdXAg d2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mIGJ1ZmZlcnMsIGl0IGNhbiByZWplY3QKK3RoZSBETU9Q IGF0IHRoYXQgcG9pbnQuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlzIGlk ZWE6CisKK3N0cnVjdCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0 IHhlbl9kbV9vcF9idWYgeworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgaDsKKyAgICB1aW50 NjRfdCBzaXplOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9kbV9vcF9idWYgeGVuX2RtX29wX2J1 Zl90OworCitlbnVtIG5lZ19lcnJub3ZhbAorSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlk LAorICAgICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcykKKworQGRvbWlkIGlzIHRoZSBkb21haW4gdGhlIGh5 cGVyY2FsbCBvcGVyYXRlcyBvbi4KK0BidWZzIHBvaW50cyB0byBhbiBhcnJheSBvZiBidWZmZXJz IHdoZXJlIEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0CitkbV9vcCwgZGVzY3JpYmluZyB0aGUg c3BlY2lmaWMgZGV2aWNlIG1vZGVsIG9wZXJhdGlvbiBhbmQgaXRzIHBhcmFtZXRlcnMuCitAYnVm c1sxLi5dIG1heSBiZSByZWZlcmVuY2VkIGluIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHVycG9z ZXMgb2YKK3Bhc3NpbmcgZXh0cmEgaW5mb3JtYXRpb24gdG8gb3IgZnJvbSB0aGUgZG9tYWluLgor QG5yX2J1ZnMgaXMgdGhlIG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBAYnVmcyBhcnJheS4KKwor CitJdCBpcyBmb3JiaWRkZW4gZm9yIHRoZSBhYm92ZSBzdHJ1Y3QgKGRtX29wKSB0byBjb250YWlu IGFueQorZ3Vlc3QgaGFuZGxlcyAtIGlmIHRoZXkgYXJlIG5lZWRlZCwgdGhleSBzaG91bGQgaW5z dGVhZCBiZSBpbgorSFlQRVJWSVNPUl9kbV9vcC0+YnVmcy4KKworVmFsaWRhdGlvbiBieSBwcml2 Y21kIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBwcml2 Y21kIGRyaXZlciBoYXMgYmVlbiByZXN0cmljdGVkIHRvIHNwZWNpZmljIGRvbWFpbiAodXNpbmcg YQorIG5ldyBpb2N0bCksIHdoZW4gaXQgcmVjZWl2ZWQgYW4gb3AsIGl0IHdpbGw6CisKKzEuIENo ZWNrIGh5cGVyY2FsbCBpcyBETU9QLgorCisyLiBDaGVjayBkb21pZCA9PSByZXN0cmljdGVkIGRv bWlkLgorCiszLiBGb3IgZWFjaCBAbnJfYnVmZmVycyBpbiBAYnVmZmVyczogQ2hlY2sgQGggYW5k IEBsZW4gZ2l2ZSBhIGJ1ZmZlcgorICAgd2hvbGV5IGluIHRoZSB1c2VyIHNwYWNlIHBhcnQgb2Yg dGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gKGUuZy4sCisgICBvbiBMaW51eCB1c2UgYWNjZXNz X29rKCkpLgorCisKK1hlbiBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Np bmNlIGEgRE1PUCBzdWIgb2YgbWF5IG5lZWQgdG8gY29weSBvciByZXR1cm4gYSBidWZmZXIgZnJv bSB0aGUgZ3Vlc3QsCithcyB3ZWxsIGFzIHRoZSBETU9QIGl0c2VsZiB0byBnaXQgdGhlIGluaXRp YWwgYnVmZmVyLCBmdW5jdGlvbnMgZm9yIGRvaW5nCit0aGlzIHdvdWxkIGJlIHdyaXR0ZW4gYXMg YmVsb3cuICBOb3RlIHRoYXQgY2FyZSBpcyB0YWtlbiB0byBwcmV2ZW50CitkYW1hZ2UgZnJvbSBi dWZmZXIgdW5kZXIgb3Igb3ZlciBydW4gc2l0dWF0aW9ucy4gIElmIHRoZSBETU9QIGlzIGNhbGxl ZAord2l0aCBpbnN1ZmZpY2llbnQgYnVmZmVycywgemVyb3Mgd2lsbCBiZSByZWFkLCB3aGlsZSBl eHRyYSBpcyBpZ25vcmVkLgorCitzdGF0aWMgaW50IGdldF9idWYoWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMsCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG5yX2J1ZnMsIHVuc2lnbmVkIGludCBpZHgsCisgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhlbl9kbV9vcF9idWYgKmJ1ZikKK3sKKyAgICBpZiAoIGlkeCA+PSBucl9idWZzICkKKyAgICAg ICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICByZXR1cm4gY29weV9mcm9tX2d1ZXN0X29mZnNldChi dWYsIGJ1ZnMsIGlkeCwgMSkgPyAtRUZBVUxUIDogMDsKK30KKworc3RhdGljIGludCBjb3B5X2J1 Zl9mcm9tX2d1ZXN0KFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLCB2 b2lkICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlk eCwgc2l6ZV90IGRzdF9zaXplKQoreworICAgIHN0cnVjdCB4ZW5fZG1fb3BfYnVmIGJ1ZjsKKyAg ICBzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmM7CisKKyAgICBtZW1zZXQoZHN0LCAwLCBkc3Rfc2l6 ZSk7CisKKyAgICByYyA9IGdldF9idWYoYnVmcywgbnJfYnVmcywgaWR4LCAmYnVmKTsKKyAgICBp ZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgc2l6ZSA9IG1pbl90KHNpemVfdCwg ZHN0X3NpemUsIGJ1Zi5zaXplKTsKKworICAgIHJldHVybiBjb3B5X2Zyb21fZ3Vlc3QoZHN0LCBi dWYuaCwgc2l6ZSkgPyAtRUZBVUxUIDogMDsKK30KKworc3RhdGljIGludCBjb3B5X2J1Zl90b19n dWVzdCguLi4pCit7CisgICAgLyogU2ltaWxhciB0byB0aGUgYWJvdmUsIGV4Y2VwdCBjb3B5aW5n IHRoZSB0aGUgb3RoZXIKKyAgICAgICBkaXJlY3Rpb24uICovCit9CisKK1RoaXMgbGVhdmVzIGRv X2RtX29wIGVhc3kgdG8gaW1wbGVtZW50IGFzIGJlbG93OgorCitsb25nIGRvX2RtX29wKGRvbWlk X3QgZG9taWQsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLAorICAgICAgICAg ICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcykKK3sKKyAg ICBzdHJ1Y3QgZG9tYWluICpkOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgbG9uZyBy YzsKKworICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChkb21pZCwgJmQpOwor ICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoICFoYXNfaHZtX2Nv bnRhaW5lcl9kb21haW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNtX2Rt X29wKFhTTV9ETV9QUklWLCBkKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisK KyAgICByYyA9IGNvcHlfYnVmX2Zyb21fZ3Vlc3QoYnVmcywgbnJfYnVmcywgJm9wLCAwLCBzaXpl b2Yob3ApKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzd2l0Y2gg KCBvcC5vcCApCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7 CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggIXJjICkKKyAgICAgICAgcmMgPSBj b3B5X2J1Zl90b19ndWVzdChidWZzLCBucl9idWZzLCAwLCAmb3AsIHNpemVvZihvcCkpOworCisg b3V0OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworCisgICAgcmV0dXJuIHJjOworfQpkaWZm IC0tZ2l0IGEvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmIGIvdG9vbHMvZmxhc2sv cG9saWN5L21vZHVsZXMveGVuLmlmCmluZGV4IGViNjQ2ZjUuLjc3OTIzMmUgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZgorKysgYi90b29scy9mbGFzay9wb2xp Y3kvbW9kdWxlcy94ZW4uaWYKQEAgLTE1MSw3ICsxNTEsNyBAQCBkZWZpbmUoYGRldmljZV9tb2Rl bCcsIGAKIAogCWFsbG93ICQxICQyX3RhcmdldDpkb21haW4geyBnZXRkb21haW5pbmZvIHNodXRk b3duIH07CiAJYWxsb3cgJDEgJDJfdGFyZ2V0Om1tdSB7IG1hcF9yZWFkIG1hcF93cml0ZSBhZGp1 c3QgcGh5c21hcCB0YXJnZXRfaGFjayB9OwotCWFsbG93ICQxICQyX3RhcmdldDpodm0geyBnZXRw YXJhbSBzZXRwYXJhbSB0cmFja2RpcnR5dnJhbSBodm1jdGwgaXJxbGV2ZWwgcGNpcm91dGUgcGNp bGV2ZWwgY2FjaGVhdHRyIHNlbmRfaXJxIH07CisJYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdl dHBhcmFtIHNldHBhcmFtIHRyYWNrZGlydHl2cmFtIGh2bWN0bCBpcnFsZXZlbCBwY2lyb3V0ZSBw Y2lsZXZlbCBjYWNoZWF0dHIgc2VuZF9pcnEgZG0gfTsKICcpCiAKICMgbWFrZV9kZXZpY2VfbW9k ZWwocHJpdiwgZG1fZG9tLCBodm1fZG9tKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVk ZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCAyYzgzNTQ0 Li5jYzM3NzUyIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysg Yi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1 ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KICNpbmNsdWRlIDx4ZW4v Z3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDx4ZW4vaHZtL2RtX29wLmg+CiAjaW5jbHVkZSA8eGVu L2h2bS9wYXJhbXMuaD4KICNpbmNsdWRlIDx4ZW4veHNtL2ZsYXNrX29wLmg+CiAjaW5jbHVkZSA8 eGVuL3RtZW0uaD4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYyBiL3Rvb2xz L2xpYnhjL3hjX3ByaXZhdGUuYwppbmRleCBkNTdjMzlhLi44ZTQ5NjM1IDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Y19wcml2YXRlLmMKKysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCkBA IC03NzYsNiArNzc2LDc2IEBAIGludCB4Y19mZnM2NCh1aW50NjRfdCB4KQogICAgIHJldHVybiBs ID8geGNfZmZzMzIobCkgOiBoID8geGNfZmZzMzIoaCkgKyAzMiA6IDA7CiB9CiAKK2ludCBkb19k bV9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwgdW5zaWduZWQgaW50IG5yX2J1 ZnMsIC4uLikKK3sKKyAgICBpbnQgcmV0ID0gLTE7CisgICAgc3RydWN0ICB7CisgICAgICAgIHZv aWQgKnU7CisgICAgICAgIHZvaWQgKmg7CisgICAgfSAqYm91bmNlOworICAgIERFQ0xBUkVfSFlQ RVJDQUxMX0JVRkZFUih4ZW5fZG1fb3BfYnVmX3QsIGJ1ZnMpOworICAgIHZhX2xpc3QgYXJnczsK KyAgICB1bnNpZ25lZCBpbnQgaWR4OworCisgICAgYm91bmNlID0gY2FsbG9jKG5yX2J1ZnMsIHNp emVvZigqYm91bmNlKSk7CisgICAgaWYgKCBib3VuY2UgPT0gTlVMTCApCisgICAgICAgIGdvdG8g ZmFpbDE7CisKKyAgICBidWZzID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGJ1ZnMs IHNpemVvZigqYnVmcykgKiBucl9idWZzKTsKKyAgICBpZiAoIGJ1ZnMgPT0gTlVMTCApCisgICAg ICAgIGdvdG8gZmFpbDI7CisKKyAgICB2YV9zdGFydChhcmdzLCBucl9idWZzKTsKKyAgICBmb3Ig KGlkeCA9IDA7IGlkeCA8IG5yX2J1ZnM7IGlkeCsrKQorICAgIHsKKyAgICAgICAgdm9pZCAqdSA9 IHZhX2FyZyhhcmdzLCB2b2lkICopOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHZhX2FyZyhhcmdz LCBzaXplX3QpOworCisgICAgICAgIGJvdW5jZVtpZHhdLmggPSB4ZW5jYWxsX2FsbG9jX2J1ZmZl cih4Y2gtPnhjYWxsLCBzaXplKTsKKyAgICAgICAgaWYgKCBib3VuY2VbaWR4XS5oID09IE5VTEwg KQorICAgICAgICAgICAgZ290byBmYWlsMzsKKworICAgICAgICBtZW1jcHkoYm91bmNlW2lkeF0u aCwgdSwgc2l6ZSk7CisgICAgICAgIGJvdW5jZVtpZHhdLnUgPSB1OworCisgICAgICAgIHNldF94 ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhidWZzW2lkeF0uaCwgYm91bmNlW2lkeF0uaCk7CisgICAgICAg IGJ1ZnNbaWR4XS5zaXplID0gc2l6ZTsKKyAgICB9CisgICAgdmFfZW5kKGFyZ3MpOworCisgICAg cmV0ID0geGVuY2FsbDMoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2RtX29wLAorICAgICAgICAg ICAgICAgICAgIGRvbWlkLCBucl9idWZzLCBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhidWZzKSk7 CisgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAgZ290byBmYWlsNDsKKworICAgIHdoaWxlICgg aWR4LS0gIT0gMCApCisgICAgeworICAgICAgICBtZW1jcHkoYm91bmNlW2lkeF0udSwgYm91bmNl W2lkeF0uaCwgYnVmc1tpZHhdLnNpemUpOworICAgICAgICB4ZW5jYWxsX2ZyZWVfYnVmZmVyKHhj aC0+eGNhbGwsIGJvdW5jZVtpZHhdLmgpOworICAgIH0KKworICAgIHhjX2h5cGVyY2FsbF9idWZm ZXJfZnJlZSh4Y2gsIGJ1ZnMpOworCisgICAgZnJlZShib3VuY2UpOworCisgICAgcmV0dXJuIDA7 CisKKyBmYWlsNDoKKyAgICBpZHggPSBucl9idWZzOworCisgZmFpbDM6CisgICAgd2hpbGUgKCBp ZHgtLSAhPSAwICkKKyAgICAgICAgeGVuY2FsbF9mcmVlX2J1ZmZlcih4Y2gtPnhjYWxsLCBib3Vu Y2VbaWR4XS5oKTsKKworICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGJ1ZnMpOwor CisgZmFpbDI6CisgICAgZnJlZShib3VuY2UpOworCisgZmFpbDE6CisgICAgcmV0dXJuIHJldDsK K30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhjL3hjX3ByaXZhdGUuaCBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaAppbmRleCA5 NzQ0NWFlLi5mMTkxMzIwIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKKysr IGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCkBAIC00MjIsNiArNDIyLDggQEAgaW50IHhjX3Zt X2V2ZW50X2NvbnRyb2woeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9tYWluX2lkLCB1bnNp Z25lZCBpbnQgb3AsCiB2b2lkICp4Y192bV9ldmVudF9lbmFibGUoeGNfaW50ZXJmYWNlICp4Y2gs IGRvbWlkX3QgZG9tYWluX2lkLCBpbnQgcGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgKnBvcnQpOwogCitpbnQgZG9fZG1fb3AoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlk X3QgZG9taWQsIHVuc2lnbmVkIGludCBucl9idWZzLCAuLi4pOworCiAjZW5kaWYgLyogX19YQ19Q UklWQVRFX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmls ZSBiL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKaW5kZXggZjc1MGQxMy4uNTg2OWQxYiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvaHZt L01ha2VmaWxlCkBAIC0yLDYgKzIsNyBAQCBzdWJkaXIteSArPSBzdm0KIHN1YmRpci15ICs9IHZt eAogCiBvYmoteSArPSBhc2lkLm8KK29iai15ICs9IGRtLm8KIG9iai15ICs9IGVtdWxhdGUubwog b2JqLXkgKz0gaHBldC5vCiBvYmoteSArPSBodm0ubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjkwNTEwYjgKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvaHZt L2RtLmMKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQ2l0cml4 IFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVy c2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IK KyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHBy b2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLwor CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwu aD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKworI2luY2x1ZGUgPGFzbS9odm0vaW9yZXEuaD4K KworI2luY2x1ZGUgPHhzbS94c20uaD4KKworc3RhdGljIGludCBnZXRfYnVmKFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzLAorICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBucl9idWZzLCB1bnNpZ25lZCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4ZW5fZG1fb3BfYnVmICpidWYpCit7CisgICAgaWYgKCBpZHggPj0gbnJfYnVmcyAp CisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgcmV0dXJuIGNvcHlfZnJvbV9ndWVzdF9v ZmZzZXQoYnVmLCBidWZzLCBpZHgsIDEpID8gLUVGQVVMVCA6IDA7Cit9CisKK3N0YXRpYyBpbnQg Y29weV9idWZfZnJvbV9ndWVzdChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9idWZf dCkgYnVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJf YnVmcywgdm9pZCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBpZHgsIHNpemVfdCBkc3Rfc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiBi dWY7CisgICAgc2l6ZV90IHNpemU7CisgICAgaW50IHJjOworCisgICAgbWVtc2V0KGRzdCwgMCwg ZHN0X3NpemUpOworCisgICAgcmMgPSBnZXRfYnVmKGJ1ZnMsIG5yX2J1ZnMsIGlkeCwgJmJ1Zik7 CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNpemUgPSBtaW5fdChz aXplX3QsIGRzdF9zaXplLCBidWYuc2l6ZSk7CisKKyAgICByZXR1cm4gY29weV9mcm9tX2d1ZXN0 KGRzdCwgYnVmLmgsIHNpemUpID8gLUVGQVVMVCA6IDA7Cit9CisKK3N0YXRpYyBpbnQgY29weV9i dWZfdG9fZ3Vlc3QoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLCB1bnNp Z25lZCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsIHNp emVfdCBzcmNfc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiBidWY7CisgICAgc2l6 ZV90IHNpemU7CisgICAgaW50IHJjOworCisgICAgcmMgPSBnZXRfYnVmKGJ1ZnMsIG5yX2J1ZnMs IGlkeCwgJmJ1Zik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNp emUgPSBtaW5fdChzaXplX3QsIGJ1Zi5zaXplLCBzcmNfc2l6ZSk7CisKKyAgICByZXR1cm4gY29w eV90b19ndWVzdChidWYuaCwgc3JjLCBzaXplKSA/IC1FRkFVTFQgOiAwOworfQorCitsb25nIGRv X2RtX29wKGRvbWlkX3QgZG9taWQsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZz LAorICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9idWZfdCkg YnVmcykKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7 CisgICAgbG9uZyByYzsKKworICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChk b21pZCwgJmQpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAo ICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IHJjID0geHNtX2RtX29wKFhTTV9ETV9QUklWLCBkKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAg Z290byBvdXQ7CisKKyAgICByYyA9IGNvcHlfYnVmX2Zyb21fZ3Vlc3QoYnVmcywgbnJfYnVmcywg Jm9wLCAwLCBzaXplb2Yob3ApKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisK KyAgICBzd2l0Y2ggKCBvcC5vcCApCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0g LUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggIXJjICkKKyAg ICAgICAgcmMgPSBjb3B5X2J1Zl90b19ndWVzdChidWZzLCBucl9idWZzLCAwLCAmb3AsIHNpemVv ZihvcCkpOworCisgb3V0OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworCisgICAgcmV0dXJu IHJjOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxl LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICog aW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IGUwZjkzNmIuLjZm MDAyYmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS9odm0uYwpAQCAtNDI3Niw2ICs0Mjc2LDcgQEAgc3RhdGljIGNvbnN0IGh5cGVyY2Fs bF90YWJsZV90IGh2bV9oeXBlcmNhbGxfdGFibGVbXSA9IHsKICAgICBDT01QQVRfQ0FMTChwbGF0 Zm9ybV9vcCksCiAgICAgQ09NUEFUX0NBTEwobW11ZXh0X29wKSwKICAgICBIWVBFUkNBTEwoeGVu cG11X29wKSwKKyAgICBIWVBFUkNBTEwoZG1fb3ApLAogICAgIEhZUEVSQ0FMTChhcmNoXzEpCiB9 OwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMgYi94ZW4vYXJjaC94ODYv aHlwZXJjYWxsLmMKaW5kZXggZDJiNTMzMS4uMGExNjNhYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h5cGVyY2FsbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwpAQCAtNjYsNiAr NjYsNyBAQCBjb25zdCBoeXBlcmNhbGxfYXJnc190IGh5cGVyY2FsbF9hcmdzX3RhYmxlW05SX2h5 cGVyY2FsbHNdID0KICAgICBBUkdTKGtleGVjX29wLCAyKSwKICAgICBBUkdTKHRtZW1fb3AsIDEp LAogICAgIEFSR1MoeGVucG11X29wLCAyKSwKKyAgICBBUkdTKGRtX29wLCAzKSwKICAgICBBUkdT KG1jYSwgMSksCiAgICAgQVJHUyhhcmNoXzEsIDEpLAogfTsKQEAgLTEyOCw2ICsxMjksNyBAQCBz dGF0aWMgY29uc3QgaHlwZXJjYWxsX3RhYmxlX3QgcHZfaHlwZXJjYWxsX3RhYmxlW10gPSB7CiAg ICAgSFlQRVJDQUxMKHRtZW1fb3ApLAogI2VuZGlmCiAgICAgSFlQRVJDQUxMKHhlbnBtdV9vcCks CisgICAgSFlQRVJDQUxMKGRtX29wKSwKICAgICBIWVBFUkNBTEwobWNhKSwKICAgICBIWVBFUkNB TEwoYXJjaF8xKSwKIH07CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29w LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODYyYzkxNAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy MDE2LCBDaXRyaXggU3lzdGVtcyBJbmMKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisg KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX19Y RU5fUFVCTElDX0hWTV9ETV9PUF9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0hWTV9ETV9PUF9I X18KKworI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisj aW5jbHVkZSAiLi4veGVuLmgiCisKKyNkZWZpbmUgWEVOX0RNT1BfaW52YWxpZCAwCisKK3N0cnVj dCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0IHhlbl9kbV9vcF9i dWYgeworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgaDsKKyAgICB1aW50NjRfYWxpZ25lZF90 IHNpemU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB4ZW5fZG1fb3BfYnVmX3Q7 CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fZG1fb3BfYnVmX3QpOworCisvKiBgIGVudW0g bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfZG1fb3AoZG9taWRfdCBkb21pZCwKKyAqIGAg ICAgICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICogYCAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzKQorICogYAorICoKKyAqIEBkb21pZCBpcyB0aGUg ZG9tYWluIHRoZSBoeXBlcmNhbGwgb3BlcmF0ZXMgb24uCisgKiBAYnVmcyBwb2ludHMgdG8gYW4g YXJyYXkgb2YgYnVmZmVycyB3aGVyZSBAYnVmc1swXSBjb250YWlucyBhIHN0cnVjdAorICogeGVu X2RtX29wLCBkZXNjcmliaW5nIHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgb3BlcmF0aW9uIGFu ZCBpdHMKKyAqIHBhcmFtZXRlcnMuCisgKiBAYnVmc1sxLi5dIG1heSBiZSByZWZlcmVuY2VkIGlu IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHVycG9zZXMgb2YKKyAqIHBhc3NpbmcgZXh0cmEgaW5m b3JtYXRpb24gdG8gb3IgZnJvbSB0aGUgZG9tYWluLgorICogQG5yX2J1ZnMgaXMgdGhlIG51bWJl ciBvZiBidWZmZXJzIGluIHRoZSBAYnVmcyBhcnJheS4KKyAqLworCisjZW5kaWYgLyogX19YRU5f XyB8fCBfX1hFTl9UT09MU19fICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX0RNX09Q X0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxl LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICog aW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAppbmRleCAzMzZhYTNm Li4yMTNiOTRkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKKysrIGIveGVu L2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC0xMjAsNiArMTIwLDcgQEAgREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoeGVuX3Vsb25nX3QpOwogI2RlZmluZSBfX0hZUEVSVklTT1JfdG1lbV9vcCAgICAg ICAgICAgICAgMzgKICNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2VydmVkX29wICAgICAgIDM5 IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8KICNkZWZpbmUgX19IWVBFUlZJU09SX3hlbnBt dV9vcCAgICAgICAgICAgIDQwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kbV9vcCAgICAgICAgICAg ICAgICA0MQogCiAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25z LiAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCBiL3hlbi9pbmNsdWRlL3hlbi9oeXBl cmNhbGwuaAppbmRleCAyMDdhMGU4Li5mZWU3OGY3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94 ZW4vaHlwZXJjYWxsLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCkBAIC0xNSw2 ICsxNSw3IEBACiAjaW5jbHVkZSA8cHVibGljL3RtZW0uaD4KICNpbmNsdWRlIDxwdWJsaWMvdmVy c2lvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9wbXUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaHZtL2Rt X29wLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVyY2FsbC5oPgogI2luY2x1ZGUgPHhzbS94c20uaD4K IApAQCAtMTQxLDYgKzE0MiwxMiBAQCBkb194ZW5vcHJvZl9vcChpbnQgb3AsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKTsKIGV4dGVybiBsb25nCiBkb194ZW5wbXVfb3AodW5zaWdu ZWQgaW50IG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9wbXVfcGFyYW1zX3QpIGFyZyk7 CiAKK2V4dGVybiBsb25nCitkb19kbV9vcCgKKyAgICBkb21pZF90IGRvbWlkLAorICAgIHVuc2ln bmVkIGludCBucl9idWZzLAorICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1 Zl90KSBidWZzKTsKKwogI2lmZGVmIENPTkZJR19DT01QQVQKIAogZXh0ZXJuIGludApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApp bmRleCA5NTQ2MGFmLi5iMjA2ZjVhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXku aAorKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApAQCAtNzI3LDYgKzcyNywxMiBAQCBzdGF0 aWMgWFNNX0lOTElORSBpbnQgeHNtX3BtdV9vcCAoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludAogICAgIH0KIH0KIAorc3RhdGljIFhTTV9JTkxJTkUgaW50IHhz bV9kbV9vcChYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBYU01fQVNT RVJUX0FDVElPTihYU01fRE1fUFJJVik7CisgICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihh Y3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwgZCk7Cit9CisKICNlbmRpZiAvKiBDT05GSUdfWDg2ICov CiAKICNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCmluZGV4IDVkYzU5ZGQuLmUyZDMzNmYg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94c20uaAorKysgYi94ZW4vaW5jbHVkZS94c20v eHNtLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgewogICAgIGlu dCAoKmlvcG9ydF9wZXJtaXNzaW9uKSAoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgcywgdWlu dDMyX3QgZSwgdWludDhfdCBhbGxvdyk7CiAgICAgaW50ICgqaW9wb3J0X21hcHBpbmcpIChzdHJ1 Y3QgZG9tYWluICpkLCB1aW50MzJfdCBzLCB1aW50MzJfdCBlLCB1aW50OF90IGFsbG93KTsKICAg ICBpbnQgKCpwbXVfb3ApIChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgb3ApOworICAg IGludCAoKmRtX29wKSAoc3RydWN0IGRvbWFpbiAqZCk7CiAjZW5kaWYKICAgICBpbnQgKCp4ZW5f dmVyc2lvbikgKHVpbnQzMl90IGNtZCk7CiB9OwpAQCAtNzIyLDYgKzcyMywxMSBAQCBzdGF0aWMg aW5saW5lIGludCB4c21fcG11X29wICh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgaW50CiAgICAgcmV0dXJuIHhzbV9vcHMtPnBtdV9vcChkLCBvcCk7CiB9CiAK K3N0YXRpYyBpbmxpbmUgaW50IHhzbV9kbV9vcCh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRv bWFpbiAqZCkKK3sKKyAgICByZXR1cm4geHNtX29wcy0+ZG1fb3AoZCk7Cit9CisKICNlbmRpZiAv KiBDT05GSUdfWDg2ICovCiAKIHN0YXRpYyBpbmxpbmUgaW50IHhzbV94ZW5fdmVyc2lvbiAoeHNt X2RlZmF1bHRfdCBkZWYsIHVpbnQzMl90IG9wKQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9o b29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDE3N2MxMWYuLjJlZDU4ODggMTAw NjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tz LmMKQEAgLTE2MzIsNiArMTYzMiwxMiBAQCBzdGF0aWMgaW50IGZsYXNrX3BtdV9vcCAoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IG9wKQogICAgICAgICByZXR1cm4gLUVQRVJNOwogICAg IH0KIH0KKworc3RhdGljIGludCBmbGFza19kbV9vcChzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0hWTSwgSFZNX19ETSk7Cit9CisK ICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCiAKIHN0YXRpYyBpbnQgZmxhc2tfeGVuX3ZlcnNpb24g KHVpbnQzMl90IG9wKQpAQCAtMTgxMSw2ICsxODE3LDcgQEAgc3RhdGljIHN0cnVjdCB4c21fb3Bl cmF0aW9ucyBmbGFza19vcHMgPSB7CiAgICAgLmlvcG9ydF9wZXJtaXNzaW9uID0gZmxhc2tfaW9w b3J0X3Blcm1pc3Npb24sCiAgICAgLmlvcG9ydF9tYXBwaW5nID0gZmxhc2tfaW9wb3J0X21hcHBp bmcsCiAgICAgLnBtdV9vcCA9IGZsYXNrX3BtdV9vcCwKKyAgICAuZG1fb3AgPSBmbGFza19kbV9v cCwKICNlbmRpZgogICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNrX3hlbl92ZXJzaW9uLAogfTsKLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==