From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v7 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Mon, 23 Jan 2017 13:59:42 +0000 Message-ID: <1485179989-1763-2-git-send-email-paul.durrant@citrix.com> References: <1485179989-1763-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 1cVfA6-0006w8-20 for xen-devel@lists.xenproject.org; Mon, 23 Jan 2017 13:59:58 +0000 In-Reply-To: <1485179989-1763-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 ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KCnY3OgotIE1vdmUgdGhlIGh5cGVyY2FsbCBhbmQg eGVuX2RtX29wX2J1ZiBkZWZpbml0aW9uIG91dHNpZGUgX19YRU5fVE9PTFNfXwoKdjY6Ci0gQWRk IGJvb2wgdG8gY29udHJvbCBjb3B5LWJhY2sgb2Ygb3Agc3RydWN0dXJlIGFzIHJlcXVlc3RlZCBi eSBBbmR5Cgp2NToKLSBDb3B5IGZ1bmN0aW9ucyBub3cgdXNlIGV4YWN0IHNpemVzLgotIEFkZHJl c3NlZCBvdGhlciBjb21tZW50cyBmcm9tIEphbiwgV2VpIGFuZCBBbmRyZXcuIEhvd2V2ZXIgSSBo YXZlCiAgbGVmdCB0aGUgY29kZSB0aGF0IHVuY29uZGl0aW9uYWxseSBjb3BpZXMgYmFjayB0aGUg b3Agc3RydWN0dXJlIGFzCiAgSSB0aGluayBpdCB3aWxsIG5lZWRsZXNzbHkgY29tcGxpY2F0ZSB0 aGUgY29kZSB0byBtYWtlIHRoaXMgc2VsZWN0aXZlLgoKdjQ6Ci0gQ2hhbmdlIFhFTl9HVUVTVF9I QU5ETEVfNjQgdG8gWEVOX0dVRVNUX0hBTkRMRSBpbiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZgogIGFu ZCBhZGQgdGhlIG5lY2Vzc2FyeSBjb21wYXQgY29kZS4gRHJvcCBKYW4ncyBSLWIgc2luY2UgdGhl IHBhdGNoIGhhcwogIGJlZW4gZnVuZGFtZW50YWxseSBtb2RpZmllZC4KCnYzOgotIFJlLXdyaXR0 ZW4gbGFyZ2UgcG9ydGlvbnMgb2YgZG1vcC5tYXJrZG93biB0byByZW1vdmUgcmVmZXJlbmNlcyB0 bwogIHByZXZpb3VzIHByb3Bvc2FscyBhbmQgbWFrZSBpdCBhIHN0YW5kYWxvbmUgZGVzaWduIGRv Yy4KCnYyOgotIEFkZHJlc3NlZCBzZXZlcmFsIGNvbW1lbnRzIGZyb20gSmFuLgotIFJlbW92ZWQg bW9kaWZpY2F0aW9uIG9mIF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0VfVkVSU0lPTl9fIGFzIGl0IGlz IG5vdAogIG5lZWRlZCBpbiB0aGlzIHBhdGNoLgotLS0KIGRvY3MvZGVzaWducy9kbW9wLm1hcmtk b3duICAgICAgICB8IDE2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog dG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmIHwgICAyICstCiB0b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaCAgICAgfCAgIDEgKwogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jICAg ICAgICAgIHwgIDcwICsrKysrKysrKysrKysrKysKIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCAg ICAgICAgICB8ICAgMiArCiB4ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlICAgICAgICAgfCAgIDEg KwogeGVuL2FyY2gveDg2L2h2bS9kbS5jICAgICAgICAgICAgIHwgMTQyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICAgfCAg IDEgKwogeGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jICAgICAgICAgIHwgICAyICsKIHhlbi9pbmNs dWRlL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZt L2RtX29wLmggICAgfCAgNjkgKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3hl bi5oICAgICAgICAgIHwgICAxICsKIHhlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaCAgICAgICB8 ICAxNSArKysrCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAgICAgICAgfCAgIDEgKwogeGVu L2luY2x1ZGUveHNtL2R1bW15LmggICAgICAgICAgIHwgICA2ICsrCiB4ZW4vaW5jbHVkZS94c20v eHNtLmggICAgICAgICAgICAgfCAgIDYgKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAg ICAgICB8ICAgNyArKwogMTcgZmlsZXMgY2hhbmdlZCwgNDkxIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vZG0uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAoKZGlmZiAtLWdpdCBhL2RvY3MvZGVz aWducy9kbW9wLm1hcmtkb3duIGIvZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24KbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzZjNhNgotLS0gL2Rldi9udWxsCisrKyBiL2Rv Y3MvZGVzaWducy9kbW9wLm1hcmtkb3duCkBAIC0wLDAgKzEsMTY1IEBACitETU9QCis9PT09CisK 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 IGludCBpZHgsIHNpemVfdCBkc3Rfc2l6ZSkKK3sKKyAgICBpZiAoIGRzdF9zaXplICE9IGJ1ZnNb aWR4XS5zaXplICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFjb3B5X2Zy b21fZ3Vlc3QoZHN0LCBidWZzW2lkeF0uaCwgZHN0X3NpemUpOworfQorCitzdGF0aWMgYm9vbCBj b3B5X2J1Zl90b19ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHVuc2lnbmVkIGludCBpZHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsIHNpemVfdCBzcmNfc2l6ZSkK K3sKKyAgICBpZiAoIGJ1ZnNbaWR4XS5zaXplICE9IHNyY19zaXplICkKKyAgICAgICAgcmV0dXJu IGZhbHNlOworCisgICAgcmV0dXJuICFjb3B5X3RvX2d1ZXN0KGJ1ZnNbaWR4XS5oLCBzcmMsIGJ1 ZnNbaWR4XS5zaXplKTsKK30KKworVGhpcyBsZWF2ZXMgZG9fZG1fb3AgZWFzeSB0byBpbXBsZW1l bnQgYXMgYmVsb3c6CisKK3N0YXRpYyBpbnQgZG1fb3AoZG9taWRfdCBkb21pZCwKKyAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCisgICAgICAgICAgICAgICAgIHhlbl9kbV9v cF9idWZfdCBidWZzW10pCit7CisgICAgc3RydWN0IGRvbWFpbiAqZDsKKyAgICBzdHJ1Y3QgeGVu X2RtX29wIG9wOworICAgIGJvb2wgY29uc3Rfb3AgPSB0cnVlOworICAgIGxvbmcgcmM7CisKKyAg ICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJf ZG9tYWluKGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9kbV9vcChYU01f RE1fUFJJViwgZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaWYg KCAhY29weV9idWZfZnJvbV9ndWVzdChidWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkp ICkKKyAgICB7CisgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBvdXQ7CisgICAg fQorCisgICAgc3dpdGNoICggb3Aub3AgKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBy YyA9IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoICFyYyAm JgorICAgICAgICAgIWNvbnN0X29wICYmCisgICAgICAgICAhY29weV9idWZfdG9fZ3Vlc3QoYnVm cywgbnJfYnVmcywgMCwgJm9wLCBzaXplb2Yob3ApKSApCisgICAgICAgIHJjID0gLUVGQVVMVDsK KworIG91dDoKKyAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKKworICAgIHJldHVybiByYzsKK30K KworbG9uZyBkb19kbV9vcChkb21pZF90IGRvbWlkLAorICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbnJfYnVmcywKKyAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG1f b3BfYnVmX3QpIGJ1ZnMpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgbmF0W01BWF9OUl9C VUZTXTsKKworICAgIGlmICggbnJfYnVmcyA+IE1BWF9OUl9CVUZTICkKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisKKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdF9vZmZzZXQobmF0LCBidWZzLCAw LCBucl9idWZzKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgcmV0dXJuIGRtX29w KGRvbWlkLCBucl9idWZzLCBuYXQpOworfQpkaWZmIC0tZ2l0IGEvdG9vbHMvZmxhc2svcG9saWN5 L21vZHVsZXMveGVuLmlmIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmCmluZGV4 IDFhY2E3NWQuLmY5MjU0YzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVz L3hlbi5pZgorKysgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKQEAgLTE1MSw3 ICsxNTEsNyBAQCBkZWZpbmUoYGRldmljZV9tb2RlbCcsIGAKIAogCWFsbG93ICQxICQyX3Rhcmdl dDpkb21haW4geyBnZXRkb21haW5pbmZvIHNodXRkb3duIH07CiAJYWxsb3cgJDEgJDJfdGFyZ2V0 Om1tdSB7IG1hcF9yZWFkIG1hcF93cml0ZSBhZGp1c3QgcGh5c21hcCB0YXJnZXRfaGFjayB9Owot CWFsbG93ICQxICQyX3RhcmdldDpodm0geyBnZXRwYXJhbSBzZXRwYXJhbSB0cmFja2RpcnR5dnJh bSBodm1jdGwgaXJxbGV2ZWwgcGNpcm91dGUgcGNpbGV2ZWwgY2FjaGVhdHRyIHNlbmRfaXJxIH07 CisJYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFtIHNldHBhcmFtIHRyYWNrZGlydHl2 cmFtIGh2bWN0bCBpcnFsZXZlbCBwY2lyb3V0ZSBwY2lsZXZlbCBjYWNoZWF0dHIgc2VuZF9pcnEg ZG0gfTsKICcpCiAKICMgbWFrZV9kZXZpY2VfbW9kZWwocHJpdiwgZG1fZG9tLCBodm1fZG9tKQpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAppbmRleCA2M2M2MTZmLi5jZjM2NTIxIDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUg PHhlbi9tZW1vcnkuaD4KICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDx4 ZW4vaHZtL2RtX29wLmg+CiAjaW5jbHVkZSA8eGVuL2h2bS9wYXJhbXMuaD4KICNpbmNsdWRlIDx4 ZW4veHNtL2ZsYXNrX29wLmg+CiAjaW5jbHVkZSA8eGVuL3RtZW0uaD4KZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhjL3hjX3ByaXZhdGUuYyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwppbmRleCBk NTdjMzlhLi44MDkxODNjIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKKysr IGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCkBAIC03NzYsNiArNzc2LDc2IEBAIGludCB4Y19m ZnM2NCh1aW50NjRfdCB4KQogICAgIHJldHVybiBsID8geGNfZmZzMzIobCkgOiBoID8geGNfZmZz MzIoaCkgKyAzMiA6IDA7CiB9CiAKK2ludCBkb19kbV9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgZG9t aWRfdCBkb21pZCwgdW5zaWduZWQgaW50IG5yX2J1ZnMsIC4uLikKK3sKKyAgICBpbnQgcmV0ID0g LTE7CisgICAgc3RydWN0ICB7CisgICAgICAgIHZvaWQgKnU7CisgICAgICAgIHZvaWQgKmg7Cisg ICAgfSAqYm91bmNlOworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5fZG1fb3BfYnVm X3QsIGJ1ZnMpOworICAgIHZhX2xpc3QgYXJnczsKKyAgICB1bnNpZ25lZCBpbnQgaWR4OworCisg ICAgYm91bmNlID0gY2FsbG9jKG5yX2J1ZnMsIHNpemVvZigqYm91bmNlKSk7CisgICAgaWYgKCBi b3VuY2UgPT0gTlVMTCApCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBidWZzID0geGNfaHlw ZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGJ1ZnMsIHNpemVvZigqYnVmcykgKiBucl9idWZzKTsK KyAgICBpZiAoIGJ1ZnMgPT0gTlVMTCApCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICB2YV9z dGFydChhcmdzLCBucl9idWZzKTsKKyAgICBmb3IgKCBpZHggPSAwOyBpZHggPCBucl9idWZzOyBp ZHgrKyApCisgICAgeworICAgICAgICB2b2lkICp1ID0gdmFfYXJnKGFyZ3MsIHZvaWQgKik7Cisg ICAgICAgIHNpemVfdCBzaXplID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7CisKKyAgICAgICAgYm91 bmNlW2lkeF0uaCA9IHhlbmNhbGxfYWxsb2NfYnVmZmVyKHhjaC0+eGNhbGwsIHNpemUpOworICAg ICAgICBpZiAoIGJvdW5jZVtpZHhdLmggPT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIGZhaWwz OworCisgICAgICAgIG1lbWNweShib3VuY2VbaWR4XS5oLCB1LCBzaXplKTsKKyAgICAgICAgYm91 bmNlW2lkeF0udSA9IHU7CisKKyAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGVfcmF3KGJ1ZnNb aWR4XS5oLCBib3VuY2VbaWR4XS5oKTsKKyAgICAgICAgYnVmc1tpZHhdLnNpemUgPSBzaXplOwor ICAgIH0KKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICByZXQgPSB4ZW5jYWxsMyh4Y2gtPnhjYWxs LCBfX0hZUEVSVklTT1JfZG1fb3AsCisgICAgICAgICAgICAgICAgICAgZG9taWQsIG5yX2J1ZnMs IEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGJ1ZnMpKTsKKyAgICBpZiAoIHJldCA8IDAgKQorICAg ICAgICBnb3RvIGZhaWw0OworCisgICAgd2hpbGUgKCBpZHgtLSAhPSAwICkKKyAgICB7CisgICAg ICAgIG1lbWNweShib3VuY2VbaWR4XS51LCBib3VuY2VbaWR4XS5oLCBidWZzW2lkeF0uc2l6ZSk7 CisgICAgICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoeGNoLT54Y2FsbCwgYm91bmNlW2lkeF0uaCk7 CisgICAgfQorCisgICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYnVmcyk7CisKKyAg ICBmcmVlKGJvdW5jZSk7CisKKyAgICByZXR1cm4gMDsKKworIGZhaWw0OgorICAgIGlkeCA9IG5y X2J1ZnM7CisKKyBmYWlsMzoKKyAgICB3aGlsZSAoIGlkeC0tICE9IDAgKQorICAgICAgICB4ZW5j YWxsX2ZyZWVfYnVmZmVyKHhjaC0+eGNhbGwsIGJvdW5jZVtpZHhdLmgpOworCisgICAgeGNfaHlw ZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYnVmcyk7CisKKyBmYWlsMjoKKyAgICBmcmVlKGJvdW5j ZSk7CisKKyBmYWlsMToKKyAgICByZXR1cm4gcmV0OworfQorCiAvKgogICogTG9jYWwgdmFyaWFi bGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oIGIv dG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCmluZGV4IDk3NDQ1YWUuLmYxOTEzMjAgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaAorKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRl LmgKQEAgLTQyMiw2ICs0MjIsOCBAQCBpbnQgeGNfdm1fZXZlbnRfY29udHJvbCh4Y19pbnRlcmZh Y2UgKnhjaCwgZG9taWRfdCBkb21haW5faWQsIHVuc2lnbmVkIGludCBvcCwKIHZvaWQgKnhjX3Zt X2V2ZW50X2VuYWJsZSh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21haW5faWQsIGludCBw YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcG9ydCk7CiAKK2ludCBk b19kbV9vcCh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwgdW5zaWduZWQgaW50IG5y X2J1ZnMsIC4uLik7CisKICNlbmRpZiAvKiBfX1hDX1BSSVZBVEVfSF9fICovCiAKIC8qCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2h2bS9NYWtl ZmlsZQppbmRleCBmNzUwZDEzLi41ODY5ZDFiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKQEAgLTIsNiArMiw3IEBA IHN1YmRpci15ICs9IHN2bQogc3ViZGlyLXkgKz0gdm14CiAKIG9iai15ICs9IGFzaWQubworb2Jq LXkgKz0gZG0ubwogb2JqLXkgKz0gZW11bGF0ZS5vCiBvYmoteSArPSBocGV0Lm8KIG9iai15ICs9 IGh2bS5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYv aHZtL2RtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4ZjhkMQotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpAQCAtMCwwICsxLDE0MiBAQAor LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBDaXRyaXggU3lzdGVtcyBJbmMuCisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNj ZXNzLmg+CisjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5o PgorCisjaW5jbHVkZSA8YXNtL2h2bS9pb3JlcS5oPgorCisjaW5jbHVkZSA8eHNtL3hzbS5oPgor CitzdGF0aWMgYm9vbCBjb3B5X2J1Zl9mcm9tX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBidWZzW10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLCB2 b2lkICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBp ZHgsIHNpemVfdCBkc3Rfc2l6ZSkKK3sKKyAgICBpZiAoIGRzdF9zaXplICE9IGJ1ZnNbaWR4XS5z aXplICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFjb3B5X2Zyb21fZ3Vl c3QoZHN0LCBidWZzW2lkeF0uaCwgZHN0X3NpemUpOworfQorCitzdGF0aWMgYm9vbCBjb3B5X2J1 Zl90b19ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHVuc2lnbmVkIGludCBpZHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsIHNpemVfdCBzcmNfc2l6ZSkKK3sKKyAg ICBpZiAoIGJ1ZnNbaWR4XS5zaXplICE9IHNyY19zaXplICkKKyAgICAgICAgcmV0dXJuIGZhbHNl OworCisgICAgcmV0dXJuICFjb3B5X3RvX2d1ZXN0KGJ1ZnNbaWR4XS5oLCBzcmMsIGJ1ZnNbaWR4 XS5zaXplKTsKK30KKworc3RhdGljIGludCBkbV9vcChkb21pZF90IGRvbWlkLAorICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAgICAgeGVuX2RtX29w X2J1Zl90IGJ1ZnNbXSkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkOworICAgIHN0cnVjdCB4ZW5f ZG1fb3Agb3A7CisgICAgYm9vbCBjb25zdF9vcCA9IHRydWU7CisgICAgbG9uZyByYzsKKworICAg IHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChkb21pZCwgJmQpOworICAgIGlmICgg cmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9k b21haW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNtX2RtX29wKFhTTV9E TV9QUklWLCBkKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBpZiAo ICFjb3B5X2J1Zl9mcm9tX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsICZvcCwgMCwgc2l6ZW9mKG9wKSkg KQorICAgIHsKKyAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICBnb3RvIG91dDsKKyAgICB9 CisKKyAgICBzd2l0Y2ggKCBvcC5vcCApCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgICAgIHJj ID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggIXJjICYm CisgICAgICAgICAhY29uc3Rfb3AgJiYKKyAgICAgICAgICFjb3B5X2J1Zl90b19ndWVzdChidWZz LCBucl9idWZzLCAwLCAmb3AsIHNpemVvZihvcCkpICkKKyAgICAgICAgcmMgPSAtRUZBVUxUOwor Cisgb3V0OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworCisgICAgcmV0dXJuIHJjOworfQor CisjZGVmaW5lIE1BWF9OUl9CVUZTIDEKKworaW50IGNvbXBhdF9kbV9vcChkb21pZF90IGRvbWlk LAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAg ICAgQ09NUEFUX0hBTkRMRV9QQVJBTShjb21wYXRfZG1fb3BfYnVmX3QpIGJ1ZnMpCit7CisgICAg c3RydWN0IHhlbl9kbV9vcF9idWYgbmF0W01BWF9OUl9CVUZTXTsKKyAgICB1bnNpZ25lZCBpbnQg aTsKKworICAgIGlmICggbnJfYnVmcyA+IE1BWF9OUl9CVUZTICkKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2J1ZnM7IGkrKyApCisgICAgeworICAg ICAgICBzdHJ1Y3QgY29tcGF0X2RtX29wX2J1ZiBjbXA7CisKKyAgICAgICAgaWYgKCBjb3B5X2Zy b21fY29tcGF0X29mZnNldCgmY21wLCBidWZzLCBpLCAxKSApCisgICAgICAgICAgICByZXR1cm4g LUVGQVVMVDsKKworI2RlZmluZSBYTEFUX2RtX29wX2J1Zl9ITkRMX2goX2RfLCBfc18pIFwKKyAg ICAgICAgZ3Vlc3RfZnJvbV9jb21wYXRfaGFuZGxlKChfZF8pLT5oLCAoX3NfKS0+aCkKKworICAg ICAgICBYTEFUX2RtX29wX2J1ZigmbmF0W2ldLCAmY21wKTsKKworI3VuZGVmIFhMQVRfZG1fb3Bf YnVmX0hORExfaAorICAgIH0KKworICAgIHJldHVybiBkbV9vcChkb21pZCwgbnJfYnVmcywgbmF0 KTsKK30KKworbG9uZyBkb19kbV9vcChkb21pZF90IGRvbWlkLAorICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbnJfYnVmcywKKyAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fZG1fb3BfYnVmX3QpIGJ1ZnMpCit7CisgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgbmF0W01B WF9OUl9CVUZTXTsKKworICAgIGlmICggbnJfYnVmcyA+IE1BWF9OUl9CVUZTICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdF9vZmZzZXQobmF0LCBi dWZzLCAwLCBucl9idWZzKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgcmV0dXJu IGRtX29wKGRvbWlkLCBucl9idWZzLCBuYXQpOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZt L2h2bS5jCmluZGV4IDZhYjYwZDIuLjkxNmM4NjcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtMzg1Miw2ICszODUyLDcg QEAgc3RhdGljIGNvbnN0IGh5cGVyY2FsbF90YWJsZV90IGh2bV9oeXBlcmNhbGxfdGFibGVbXSA9 IHsKICAgICBDT01QQVRfQ0FMTChwbGF0Zm9ybV9vcCksCiAgICAgQ09NUEFUX0NBTEwobW11ZXh0 X29wKSwKICAgICBIWVBFUkNBTEwoeGVucG11X29wKSwKKyAgICBDT01QQVRfQ0FMTChkbV9vcCks CiAgICAgSFlQRVJDQUxMKGFyY2hfMSkKIH07CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o eXBlcmNhbGwuYyBiL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwppbmRleCA3MGEzMGE1Li44ZGQx OWRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMKKysrIGIveGVuL2FyY2gv eDg2L2h5cGVyY2FsbC5jCkBAIC02Niw2ICs2Niw3IEBAIGNvbnN0IGh5cGVyY2FsbF9hcmdzX3Qg aHlwZXJjYWxsX2FyZ3NfdGFibGVbTlJfaHlwZXJjYWxsc10gPQogICAgIEFSR1Moa2V4ZWNfb3As IDIpLAogICAgIEFSR1ModG1lbV9vcCwgMSksCiAgICAgQVJHUyh4ZW5wbXVfb3AsIDIpLAorICAg IEFSR1MoZG1fb3AsIDMpLAogICAgIEFSR1MobWNhLCAxKSwKICAgICBBUkdTKGFyY2hfMSwgMSks CiB9OwpAQCAtMTI4LDYgKzEyOSw3IEBAIHN0YXRpYyBjb25zdCBoeXBlcmNhbGxfdGFibGVfdCBw dl9oeXBlcmNhbGxfdGFibGVbXSA9IHsKICAgICBIWVBFUkNBTEwodG1lbV9vcCksCiAjZW5kaWYK ICAgICBIWVBFUkNBTEwoeGVucG11X29wKSwKKyAgICBDT01QQVRfQ0FMTChkbV9vcCksCiAgICAg SFlQRVJDQUxMKG1jYSksCiAgICAgSFlQRVJDQUxMKGFyY2hfMSksCiB9OwpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvTWFrZWZpbGUgYi94ZW4vaW5jbHVkZS9NYWtlZmlsZQppbmRleCAxZTgwYTBi Li5hY2E3ZjIwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9NYWtlZmlsZQorKysgYi94ZW4vaW5j bHVkZS9NYWtlZmlsZQpAQCAtMjcsNiArMjcsNyBAQCBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAg ICs9IGNvbXBhdC9hcmNoLXg4Ni94ZW4tbWNhLmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAg Kz0gY29tcGF0L2FyY2gteDg2L3hlbi5oCiBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNv bXBhdC9hcmNoLXg4Ni94ZW4tJChjb21wYXQtYXJjaC15KS5oCiBoZWFkZXJzLSQoQ09ORklHX1g4 NikgICAgICs9IGNvbXBhdC9odm0vaHZtX3ZjcHUuaAoraGVhZGVycy0kKENPTkZJR19YODYpICAg ICArPSBjb21wYXQvaHZtL2RtX29wLmgKIGhlYWRlcnMteSAgICAgICAgICAgICAgICAgKz0gY29t cGF0L2FyY2gtJChjb21wYXQtYXJjaC15KS5oIGNvbXBhdC9wbXUuaCBjb21wYXQveGxhdC5oCiBo ZWFkZXJzLSQoQ09ORklHX0ZMQVNLKSAgICs9IGNvbXBhdC94c20vZmxhc2tfb3AuaAogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJs aWMvaHZtL2RtX29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyN2E2 NAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApAQCAt MCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2LCBDaXRyaXggU3lzdGVtcyBJ bmMKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0hWTV9ETV9PUF9I X18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0hWTV9ETV9PUF9IX18KKworI2luY2x1ZGUgIi4uL3hl bi5oIgorCisjaWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisK K3N0cnVjdCB4ZW5fZG1fb3AgeworICAgIHVpbnQzMl90IG9wOworfTsKKworI2VuZGlmIC8qIF9f WEVOX18gfHwgX19YRU5fVE9PTFNfXyAqLworCitzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB7CisgICAg WEVOX0dVRVNUX0hBTkRMRSh2b2lkKSBoOworICAgIHhlbl91bG9uZ190IHNpemU7Cit9OwordHlw ZWRlZiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB4ZW5fZG1fb3BfYnVmX3Q7CitERUZJTkVfWEVOX0dV RVNUX0hBTkRMRSh4ZW5fZG1fb3BfYnVmX3QpOworCisvKiBgIGVudW0gbmVnX2Vycm5vdmFsCisg KiBgIEhZUEVSVklTT1JfZG1fb3AoZG9taWRfdCBkb21pZCwKKyAqIGAgICAgICAgICAgICAgICAg ICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAorICogYCAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBucl9idWZzKQorICogYAorICoKKyAqIEBkb21pZCBpcyB0aGUgZG9tYWluIHRoZSBoeXBl cmNhbGwgb3BlcmF0ZXMgb24uCisgKiBAYnVmcyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgYnVmZmVy cyB3aGVyZSBAYnVmc1swXSBjb250YWlucyBhIHN0cnVjdAorICogeGVuX2RtX29wLCBkZXNjcmli aW5nIHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgb3BlcmF0aW9uIGFuZCBpdHMKKyAqIHBhcmFt ZXRlcnMuCisgKiBAYnVmc1sxLi5dIG1heSBiZSByZWZlcmVuY2VkIGluIHRoZSBwYXJhbWV0ZXJz IGZvciB0aGUgcHVycG9zZXMgb2YKKyAqIHBhc3NpbmcgZXh0cmEgaW5mb3JtYXRpb24gdG8gb3Ig ZnJvbSB0aGUgZG9tYWluLgorICogQG5yX2J1ZnMgaXMgdGhlIG51bWJlciBvZiBidWZmZXJzIGlu IHRoZSBAYnVmcyBhcnJheS4KKyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9ETV9P UF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmls ZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAq IGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9wdWJsaWMveGVuLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKaW5kZXggNjU5MzAy Ni4uOTFiYThiYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy94ZW4uaApAQCAtMTIwLDYgKzEyMCw3IEBAIERFRklORV9YRU5fR1VF U1RfSEFORExFKHhlbl91bG9uZ190KTsKICNkZWZpbmUgX19IWVBFUlZJU09SX3RtZW1fb3AgICAg ICAgICAgICAgIDM4CiAjZGVmaW5lIF9fSFlQRVJWSVNPUl94Y19yZXNlcnZlZF9vcCAgICAgICAz OSAvKiByZXNlcnZlZCBmb3IgWGVuQ2xpZW50ICovCiAjZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5w bXVfb3AgICAgICAgICAgICA0MAorI2RlZmluZSBfX0hZUEVSVklTT1JfZG1fb3AgICAgICAgICAg ICAgICAgNDEKIAogLyogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGh5cGVyY2FsbCBkZWZpbml0aW9u cy4gKi8KICNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMCAgICAgICAgICAgICAgIDQ4CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmggYi94ZW4vaW5jbHVkZS94ZW4vaHlw ZXJjYWxsLmgKaW5kZXggMjA3YTBlOC4uOGQ0ODI0ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv eGVuL2h5cGVyY2FsbC5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwuaApAQCAtMTUs NiArMTUsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy90bWVtLmg+CiAjaW5jbHVkZSA8cHVibGljL3Zl cnNpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvcG11Lmg+CisjaW5jbHVkZSA8cHVibGljL2h2bS9k bV9vcC5oPgogI2luY2x1ZGUgPGFzbS9oeXBlcmNhbGwuaD4KICNpbmNsdWRlIDx4c20veHNtLmg+ CiAKQEAgLTE0MSw2ICsxNDIsMTIgQEAgZG9feGVub3Byb2Zfb3AoaW50IG9wLCBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKHZvaWQpIGFyZyk7CiBleHRlcm4gbG9uZwogZG9feGVucG11X29wKHVuc2ln bmVkIGludCBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fcG11X3BhcmFtc190KSBhcmcp OwogCitleHRlcm4gbG9uZworZG9fZG1fb3AoCisgICAgZG9taWRfdCBkb21pZCwKKyAgICB1bnNp Z25lZCBpbnQgbnJfYnVmcywKKyAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9i dWZfdCkgYnVmcyk7CisKICNpZmRlZiBDT05GSUdfQ09NUEFUCiAKIGV4dGVybiBpbnQKQEAgLTE5 MCw2ICsxOTcsMTQgQEAgZXh0ZXJuIGludCBjb21wYXRfbXVsdGljYWxsKAogICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0obXVsdGljYWxsX2VudHJ5X2NvbXBhdF90KSBjYWxsX2xpc3QsCiAgICAg dWludDMyX3QgbnJfY2FsbHMpOwogCisjaW5jbHVkZSA8Y29tcGF0L2h2bS9kbV9vcC5oPgorCitl eHRlcm4gaW50Citjb21wYXRfZG1fb3AoCisgICAgZG9taWRfdCBkb21pZCwKKyAgICB1bnNpZ25l ZCBpbnQgbnJfYnVmcywKKyAgICBDT01QQVRfSEFORExFX1BBUkFNKGNvbXBhdF9kbV9vcF9idWZf dCkgYnVmcyk7CisKICNlbmRpZgogCiB2b2lkIGFyY2hfZ2V0X3hlbl9jYXBzKHhlbl9jYXBhYmls aXRpZXNfaW5mb190ICppbmZvKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hsYXQubHN0IGIv eGVuL2luY2x1ZGUveGxhdC5sc3QKaW5kZXggYmRmMWQwNS4uMDM5YTM5YyAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUveGxhdC5sc3QKKysrIGIveGVuL2luY2x1ZGUveGxhdC5sc3QKQEAgLTU2LDYg KzU2LDcgQEAKID8gICAgICAgZ3JhbnRfZW50cnlfaGVhZGVyICAgICAgICAgICAgICBncmFudF90 YWJsZS5oCiA/CWdyYW50X2VudHJ5X3YyCQkJZ3JhbnRfdGFibGUuaAogPwlnbnR0YWJfc3dhcF9n cmFudF9yZWYJCWdyYW50X3RhYmxlLmgKKyEJZG1fb3BfYnVmCQkJaHZtL2RtX29wLmgKID8JdmNw dV9odm1fY29udGV4dAkJaHZtL2h2bV92Y3B1LmgKID8JdmNwdV9odm1feDg2XzMyCQkJaHZtL2h2 bV92Y3B1LmgKID8JdmNwdV9odm1feDg2XzY0CQkJaHZtL2h2bV92Y3B1LmgKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oIGIveGVuL2luY2x1ZGUveHNtL2R1bW15LmgKaW5kZXgg OTU0NjBhZi4uYjIwNmY1YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmgKKysr IGIveGVuL2luY2x1ZGUveHNtL2R1bW15LmgKQEAgLTcyNyw2ICs3MjcsMTIgQEAgc3RhdGljIFhT TV9JTkxJTkUgaW50IHhzbV9wbXVfb3AgKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQKICAgICB9CiB9CiAKK3N0YXRpYyBYU01fSU5MSU5FIGludCB4c21fZG1f b3AoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgWFNNX0FTU0VSVF9B Q1RJT04oWFNNX0RNX1BSSVYpOworICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9u LCBjdXJyZW50LT5kb21haW4sIGQpOworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiAj aW5jbHVkZSA8cHVibGljL3ZlcnNpb24uaD4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hzbS94 c20uaCBiL3hlbi9pbmNsdWRlL3hzbS94c20uaAppbmRleCA1ZGM1OWRkLi5lMmQzMzZmIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94c20veHNtLmgKKysrIGIveGVuL2luY2x1ZGUveHNtL3hzbS5o CkBAIC0xODQsNiArMTg0LDcgQEAgc3RydWN0IHhzbV9vcGVyYXRpb25zIHsKICAgICBpbnQgKCpp b3BvcnRfcGVybWlzc2lvbikgKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVpbnQzMl90 IGUsIHVpbnQ4X3QgYWxsb3cpOwogICAgIGludCAoKmlvcG9ydF9tYXBwaW5nKSAoc3RydWN0IGRv bWFpbiAqZCwgdWludDMyX3QgcywgdWludDMyX3QgZSwgdWludDhfdCBhbGxvdyk7CiAgICAgaW50 ICgqcG11X29wKSAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IG9wKTsKKyAgICBpbnQg KCpkbV9vcCkgKHN0cnVjdCBkb21haW4gKmQpOwogI2VuZGlmCiAgICAgaW50ICgqeGVuX3ZlcnNp b24pICh1aW50MzJfdCBjbWQpOwogfTsKQEAgLTcyMiw2ICs3MjMsMTEgQEAgc3RhdGljIGlubGlu ZSBpbnQgeHNtX3BtdV9vcCAoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludAogICAgIHJldHVybiB4c21fb3BzLT5wbXVfb3AoZCwgb3ApOwogfQogCitzdGF0 aWMgaW5saW5lIGludCB4c21fZG1fb3AoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgcmV0dXJuIHhzbV9vcHMtPmRtX29wKGQpOworfQorCiAjZW5kaWYgLyogQ09O RklHX1g4NiAqLwogCiBzdGF0aWMgaW5saW5lIGludCB4c21feGVuX3ZlcnNpb24gKHhzbV9kZWZh dWx0X3QgZGVmLCB1aW50MzJfdCBvcCkKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svaG9va3Mu YyBiL3hlbi94c20vZmxhc2svaG9va3MuYwppbmRleCAwNDBhMjUxLi4zODNkZDRmIDEwMDY0NAot LS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCkBA IC0xNjM1LDYgKzE2MzUsMTIgQEAgc3RhdGljIGludCBmbGFza19wbXVfb3AgKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludCBvcCkKICAgICAgICAgcmV0dXJuIC1FUEVSTTsKICAgICB9CiB9 CisKK3N0YXRpYyBpbnQgZmxhc2tfZG1fb3Aoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICByZXR1 cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19IVk0sIEhWTV9fRE0pOworfQorCiAjZW5k aWYgLyogQ09ORklHX1g4NiAqLwogCiBzdGF0aWMgaW50IGZsYXNrX3hlbl92ZXJzaW9uICh1aW50 MzJfdCBvcCkKQEAgLTE4MTQsNiArMTgyMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlv bnMgZmxhc2tfb3BzID0gewogICAgIC5pb3BvcnRfcGVybWlzc2lvbiA9IGZsYXNrX2lvcG9ydF9w ZXJtaXNzaW9uLAogICAgIC5pb3BvcnRfbWFwcGluZyA9IGZsYXNrX2lvcG9ydF9tYXBwaW5nLAog ICAgIC5wbXVfb3AgPSBmbGFza19wbXVfb3AsCisgICAgLmRtX29wID0gZmxhc2tfZG1fb3AsCiAj ZW5kaWYKICAgICAueGVuX3ZlcnNpb24gPSBmbGFza194ZW5fdmVyc2lvbiwKIH07Ci0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=