From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v8 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Tue, 24 Jan 2017 15:27:03 +0000 Message-ID: <1485271630-1860-2-git-send-email-paul.durrant@citrix.com> References: <1485271630-1860-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 1cW30S-0000Zk-7S for xen-devel@lists.xenproject.org; Tue, 24 Jan 2017 15:27:36 +0000 In-Reply-To: <1485271630-1860-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: Ian Jackson , Paul Durrant , Jennifer Herbert , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uYXMgYSBzZXQgb2YgaHlwZXJjYWxscyB0byBiZSB1c2VkIGJ5IGEgZGV2aWNlIG1vZGVsLgoK QXMgc3RhdGVkIGluIHRoZSBuZXcgZG9jcy9kZXNpZ25zL2RtX29wLm1hcmtkb3duOgoKIlRoZSBh aW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50IGEgY29tcHJvbWlzZWQgZGV2aWNlIG1vZGVsIGZyb20K Y29tcHJvbWlzaW5nIGRvbWFpbnMgb3RoZXIgdGhlbiB0aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQg d2l0aC4gKEFuZCBpcwp0aGVyZWZvcmUgbGlrZWx5IGFscmVhZHkgY29tcHJvbWlzZWQpLiIKClNl ZSB0aGF0IGZpbGUgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCgpUaGlzIHBhdGNoIHNpbXBseSBh ZGRzIHRoZSBib2lsZXJwbGF0ZSBmb3IgdGhlIGh5cGVyY2FsbC4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClN1Z2dlc3RlZC1ieTogSWFuIEph Y2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+ClN1Z2dlc3RlZC1ieTogSmVubmlmZXIgSGVy YmVydCA8amVubmlmZXIuaGVyYmVydEBjaXRyaXguY29tPgpBY2tlZC1ieTogRGFuaWVsIERlIEdy YWFmIDxkZ2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KLS0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AY2l0cml4LmNvbT4KQ2M6 IEplbm5pZmVyIEhlcmJlcnQgPGplbm5pZmVyLmhlcmJlcnRAY2l0cml4LmNvbT4KQ2M6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KCnY4OgotIENoYW5nZSBjb3B5IGZ1bmN0aW9ucyBi YWNrIHRvIHVzaW5nIG1pbmltdW0gc2l6ZXMuCgp2NzoKLSBNb3ZlIHRoZSBoeXBlcmNhbGwgYW5k IHhlbl9kbV9vcF9idWYgZGVmaW5pdGlvbiBvdXRzaWRlIF9fWEVOX1RPT0xTX18KCnY2OgotIEFk ZCBib29sIHRvIGNvbnRyb2wgY29weS1iYWNrIG9mIG9wIHN0cnVjdHVyZSBhcyByZXF1ZXN0ZWQg YnkgQW5keQoKdjU6Ci0gQ29weSBmdW5jdGlvbnMgbm93IHVzZSBleGFjdCBzaXplcy4KLSBBZGRy ZXNzZWQgb3RoZXIgY29tbWVudHMgZnJvbSBKYW4sIFdlaSBhbmQgQW5kcmV3LiBIb3dldmVyIEkg aGF2ZQogIGxlZnQgdGhlIGNvZGUgdGhhdCB1bmNvbmRpdGlvbmFsbHkgY29waWVzIGJhY2sgdGhl IG9wIHN0cnVjdHVyZSBhcwogIEkgdGhpbmsgaXQgd2lsbCBuZWVkbGVzc2x5IGNvbXBsaWNhdGUg dGhlIGNvZGUgdG8gbWFrZSB0aGlzIHNlbGVjdGl2ZS4KCnY0OgotIENoYW5nZSBYRU5fR1VFU1Rf SEFORExFXzY0IHRvIFhFTl9HVUVTVF9IQU5ETEUgaW4gc3RydWN0IHhlbl9kbV9vcF9idWYKICBh bmQgYWRkIHRoZSBuZWNlc3NhcnkgY29tcGF0IGNvZGUuIERyb3AgSmFuJ3MgUi1iIHNpbmNlIHRo ZSBwYXRjaCBoYXMKICBiZWVuIGZ1bmRhbWVudGFsbHkgbW9kaWZpZWQuCgp2MzoKLSBSZS13cml0 dGVuIGxhcmdlIHBvcnRpb25zIG9mIGRtb3AubWFya2Rvd24gdG8gcmVtb3ZlIHJlZmVyZW5jZXMg dG8KICBwcmV2aW91cyBwcm9wb3NhbHMgYW5kIG1ha2UgaXQgYSBzdGFuZGFsb25lIGRlc2lnbiBk b2MuCgp2MjoKLSBBZGRyZXNzZWQgc2V2ZXJhbCBjb21tZW50cyBmcm9tIEphbi4KLSBSZW1vdmVk IG1vZGlmaWNhdGlvbiBvZiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyBhcyBpdCBp cyBub3QKICBuZWVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJr ZG93biAgICAgICAgfCAxNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IHRvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZiB8ICAgMiArLQogdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsLmggICAgIHwgICAxICsKIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYyAg ICAgICAgICB8ICA3MCArKysrKysrKysrKysrKysKIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCAg ICAgICAgICB8ICAgMiArCiB4ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlICAgICAgICAgfCAgIDEg KwogeGVuL2FyY2gveDg2L2h2bS9kbS5jICAgICAgICAgICAgIHwgMTUyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgIHwg ICAxICsKIHhlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyAgICAgICAgICB8ICAgMiArCiB4ZW4vaW5j bHVkZS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUvcHVibGljL2h2 bS9kbV9vcC5oICAgIHwgIDY5ICsrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3hl bi5oICAgICAgICAgIHwgICAxICsKIHhlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCAgICAgICB8 ICAxNSArKysrCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAgICAgICAgfCAgIDEgKwogeGVu L2luY2x1ZGUveHNtL2R1bW15LmggICAgICAgICAgIHwgICA2ICsrCiB4ZW4vaW5jbHVkZS94c20v eHNtLmggICAgICAgICAgICAgfCAgIDYgKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAg ICAgICB8ICAgNyArKwogMTcgZmlsZXMgY2hhbmdlZCwgNTExIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vZG0uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAoKZGlmZiAtLWdpdCBhL2RvY3MvZGVz aWducy9kbW9wLm1hcmtkb3duIGIvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZjZjZlYgotLS0gL2Rldi9udWxsCisrKyBiL2Rv Y3MvZGVzaWducy9kbW9wLm1hcmtkb3duCkBAIC0wLDAgKzEsMTc1IEBACitETU9QCis9PT09CisK K0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoZSBhaW0gb2YgRE1PUCBpcyB0byBwcmV2 ZW50IGEgY29tcHJvbWlzZWQgZGV2aWNlIG1vZGVsIGZyb20gY29tcHJvbWlzaW5nCitkb21haW5z IG90aGVyIHRoYW4gdGhlIG9uZSBpdCBpcyBwcm92aWRpbmcgZW11bGF0aW9uIGZvciAod2hpY2gg aXMgdGhlcmVmb3JlCitsaWtlbHkgYWxyZWFkeSBjb21wcm9taXNlZCkuCisKK1RoZSBwcm9ibGVt IG9jY3VycyB3aGVuIHlvdSBhIGRldmljZSBtb2RlbCBpc3N1ZXMgYW4gaHlwZXJjYWxsIHRoYXQK K2luY2x1ZGVzIHJlZmVyZW5jZXMgdG8gdXNlciBtZW1vcnkgb3RoZXIgdGhhbiB0aGUgb3BlcmF0 aW9uIHN0cnVjdHVyZQoraXRzZWxmLCBzdWNoIGFzIHdpdGggVHJhY2sgZGlydHkgVlJBTSAoYXMg dXNlZCBpbiBWR0EgZW11bGF0aW9uKS4KK0lzIHRoaXMgY2FzZSwgdGhlIGFkZHJlc3Mgb2YgdGhp cyBvdGhlciB1c2VyIG1lbW9yeSBuZWVkcyB0byBiZSB2ZXR0ZWQsCit0byBlbnN1cmUgaXQgaXMg bm90IHdpdGhpbiByZXN0cmljdGVkIGFkZHJlc3MgcmFuZ2VzLCBzdWNoIGFzIGtlcm5lbAorbWVt b3J5LiBUaGUgcmVhbCBwcm9ibGVtIGNvbWVzIGRvd24gdG8gaG93IHlvdSB3b3VsZCB2ZXQgdGhp cyBhZGRyZXNzIC0KK3RoZSBpZGVhIHBsYWNlIHRvIGRvIHRoaXMgaXMgd2l0aGluIHRoZSBwcml2 Y21kIGRyaXZlciwgd2l0aG91dCBwcml2Y21kCitoYXZpbmcgdG8gaGF2ZSBzcGVjaWZpYyBrbm93 bGVkZ2Ugb2YgdGhlIGh5cGVyY2FsbCdzIHNlbWFudGljcy4KKworVGhlIERlc2lnbgorLS0tLS0t LS0tLQorCitUaGUgcHJpdmNtZCBkcml2ZXIgaW1wbGVtZW50cyBhIG5ldyByZXN0cmljdGlvbiBp b2N0bCwgd2hpY2ggdGFrZXMgYSBkb21pZAorcGFyYW1ldGVyLiAgQWZ0ZXIgdGhhdCByZXN0cmlj dGlvbiBpb2N0bCBpcyBpc3N1ZWQsIGFsbCB1bmF1ZGl0ZWQgb3BlcmF0aW9ucworb24gdGhlIHBy aXZjbWQgZHJpdmVyIHdpbGwgY2Vhc2UgdG8gZnVuY3Rpb24sIGluY2x1ZGluZyByZWd1bGFyIGh5 cGVyY2FsbHMuCitETU9QIGh5cGVyY2FsbHMgd2lsbCBjb250aW51ZSB0byBmdW5jdGlvbiBhcyB0 aGV5IGNhbiBiZSBhdWRpdGVkLgorCitBIERNT1AgaHlwZXJjYWxsIGNvbnNpc3RzIG9mIGEgZG9t aWQgKHdoaWNoIGlzIGF1ZGl0ZWQgdG8gdmVyaWZ5IHRoYXQgaXQKK21hdGNoZXMgYW55IHJlc3Ry aWN0aW9uIGluIHBsYWNlKSBhbmQgYW4gYXJyYXkgb2YgYnVmZmVycyBhbmQgbGVuZ3RocywKK3dp dGggdGhlIGZpcnN0IG9uZSBjb250YWluaW5nIHRoZSBzcGVjaWZpYyBETU9QIHBhcmFtZXRlcnMu IFRoZXNlIGNhbgordGhlbiByZWZlcmVuY2UgZnVydGhlciBidWZmZXJzIGZyb20gd2l0aGluIGlu IHRoZSBhcnJheS4gU2luY2UgdGhlIG9ubHkKK3VzZXIgYnVmZmVycyBwYXNzZWQgYXJlIHRoYXQg Zm91bmQgd2l0aCB0aGF0IGFycmF5LCB0aGV5IGNhbiBhbGwgY2FuIGJlCithdWRpdGVkIGJ5IHBy aXZjbWQuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlzIGlkZWE6CisKK3N0 cnVjdCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworc3RydWN0IHhlbl9kbV9v cF9idWYgeworICAgIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgaDsKKyAgICB1bnNpZ25lZCBsb25n IHNpemU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB4ZW5fZG1fb3BfYnVmX3Q7 CisKK2VudW0gbmVnX2Vycm5vdmFsCitIWVBFUlZJU09SX2RtX29wKGRvbWlkX3QgZG9taWQsCisg ICAgICAgICAgICAgICAgIHhlbl9kbV9vcF9idWZfdCBidWZzW10sCisgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBucl9idWZzKQorCitAZG9taWQgaXMgdGhlIGRvbWFpbiB0aGUgaHlwZXJj YWxsIG9wZXJhdGVzIG9uLgorQGJ1ZnMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGJ1ZmZlcnMgd2hl cmUgQGJ1ZnNbMF0gY29udGFpbnMgYSBzdHJ1Y3QKK2RtX29wLCBkZXNjcmliaW5nIHRoZSBzcGVj aWZpYyBkZXZpY2UgbW9kZWwgb3BlcmF0aW9uIGFuZCBpdHMgcGFyYW1ldGVycy4KK0BidWZzWzEu Ll0gbWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBv ZgorcGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBmcm9tIHRoZSBkb21haW4uCitAbnJf YnVmcyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhlIEBidWZzIGFycmF5LgorCitJdCBp cyBmb3JiaWRkZW4gZm9yIHRoZSBhYm92ZSBzdHJ1Y3QgKHhlbl9kbV9vcCkgdG8gY29udGFpbiBh bnkgZ3Vlc3QKK2hhbmRsZXMuIElmIHRoZXkgYXJlIG5lZWRlZCwgdGhleSBzaG91bGQgaW5zdGVh ZCBiZSBpbgorSFlQRVJWSVNPUl9kbV9vcC0+YnVmcy4KKworVmFsaWRhdGlvbiBieSBwcml2Y21k IGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgcHJpdmNtZCBk cml2ZXIgaGFzIGJlZW4gcmVzdHJpY3RlZCB0byBzcGVjaWZpYyBkb21haW4gKHVzaW5nIGEKKyBu ZXcgaW9jdGwpLCB3aGVuIGl0IHJlY2VpdmVkIGFuIG9wLCBpdCB3aWxsOgorCisxLiBDaGVjayBo eXBlcmNhbGwgaXMgRE1PUC4KKworMi4gQ2hlY2sgZG9taWQgPT0gcmVzdHJpY3RlZCBkb21pZC4K KworMy4gRm9yIGVhY2ggQG5yX2J1ZnMgaW4gQGJ1ZnM6IENoZWNrIEBoIGFuZCBAc2l6ZSBnaXZl IGEgYnVmZmVyCisgICB3aG9sbHkgaW4gdGhlIHVzZXIgc3BhY2UgcGFydCBvZiB0aGUgdmlydHVh bCBhZGRyZXNzIHNwYWNlLiAoZS5nLgorICAgTGludXggd2lsbCB1c2UgYWNjZXNzX29rKCkpLgor CisKK1hlbiBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NpbmNlIGEgRE1P UCBidWZmZXJzIG5lZWQgdG8gYmUgY29waWVkIGZyb20gb3IgdG8gdGhlIGd1ZXN0LCBmdW5jdGlv bnMgZm9yCitkb2luZyB0aGlzIHdvdWxkIGJlIHdyaXR0ZW4gYXMgYmVsb3cuICBOb3RlIHRoYXQg Y2FyZSBpcyB0YWtlbiB0byBwcmV2ZW50CitkYW1hZ2UgZnJvbSBidWZmZXIgdW5kZXItIG9yIG92 ZXItcnVuIHNpdHVhdGlvbnMuICBJZiB0aGUgRE1PUCBpcyBjYWxsZWQKK3dpdGggaW5jb3JyZWN0 bHkgc2l6ZWQgYnVmZmVycywgemVyb3Mgd2lsbCBiZSByZWFkLCB3aGlsZSBleHRyYSBpcyBpZ25v cmVkLgorCitzdGF0aWMgYm9vbCBjb3B5X2J1Zl9mcm9tX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBi dWZzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9i dWZzLCB2b2lkICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBpZHgsIHNpemVfdCBkc3Rfc2l6ZSkKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIGlm ICggaWR4ID49IG5yX2J1ZnMgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtZW1zZXQo ZHN0LCAwLCBkc3Rfc2l6ZSk7CisKKyAgICBzaXplID0gbWluX3Qoc2l6ZV90LCBkc3Rfc2l6ZSwg YnVmc1tpZHhdLnNpemUpOworCisgICAgcmV0dXJuICFjb3B5X2Zyb21fZ3Vlc3QoZHN0LCBidWZz W2lkeF0uaCwgc2l6ZSk7Cit9CisKK3N0YXRpYyBib29sIGNvcHlfYnVmX3RvX2d1ZXN0KHhlbl9k bV9vcF9idWZfdCBidWZzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgbnJfYnVmcywgdW5zaWduZWQgaW50IGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKnNyYywgc2l6ZV90IHNyY19zaXplKQoreworICAgIHNpemVfdCBzaXplOwor CisgICAgaWYgKCBpZHggPj0gbnJfYnVmcyApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg IHNpemUgPSBtaW5fdChzaXplX3QsIGJ1ZnNbaWR4XS5zaXplLCBzcmNfc2l6ZSk7CisKKyAgICBy ZXR1cm4gIWNvcHlfdG9fZ3Vlc3QoYnVmc1tpZHhdLmgsIHNyYywgc2l6ZSk7Cit9CisKK1RoaXMg bGVhdmVzIGRvX2RtX29wIGVhc3kgdG8gaW1wbGVtZW50IGFzIGJlbG93OgorCitzdGF0aWMgaW50 IGRtX29wKGRvbWlkX3QgZG9taWQsCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9i dWZzLAorICAgICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdKQoreworICAgIHN0 cnVjdCBkb21haW4gKmQ7CisgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBib29sIGNvbnN0 X29wID0gdHJ1ZTsKKyAgICBsb25nIHJjOworCisgICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9t YWluX2J5X2lkKGRvbWlkLCAmZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsK KworICAgIGlmICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCisgICAgICAgIGdvdG8g b3V0OworCisgICAgcmMgPSB4c21fZG1fb3AoWFNNX0RNX1BSSVYsIGQpOworICAgIGlmICggcmMg KQorICAgICAgICBnb3RvIG91dDsKKworICAgIGlmICggIWNvcHlfYnVmX2Zyb21fZ3Vlc3QoYnVm cywgbnJfYnVmcywgJm9wLCAwLCBzaXplb2Yob3ApKSApCisgICAgeworICAgICAgICByYyA9IC1F RkFVTFQ7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHN3aXRjaCAoIG9wLm9wICkK KyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgaWYgKCAhcmMgJiYKKyAgICAgICAgICFjb25zdF9vcCAmJgor ICAgICAgICAgIWNvcHlfYnVmX3RvX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsIDAsICZvcCwgc2l6ZW9m KG9wKSkgKQorICAgICAgICByYyA9IC1FRkFVTFQ7CisKKyBvdXQ6CisgICAgcmN1X3VubG9ja19k b21haW4oZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2xvbmcgZG9fZG1fb3AoZG9taWRfdCBk b21pZCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgICAgICAgICAg IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1Zl90KSBidWZzKQoreworICAgIHN0 cnVjdCB4ZW5fZG1fb3BfYnVmIG5hdFtNQVhfTlJfQlVGU107CisKKyAgICBpZiAoIG5yX2J1ZnMg PiBNQVhfTlJfQlVGUyApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBjb3B5 X2Zyb21fZ3Vlc3Rfb2Zmc2V0KG5hdCwgYnVmcywgMCwgbnJfYnVmcykgKQorICAgICAgICByZXR1 cm4gLUVGQVVMVDsKKworICAgIHJldHVybiBkbV9vcChkb21pZCwgbnJfYnVmcywgbmF0KTsKK30K ZGlmZiAtLWdpdCBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZiBiL3Rvb2xzL2Zs YXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZgppbmRleCAxYWNhNzVkLi5mOTI1NGMyIDEwMDY0NAot LS0gYS90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKKysrIGIvdG9vbHMvZmxhc2sv cG9saWN5L21vZHVsZXMveGVuLmlmCkBAIC0xNTEsNyArMTUxLDcgQEAgZGVmaW5lKGBkZXZpY2Vf bW9kZWwnLCBgCiAKIAlhbGxvdyAkMSAkMl90YXJnZXQ6ZG9tYWluIHsgZ2V0ZG9tYWluaW5mbyBz aHV0ZG93biB9OwogCWFsbG93ICQxICQyX3RhcmdldDptbXUgeyBtYXBfcmVhZCBtYXBfd3JpdGUg YWRqdXN0IHBoeXNtYXAgdGFyZ2V0X2hhY2sgfTsKLQlhbGxvdyAkMSAkMl90YXJnZXQ6aHZtIHsg Z2V0cGFyYW0gc2V0cGFyYW0gdHJhY2tkaXJ0eXZyYW0gaHZtY3RsIGlycWxldmVsIHBjaXJvdXRl IHBjaWxldmVsIGNhY2hlYXR0ciBzZW5kX2lycSB9OworCWFsbG93ICQxICQyX3RhcmdldDpodm0g eyBnZXRwYXJhbSBzZXRwYXJhbSB0cmFja2RpcnR5dnJhbSBodm1jdGwgaXJxbGV2ZWwgcGNpcm91 dGUgcGNpbGV2ZWwgY2FjaGVhdHRyIHNlbmRfaXJxIGRtIH07CiAnKQogCiAjIG1ha2VfZGV2aWNl X21vZGVsKHByaXYsIGRtX2RvbSwgaHZtX2RvbSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggNjNj NjE2Zi4uY2YzNjUyMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgK KysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNp bmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4ZW4vbWVtb3J5Lmg+CiAjaW5jbHVkZSA8 eGVuL2dyYW50X3RhYmxlLmg+CisjaW5jbHVkZSA8eGVuL2h2bS9kbV9vcC5oPgogI2luY2x1ZGUg PHhlbi9odm0vcGFyYW1zLmg+CiAjaW5jbHVkZSA8eGVuL3hzbS9mbGFza19vcC5oPgogI2luY2x1 ZGUgPHhlbi90bWVtLmg+CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmMgYi90 b29scy9saWJ4Yy94Y19wcml2YXRlLmMKaW5kZXggZDU3YzM5YS4uODA5MTgzYyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUu YwpAQCAtNzc2LDYgKzc3Niw3NiBAQCBpbnQgeGNfZmZzNjQodWludDY0X3QgeCkKICAgICByZXR1 cm4gbCA/IHhjX2ZmczMyKGwpIDogaCA/IHhjX2ZmczMyKGgpICsgMzIgOiAwOwogfQogCitpbnQg ZG9fZG1fb3AoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGludCBu cl9idWZzLCAuLi4pCit7CisgICAgaW50IHJldCA9IC0xOworICAgIHN0cnVjdCAgeworICAgICAg ICB2b2lkICp1OworICAgICAgICB2b2lkICpoOworICAgIH0gKmJvdW5jZTsKKyAgICBERUNMQVJF X0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2RtX29wX2J1Zl90LCBidWZzKTsKKyAgICB2YV9saXN0IGFy Z3M7CisgICAgdW5zaWduZWQgaW50IGlkeDsKKworICAgIGJvdW5jZSA9IGNhbGxvYyhucl9idWZz LCBzaXplb2YoKmJvdW5jZSkpOworICAgIGlmICggYm91bmNlID09IE5VTEwgKQorICAgICAgICBn b3RvIGZhaWwxOworCisgICAgYnVmcyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBi dWZzLCBzaXplb2YoKmJ1ZnMpICogbnJfYnVmcyk7CisgICAgaWYgKCBidWZzID09IE5VTEwgKQor ICAgICAgICBnb3RvIGZhaWwyOworCisgICAgdmFfc3RhcnQoYXJncywgbnJfYnVmcyk7CisgICAg Zm9yICggaWR4ID0gMDsgaWR4IDwgbnJfYnVmczsgaWR4KysgKQorICAgIHsKKyAgICAgICAgdm9p ZCAqdSA9IHZhX2FyZyhhcmdzLCB2b2lkICopOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHZhX2Fy ZyhhcmdzLCBzaXplX3QpOworCisgICAgICAgIGJvdW5jZVtpZHhdLmggPSB4ZW5jYWxsX2FsbG9j X2J1ZmZlcih4Y2gtPnhjYWxsLCBzaXplKTsKKyAgICAgICAgaWYgKCBib3VuY2VbaWR4XS5oID09 IE5VTEwgKQorICAgICAgICAgICAgZ290byBmYWlsMzsKKworICAgICAgICBtZW1jcHkoYm91bmNl W2lkeF0uaCwgdSwgc2l6ZSk7CisgICAgICAgIGJvdW5jZVtpZHhdLnUgPSB1OworCisgICAgICAg IHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhidWZzW2lkeF0uaCwgYm91bmNlW2lkeF0uaCk7Cisg ICAgICAgIGJ1ZnNbaWR4XS5zaXplID0gc2l6ZTsKKyAgICB9CisgICAgdmFfZW5kKGFyZ3MpOwor CisgICAgcmV0ID0geGVuY2FsbDMoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2RtX29wLAorICAg ICAgICAgICAgICAgICAgIGRvbWlkLCBucl9idWZzLCBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhi dWZzKSk7CisgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAgZ290byBmYWlsNDsKKworICAgIHdo aWxlICggaWR4LS0gIT0gMCApCisgICAgeworICAgICAgICBtZW1jcHkoYm91bmNlW2lkeF0udSwg Ym91bmNlW2lkeF0uaCwgYnVmc1tpZHhdLnNpemUpOworICAgICAgICB4ZW5jYWxsX2ZyZWVfYnVm ZmVyKHhjaC0+eGNhbGwsIGJvdW5jZVtpZHhdLmgpOworICAgIH0KKworICAgIHhjX2h5cGVyY2Fs bF9idWZmZXJfZnJlZSh4Y2gsIGJ1ZnMpOworCisgICAgZnJlZShib3VuY2UpOworCisgICAgcmV0 dXJuIDA7CisKKyBmYWlsNDoKKyAgICBpZHggPSBucl9idWZzOworCisgZmFpbDM6CisgICAgd2hp bGUgKCBpZHgtLSAhPSAwICkKKyAgICAgICAgeGVuY2FsbF9mcmVlX2J1ZmZlcih4Y2gtPnhjYWxs LCBib3VuY2VbaWR4XS5oKTsKKworICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGJ1 ZnMpOworCisgZmFpbDI6CisgICAgZnJlZShib3VuY2UpOworCisgZmFpbDE6CisgICAgcmV0dXJu IHJldDsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaApp bmRleCA5NzQ0NWFlLi5mMTkxMzIwIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRl LmgKKysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCkBAIC00MjIsNiArNDIyLDggQEAgaW50 IHhjX3ZtX2V2ZW50X2NvbnRyb2woeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9tYWluX2lk LCB1bnNpZ25lZCBpbnQgb3AsCiB2b2lkICp4Y192bV9ldmVudF9lbmFibGUoeGNfaW50ZXJmYWNl ICp4Y2gsIGRvbWlkX3QgZG9tYWluX2lkLCBpbnQgcGFyYW0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgKnBvcnQpOwogCitpbnQgZG9fZG1fb3AoeGNfaW50ZXJmYWNlICp4Y2gs IGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGludCBucl9idWZzLCAuLi4pOworCiAjZW5kaWYgLyog X19YQ19QUklWQVRFX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9N YWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKaW5kZXggZjc1MGQxMy4uNTg2OWQx YiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94 ODYvaHZtL01ha2VmaWxlCkBAIC0yLDYgKzIsNyBAQCBzdWJkaXIteSArPSBzdm0KIHN1YmRpci15 ICs9IHZteAogCiBvYmoteSArPSBhc2lkLm8KK29iai15ICs9IGRtLm8KIG9iai15ICs9IGVtdWxh dGUubwogb2JqLXkgKz0gaHBldC5vCiBvYmoteSArPSBodm0ubwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjQ2N2NiNDEKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94 ODYvaHZtL2RtLmMKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYg Q2l0cml4IFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAor ICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2ls bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0 aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAqLworCisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9oeXBl cmNhbGwuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKworI2luY2x1ZGUgPGFzbS9odm0vaW9y ZXEuaD4KKworI2luY2x1ZGUgPHhzbS94c20uaD4KKworc3RhdGljIGJvb2wgY29weV9idWZfZnJv bV9ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdm9pZCAqZHN0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4LCBzaXplX3QgZHN0X3NpemUpCit7Cisg ICAgc2l6ZV90IHNpemU7CisKKyAgICBpZiAoIGlkeCA+PSBucl9idWZzICkKKyAgICAgICAgcmV0 dXJuIGZhbHNlOworCisgICAgbWVtc2V0KGRzdCwgMCwgZHN0X3NpemUpOworCisgICAgc2l6ZSA9 IG1pbl90KHNpemVfdCwgZHN0X3NpemUsIGJ1ZnNbaWR4XS5zaXplKTsKKworICAgIHJldHVybiAh Y29weV9mcm9tX2d1ZXN0KGRzdCwgYnVmc1tpZHhdLmgsIHNpemUpOworfQorCitzdGF0aWMgYm9v bCBjb3B5X2J1Zl90b19ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHVuc2lnbmVkIGludCBpZHgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsIHNpemVfdCBzcmNfc2l6 ZSkKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIGlmICggaWR4ID49IG5yX2J1ZnMgKQorICAg ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplID0gbWluX3Qoc2l6ZV90LCBidWZzW2lkeF0u c2l6ZSwgc3JjX3NpemUpOworCisgICAgcmV0dXJuICFjb3B5X3RvX2d1ZXN0KGJ1ZnNbaWR4XS5o LCBzcmMsIHNpemUpOworfQorCitzdGF0aWMgaW50IGRtX29wKGRvbWlkX3QgZG9taWQsCisgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLAorICAgICAgICAgICAgICAgICB4ZW5f ZG1fb3BfYnVmX3QgYnVmc1tdKQoreworICAgIHN0cnVjdCBkb21haW4gKmQ7CisgICAgc3RydWN0 IHhlbl9kbV9vcCBvcDsKKyAgICBib29sIGNvbnN0X29wID0gdHJ1ZTsKKyAgICBsb25nIHJjOwor CisgICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKGRvbWlkLCAmZCk7CisgICAg aWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIGlmICggIWhhc19odm1fY29udGFp bmVyX2RvbWFpbihkKSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c21fZG1fb3Ao WFNNX0RNX1BSSVYsIGQpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IGlmICggIWNvcHlfYnVmX2Zyb21fZ3Vlc3QoYnVmcywgbnJfYnVmcywgJm9wLCAwLCBzaXplb2Yo b3ApKSApCisgICAgeworICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgIGdvdG8gb3V0Owor ICAgIH0KKworICAgIHN3aXRjaCAoIG9wLm9wICkKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAg ICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCAh cmMgJiYKKyAgICAgICAgICFjb25zdF9vcCAmJgorICAgICAgICAgIWNvcHlfYnVmX3RvX2d1ZXN0 KGJ1ZnMsIG5yX2J1ZnMsIDAsICZvcCwgc2l6ZW9mKG9wKSkgKQorICAgICAgICByYyA9IC1FRkFV TFQ7CisKKyBvdXQ6CisgICAgcmN1X3VubG9ja19kb21haW4oZCk7CisKKyAgICByZXR1cm4gcmM7 Cit9CisKKyNkZWZpbmUgTUFYX05SX0JVRlMgMQorCitpbnQgY29tcGF0X2RtX29wKGRvbWlkX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLAorICAgICAgICAg ICAgICAgICBDT01QQVRfSEFORExFX1BBUkFNKGNvbXBhdF9kbV9vcF9idWZfdCkgYnVmcykKK3sK KyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiBuYXRbTUFYX05SX0JVRlNdOworICAgIHVuc2lnbmVk IGludCBpOworCisgICAgaWYgKCBucl9idWZzID4gTUFYX05SX0JVRlMgKQorICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfYnVmczsgaSsrICkKKyAgICB7 CisgICAgICAgIHN0cnVjdCBjb21wYXRfZG1fb3BfYnVmIGNtcDsKKworICAgICAgICBpZiAoIGNv cHlfZnJvbV9jb21wYXRfb2Zmc2V0KCZjbXAsIGJ1ZnMsIGksIDEpICkKKyAgICAgICAgICAgIHJl dHVybiAtRUZBVUxUOworCisjZGVmaW5lIFhMQVRfZG1fb3BfYnVmX0hORExfaChfZF8sIF9zXykg XAorICAgICAgICBndWVzdF9mcm9tX2NvbXBhdF9oYW5kbGUoKF9kXyktPmgsIChfc18pLT5oKQor CisgICAgICAgIFhMQVRfZG1fb3BfYnVmKCZuYXRbaV0sICZjbXApOworCisjdW5kZWYgWExBVF9k bV9vcF9idWZfSE5ETF9oCisgICAgfQorCisgICAgcmV0dXJuIGRtX29wKGRvbWlkLCBucl9idWZz LCBuYXQpOworfQorCitsb25nIGRvX2RtX29wKGRvbWlkX3QgZG9taWQsCisgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBucl9idWZzLAorICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcykKK3sKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiBu YXRbTUFYX05SX0JVRlNdOworCisgICAgaWYgKCBucl9idWZzID4gTUFYX05SX0JVRlMgKQorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0X29mZnNldChu YXQsIGJ1ZnMsIDAsIG5yX2J1ZnMpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICBy ZXR1cm4gZG1fb3AoZG9taWQsIG5yX2J1ZnMsIG5hdCk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJp YWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9m ZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVu ZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4 Ni9odm0vaHZtLmMKaW5kZXggNmFiNjBkMi4uOTE2Yzg2NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0zODUyLDYgKzM4 NTIsNyBAQCBzdGF0aWMgY29uc3QgaHlwZXJjYWxsX3RhYmxlX3QgaHZtX2h5cGVyY2FsbF90YWJs ZVtdID0gewogICAgIENPTVBBVF9DQUxMKHBsYXRmb3JtX29wKSwKICAgICBDT01QQVRfQ0FMTCht bXVleHRfb3ApLAogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAorICAgIENPTVBBVF9DQUxMKGRt X29wKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKQogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jCmluZGV4IDcwYTMwYTUu LjhkZDE5ZGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYworKysgYi94ZW4v YXJjaC94ODYvaHlwZXJjYWxsLmMKQEAgLTY2LDYgKzY2LDcgQEAgY29uc3QgaHlwZXJjYWxsX2Fy Z3NfdCBoeXBlcmNhbGxfYXJnc190YWJsZVtOUl9oeXBlcmNhbGxzXSA9CiAgICAgQVJHUyhrZXhl Y19vcCwgMiksCiAgICAgQVJHUyh0bWVtX29wLCAxKSwKICAgICBBUkdTKHhlbnBtdV9vcCwgMiks CisgICAgQVJHUyhkbV9vcCwgMyksCiAgICAgQVJHUyhtY2EsIDEpLAogICAgIEFSR1MoYXJjaF8x LCAxKSwKIH07CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RhdGljIGNvbnN0IGh5cGVyY2FsbF90YWJs ZV90IHB2X2h5cGVyY2FsbF90YWJsZVtdID0gewogICAgIEhZUEVSQ0FMTCh0bWVtX29wKSwKICNl bmRpZgogICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAorICAgIENPTVBBVF9DQUxMKGRtX29wKSwK ICAgICBIWVBFUkNBTEwobWNhKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKSwKIH07CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9NYWtlZmlsZSBiL3hlbi9pbmNsdWRlL01ha2VmaWxlCmluZGV4IDFl ODBhMGIuLmFjYTdmMjAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL01ha2VmaWxlCisrKyBiL3hl bi9pbmNsdWRlL01ha2VmaWxlCkBAIC0yNyw2ICsyNyw3IEBAIGhlYWRlcnMtJChDT05GSUdfWDg2 KSAgICAgKz0gY29tcGF0L2FyY2gteDg2L3hlbi1tY2EuaAogaGVhZGVycy0kKENPTkZJR19YODYp ICAgICArPSBjb21wYXQvYXJjaC14ODYveGVuLmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAg Kz0gY29tcGF0L2FyY2gteDg2L3hlbi0kKGNvbXBhdC1hcmNoLXkpLmgKIGhlYWRlcnMtJChDT05G SUdfWDg2KSAgICAgKz0gY29tcGF0L2h2bS9odm1fdmNwdS5oCitoZWFkZXJzLSQoQ09ORklHX1g4 NikgICAgICs9IGNvbXBhdC9odm0vZG1fb3AuaAogaGVhZGVycy15ICAgICAgICAgICAgICAgICAr PSBjb21wYXQvYXJjaC0kKGNvbXBhdC1hcmNoLXkpLmggY29tcGF0L3BtdS5oIGNvbXBhdC94bGF0 LmgKIGhlYWRlcnMtJChDT05GSUdfRkxBU0spICAgKz0gY29tcGF0L3hzbS9mbGFza19vcC5oCiAK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9odm0vZG1fb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44 NjI3YTY0Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5o CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIENpdHJpeCBTeXN0 ZW1zIEluYworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwor ICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSFZNX0RN X09QX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSFZNX0RNX09QX0hfXworCisjaW5jbHVkZSAi Li4veGVuLmgiCisKKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNf XykKKworc3RydWN0IHhlbl9kbV9vcCB7CisgICAgdWludDMyX3Qgb3A7Cit9OworCisjZW5kaWYg LyogX19YRU5fXyB8fCBfX1hFTl9UT09MU19fICovCisKK3N0cnVjdCB4ZW5fZG1fb3BfYnVmIHsK KyAgICBYRU5fR1VFU1RfSEFORExFKHZvaWQpIGg7CisgICAgeGVuX3Vsb25nX3Qgc2l6ZTsKK307 Cit0eXBlZGVmIHN0cnVjdCB4ZW5fZG1fb3BfYnVmIHhlbl9kbV9vcF9idWZfdDsKK0RFRklORV9Y RU5fR1VFU1RfSEFORExFKHhlbl9kbV9vcF9idWZfdCk7CisKKy8qIGAgZW51bSBuZWdfZXJybm92 YWwKKyAqIGAgSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAorICogYCAgICAgICAgICAg ICAgICAgIHhlbl9kbV9vcF9idWZfdCBidWZzW10sCisgKiBgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG5yX2J1ZnMpCisgKiBgCisgKgorICogQGRvbWlkIGlzIHRoZSBkb21haW4gdGhl IGh5cGVyY2FsbCBvcGVyYXRlcyBvbi4KKyAqIEBidWZzIHBvaW50cyB0byBhbiBhcnJheSBvZiBi dWZmZXJzIHdoZXJlIEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0CisgKiB4ZW5fZG1fb3AsIGRl c2NyaWJpbmcgdGhlIHNwZWNpZmljIGRldmljZSBtb2RlbCBvcGVyYXRpb24gYW5kIGl0cworICog cGFyYW1ldGVycy4KKyAqIEBidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFt ZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBvZgorICogcGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0 byBvciBmcm9tIHRoZSBkb21haW4uCisgKiBAbnJfYnVmcyBpcyB0aGUgbnVtYmVyIG9mIGJ1ZmZl cnMgaW4gdGhlIEBidWZzIGFycmF5LgorICovCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZN X0RNX09QX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAppbmRleCA2 NTkzMDI2Li45MWJhOGJiIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKKysr IGIveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC0xMjAsNiArMTIwLDcgQEAgREVGSU5FX1hF Tl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3QpOwogI2RlZmluZSBfX0hZUEVSVklTT1JfdG1lbV9v cCAgICAgICAgICAgICAgMzgKICNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2VydmVkX29wICAg ICAgIDM5IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8KICNkZWZpbmUgX19IWVBFUlZJU09S X3hlbnBtdV9vcCAgICAgICAgICAgIDQwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9kbV9vcCAgICAg ICAgICAgICAgICA0MQogCiAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmlu aXRpb25zLiAqLwogI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCBiL3hlbi9pbmNsdWRlL3hl bi9oeXBlcmNhbGwuaAppbmRleCAyMDdhMGU4Li44ZDQ4MjRmIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS94ZW4vaHlwZXJjYWxsLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCkBA IC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8cHVibGljL3RtZW0uaD4KICNpbmNsdWRlIDxwdWJs aWMvdmVyc2lvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9wbXUuaD4KKyNpbmNsdWRlIDxwdWJsaWMv aHZtL2RtX29wLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVyY2FsbC5oPgogI2luY2x1ZGUgPHhzbS94 c20uaD4KIApAQCAtMTQxLDYgKzE0MiwxMiBAQCBkb194ZW5vcHJvZl9vcChpbnQgb3AsIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKTsKIGV4dGVybiBsb25nCiBkb194ZW5wbXVfb3Ao dW5zaWduZWQgaW50IG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9wbXVfcGFyYW1zX3Qp IGFyZyk7CiAKK2V4dGVybiBsb25nCitkb19kbV9vcCgKKyAgICBkb21pZF90IGRvbWlkLAorICAg IHVuc2lnbmVkIGludCBucl9idWZzLAorICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2Rt X29wX2J1Zl90KSBidWZzKTsKKwogI2lmZGVmIENPTkZJR19DT01QQVQKIAogZXh0ZXJuIGludApA QCAtMTkwLDYgKzE5NywxNCBAQCBleHRlcm4gaW50IGNvbXBhdF9tdWx0aWNhbGwoCiAgICAgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTShtdWx0aWNhbGxfZW50cnlfY29tcGF0X3QpIGNhbGxfbGlzdCwK ICAgICB1aW50MzJfdCBucl9jYWxscyk7CiAKKyNpbmNsdWRlIDxjb21wYXQvaHZtL2RtX29wLmg+ CisKK2V4dGVybiBpbnQKK2NvbXBhdF9kbV9vcCgKKyAgICBkb21pZF90IGRvbWlkLAorICAgIHVu c2lnbmVkIGludCBucl9idWZzLAorICAgIENPTVBBVF9IQU5ETEVfUEFSQU0oY29tcGF0X2RtX29w X2J1Zl90KSBidWZzKTsKKwogI2VuZGlmCiAKIHZvaWQgYXJjaF9nZXRfeGVuX2NhcHMoeGVuX2Nh cGFiaWxpdGllc19pbmZvX3QgKmluZm8pOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGxhdC5s c3QgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAppbmRleCBiZGYxZDA1Li4wMzlhMzljIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVkZS94bGF0LmxzdApAQCAt NTYsNiArNTYsNyBAQAogPyAgICAgICBncmFudF9lbnRyeV9oZWFkZXIgICAgICAgICAgICAgIGdy YW50X3RhYmxlLmgKID8JZ3JhbnRfZW50cnlfdjIJCQlncmFudF90YWJsZS5oCiA/CWdudHRhYl9z d2FwX2dyYW50X3JlZgkJZ3JhbnRfdGFibGUuaAorIQlkbV9vcF9idWYJCQlodm0vZG1fb3AuaAog Pwl2Y3B1X2h2bV9jb250ZXh0CQlodm0vaHZtX3ZjcHUuaAogPwl2Y3B1X2h2bV94ODZfMzIJCQlo dm0vaHZtX3ZjcHUuaAogPwl2Y3B1X2h2bV94ODZfNjQJCQlodm0vaHZtX3ZjcHUuaApkaWZmIC0t 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 b29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDA0MGEyNTEuLjM4M2RkNGYgMTAw NjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tz LmMKQEAgLTE2MzUsNiArMTYzNSwxMiBAQCBzdGF0aWMgaW50IGZsYXNrX3BtdV9vcCAoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IG9wKQogICAgICAgICByZXR1cm4gLUVQRVJNOwogICAg IH0KIH0KKworc3RhdGljIGludCBmbGFza19kbV9vcChzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0hWTSwgSFZNX19ETSk7Cit9CisK ICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCiAKIHN0YXRpYyBpbnQgZmxhc2tfeGVuX3ZlcnNpb24g KHVpbnQzMl90IG9wKQpAQCAtMTgxNCw2ICsxODIwLDcgQEAgc3RhdGljIHN0cnVjdCB4c21fb3Bl cmF0aW9ucyBmbGFza19vcHMgPSB7CiAgICAgLmlvcG9ydF9wZXJtaXNzaW9uID0gZmxhc2tfaW9w b3J0X3Blcm1pc3Npb24sCiAgICAgLmlvcG9ydF9tYXBwaW5nID0gZmxhc2tfaW9wb3J0X21hcHBp bmcsCiAgICAgLnBtdV9vcCA9IGZsYXNrX3BtdV9vcCwKKyAgICAuZG1fb3AgPSBmbGFza19kbV9v cCwKICNlbmRpZgogICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNrX3hlbl92ZXJzaW9uLAogfTsKLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==