From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Tue, 17 Jan 2017 17:29:49 +0000 Message-ID: <1484674196-19951-2-git-send-email-paul.durrant@citrix.com> References: <1484674196-19951-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 1cTXa8-0000bE-1t for xen-devel@lists.xenproject.org; Tue, 17 Jan 2017 17:30:04 +0000 In-Reply-To: <1484674196-19951-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 LmNvbT4KCnY0OgotIENoYW5nZSBYRU5fR1VFU1RfSEFORExFXzY0IHRvIFhFTl9HVUVTVF9IQU5E TEUgaW4gc3RydWN0IHhlbl9kbV9vcF9idWYKICBhbmQgYWRkIHRoZSBuZWNlc3NhcnkgY29tcGF0 IGNvZGUuIERyb3AgSmFuJ3MgUi1iIHNpbmNlIHRoZSBwYXRjaCBoYXMKICBiZWVuIGZ1bmRhbWVu dGFsbHkgbW9kaWZpZWQuCgp2MzoKLSBSZS13cml0dGVuIGxhcmdlIHBvcnRpb25zIG9mIGRtb3Au bWFya2Rvd24gdG8gcmVtb3ZlIHJlZmVyZW5jZXMgdG8KICBwcmV2aW91cyBwcm9wb3NhbHMgYW5k IG1ha2UgaXQgYSBzdGFuZGFsb25lIGRlc2lnbiBkb2MuCgp2MjoKLSBBZGRyZXNzZWQgc2V2ZXJh bCBjb21tZW50cyBmcm9tIEphbi4KLSBSZW1vdmVkIG1vZGlmaWNhdGlvbiBvZiBfX1hFTl9MQVRF U1RfSU5URVJGQUNFX1ZFUlNJT05fXyBhcyBpdCBpcyBub3QKICBuZWVkZWQgaW4gdGhpcyBwYXRj aC4KLS0tCiBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93biAgICAgICAgfCAxNjUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVz L3hlbi5pZiB8ICAgMiArLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggICAgIHwgICAx ICsKIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYyAgICAgICAgICB8ICA3MCArKysrKysrKysrKysr KysrCiB0b29scy9saWJ4Yy94Y19wcml2YXRlLmggICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gv eDg2L2h2bS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAg ICAgICAgICAgICB8IDE0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v YXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h5cGVy Y2FsbC5jICAgICAgICAgIHwgICAyICsKIHhlbi9pbmNsdWRlL01ha2VmaWxlICAgICAgICAgICAg ICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggICAgfCAgNzEgKysrKysr KysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3hlbi5oICAgICAgICAgIHwgICAxICsKIHhl bi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCAgICAgICB8ICAxNSArKysrCiB4ZW4vaW5jbHVkZS94 bGF0LmxzdCAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUveHNtL2R1bW15LmggICAg ICAgICAgIHwgICA2ICsrCiB4ZW4vaW5jbHVkZS94c20veHNtLmggICAgICAgICAgICAgfCAgIDYg KysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgICB8ICAgNyArKwogMTcgZmlsZXMg Y2hhbmdlZCwgNTAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9h cmNoL3g4Ni9odm0vZG0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9o dm0vZG1fb3AuaAoKZGlmZiAtLWdpdCBhL2RvY3MvZGVzaWducy9kbW9wLm1hcmtkb3duIGIvZG9j cy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOWYyZjBkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZGVzaWducy9kbW9wLm1hcmtkb3du CkBAIC0wLDAgKzEsMTY1IEBACitETU9QCis9PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0t LS0tCisKK1RoZSBhaW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50IGEgY29tcHJvbWlzZWQgZGV2aWNl IG1vZGVsIGZyb20gY29tcHJvbWlzaW5nCitkb21haW5zIG90aGVyIHRoZW4gdGhlIG9uZSBpdCBp cyBhc3NvY2lhdGVkIHdpdGguIChBbmQgaXMgdGhlcmVmb3JlIGxpa2VseQorYWxyZWFkeSBjb21w cm9taXNlZCkuCisKK1RoZSBwcm9ibGVtIG9jY3VycyB3aGVuIHlvdSBhIGRldmljZSBtb2RlbCBp c3N1ZXMgYW4gaHlwZXJjYWxsIHRoYXQKK2luY2x1ZGVzIHJlZmVyZW5jZXMgdG8gdXNlciBtZW1v cnkgb3RoZXIgdGhhbiB0aGUgb3BlcmF0aW9uIHN0cnVjdHVyZQoraXRzZWxmLCBzdWNoIGFzIHdp dGggVHJhY2sgZGlydHkgVlJBTSAoYXMgdXNlZCBpbiBWR0EgZW11bGF0aW9uKS4KK0lzIHRoaXMg Y2FzZSwgdGhlIGFkZHJlc3Mgb2YgdGhpcyBvdGhlciB1c2VyIG1lbW9yeSBuZWVkcyB0byBiZSB2 ZXR0ZWQsCit0byBlbnN1cmUgaXQgaXMgbm90IHdpdGhpbiByZXN0cmljdGVkIGFkZHJlc3MgcmFu Z2VzLCBzdWNoIGFzIGtlcm5lbAorbWVtb3J5LiBUaGUgcmVhbCBwcm9ibGVtIGNvbWVzIGRvd24g dG8gaG93IHlvdSB3b3VsZCB2ZXQgdGhpcyBhZGRyZXNzIC0KK3RoZSBpZGVhIHBsYWNlIHRvIGRv IHRoaXMgaXMgd2l0aGluIHRoZSBwcml2Y21kIGRyaXZlciwgd2l0aG91dCBwcml2Y21kCitoYXZp bmcgdG8gaGF2ZSBzcGVjaWZpYyBrbm93bGVkZ2Ugb2YgdGhlIGh5cGVyY2FsbCdzIHNlbWFudGlj cy4KKworVGhlIERlc2lnbgorLS0tLS0tLS0tLQorCitUaGUgcHJpdmNtZCBkcml2ZXIgaW1wbGVt ZW50cyBhIG5ldyByZXN0cmljdGlvbiBpb2N0bCwgd2hpY2ggdGFrZXMgYSBkb21pZAorcGFyYW1l dGVyLiAgQWZ0ZXIgdGhhdCByZXN0cmljdGlvbiBpb2N0bCBpcyBpc3N1ZWQsIHRoZSBwcml2Y21k IGRyaXZlciB3aWxsCitwZXJtaXQgb25seSBETU9QIGh5cGVyY2FsbHMsIGFuZCBvbmx5IHdpdGgg dGhlIHNwZWNpZmllZCB0YXJnZXQgZG9taWQuCisKK0EgRE1PUCBoeXBlcmNhbGwgY29uc2lzdHMg b2YgYW4gYXJyYXkgb2YgYnVmZmVycyBhbmQgbGVuZ3Rocywgd2l0aCB0aGUKK2ZpcnN0IG9uZSBj b250YWluaW5nIHRoZSBzcGVjaWZpYyBETU9QIHBhcmFtZXRlcnMuIFRoZXNlIGNhbiB0aGVuIHJl ZmVyZW5jZQorZnVydGhlciBidWZmZXJzIGZyb20gd2l0aGluIGluIHRoZSBhcnJheS4gU2luY2Ug dGhlIG9ubHkgdXNlciBidWZmZXJzCitwYXNzZWQgYXJlIHRoYXQgZm91bmQgd2l0aCB0aGF0IGFy cmF5LCB0aGV5IGNhbiBhbGwgY2FuIGJlIGF1ZGl0ZWQgYnkKK3ByaXZjbWQuCisKK1RoZSBmb2xs b3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlzIGlkZWE6CisKK3N0cnVjdCB4ZW5fZG1fb3Agewor ICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0IHhlbl9kbV9vcF9idWYgeworICAgIFhFTl9H VUVTVF9IQU5ETEUodm9pZCkgaDsKKyAgICB1bnNpZ25lZCBsb25nIHNpemU7Cit9OwordHlwZWRl ZiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB4ZW5fZG1fb3BfYnVmX3Q7CisKK2VudW0gbmVnX2Vycm5v dmFsCitIWVBFUlZJU09SX2RtX29wKGRvbWlkX3QgZG9taWQsCisgICAgICAgICAgICAgICAgIHhl bl9kbV9vcF9idWZfdCBidWZzW10sCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9i dWZzKQorCitAZG9taWQgaXMgdGhlIGRvbWFpbiB0aGUgaHlwZXJjYWxsIG9wZXJhdGVzIG9uLgor QGJ1ZnMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGJ1ZmZlcnMgd2hlcmUgQGJ1ZnNbMF0gY29udGFp bnMgYSBzdHJ1Y3QKK2RtX29wLCBkZXNjcmliaW5nIHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwg b3BlcmF0aW9uIGFuZCBpdHMgcGFyYW1ldGVycy4KK0BidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5j ZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBvZgorcGFzc2luZyBleHRyYSBp bmZvcm1hdGlvbiB0byBvciBmcm9tIHRoZSBkb21haW4uCitAbnJfYnVmcyBpcyB0aGUgbnVtYmVy IG9mIGJ1ZmZlcnMgaW4gdGhlIEBidWZzIGFycmF5LgorCitJdCBpcyBmb3JiaWRkZW4gZm9yIHRo ZSBhYm92ZSBzdHJ1Y3QgKHhlbl9kbV9vcCkgdG8gY29udGFpbiBhbnkgZ3Vlc3QKK2hhbmRsZXMu IElmIHRoZXkgYXJlIG5lZWRlZCwgdGhleSBzaG91bGQgaW5zdGVhZCBiZSBpbgorSFlQRVJWSVNP Ul9kbV9vcC0+YnVmcy4KKworVmFsaWRhdGlvbiBieSBwcml2Y21kIGRyaXZlcgorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgcHJpdmNtZCBkcml2ZXIgaGFzIGJlZW4gcmVz dHJpY3RlZCB0byBzcGVjaWZpYyBkb21haW4gKHVzaW5nIGEKKyBuZXcgaW9jdGwpLCB3aGVuIGl0 IHJlY2VpdmVkIGFuIG9wLCBpdCB3aWxsOgorCisxLiBDaGVjayBoeXBlcmNhbGwgaXMgRE1PUC4K KworMi4gQ2hlY2sgZG9taWQgPT0gcmVzdHJpY3RlZCBkb21pZC4KKworMy4gRm9yIGVhY2ggQG5y X2J1ZnMgaW4gQGJ1ZnM6IENoZWNrIEBoIGFuZCBAc2l6ZSBnaXZlIGEgYnVmZmVyCisgICB3aG9s bHkgaW4gdGhlIHVzZXIgc3BhY2UgcGFydCBvZiB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiAo ZS5nLgorICAgTGludXggd2lsbCB1c2UgYWNjZXNzX29rKCkpLgorCisKK1hlbiBJbXBsZW1lbnRh dGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NpbmNlIGEgRE1PUCBidWZmZXJzIG5lZWQgdG8g YmUgY29waWVkIGZyb20gb3IgdG8gdGhlIGd1ZXN0LCBmdW5jdGlvbnMgZm9yCitkb2luZyB0aGlz IHdvdWxkIGJlIHdyaXR0ZW4gYXMgYmVsb3cuICBOb3RlIHRoYXQgY2FyZSBpcyB0YWtlbiB0byBw cmV2ZW50CitkYW1hZ2UgZnJvbSBidWZmZXIgdW5kZXItIG9yIG92ZXItcnVuIHNpdHVhdGlvbnMu ICBJZiB0aGUgRE1PUCBpcyBjYWxsZWQKK3dpdGggaW5jb3JyZWN0bHkgc2l6ZWQgYnVmZmVycywg emVyb3Mgd2lsbCBiZSByZWFkLCB3aGlsZSBleHRyYSBpcyBpZ25vcmVkLgorCitzdGF0aWMgYm9v bCBjb3B5X2J1Zl9mcm9tX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBidWZzW10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLCB2b2lkICpkc3QsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpZHgsIHNpemVfdCBk c3Rfc2l6ZSkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1pbl90KHNpemVfdCwgZHN0X3NpemUsIGJ1 ZnNbaWR4XS5zaXplKTsKKworICAgIHJldHVybiAhY29weV9mcm9tX2d1ZXN0KGRzdCwgYnVmc1tp ZHhdLmgsIHNpemUpOworfQorCitzdGF0aWMgYm9vbCBjb3B5X2J1Zl90b19ndWVzdCh4ZW5fZG1f b3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG5yX2J1ZnMsIHVuc2lnbmVkIGludCBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICpzcmMsIHNpemVfdCBzcmNfc2l6ZSkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1p bl90KHNpemVfdCwgYnVmc1tpZHhdLnNpemUsIHNyY19zaXplKTsKKworICAgIHJldHVybiAhY29w eV90b19ndWVzdChidWZzW2lkeF0uaCwgc3JjLCBzaXplKTsKK30KKworVGhpcyBsZWF2ZXMgZG9f ZG1fb3AgZWFzeSB0byBpbXBsZW1lbnQgYXMgYmVsb3c6CisKK3N0YXRpYyBpbnQgZG1fb3AoZG9t aWRfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAg ICAgICAgICAgICAgIHhlbl9kbV9vcF9idWZfdCBidWZzW10pCit7CisgICAgc3RydWN0IGRvbWFp biAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIGxvbmcgcmM7CisKKyAgICByYyA9 IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsKKyAgICBpZiAoIHJjICkK KyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWlu KGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9kbV9vcChYU01fRE1fUFJJ ViwgZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaWYgKCAhY29w eV9idWZfZnJvbV9ndWVzdChidWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkpICkKKyAg ICB7CisgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisg ICAgc3dpdGNoICggb3Aub3AgKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1F T1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoICFyYyAmJgorICAg ICAgICAgIWNvcHlfYnVmX3RvX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsIDAsICZvcCwgc2l6ZW9mKG9w KSkgKQorICAgICAgICByYyA9IC1FRkFVTFQ7CisKKyBvdXQ6CisgICAgcmN1X3VubG9ja19kb21h aW4oZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2xvbmcgZG9fZG1fb3AoZG9taWRfdCBkb21p ZCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgICAgICAgICAgIFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzKQoreworICAgIHN0cnVj dCB4ZW5fZG1fb3BfYnVmICpuYXQ7CisgICAgaW50IHJjOworCisgICAgbmF0ID0geHphbGxvY19h cnJheShzdHJ1Y3QgeGVuX2RtX29wX2J1ZiwgbnJfYnVmcyk7CisgICAgaWYgKCAhbmF0ICkKKyAg ICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBpZiAoICFjb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0 KG5hdCwgYnVmcywgMCwgbnJfYnVmcykgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAg IHJjID0gZG1fb3AoZG9taWQsIG5yX2J1ZnMsIG5hdCk7CisKKyAgICB4ZnJlZShuYXQpOworCisg ICAgcmV0dXJuIHJjOworfQpkaWZmIC0tZ2l0IGEvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMv eGVuLmlmIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmCmluZGV4IDFhY2E3NWQu LmY5MjU0YzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZgor KysgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKQEAgLTE1MSw3ICsxNTEsNyBA QCBkZWZpbmUoYGRldmljZV9tb2RlbCcsIGAKIAogCWFsbG93ICQxICQyX3RhcmdldDpkb21haW4g eyBnZXRkb21haW5pbmZvIHNodXRkb3duIH07CiAJYWxsb3cgJDEgJDJfdGFyZ2V0Om1tdSB7IG1h cF9yZWFkIG1hcF93cml0ZSBhZGp1c3QgcGh5c21hcCB0YXJnZXRfaGFjayB9OwotCWFsbG93ICQx ICQyX3RhcmdldDpodm0geyBnZXRwYXJhbSBzZXRwYXJhbSB0cmFja2RpcnR5dnJhbSBodm1jdGwg aXJxbGV2ZWwgcGNpcm91dGUgcGNpbGV2ZWwgY2FjaGVhdHRyIHNlbmRfaXJxIH07CisJYWxsb3cg JDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFtIHNldHBhcmFtIHRyYWNrZGlydHl2cmFtIGh2bWN0 bCBpcnFsZXZlbCBwY2lyb3V0ZSBwY2lsZXZlbCBjYWNoZWF0dHIgc2VuZF9pcnEgZG0gfTsKICcp CiAKICMgbWFrZV9kZXZpY2VfbW9kZWwocHJpdiwgZG1fZG9tLCBodm1fZG9tKQpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hl bmN0cmwuaAppbmRleCA0YWIwZjU3Li4yYmE0NmQ3IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAt NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPHhlbi9tZW1v cnkuaD4KICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDx4ZW4vaHZtL2Rt X29wLmg+CiAjaW5jbHVkZSA8eGVuL2h2bS9wYXJhbXMuaD4KICNpbmNsdWRlIDx4ZW4veHNtL2Zs YXNrX29wLmg+CiAjaW5jbHVkZSA8eGVuL3RtZW0uaD4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX3ByaXZhdGUuYyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwppbmRleCBkNTdjMzlhLi44 ZTQ5NjM1IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKKysrIGIvdG9vbHMv bGlieGMveGNfcHJpdmF0ZS5jCkBAIC03NzYsNiArNzc2LDc2IEBAIGludCB4Y19mZnM2NCh1aW50 NjRfdCB4KQogICAgIHJldHVybiBsID8geGNfZmZzMzIobCkgOiBoID8geGNfZmZzMzIoaCkgKyAz MiA6IDA7CiB9CiAKK2ludCBkb19kbV9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21p ZCwgdW5zaWduZWQgaW50IG5yX2J1ZnMsIC4uLikKK3sKKyAgICBpbnQgcmV0ID0gLTE7CisgICAg c3RydWN0ICB7CisgICAgICAgIHZvaWQgKnU7CisgICAgICAgIHZvaWQgKmg7CisgICAgfSAqYm91 bmNlOworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5fZG1fb3BfYnVmX3QsIGJ1ZnMp OworICAgIHZhX2xpc3QgYXJnczsKKyAgICB1bnNpZ25lZCBpbnQgaWR4OworCisgICAgYm91bmNl ID0gY2FsbG9jKG5yX2J1ZnMsIHNpemVvZigqYm91bmNlKSk7CisgICAgaWYgKCBib3VuY2UgPT0g TlVMTCApCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBidWZzID0geGNfaHlwZXJjYWxsX2J1 ZmZlcl9hbGxvYyh4Y2gsIGJ1ZnMsIHNpemVvZigqYnVmcykgKiBucl9idWZzKTsKKyAgICBpZiAo IGJ1ZnMgPT0gTlVMTCApCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICB2YV9zdGFydChhcmdz LCBucl9idWZzKTsKKyAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IG5yX2J1ZnM7IGlkeCsrKQorICAg IHsKKyAgICAgICAgdm9pZCAqdSA9IHZhX2FyZyhhcmdzLCB2b2lkICopOworICAgICAgICBzaXpl X3Qgc2l6ZSA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOworCisgICAgICAgIGJvdW5jZVtpZHhdLmgg PSB4ZW5jYWxsX2FsbG9jX2J1ZmZlcih4Y2gtPnhjYWxsLCBzaXplKTsKKyAgICAgICAgaWYgKCBi b3VuY2VbaWR4XS5oID09IE5VTEwgKQorICAgICAgICAgICAgZ290byBmYWlsMzsKKworICAgICAg ICBtZW1jcHkoYm91bmNlW2lkeF0uaCwgdSwgc2l6ZSk7CisgICAgICAgIGJvdW5jZVtpZHhdLnUg PSB1OworCisgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhidWZzW2lkeF0uaCwgYm91 bmNlW2lkeF0uaCk7CisgICAgICAgIGJ1ZnNbaWR4XS5zaXplID0gc2l6ZTsKKyAgICB9CisgICAg dmFfZW5kKGFyZ3MpOworCisgICAgcmV0ID0geGVuY2FsbDMoeGNoLT54Y2FsbCwgX19IWVBFUlZJ U09SX2RtX29wLAorICAgICAgICAgICAgICAgICAgIGRvbWlkLCBucl9idWZzLCBIWVBFUkNBTExf QlVGRkVSX0FTX0FSRyhidWZzKSk7CisgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAgZ290byBm YWlsNDsKKworICAgIHdoaWxlICggaWR4LS0gIT0gMCApCisgICAgeworICAgICAgICBtZW1jcHko Ym91bmNlW2lkeF0udSwgYm91bmNlW2lkeF0uaCwgYnVmc1tpZHhdLnNpemUpOworICAgICAgICB4 ZW5jYWxsX2ZyZWVfYnVmZmVyKHhjaC0+eGNhbGwsIGJvdW5jZVtpZHhdLmgpOworICAgIH0KKwor ICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGJ1ZnMpOworCisgICAgZnJlZShib3Vu Y2UpOworCisgICAgcmV0dXJuIDA7CisKKyBmYWlsNDoKKyAgICBpZHggPSBucl9idWZzOworCisg ZmFpbDM6CisgICAgd2hpbGUgKCBpZHgtLSAhPSAwICkKKyAgICAgICAgeGVuY2FsbF9mcmVlX2J1 ZmZlcih4Y2gtPnhjYWxsLCBib3VuY2VbaWR4XS5oKTsKKworICAgIHhjX2h5cGVyY2FsbF9idWZm ZXJfZnJlZSh4Y2gsIGJ1ZnMpOworCisgZmFpbDI6CisgICAgZnJlZShib3VuY2UpOworCisgZmFp bDE6CisgICAgcmV0dXJuIHJldDsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1v ZGU6IEMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCBiL3Rvb2xzL2xpYnhj L3hjX3ByaXZhdGUuaAppbmRleCA5NzQ0NWFlLi5mMTkxMzIwIDEwMDY0NAotLS0gYS90b29scy9s aWJ4Yy94Y19wcml2YXRlLmgKKysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCkBAIC00MjIs NiArNDIyLDggQEAgaW50IHhjX3ZtX2V2ZW50X2NvbnRyb2woeGNfaW50ZXJmYWNlICp4Y2gsIGRv bWlkX3QgZG9tYWluX2lkLCB1bnNpZ25lZCBpbnQgb3AsCiB2b2lkICp4Y192bV9ldmVudF9lbmFi bGUoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9tYWluX2lkLCBpbnQgcGFyYW0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBvcnQpOwogCitpbnQgZG9fZG1fb3AoeGNf aW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGludCBucl9idWZzLCAuLi4p OworCiAjZW5kaWYgLyogX19YQ19QUklWQVRFX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKaW5kZXgg Zjc1MGQxMy4uNTg2OWQxYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQor KysgYi94ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlCkBAIC0yLDYgKzIsNyBAQCBzdWJkaXIteSAr PSBzdm0KIHN1YmRpci15ICs9IHZteAogCiBvYmoteSArPSBhc2lkLm8KK29iai15ICs9IGRtLm8K IG9iai15ICs9IGVtdWxhdGUubwogb2JqLXkgKz0gaHBldC5vCiBvYmoteSArPSBodm0ubwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMGJjMmMKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh bG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2lu Y2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKworI2luY2x1 ZGUgPGFzbS9odm0vaW9yZXEuaD4KKworI2luY2x1ZGUgPHhzbS94c20uaD4KKworc3RhdGljIGJv b2wgY29weV9idWZfZnJvbV9ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdm9pZCAqZHN0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4LCBzaXplX3Qg ZHN0X3NpemUpCit7CisgICAgc2l6ZV90IHNpemUgPSBtaW5fdChzaXplX3QsIGRzdF9zaXplLCBi dWZzW2lkeF0uc2l6ZSk7CisKKyAgICByZXR1cm4gIWNvcHlfZnJvbV9ndWVzdChkc3QsIGJ1ZnNb aWR4XS5oLCBzaXplKTsKK30KKworc3RhdGljIGJvb2wgY29weV9idWZfdG9fZ3Vlc3QoeGVuX2Rt X29wX2J1Zl90IGJ1ZnNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBucl9idWZzLCB1bnNpZ25lZCBpbnQgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUpCit7CisgICAgc2l6ZV90IHNpemUgPSBt aW5fdChzaXplX3QsIGJ1ZnNbaWR4XS5zaXplLCBzcmNfc2l6ZSk7CisKKyAgICByZXR1cm4gIWNv cHlfdG9fZ3Vlc3QoYnVmc1tpZHhdLmgsIHNyYywgc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQgZG1f b3AoZG9taWRfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMs CisgICAgICAgICAgICAgICAgIHhlbl9kbV9vcF9idWZfdCBidWZzW10pCit7CisgICAgc3RydWN0 IGRvbWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIGxvbmcgcmM7CisKKyAg ICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJf ZG9tYWluKGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9kbV9vcChYU01f RE1fUFJJViwgZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaWYg KCAhY29weV9idWZfZnJvbV9ndWVzdChidWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkp ICkKKyAgICB7CisgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBvdXQ7CisgICAg fQorCisgICAgc3dpdGNoICggb3Aub3AgKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBy YyA9IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoICFyYyAm JgorICAgICAgICAgIWNvcHlfYnVmX3RvX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsIDAsICZvcCwgc2l6 ZW9mKG9wKSkgKQorICAgICAgICByYyA9IC1FRkFVTFQ7CisKKyBvdXQ6CisgICAgcmN1X3VubG9j a19kb21haW4oZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBjb21wYXRfZG1fb3AoZG9t aWRfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAg ICAgICAgICAgICAgIENPTVBBVF9IQU5ETEVfUEFSQU0oY29tcGF0X2RtX29wX2J1Zl90KSBidWZz KQoreworICAgIHN0cnVjdCB4ZW5fZG1fb3BfYnVmICpuYXQ7CisgICAgdW5zaWduZWQgaW50IGk7 CisgICAgaW50IHJjID0gLUVGQVVMVDsKKworICAgIG5hdCA9IHh6YWxsb2NfYXJyYXkoc3RydWN0 IHhlbl9kbV9vcF9idWYsIG5yX2J1ZnMpOworICAgIGlmICggIW5hdCApCisgICAgICAgIHJldHVy biAtRU5PTUVNOworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9idWZzOyBpKysgKQorICAgIHsK KyAgICAgICAgc3RydWN0IGNvbXBhdF9kbV9vcF9idWYgY21wOworCisgICAgICAgIGlmICggY29w eV9mcm9tX2NvbXBhdF9vZmZzZXQoJmNtcCwgYnVmcywgaSwgMSkgKQorICAgICAgICAgICAgZ290 byBvdXQ7CisKKyNkZWZpbmUgWExBVF9kbV9vcF9idWZfSE5ETF9oKF9kXywgX3NfKSBcCisgICAg ICAgIGd1ZXN0X2Zyb21fY29tcGF0X2hhbmRsZSgoX2RfKS0+aCwgKF9zXyktPmgpCisKKyAgICAg ICAgWExBVF9kbV9vcF9idWYoJm5hdFtpXSwgJmNtcCk7CisKKyN1bmRlZiBYTEFUX2RtX29wX2J1 Zl9ITkRMX2gKKyAgICB9CisKKyAgICByYyA9IGRtX29wKGRvbWlkLCBucl9idWZzLCBuYXQpOwor Cisgb3V0OgorICAgIHhmcmVlKG5hdCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2xvbmcgZG9f ZG1fb3AoZG9taWRfdCBkb21pZCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMs CisgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBi dWZzKQoreworICAgIHN0cnVjdCB4ZW5fZG1fb3BfYnVmICpuYXQ7CisgICAgaW50IHJjOworCisg ICAgbmF0ID0geHphbGxvY19hcnJheShzdHJ1Y3QgeGVuX2RtX29wX2J1ZiwgbnJfYnVmcyk7Cisg ICAgaWYgKCAhbmF0ICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdF9vZmZzZXQobmF0LCBidWZzLCAwLCBucl9idWZzKSApCisgICAgICAgIHJldHVy biAtRUZBVUxUOworCisgICAgcmMgPSBkbV9vcChkb21pZCwgbnJfYnVmcywgbmF0KTsKKworICAg IHhmcmVlKG5hdCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJs ZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNl dDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoK KyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMKaW5kZXggMmVjMDgwMC4uY2I1MDFlNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0zODUyLDYgKzM4NTIs NyBAQCBzdGF0aWMgY29uc3QgaHlwZXJjYWxsX3RhYmxlX3QgaHZtX2h5cGVyY2FsbF90YWJsZVtd ID0gewogICAgIENPTVBBVF9DQUxMKHBsYXRmb3JtX29wKSwKICAgICBDT01QQVRfQ0FMTChtbXVl eHRfb3ApLAogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAorICAgIENPTVBBVF9DQUxMKGRtX29w KSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKQogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jCmluZGV4IDcwYTMwYTUuLjhk ZDE5ZGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYworKysgYi94ZW4vYXJj aC94ODYvaHlwZXJjYWxsLmMKQEAgLTY2LDYgKzY2LDcgQEAgY29uc3QgaHlwZXJjYWxsX2FyZ3Nf dCBoeXBlcmNhbGxfYXJnc190YWJsZVtOUl9oeXBlcmNhbGxzXSA9CiAgICAgQVJHUyhrZXhlY19v cCwgMiksCiAgICAgQVJHUyh0bWVtX29wLCAxKSwKICAgICBBUkdTKHhlbnBtdV9vcCwgMiksCisg ICAgQVJHUyhkbV9vcCwgMyksCiAgICAgQVJHUyhtY2EsIDEpLAogICAgIEFSR1MoYXJjaF8xLCAx KSwKIH07CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RhdGljIGNvbnN0IGh5cGVyY2FsbF90YWJsZV90 IHB2X2h5cGVyY2FsbF90YWJsZVtdID0gewogICAgIEhZUEVSQ0FMTCh0bWVtX29wKSwKICNlbmRp ZgogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAorICAgIENPTVBBVF9DQUxMKGRtX29wKSwKICAg ICBIWVBFUkNBTEwobWNhKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKSwKIH07CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9NYWtlZmlsZSBiL3hlbi9pbmNsdWRlL01ha2VmaWxlCmluZGV4IDFlODBh MGIuLmFjYTdmMjAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL01ha2VmaWxlCisrKyBiL3hlbi9p bmNsdWRlL01ha2VmaWxlCkBAIC0yNyw2ICsyNyw3IEBAIGhlYWRlcnMtJChDT05GSUdfWDg2KSAg ICAgKz0gY29tcGF0L2FyY2gteDg2L3hlbi1tY2EuaAogaGVhZGVycy0kKENPTkZJR19YODYpICAg ICArPSBjb21wYXQvYXJjaC14ODYveGVuLmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0g Y29tcGF0L2FyY2gteDg2L3hlbi0kKGNvbXBhdC1hcmNoLXkpLmgKIGhlYWRlcnMtJChDT05GSUdf WDg2KSAgICAgKz0gY29tcGF0L2h2bS9odm1fdmNwdS5oCitoZWFkZXJzLSQoQ09ORklHX1g4Nikg ICAgICs9IGNvbXBhdC9odm0vZG1fb3AuaAogaGVhZGVycy15ICAgICAgICAgICAgICAgICArPSBj b21wYXQvYXJjaC0kKGNvbXBhdC1hcmNoLXkpLmggY29tcGF0L3BtdS5oIGNvbXBhdC94bGF0LmgK IGhlYWRlcnMtJChDT05GSUdfRkxBU0spICAgKz0gY29tcGF0L3hzbS9mbGFza19vcC5oCiAKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGU3 YTk2Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCkBA IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIENpdHJpeCBTeXN0ZW1z IEluYworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICog ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh cmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0RNX09Q X0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0RNX09QX0hfXworCisjaWYgZGVmaW5lZChf X1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNpbmNsdWRlICIuLi94ZW4uaCIK KworI2RlZmluZSBYRU5fRE1PUF9pbnZhbGlkIDAKKworc3RydWN0IHhlbl9kbV9vcCB7CisgICAg dWludDMyX3Qgb3A7Cit9OworCitzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB7CisgICAgWEVOX0dVRVNU X0hBTkRMRSh2b2lkKSBoOworICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKK307Cit0eXBlZGVmIHN0 cnVjdCB4ZW5fZG1fb3BfYnVmIHhlbl9kbV9vcF9idWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO RExFKHhlbl9kbV9vcF9idWZfdCk7CisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQ RVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAorICogYCAgICAgICAgICAgICAgICAgIHhlbl9k bV9vcF9idWZfdCBidWZzW10sCisgKiBgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5y X2J1ZnMpCisgKiBgCisgKgorICogQGRvbWlkIGlzIHRoZSBkb21haW4gdGhlIGh5cGVyY2FsbCBv cGVyYXRlcyBvbi4KKyAqIEBidWZzIHBvaW50cyB0byBhbiBhcnJheSBvZiBidWZmZXJzIHdoZXJl IEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0CisgKiB4ZW5fZG1fb3AsIGRlc2NyaWJpbmcgdGhl IHNwZWNpZmljIGRldmljZSBtb2RlbCBvcGVyYXRpb24gYW5kIGl0cworICogcGFyYW1ldGVycy4K KyAqIEBidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRo ZSBwdXJwb3NlcyBvZgorICogcGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBmcm9tIHRo ZSBkb21haW4uCisgKiBAbnJfYnVmcyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhlIEBi dWZzIGFycmF5LgorICovCisKKyNlbmRpZiAvKiBfX1hFTl9fIHx8IF9fWEVOX1RPT0xTX18gKi8K KworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fRE1fT1BfSF9fICovCisKKy8qCisgKiBMb2Nh bCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJh c2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK KyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oIGIveGVu L2luY2x1ZGUvcHVibGljL3hlbi5oCmluZGV4IDY1OTMwMjYuLjkxYmE4YmIgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgK QEAgLTEyMCw2ICsxMjAsNyBAQCBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7 CiAjZGVmaW5lIF9fSFlQRVJWSVNPUl90bWVtX29wICAgICAgICAgICAgICAzOAogI2RlZmluZSBf X0hZUEVSVklTT1JfeGNfcmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVzZXJ2ZWQgZm9yIFhlbkNs aWVudCAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfeGVucG11X29wICAgICAgICAgICAgNDAKKyNk ZWZpbmUgX19IWVBFUlZJU09SX2RtX29wICAgICAgICAgICAgICAgIDQxCiAKIC8qIEFyY2hpdGVj dHVyZS1zcGVjaWZpYyBoeXBlcmNhbGwgZGVmaW5pdGlvbnMuICovCiAjZGVmaW5lIF9fSFlQRVJW SVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVu L2h5cGVyY2FsbC5oIGIveGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCmluZGV4IDIwN2EwZTgu LjhkNDgyNGYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxw dWJsaWMvdG1lbS5oPgogI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+CiAjaW5jbHVkZSA8cHVi bGljL3BtdS5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KICNpbmNsdWRlIDxhc20v aHlwZXJjYWxsLmg+CiAjaW5jbHVkZSA8eHNtL3hzbS5oPgogCkBAIC0xNDEsNiArMTQyLDEyIEBA IGRvX3hlbm9wcm9mX29wKGludCBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcp OwogZXh0ZXJuIGxvbmcKIGRvX3hlbnBtdV9vcCh1bnNpZ25lZCBpbnQgb3AsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX3BtdV9wYXJhbXNfdCkgYXJnKTsKIAorZXh0ZXJuIGxvbmcKK2RvX2Rt X29wKAorICAgIGRvbWlkX3QgZG9taWQsCisgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAg WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpOworCiAjaWZkZWYg Q09ORklHX0NPTVBBVAogCiBleHRlcm4gaW50CkBAIC0xOTAsNiArMTk3LDE0IEBAIGV4dGVybiBp bnQgY29tcGF0X211bHRpY2FsbCgKICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKG11bHRpY2Fs bF9lbnRyeV9jb21wYXRfdCkgY2FsbF9saXN0LAogICAgIHVpbnQzMl90IG5yX2NhbGxzKTsKIAor I2luY2x1ZGUgPGNvbXBhdC9odm0vZG1fb3AuaD4KKworZXh0ZXJuIGludAorY29tcGF0X2RtX29w KAorICAgIGRvbWlkX3QgZG9taWQsCisgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgQ09N UEFUX0hBTkRMRV9QQVJBTShjb21wYXRfZG1fb3BfYnVmX3QpIGJ1ZnMpOworCiAjZW5kaWYKIAog dm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVzX2luZm9fdCAqaW5mbyk7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0Cmlu ZGV4IGJkZjFkMDUuLjBhMmY4NGQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0Cisr KyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC0xMjksMyArMTI5LDQgQEAKID8JZmxhc2tfc2V0 ZW5mb3JjZQkJeHNtL2ZsYXNrX29wLmgKICEJZmxhc2tfc2lkX2NvbnRleHQJCXhzbS9mbGFza19v cC5oCiA/CWZsYXNrX3RyYW5zaXRpb24JCXhzbS9mbGFza19vcC5oCishCWRtX29wX2J1ZgkJCWh2 bS9kbV9vcC5oCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaCBiL3hlbi9pbmNs dWRlL3hzbS9kdW1teS5oCmluZGV4IDk1NDYwYWYuLmIyMDZmNWEgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3hzbS9kdW1teS5oCisrKyBiL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCkBAIC03Mjcs NiArNzI3LDEyIEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fcG11X29wIChYU01fREVGQVVM VF9BUkcgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50CiAgICAgfQogfQogCitzdGF0aWMg WFNNX0lOTElORSBpbnQgeHNtX2RtX29wKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpk KQoreworICAgIFhTTV9BU1NFUlRfQUNUSU9OKFhTTV9ETV9QUklWKTsKKyAgICByZXR1cm4geHNt X2RlZmF1bHRfYWN0aW9uKGFjdGlvbiwgY3VycmVudC0+ZG9tYWluLCBkKTsKK30KKwogI2VuZGlm IC8qIENPTkZJR19YODYgKi8KIAogI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94c20veHNtLmggYi94ZW4vaW5jbHVkZS94c20veHNtLmgKaW5kZXgg NWRjNTlkZC4uZTJkMzM2ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveHNtL3hzbS5oCisrKyBi L3hlbi9pbmNsdWRlL3hzbS94c20uaApAQCAtMTg0LDYgKzE4NCw3IEBAIHN0cnVjdCB4c21fb3Bl cmF0aW9ucyB7CiAgICAgaW50ICgqaW9wb3J0X3Blcm1pc3Npb24pIChzdHJ1Y3QgZG9tYWluICpk LCB1aW50MzJfdCBzLCB1aW50MzJfdCBlLCB1aW50OF90IGFsbG93KTsKICAgICBpbnQgKCppb3Bv cnRfbWFwcGluZykgKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVpbnQzMl90IGUsIHVp bnQ4X3QgYWxsb3cpOwogICAgIGludCAoKnBtdV9vcCkgKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBvcCk7CisgICAgaW50ICgqZG1fb3ApIChzdHJ1Y3QgZG9tYWluICpkKTsKICNlbmRp ZgogICAgIGludCAoKnhlbl92ZXJzaW9uKSAodWludDMyX3QgY21kKTsKIH07CkBAIC03MjIsNiAr NzIzLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IHhzbV9wbXVfb3AgKHhzbV9kZWZhdWx0X3QgZGVm LCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQKICAgICByZXR1cm4geHNtX29wcy0+cG11 X29wKGQsIG9wKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgeHNtX2RtX29wKHhzbV9kZWZhdWx0 X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHJldHVybiB4c21fb3BzLT5kbV9vcChk KTsKK30KKwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAogc3RhdGljIGlubGluZSBpbnQgeHNt X3hlbl92ZXJzaW9uICh4c21fZGVmYXVsdF90IGRlZiwgdWludDMyX3Qgb3ApCmRpZmYgLS1naXQg YS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggMDQw YTI1MS4uMzgzZGQ0ZiAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hl bi94c20vZmxhc2svaG9va3MuYwpAQCAtMTYzNSw2ICsxNjM1LDEyIEBAIHN0YXRpYyBpbnQgZmxh c2tfcG11X29wIChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgb3ApCiAgICAgICAgIHJl dHVybiAtRVBFUk07CiAgICAgfQogfQorCitzdGF0aWMgaW50IGZsYXNrX2RtX29wKHN0cnVjdCBk b21haW4gKmQpCit7CisgICAgcmV0dXJuIGN1cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xBU1NfSFZN LCBIVk1fX0RNKTsKK30KKwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAogc3RhdGljIGludCBm bGFza194ZW5fdmVyc2lvbiAodWludDMyX3Qgb3ApCkBAIC0xODE0LDYgKzE4MjAsNyBAQCBzdGF0 aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29wcyA9IHsKICAgICAuaW9wb3J0X3Blcm1p c3Npb24gPSBmbGFza19pb3BvcnRfcGVybWlzc2lvbiwKICAgICAuaW9wb3J0X21hcHBpbmcgPSBm bGFza19pb3BvcnRfbWFwcGluZywKICAgICAucG11X29wID0gZmxhc2tfcG11X29wLAorICAgIC5k bV9vcCA9IGZsYXNrX2RtX29wLAogI2VuZGlmCiAgICAgLnhlbl92ZXJzaW9uID0gZmxhc2tfeGVu X3ZlcnNpb24sCiB9OwotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK