From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Thu, 12 Jan 2017 14:58:33 +0000 Message-ID: <1484233120-2015-2-git-send-email-paul.durrant@citrix.com> References: <1484233120-2015-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 1cRgq2-0005UG-Eo for xen-devel@lists.xenproject.org; Thu, 12 Jan 2017 14:58:50 +0000 In-Reply-To: <1484233120-2015-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 , 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+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KCnYzOgotIFJlLXdyaXR0ZW4gbGFyZ2UgcG9ydGlvbnMgb2YgZG1vcC5t YXJrZG93biB0byByZW1vdmUgcmVmZXJlbmNlcyB0bwogIHByZXZpb3VzIHByb3Bvc2FscyBhbmQg bWFrZSBpdCBhIHN0YW5kYWxvbmUgZGVzaWduIGRvYy4KCnYyOgotIEFkZHJlc3NlZCBzZXZlcmFs IGNvbW1lbnRzIGZyb20gSmFuLgotIFJlbW92ZWQgbW9kaWZpY2F0aW9uIG9mIF9fWEVOX0xBVEVT VF9JTlRFUkZBQ0VfVkVSU0lPTl9fIGFzIGl0IGlzIG5vdAogIG5lZWRlZCBpbiB0aGlzIHBhdGNo LgotLS0KIGRvY3MvZGVzaWducy9kbW9wLm1hcmtkb3duICAgICAgICB8IDE1OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMv eGVuLmlmIHwgICAyICstCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgfCAgIDEg KwogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jICAgICAgICAgIHwgIDcwICsrKysrKysrKysrKysr KysrCiB0b29scy9saWJ4Yy94Y19wcml2YXRlLmggICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gv eDg2L2h2bS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAg ICAgICAgICAgICB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94 ODYvaHZtL2h2bS5jICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h5cGVyY2FsbC5j ICAgICAgICAgIHwgICAyICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCAgICB8ICA3 MSArKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3hlbi5oICAgICAgICAgIHwg ICAxICsKIHhlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCAgICAgICB8ICAgNyArKwogeGVuL2lu Y2x1ZGUveHNtL2R1bW15LmggICAgICAgICAgIHwgICA2ICsrCiB4ZW4vaW5jbHVkZS94c20veHNt LmggICAgICAgICAgICAgfCAgIDYgKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAg ICB8ICAgNyArKwogMTUgZmlsZXMgY2hhbmdlZCwgNDUyIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vZG0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAoKZGlmZiAtLWdpdCBhL2RvY3MvZGVzaWdu cy9kbW9wLm1hcmtkb3duIGIvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0YmQxNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mv ZGVzaWducy9kbW9wLm1hcmtkb3duCkBAIC0wLDAgKzEsMTU4IEBACitETU9QCis9PT09CisKK0lu dHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoZSBhaW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50 IGEgY29tcHJvbWlzZWQgZGV2aWNlIG1vZGVsIGZyb20gY29tcHJvbWlzaW5nCitkb21haW5zIG90 aGVyIHRoZW4gdGhlIG9uZSBpdCBpcyBhc3NvY2lhdGVkIHdpdGguIChBbmQgaXMgdGhlcmVmb3Jl IGxpa2VseQorYWxyZWFkeSBjb21wcm9taXNlZCkuCisKK1RoZSBwcm9ibGVtIG9jY3VycyB3aGVu IHlvdSBhIGRldmljZSBtb2RlbCBpc3N1ZXMgYW4gaHlwZXJjYWxsIHRoYXQKK2luY2x1ZGVzIHJl ZmVyZW5jZXMgdG8gdXNlciBtZW1vcnkgb3RoZXIgdGhhbiB0aGUgb3BlcmF0aW9uIHN0cnVjdHVy ZQoraXRzZWxmLCBzdWNoIGFzIHdpdGggVHJhY2sgZGlydHkgVlJBTSAoYXMgdXNlZCBpbiBWR0Eg ZW11bGF0aW9uKS4KK0lzIHRoaXMgY2FzZSwgdGhlIGFkZHJlc3Mgb2YgdGhpcyBvdGhlciB1c2Vy IG1lbW9yeSBuZWVkcyB0byBiZSB2ZXR0ZWQsCit0byBlbnN1cmUgaXQgaXMgbm90IHdpdGhpbiBy ZXN0cmljdGVkIGFkZHJlc3MgcmFuZ2VzLCBzdWNoIGFzIGtlcm5lbAorbWVtb3J5LiBUaGUgcmVh bCBwcm9ibGVtIGNvbWVzIGRvd24gdG8gaG93IHlvdSB3b3VsZCB2ZXQgdGhpcyBhZGRyZXNzIC0K K3RoZSBpZGVhIHBsYWNlIHRvIGRvIHRoaXMgaXMgd2l0aGluIHRoZSBwcml2Y21kIGRyaXZlciwg d2l0aG91dCBwcml2Y21kCitoYXZpbmcgdG8gaGF2ZSBzcGVjaWZpYyBrbm93bGVkZ2Ugb2YgdGhl IGh5cGVyY2FsbCdzIHNlbWFudGljcy4KKworVGhlIERlc2lnbgorLS0tLS0tLS0tLQorCitUaGUg cHJpdmNtZCBkcml2ZXIgaW1wbGVtZW50cyBhIG5ldyByZXN0cmljdGlvbiBpb2N0bCwgd2hpY2gg dGFrZXMgYSBkb21pZAorcGFyYW1ldGVyLiAgQWZ0ZXIgdGhhdCByZXN0cmljdGlvbiBpb2N0bCBp cyBpc3N1ZWQsIHRoZSBwcml2Y21kIGRyaXZlciB3aWxsCitwZXJtaXQgb25seSBETU9QIGh5cGVy Y2FsbHMsIGFuZCBvbmx5IHdpdGggdGhlIHNwZWNpZmllZCB0YXJnZXQgZG9taWQuCisKK0EgRE1P UCBoeXBlcmNhbGwgY29uc2lzdHMgb2YgYW4gYXJyYXkgb2YgYnVmZmVycyBhbmQgbGVuZ3Rocywg d2l0aCB0aGUKK2ZpcnN0IG9uZSBjb250YWluaW5nIHRoZSBzcGVjaWZpYyBETU9QIHBhcmFtZXRl cnMuIFRoZXNlIGNhbiB0aGVuIHJlZmVyZW5jZQorZnVydGhlciBidWZmZXJzIGZyb20gd2l0aGlu IGluIHRoZSBhcnJheS4gU2luY2UgdGhlIG9ubHkgdXNlciBidWZmZXJzCitwYXNzZWQgYXJlIHRo YXQgZm91bmQgd2l0aCB0aGF0IGFycmF5LCB0aGV5IGNhbiBhbGwgY2FuIGJlIGF1ZGl0ZWQgYnkK K3ByaXZjbWQuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlzIGlkZWE6CisK K3N0cnVjdCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0IHhlbl9k bV9vcF9idWYgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodm9pZCkgaDsKKyAgICB1aW50MzJf dCBzaXplOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9kbV9vcF9idWYgeGVuX2RtX29wX2J1Zl90 OworCitlbnVtIG5lZ19lcnJub3ZhbAorSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAor ICAgICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbnJfYnVmcykKKworQGRvbWlkIGlzIHRoZSBkb21haW4gdGhlIGh5cGVy Y2FsbCBvcGVyYXRlcyBvbi4KK0BidWZzIHBvaW50cyB0byBhbiBhcnJheSBvZiBidWZmZXJzIHdo ZXJlIEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0CitkbV9vcCwgZGVzY3JpYmluZyB0aGUgc3Bl Y2lmaWMgZGV2aWNlIG1vZGVsIG9wZXJhdGlvbiBhbmQgaXRzIHBhcmFtZXRlcnMuCitAYnVmc1sx Li5dIG1heSBiZSByZWZlcmVuY2VkIGluIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHVycG9zZXMg b2YKK3Bhc3NpbmcgZXh0cmEgaW5mb3JtYXRpb24gdG8gb3IgZnJvbSB0aGUgZG9tYWluLgorQG5y X2J1ZnMgaXMgdGhlIG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBAYnVmcyBhcnJheS4KKworSXQg aXMgZm9yYmlkZGVuIGZvciB0aGUgYWJvdmUgc3RydWN0ICh4ZW5fZG1fb3ApIHRvIGNvbnRhaW4g YW55IGd1ZXN0CitoYW5kbGVzLiBJZiB0aGV5IGFyZSBuZWVkZWQsIHRoZXkgc2hvdWxkIGluc3Rl YWQgYmUgaW4KK0hZUEVSVklTT1JfZG1fb3AtPmJ1ZnMuCisKK1ZhbGlkYXRpb24gYnkgcHJpdmNt ZCBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIHByaXZjbWQg ZHJpdmVyIGhhcyBiZWVuIHJlc3RyaWN0ZWQgdG8gc3BlY2lmaWMgZG9tYWluICh1c2luZyBhCisg bmV3IGlvY3RsKSwgd2hlbiBpdCByZWNlaXZlZCBhbiBvcCwgaXQgd2lsbDoKKworMS4gQ2hlY2sg aHlwZXJjYWxsIGlzIERNT1AuCisKKzIuIENoZWNrIGRvbWlkID09IHJlc3RyaWN0ZWQgZG9taWQu CisKKzMuIEZvciBlYWNoIEBucl9idWZzIGluIEBidWZzOiBDaGVjayBAaCBhbmQgQHNpemUgZ2l2 ZSBhIGJ1ZmZlcgorICAgd2hvbGx5IGluIHRoZSB1c2VyIHNwYWNlIHBhcnQgb2YgdGhlIHZpcnR1 YWwgYWRkcmVzcyBzcGFjZS4gKGUuZy4KKyAgIExpbnV4IHdpbGwgdXNlIGFjY2Vzc19vaygpKS4K KworCitYZW4gSW1wbGVtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBhIERN T1AgYnVmZmVycyBuZWVkIHRvIGJlIGNvcGllZCBmcm9tIG9yIHRvIHRoZSBndWVzdCwgZnVuY3Rp b25zIGZvcgorZG9pbmcgdGhpcyB3b3VsZCBiZSB3cml0dGVuIGFzIGJlbG93LiAgTm90ZSB0aGF0 IGNhcmUgaXMgdGFrZW4gdG8gcHJldmVudAorZGFtYWdlIGZyb20gYnVmZmVyIHVuZGVyLSBvciBv dmVyLXJ1biBzaXR1YXRpb25zLiAgSWYgdGhlIERNT1AgaXMgY2FsbGVkCit3aXRoIGluY29ycmVj dGx5IHNpemVkIGJ1ZmZlcnMsIHplcm9zIHdpbGwgYmUgcmVhZCwgd2hpbGUgZXh0cmEgaXMgaWdu b3JlZC4KKworc3RhdGljIGludCBnZXRfYnVmKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2Rt X29wX2J1Zl90KSBidWZzLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZz LCB1bnNpZ25lZCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3Bf YnVmICpidWYpCit7CisgICAgaWYgKCBpZHggPj0gbnJfYnVmcyApCisgICAgICAgIHJldHVybiAt RU5PRU5UOworCisgICAgcmV0dXJuIGNvcHlfZnJvbV9ndWVzdF9vZmZzZXQoYnVmLCBidWZzLCBp ZHgsIDEpID8gLUVGQVVMVCA6IDA7Cit9CisKK3N0YXRpYyBpbnQgY29weV9idWZfZnJvbV9ndWVz dChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdm9pZCAqZHN0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHNpemVfdCBk c3Rfc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiBidWY7CisgICAgc2l6ZV90IHNp emU7CisgICAgaW50IHJjOworCisgICAgbWVtc2V0KGRzdCwgMCwgZHN0X3NpemUpOworCisgICAg cmMgPSBnZXRfYnVmKGJ1ZnMsIG5yX2J1ZnMsIGlkeCwgJmJ1Zik7CisgICAgaWYgKCByYyApCisg ICAgICAgIHJldHVybiByYzsKKworICAgIHNpemUgPSBtaW5fdChzaXplX3QsIGRzdF9zaXplLCBi dWYuc2l6ZSk7CisKKyAgICByZXR1cm4gY29weV9mcm9tX2d1ZXN0KGRzdCwgYnVmLmgsIHNpemUp ID8gLUVGQVVMVCA6IDA7Cit9CisKK3N0YXRpYyBpbnQgY29weV9idWZfdG9fZ3Vlc3QoLi4uKQor eworICAgIC8qIFNpbWlsYXIgdG8gdGhlIGFib3ZlLCBleGNlcHQgY29weWluZyB0aGUgdGhlIG90 aGVyCisgICAgICAgZGlyZWN0aW9uLiAqLworfQorCitUaGlzIGxlYXZlcyBkb19kbV9vcCBlYXN5 IHRvIGltcGxlbWVudCBhcyBiZWxvdzoKKworbG9uZyBkb19kbV9vcChkb21pZF90IGRvbWlkLAor ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpCit7CisgICAgc3RydWN0IGRv bWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIGxvbmcgcmM7CisKKyAgICBy YyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsKKyAgICBpZiAoIHJj ICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9t YWluKGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9kbV9vcChYU01fRE1f UFJJViwgZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBj b3B5X2J1Zl9mcm9tX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsICZvcCwgMCwgc2l6ZW9mKG9wKSk7Cisg ICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3dpdGNoICggb3Aub3AgKQor ICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICBi cmVhazsKKyAgICB9CisKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0gY29weV9idWZfdG9f Z3Vlc3QoYnVmcywgbnJfYnVmcywgMCwgJm9wLCBzaXplb2Yob3ApKTsKKworIG91dDoKKyAgICBy Y3VfdW5sb2NrX2RvbWFpbihkKTsKKworICAgIHJldHVybiByYzsKK30KZGlmZiAtLWdpdCBhL3Rv b2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZiBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1 bGVzL3hlbi5pZgppbmRleCAxYWNhNzVkLi5mOTI1NGMyIDEwMDY0NAotLS0gYS90b29scy9mbGFz ay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKKysrIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMv eGVuLmlmCkBAIC0xNTEsNyArMTUxLDcgQEAgZGVmaW5lKGBkZXZpY2VfbW9kZWwnLCBgCiAKIAlh bGxvdyAkMSAkMl90YXJnZXQ6ZG9tYWluIHsgZ2V0ZG9tYWluaW5mbyBzaHV0ZG93biB9OwogCWFs bG93ICQxICQyX3RhcmdldDptbXUgeyBtYXBfcmVhZCBtYXBfd3JpdGUgYWRqdXN0IHBoeXNtYXAg dGFyZ2V0X2hhY2sgfTsKLQlhbGxvdyAkMSAkMl90YXJnZXQ6aHZtIHsgZ2V0cGFyYW0gc2V0cGFy YW0gdHJhY2tkaXJ0eXZyYW0gaHZtY3RsIGlycWxldmVsIHBjaXJvdXRlIHBjaWxldmVsIGNhY2hl YXR0ciBzZW5kX2lycSB9OworCWFsbG93ICQxICQyX3RhcmdldDpodm0geyBnZXRwYXJhbSBzZXRw YXJhbSB0cmFja2RpcnR5dnJhbSBodm1jdGwgaXJxbGV2ZWwgcGNpcm91dGUgcGNpbGV2ZWwgY2Fj aGVhdHRyIHNlbmRfaXJxIGRtIH07CiAnKQogCiAjIG1ha2VfZGV2aWNlX21vZGVsKHByaXYsIGRt X2RvbSwgaHZtX2RvbSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o IGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggNGFiMGY1Ny4uMmJhNDZkNyAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx4ZW4vc2No ZWQuaD4KICNpbmNsdWRlIDx4ZW4vbWVtb3J5Lmg+CiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxl Lmg+CisjaW5jbHVkZSA8eGVuL2h2bS9kbV9vcC5oPgogI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1z Lmg+CiAjaW5jbHVkZSA8eGVuL3hzbS9mbGFza19vcC5oPgogI2luY2x1ZGUgPHhlbi90bWVtLmg+ CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmMgYi90b29scy9saWJ4Yy94Y19w cml2YXRlLmMKaW5kZXggZDU3YzM5YS4uOGU0OTYzNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMv eGNfcHJpdmF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwpAQCAtNzc2LDYgKzc3 Niw3NiBAQCBpbnQgeGNfZmZzNjQodWludDY0X3QgeCkKICAgICByZXR1cm4gbCA/IHhjX2ZmczMy KGwpIDogaCA/IHhjX2ZmczMyKGgpICsgMzIgOiAwOwogfQogCitpbnQgZG9fZG1fb3AoeGNfaW50 ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGludCBucl9idWZzLCAuLi4pCit7 CisgICAgaW50IHJldCA9IC0xOworICAgIHN0cnVjdCAgeworICAgICAgICB2b2lkICp1OworICAg ICAgICB2b2lkICpoOworICAgIH0gKmJvdW5jZTsKKyAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZG RVIoeGVuX2RtX29wX2J1Zl90LCBidWZzKTsKKyAgICB2YV9saXN0IGFyZ3M7CisgICAgdW5zaWdu ZWQgaW50IGlkeDsKKworICAgIGJvdW5jZSA9IGNhbGxvYyhucl9idWZzLCBzaXplb2YoKmJvdW5j ZSkpOworICAgIGlmICggYm91bmNlID09IE5VTEwgKQorICAgICAgICBnb3RvIGZhaWwxOworCisg ICAgYnVmcyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBidWZzLCBzaXplb2YoKmJ1 ZnMpICogbnJfYnVmcyk7CisgICAgaWYgKCBidWZzID09IE5VTEwgKQorICAgICAgICBnb3RvIGZh aWwyOworCisgICAgdmFfc3RhcnQoYXJncywgbnJfYnVmcyk7CisgICAgZm9yIChpZHggPSAwOyBp ZHggPCBucl9idWZzOyBpZHgrKykKKyAgICB7CisgICAgICAgIHZvaWQgKnUgPSB2YV9hcmcoYXJn cywgdm9pZCAqKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB2YV9hcmcoYXJncywgc2l6ZV90KTsK KworICAgICAgICBib3VuY2VbaWR4XS5oID0geGVuY2FsbF9hbGxvY19idWZmZXIoeGNoLT54Y2Fs bCwgc2l6ZSk7CisgICAgICAgIGlmICggYm91bmNlW2lkeF0uaCA9PSBOVUxMICkKKyAgICAgICAg ICAgIGdvdG8gZmFpbDM7CisKKyAgICAgICAgbWVtY3B5KGJvdW5jZVtpZHhdLmgsIHUsIHNpemUp OworICAgICAgICBib3VuY2VbaWR4XS51ID0gdTsKKworICAgICAgICBzZXRfeGVuX2d1ZXN0X2hh bmRsZV9yYXcoYnVmc1tpZHhdLmgsIGJvdW5jZVtpZHhdLmgpOworICAgICAgICBidWZzW2lkeF0u c2l6ZSA9IHNpemU7CisgICAgfQorICAgIHZhX2VuZChhcmdzKTsKKworICAgIHJldCA9IHhlbmNh bGwzKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9kbV9vcCwKKyAgICAgICAgICAgICAgICAgICBk b21pZCwgbnJfYnVmcywgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYnVmcykpOworICAgIGlmICgg cmV0IDwgMCApCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyAgICB3aGlsZSAoIGlkeC0tICE9IDAg KQorICAgIHsKKyAgICAgICAgbWVtY3B5KGJvdW5jZVtpZHhdLnUsIGJvdW5jZVtpZHhdLmgsIGJ1 ZnNbaWR4XS5zaXplKTsKKyAgICAgICAgeGVuY2FsbF9mcmVlX2J1ZmZlcih4Y2gtPnhjYWxsLCBi b3VuY2VbaWR4XS5oKTsKKyAgICB9CisKKyAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNo LCBidWZzKTsKKworICAgIGZyZWUoYm91bmNlKTsKKworICAgIHJldHVybiAwOworCisgZmFpbDQ6 CisgICAgaWR4ID0gbnJfYnVmczsKKworIGZhaWwzOgorICAgIHdoaWxlICggaWR4LS0gIT0gMCAp CisgICAgICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoeGNoLT54Y2FsbCwgYm91bmNlW2lkeF0uaCk7 CisKKyAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBidWZzKTsKKworIGZhaWwyOgor ICAgIGZyZWUoYm91bmNlKTsKKworIGZhaWwxOgorICAgIHJldHVybiByZXQ7Cit9CisKIC8qCiAg KiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94 Y19wcml2YXRlLmggYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKaW5kZXggOTc0NDVhZS4uZjE5 MTMyMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCisrKyBiL3Rvb2xzL2xp YnhjL3hjX3ByaXZhdGUuaApAQCAtNDIyLDYgKzQyMiw4IEBAIGludCB4Y192bV9ldmVudF9jb250 cm9sKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWFpbl9pZCwgdW5zaWduZWQgaW50IG9w LAogdm9pZCAqeGNfdm1fZXZlbnRfZW5hYmxlKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRv bWFpbl9pZCwgaW50IHBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpw b3J0KTsKIAoraW50IGRvX2RtX29wKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLCB1 bnNpZ25lZCBpbnQgbnJfYnVmcywgLi4uKTsKKwogI2VuZGlmIC8qIF9fWENfUFJJVkFURV9IX18g Ki8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUgYi94ZW4vYXJj aC94ODYvaHZtL01ha2VmaWxlCmluZGV4IGY3NTBkMTMuLjU4NjlkMWIgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQpA QCAtMiw2ICsyLDcgQEAgc3ViZGlyLXkgKz0gc3ZtCiBzdWJkaXIteSArPSB2bXgKIAogb2JqLXkg Kz0gYXNpZC5vCitvYmoteSArPSBkbS5vCiBvYmoteSArPSBlbXVsYXRlLm8KIG9iai15ICs9IGhw ZXQubwogb2JqLXkgKz0gaHZtLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBi L3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45MDUxMGI4Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCkBAIC0w LDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IENpdHJpeCBTeXN0ZW1zIElu Yy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUg PHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVk ZSA8eGVuL3NjaGVkLmg+CisKKyNpbmNsdWRlIDxhc20vaHZtL2lvcmVxLmg+CisKKyNpbmNsdWRl IDx4c20veHNtLmg+CisKK3N0YXRpYyBpbnQgZ2V0X2J1ZihYRU5fR1VFU1RfSEFORExFX1BBUkFN KHhlbl9kbV9vcF9idWZfdCkgYnVmcywKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bnJfYnVmcywgdW5zaWduZWQgaW50IGlkeCwKKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVu X2RtX29wX2J1ZiAqYnVmKQoreworICAgIGlmICggaWR4ID49IG5yX2J1ZnMgKQorICAgICAgICBy ZXR1cm4gLUVOT0VOVDsKKworICAgIHJldHVybiBjb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0KGJ1Ziwg YnVmcywgaWR4LCAxKSA/IC1FRkFVTFQgOiAwOworfQorCitzdGF0aWMgaW50IGNvcHlfYnVmX2Zy b21fZ3Vlc3QoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHZvaWQg KmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4LCBz aXplX3QgZHN0X3NpemUpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgYnVmOworICAgIHNp emVfdCBzaXplOworICAgIGludCByYzsKKworICAgIG1lbXNldChkc3QsIDAsIGRzdF9zaXplKTsK KworICAgIHJjID0gZ2V0X2J1ZihidWZzLCBucl9idWZzLCBpZHgsICZidWYpOworICAgIGlmICgg cmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBzaXplID0gbWluX3Qoc2l6ZV90LCBkc3Rf c2l6ZSwgYnVmLnNpemUpOworCisgICAgcmV0dXJuIGNvcHlfZnJvbV9ndWVzdChkc3QsIGJ1Zi5o LCBzaXplKSA/IC1FRkFVTFQgOiAwOworfQorCitzdGF0aWMgaW50IGNvcHlfYnVmX3RvX2d1ZXN0 KFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdW5zaWduZWQgaW50IGlk eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3Np emUpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgYnVmOworICAgIHNpemVfdCBzaXplOwor ICAgIGludCByYzsKKworICAgIHJjID0gZ2V0X2J1ZihidWZzLCBucl9idWZzLCBpZHgsICZidWYp OworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBzaXplID0gbWluX3Qo c2l6ZV90LCBidWYuc2l6ZSwgc3JjX3NpemUpOworCisgICAgcmV0dXJuIGNvcHlfdG9fZ3Vlc3Qo YnVmLmgsIHNyYywgc2l6ZSkgPyAtRUZBVUxUIDogMDsKK30KKworbG9uZyBkb19kbV9vcChkb21p ZF90IGRvbWlkLAorICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAg ICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpCit7Cisg ICAgc3RydWN0IGRvbWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIGxvbmcg cmM7CisKKyAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsK KyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhaGFzX2h2bV9j b250YWluZXJfZG9tYWluKGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9k bV9vcChYU01fRE1fUFJJViwgZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0Owor CisgICAgcmMgPSBjb3B5X2J1Zl9mcm9tX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsICZvcCwgMCwgc2l6 ZW9mKG9wKSk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3dpdGNo ICggb3Aub3AgKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQ OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0g Y29weV9idWZfdG9fZ3Vlc3QoYnVmcywgbnJfYnVmcywgMCwgJm9wLCBzaXplb2Yob3ApKTsKKwor IG91dDoKKyAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKKworICAgIHJldHVybiByYzsKK30KKwor LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz LW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCA5Zjc0MzM0Li5mMzYyYTQyIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMKQEAgLTQyMzQsNiArNDIzNCw3IEBAIHN0YXRpYyBjb25zdCBoeXBlcmNhbGxfdGFibGVfdCBo dm1faHlwZXJjYWxsX3RhYmxlW10gPSB7CiAgICAgQ09NUEFUX0NBTEwocGxhdGZvcm1fb3ApLAog ICAgIENPTVBBVF9DQUxMKG1tdWV4dF9vcCksCiAgICAgSFlQRVJDQUxMKHhlbnBtdV9vcCksCisg ICAgSFlQRVJDQUxMKGRtX29wKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKQogfTsKIApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5j CmluZGV4IDcwYTMwYTUuLmZiNTgyZDEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNh bGwuYworKysgYi94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMKQEAgLTY2LDYgKzY2LDcgQEAgY29u c3QgaHlwZXJjYWxsX2FyZ3NfdCBoeXBlcmNhbGxfYXJnc190YWJsZVtOUl9oeXBlcmNhbGxzXSA9 CiAgICAgQVJHUyhrZXhlY19vcCwgMiksCiAgICAgQVJHUyh0bWVtX29wLCAxKSwKICAgICBBUkdT KHhlbnBtdV9vcCwgMiksCisgICAgQVJHUyhkbV9vcCwgMyksCiAgICAgQVJHUyhtY2EsIDEpLAog ICAgIEFSR1MoYXJjaF8xLCAxKSwKIH07CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RhdGljIGNvbnN0 IGh5cGVyY2FsbF90YWJsZV90IHB2X2h5cGVyY2FsbF90YWJsZVtdID0gewogICAgIEhZUEVSQ0FM TCh0bWVtX29wKSwKICNlbmRpZgogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAorICAgIEhZUEVS Q0FMTChkbV9vcCksCiAgICAgSFlQRVJDQUxMKG1jYSksCiAgICAgSFlQRVJDQUxMKGFyY2hfMSks CiB9OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oIGIveGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmY4YjQ5NDEKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2Rt X29wLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiwgQ2l0cml4 IFN5c3RlbXMgSW5jCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks IHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19I Vk1fRE1fT1BfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fRE1fT1BfSF9fCisKKyNpZiBk ZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykKKworI2luY2x1ZGUgIi4u L3hlbi5oIgorCisjZGVmaW5lIFhFTl9ETU9QX2ludmFsaWQgMAorCitzdHJ1Y3QgeGVuX2RtX29w IHsKKyAgICB1aW50MzJfdCBvcDsKK307CisKK3N0cnVjdCB4ZW5fZG1fb3BfYnVmIHsKKyAgICBY RU5fR1VFU1RfSEFORExFXzY0KHZvaWQpIGg7CisgICAgdWludDMyX3Qgc2l6ZTsKK307Cit0eXBl ZGVmIHN0cnVjdCB4ZW5fZG1fb3BfYnVmIHhlbl9kbV9vcF9idWZfdDsKK0RFRklORV9YRU5fR1VF U1RfSEFORExFKHhlbl9kbV9vcF9idWZfdCk7CisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwKKyAq IGAgSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAorICogYCAgICAgICAgICAgICAgICAg IHhlbl9kbV9vcF9idWZfdCBidWZzW10sCisgKiBgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG5yX2J1ZnMpCisgKiBgCisgKgorICogQGRvbWlkIGlzIHRoZSBkb21haW4gdGhlIGh5cGVy Y2FsbCBvcGVyYXRlcyBvbi4KKyAqIEBidWZzIHBvaW50cyB0byBhbiBhcnJheSBvZiBidWZmZXJz IHdoZXJlIEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0CisgKiB4ZW5fZG1fb3AsIGRlc2NyaWJp bmcgdGhlIHNwZWNpZmljIGRldmljZSBtb2RlbCBvcGVyYXRpb24gYW5kIGl0cworICogcGFyYW1l dGVycy4KKyAqIEBidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMg Zm9yIHRoZSBwdXJwb3NlcyBvZgorICogcGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBm cm9tIHRoZSBkb21haW4uCisgKiBAbnJfYnVmcyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4g dGhlIEBidWZzIGFycmF5LgorICovCisKKyNlbmRpZiAvKiBfX1hFTl9fIHx8IF9fWEVOX1RPT0xT X18gKi8KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fRE1fT1BfSF9fICovCisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5o IGIveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCmluZGV4IDY1OTMwMjYuLjkxYmE4YmIgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv eGVuLmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxv bmdfdCk7CiAjZGVmaW5lIF9fSFlQRVJWSVNPUl90bWVtX29wICAgICAgICAgICAgICAzOAogI2Rl ZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9y IFhlbkNsaWVudCAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfeGVucG11X29wICAgICAgICAgICAg NDAKKyNkZWZpbmUgX19IWVBFUlZJU09SX2RtX29wICAgICAgICAgICAgICAgIDQxCiAKIC8qIEFy Y2hpdGVjdHVyZS1zcGVjaWZpYyBoeXBlcmNhbGwgZGVmaW5pdGlvbnMuICovCiAjZGVmaW5lIF9f SFlQRVJWSVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL2h5cGVyY2FsbC5oIGIveGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCmluZGV4IDIw N2EwZTguLmZlZTc4ZjcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNs dWRlIDxwdWJsaWMvdG1lbS5oPgogI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+CiAjaW5jbHVk ZSA8cHVibGljL3BtdS5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KICNpbmNsdWRl IDxhc20vaHlwZXJjYWxsLmg+CiAjaW5jbHVkZSA8eHNtL3hzbS5oPgogCkBAIC0xNDEsNiArMTQy LDEyIEBAIGRvX3hlbm9wcm9mX29wKGludCBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lk KSBhcmcpOwogZXh0ZXJuIGxvbmcKIGRvX3hlbnBtdV9vcCh1bnNpZ25lZCBpbnQgb3AsIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0oeGVuX3BtdV9wYXJhbXNfdCkgYXJnKTsKIAorZXh0ZXJuIGxvbmcK K2RvX2RtX29wKAorICAgIGRvbWlkX3QgZG9taWQsCisgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMs CisgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpOworCiAj aWZkZWYgQ09ORklHX0NPTVBBVAogCiBleHRlcm4gaW50CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94c20vZHVtbXkuaCBiL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCmluZGV4IDk1NDYwYWYuLmIy MDZmNWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCisrKyBiL3hlbi9pbmNs dWRlL3hzbS9kdW1teS5oCkBAIC03MjcsNiArNzI3LDEyIEBAIHN0YXRpYyBYU01fSU5MSU5FIGlu dCB4c21fcG11X29wIChYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg aW50CiAgICAgfQogfQogCitzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2RtX29wKFhTTV9ERUZB VUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIFhTTV9BU1NFUlRfQUNUSU9OKFhTTV9E TV9QUklWKTsKKyAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0aW9uKGFjdGlvbiwgY3VycmVudC0+ ZG9tYWluLCBkKTsKK30KKwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAogI2luY2x1ZGUgPHB1 YmxpYy92ZXJzaW9uLmg+CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20veHNtLmggYi94ZW4v aW5jbHVkZS94c20veHNtLmgKaW5kZXggNWRjNTlkZC4uZTJkMzM2ZiAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUveHNtL3hzbS5oCisrKyBiL3hlbi9pbmNsdWRlL3hzbS94c20uaApAQCAtMTg0LDYg KzE4NCw3IEBAIHN0cnVjdCB4c21fb3BlcmF0aW9ucyB7CiAgICAgaW50ICgqaW9wb3J0X3Blcm1p c3Npb24pIChzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBzLCB1aW50MzJfdCBlLCB1aW50OF90 IGFsbG93KTsKICAgICBpbnQgKCppb3BvcnRfbWFwcGluZykgKHN0cnVjdCBkb21haW4gKmQsIHVp bnQzMl90IHMsIHVpbnQzMl90IGUsIHVpbnQ4X3QgYWxsb3cpOwogICAgIGludCAoKnBtdV9vcCkg KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBvcCk7CisgICAgaW50ICgqZG1fb3ApIChz dHJ1Y3QgZG9tYWluICpkKTsKICNlbmRpZgogICAgIGludCAoKnhlbl92ZXJzaW9uKSAodWludDMy X3QgY21kKTsKIH07CkBAIC03MjIsNiArNzIzLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IHhzbV9w bXVfb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQK ICAgICByZXR1cm4geHNtX29wcy0+cG11X29wKGQsIG9wKTsKIH0KIAorc3RhdGljIGlubGluZSBp bnQgeHNtX2RtX29wKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHJldHVybiB4c21fb3BzLT5kbV9vcChkKTsKK30KKwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8K IAogc3RhdGljIGlubGluZSBpbnQgeHNtX3hlbl92ZXJzaW9uICh4c21fZGVmYXVsdF90IGRlZiwg dWludDMyX3Qgb3ApCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNt L2ZsYXNrL2hvb2tzLmMKaW5kZXggMDQwYTI1MS4uMzgzZGQ0ZiAxMDA2NDQKLS0tIGEveGVuL3hz bS9mbGFzay9ob29rcy5jCisrKyBiL3hlbi94c20vZmxhc2svaG9va3MuYwpAQCAtMTYzNSw2ICsx NjM1LDEyIEBAIHN0YXRpYyBpbnQgZmxhc2tfcG11X29wIChzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgb3ApCiAgICAgICAgIHJldHVybiAtRVBFUk07CiAgICAgfQogfQorCitzdGF0aWMg aW50IGZsYXNrX2RtX29wKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgcmV0dXJuIGN1cnJlbnRf aGFzX3Blcm0oZCwgU0VDQ0xBU1NfSFZNLCBIVk1fX0RNKTsKK30KKwogI2VuZGlmIC8qIENPTkZJ R19YODYgKi8KIAogc3RhdGljIGludCBmbGFza194ZW5fdmVyc2lvbiAodWludDMyX3Qgb3ApCkBA IC0xODE0LDYgKzE4MjAsNyBAQCBzdGF0aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29w cyA9IHsKICAgICAuaW9wb3J0X3Blcm1pc3Npb24gPSBmbGFza19pb3BvcnRfcGVybWlzc2lvbiwK ICAgICAuaW9wb3J0X21hcHBpbmcgPSBmbGFza19pb3BvcnRfbWFwcGluZywKICAgICAucG11X29w ID0gZmxhc2tfcG11X29wLAorICAgIC5kbV9vcCA9IGZsYXNrX2RtX29wLAogI2VuZGlmCiAgICAg Lnhlbl92ZXJzaW9uID0gZmxhc2tfeGVuX3ZlcnNpb24sCiB9OwotLSAKMi4xLjQKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK