From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v4 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Fri, 20 Jan 2017 15:54:04 +0000 Message-ID: <20170120155404.GU5089@citrix.com> References: <1484674196-19951-1-git-send-email-paul.durrant@citrix.com> <1484674196-19951-2-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUbW2-0006lj-7W for xen-devel@lists.xenproject.org; Fri, 20 Jan 2017 15:54:14 +0000 Content-Disposition: inline In-Reply-To: <1484674196-19951-2-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: Paul Durrant Cc: Wei Liu , Andrew Cooper , Jennifer Herbert , Jan Beulich , Ian Jackson , xen-devel@lists.xenproject.org, Daniel De Graaf List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBKYW4gMTcsIDIwMTcgYXQgMDU6Mjk6NDlQTSArMDAwMCwgUGF1bCBEdXJyYW50IHdy b3RlOgo+IC4uLmFzIGEgc2V0IG9mIGh5cGVyY2FsbHMgdG8gYmUgdXNlZCBieSBhIGRldmljZSBt b2RlbC4KPiAKPiBBcyBzdGF0ZWQgaW4gdGhlIG5ldyBkb2NzL2Rlc2lnbnMvZG1fb3AubWFya2Rv d246Cj4gCj4gIlRoZSBhaW0gb2YgRE1PUCBpcyB0byBwcmV2ZW50IGEgY29tcHJvbWlzZWQgZGV2 aWNlIG1vZGVsIGZyb20KPiBjb21wcm9taXNpbmcgZG9tYWlucyBvdGhlciB0aGVuIHRoZSBvbmUg aXQgaXMgYXNzb2NpYXRlZCB3aXRoLiAoQW5kIGlzCj4gdGhlcmVmb3JlIGxpa2VseSBhbHJlYWR5 IGNvbXByb21pc2VkKS4iCj4gCj4gU2VlIHRoYXQgZmlsZSBmb3IgZnVydGhlciBpbmZvcm1hdGlv bi4KPiAKPiBUaGlzIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBib2lsZXJwbGF0ZSBmb3IgdGhlIGh5 cGVyY2FsbC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBj aXRyaXguY29tPgo+IFN1Z2dlc3RlZC1ieTogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGNpdHJp eC5jb20+Cj4gU3VnZ2VzdGVkLWJ5OiBKZW5uaWZlciBIZXJiZXJ0IDxqZW5uaWZlci5oZXJiZXJ0 QGNpdHJpeC5jb20+Cj4gLS0tCj4gQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXgu Y29tPgo+IENjOiBKZW5uaWZlciBIZXJiZXJ0IDxqZW5uaWZlci5oZXJiZXJ0QGNpdHJpeC5jb20+ Cj4gQ2M6IERhbmllbCBEZSBHcmFhZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292Pgo+IENjOiBXZWkg TGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4g Cj4gdjQ6Cj4gLSBDaGFuZ2UgWEVOX0dVRVNUX0hBTkRMRV82NCB0byBYRU5fR1VFU1RfSEFORExF IGluIHN0cnVjdCB4ZW5fZG1fb3BfYnVmCj4gICBhbmQgYWRkIHRoZSBuZWNlc3NhcnkgY29tcGF0 IGNvZGUuIERyb3AgSmFuJ3MgUi1iIHNpbmNlIHRoZSBwYXRjaCBoYXMKPiAgIGJlZW4gZnVuZGFt ZW50YWxseSBtb2RpZmllZC4KPiAKPiB2MzoKPiAtIFJlLXdyaXR0ZW4gbGFyZ2UgcG9ydGlvbnMg b2YgZG1vcC5tYXJrZG93biB0byByZW1vdmUgcmVmZXJlbmNlcyB0bwo+ICAgcHJldmlvdXMgcHJv cG9zYWxzIGFuZCBtYWtlIGl0IGEgc3RhbmRhbG9uZSBkZXNpZ24gZG9jLgo+IAo+IHYyOgo+IC0g QWRkcmVzc2VkIHNldmVyYWwgY29tbWVudHMgZnJvbSBKYW4uCj4gLSBSZW1vdmVkIG1vZGlmaWNh dGlvbiBvZiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXyBhcyBpdCBpcyBub3QKPiAg IG5lZWRlZCBpbiB0aGlzIHBhdGNoLgo+IC0tLQo+ICBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93 biAgICAgICAgfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg dG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmIHwgICAyICstCj4gIHRvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybC5oICAgICB8ICAgMSArCj4gIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUu YyAgICAgICAgICB8ICA3MCArKysrKysrKysrKysrKysrCj4gIHRvb2xzL2xpYnhjL3hjX3ByaXZh dGUuaCAgICAgICAgICB8ICAgMiArCj4gIHhlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUgICAgICAg ICB8ICAgMSArCj4gIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgICB8IDE0OSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMg ICAgICAgICAgICB8ICAgMSArCj4gIHhlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyAgICAgICAgICB8 ICAgMiArCj4gIHhlbi9pbmNsdWRlL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCj4gIHhl bi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCAgICB8ICA3MSArKysrKysrKysrKysrKysrCj4g IHhlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaCAgICAgICAgICB8ICAgMSArCj4gIHhlbi9pbmNsdWRl L3hlbi9oeXBlcmNhbGwuaCAgICAgICB8ICAxNSArKysrCj4gIHhlbi9pbmNsdWRlL3hsYXQubHN0 ICAgICAgICAgICAgICB8ICAgMSArCj4gIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAg ICB8ICAgNiArKwo+ICB4ZW4vaW5jbHVkZS94c20veHNtLmggICAgICAgICAgICAgfCAgIDYgKysK PiAgeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgIHwgICA3ICsrCj4gIDE3IGZpbGVz IGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2RtX29wLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZG9jcy9kZXNpZ25zL2Rtb3AubWFy a2Rvd24gYi9kb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93bgo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uOWYyZjBkNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kb2NzL2Rl c2lnbnMvZG1vcC5tYXJrZG93bgo+IEBAIC0wLDAgKzEsMTY1IEBACj4gK0RNT1AKPiArPT09PQo+ ICsKPiArSW50cm9kdWN0aW9uCj4gKy0tLS0tLS0tLS0tLQo+ICsKPiArVGhlIGFpbSBvZiBETU9Q IGlzIHRvIHByZXZlbnQgYSBjb21wcm9taXNlZCBkZXZpY2UgbW9kZWwgZnJvbSBjb21wcm9taXNp bmcKPiArZG9tYWlucyBvdGhlciB0aGVuIHRoZSBvbmUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLiAo QW5kIGlzIHRoZXJlZm9yZSBsaWtlbHkKPiArYWxyZWFkeSBjb21wcm9taXNlZCkuCj4gKwo+ICtU aGUgcHJvYmxlbSBvY2N1cnMgd2hlbiB5b3UgYSBkZXZpY2UgbW9kZWwgaXNzdWVzIGFuIGh5cGVy Y2FsbCB0aGF0Cj4gK2luY2x1ZGVzIHJlZmVyZW5jZXMgdG8gdXNlciBtZW1vcnkgb3RoZXIgdGhh biB0aGUgb3BlcmF0aW9uIHN0cnVjdHVyZQo+ICtpdHNlbGYsIHN1Y2ggYXMgd2l0aCBUcmFjayBk aXJ0eSBWUkFNIChhcyB1c2VkIGluIFZHQSBlbXVsYXRpb24pLgo+ICtJcyB0aGlzIGNhc2UsIHRo ZSBhZGRyZXNzIG9mIHRoaXMgb3RoZXIgdXNlciBtZW1vcnkgbmVlZHMgdG8gYmUgdmV0dGVkLAo+ ICt0byBlbnN1cmUgaXQgaXMgbm90IHdpdGhpbiByZXN0cmljdGVkIGFkZHJlc3MgcmFuZ2VzLCBz dWNoIGFzIGtlcm5lbAo+ICttZW1vcnkuIFRoZSByZWFsIHByb2JsZW0gY29tZXMgZG93biB0byBo b3cgeW91IHdvdWxkIHZldCB0aGlzIGFkZHJlc3MgLQo+ICt0aGUgaWRlYSBwbGFjZSB0byBkbyB0 aGlzIGlzIHdpdGhpbiB0aGUgcHJpdmNtZCBkcml2ZXIsIHdpdGhvdXQgcHJpdmNtZAo+ICtoYXZp bmcgdG8gaGF2ZSBzcGVjaWZpYyBrbm93bGVkZ2Ugb2YgdGhlIGh5cGVyY2FsbCdzIHNlbWFudGlj cy4KPiArCj4gK1RoZSBEZXNpZ24KPiArLS0tLS0tLS0tLQo+ICsKPiArVGhlIHByaXZjbWQgZHJp dmVyIGltcGxlbWVudHMgYSBuZXcgcmVzdHJpY3Rpb24gaW9jdGwsIHdoaWNoIHRha2VzIGEgZG9t aWQKPiArcGFyYW1ldGVyLiAgQWZ0ZXIgdGhhdCByZXN0cmljdGlvbiBpb2N0bCBpcyBpc3N1ZWQs IHRoZSBwcml2Y21kIGRyaXZlciB3aWxsCj4gK3Blcm1pdCBvbmx5IERNT1AgaHlwZXJjYWxscywg YW5kIG9ubHkgd2l0aCB0aGUgc3BlY2lmaWVkIHRhcmdldCBkb21pZC4KPiArCj4gK0EgRE1PUCBo eXBlcmNhbGwgY29uc2lzdHMgb2YgYW4gYXJyYXkgb2YgYnVmZmVycyBhbmQgbGVuZ3Rocywgd2l0 aCB0aGUKPiArZmlyc3Qgb25lIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmljIERNT1AgcGFyYW1ldGVy cy4gVGhlc2UgY2FuIHRoZW4gcmVmZXJlbmNlCj4gK2Z1cnRoZXIgYnVmZmVycyBmcm9tIHdpdGhp biBpbiB0aGUgYXJyYXkuIFNpbmNlIHRoZSBvbmx5IHVzZXIgYnVmZmVycwo+ICtwYXNzZWQgYXJl IHRoYXQgZm91bmQgd2l0aCB0aGF0IGFycmF5LCB0aGV5IGNhbiBhbGwgY2FuIGJlIGF1ZGl0ZWQg YnkKPiArcHJpdmNtZC4KPiArCj4gK1RoZSBmb2xsb3dpbmcgY29kZSBpbGx1c3RyYXRlcyB0aGlz IGlkZWE6Cj4gKwo+ICtzdHJ1Y3QgeGVuX2RtX29wIHsKPiArICAgIHVpbnQzMl90IG9wOwo+ICt9 Owo+ICsKPiArc3RydWN0IHhlbl9kbV9vcF9idWYgewo+ICsgICAgWEVOX0dVRVNUX0hBTkRMRSh2 b2lkKSBoOwo+ICsgICAgdW5zaWduZWQgbG9uZyBzaXplOwo+ICt9Owo+ICt0eXBlZGVmIHN0cnVj dCB4ZW5fZG1fb3BfYnVmIHhlbl9kbV9vcF9idWZfdDsKPiArCj4gK2VudW0gbmVnX2Vycm5vdmFs Cj4gK0hZUEVSVklTT1JfZG1fb3AoZG9taWRfdCBkb21pZCwKPiArICAgICAgICAgICAgICAgICB4 ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAo+ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBu cl9idWZzKQo+ICsKPiArQGRvbWlkIGlzIHRoZSBkb21haW4gdGhlIGh5cGVyY2FsbCBvcGVyYXRl cyBvbi4KPiArQGJ1ZnMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGJ1ZmZlcnMgd2hlcmUgQGJ1ZnNb MF0gY29udGFpbnMgYSBzdHJ1Y3QKPiArZG1fb3AsIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljIGRl dmljZSBtb2RlbCBvcGVyYXRpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLgo+ICtAYnVmc1sxLi5dIG1h eSBiZSByZWZlcmVuY2VkIGluIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHVycG9zZXMgb2YKPiAr cGFzc2luZyBleHRyYSBpbmZvcm1hdGlvbiB0byBvciBmcm9tIHRoZSBkb21haW4uCj4gK0Bucl9i dWZzIGlzIHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbiB0aGUgQGJ1ZnMgYXJyYXkuCj4gKwo+ICtJ dCBpcyBmb3JiaWRkZW4gZm9yIHRoZSBhYm92ZSBzdHJ1Y3QgKHhlbl9kbV9vcCkgdG8gY29udGFp biBhbnkgZ3Vlc3QKPiAraGFuZGxlcy4gSWYgdGhleSBhcmUgbmVlZGVkLCB0aGV5IHNob3VsZCBp bnN0ZWFkIGJlIGluCj4gK0hZUEVSVklTT1JfZG1fb3AtPmJ1ZnMuCj4gKwo+ICtWYWxpZGF0aW9u IGJ5IHByaXZjbWQgZHJpdmVyCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArCj4g K0lmIHRoZSBwcml2Y21kIGRyaXZlciBoYXMgYmVlbiByZXN0cmljdGVkIHRvIHNwZWNpZmljIGRv bWFpbiAodXNpbmcgYQo+ICsgbmV3IGlvY3RsKSwgd2hlbiBpdCByZWNlaXZlZCBhbiBvcCwgaXQg d2lsbDoKPiArCj4gKzEuIENoZWNrIGh5cGVyY2FsbCBpcyBETU9QLgo+ICsKPiArMi4gQ2hlY2sg ZG9taWQgPT0gcmVzdHJpY3RlZCBkb21pZC4KPiArCj4gKzMuIEZvciBlYWNoIEBucl9idWZzIGlu IEBidWZzOiBDaGVjayBAaCBhbmQgQHNpemUgZ2l2ZSBhIGJ1ZmZlcgo+ICsgICB3aG9sbHkgaW4g dGhlIHVzZXIgc3BhY2UgcGFydCBvZiB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiAoZS5nLgo+ ICsgICBMaW51eCB3aWxsIHVzZSBhY2Nlc3Nfb2soKSkuCj4gKwo+ICsKPiArWGVuIEltcGxlbWVu dGF0aW9uCj4gKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArU2luY2UgYSBETU9QIGJ1ZmZlcnMg bmVlZCB0byBiZSBjb3BpZWQgZnJvbSBvciB0byB0aGUgZ3Vlc3QsIGZ1bmN0aW9ucyBmb3IKPiAr ZG9pbmcgdGhpcyB3b3VsZCBiZSB3cml0dGVuIGFzIGJlbG93LiAgTm90ZSB0aGF0IGNhcmUgaXMg dGFrZW4gdG8gcHJldmVudAo+ICtkYW1hZ2UgZnJvbSBidWZmZXIgdW5kZXItIG9yIG92ZXItcnVu IHNpdHVhdGlvbnMuICBJZiB0aGUgRE1PUCBpcyBjYWxsZWQKPiArd2l0aCBpbmNvcnJlY3RseSBz aXplZCBidWZmZXJzLCB6ZXJvcyB3aWxsIGJlIHJlYWQsIHdoaWxlIGV4dHJhIGlzIGlnbm9yZWQu Cj4gKwo+ICtzdGF0aWMgYm9vbCBjb3B5X2J1Zl9mcm9tX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBi dWZzW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5y X2J1ZnMsIHZvaWQgKmRzdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgaWR4LCBzaXplX3QgZHN0X3NpemUpCj4gK3sKPiArICAgIHNpemVfdCBzaXplID0g bWluX3Qoc2l6ZV90LCBkc3Rfc2l6ZSwgYnVmc1tpZHhdLnNpemUpOwo+ICsKPiArICAgIHJldHVy biAhY29weV9mcm9tX2d1ZXN0KGRzdCwgYnVmc1tpZHhdLmgsIHNpemUpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBjb3B5X2J1Zl90b19ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdW5zaWdu ZWQgaW50IGlkeCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLCBz aXplX3Qgc3JjX3NpemUpCj4gK3sKPiArICAgIHNpemVfdCBzaXplID0gbWluX3Qoc2l6ZV90LCBi dWZzW2lkeF0uc2l6ZSwgc3JjX3NpemUpOwo+ICsKPiArICAgIHJldHVybiAhY29weV90b19ndWVz dChidWZzW2lkeF0uaCwgc3JjLCBzaXplKTsKPiArfQo+ICsKPiArVGhpcyBsZWF2ZXMgZG9fZG1f b3AgZWFzeSB0byBpbXBsZW1lbnQgYXMgYmVsb3c6Cj4gKwo+ICtzdGF0aWMgaW50IGRtX29wKGRv bWlkX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsCj4g KyAgICAgICAgICAgICAgICAgeGVuX2RtX29wX2J1Zl90IGJ1ZnNbXSkKPiArewo+ICsgICAgc3Ry dWN0IGRvbWFpbiAqZDsKPiArICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7Cj4gKyAgICBsb25nIHJj Owo+ICsKPiArICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChkb21pZCwgJmQp Owo+ICsgICAgaWYgKCByYyApCj4gKyAgICAgICAgcmV0dXJuIHJjOwo+ICsKPiArICAgIGlmICgg IWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ ICsgICAgcmMgPSB4c21fZG1fb3AoWFNNX0RNX1BSSVYsIGQpOwo+ICsgICAgaWYgKCByYyApCj4g KyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgaWYgKCAhY29weV9idWZfZnJvbV9ndWVzdChi dWZzLCBucl9idWZzLCAmb3AsIDAsIHNpemVvZihvcCkpICkKPiArICAgIHsKPiArICAgICAgICBy YyA9IC1FRkFVTFQ7Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc3dp dGNoICggb3Aub3AgKQo+ICsgICAgewo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICByYyA9IC1F T1BOT1RTVVBQOwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggIXJj ICYmCj4gKyAgICAgICAgICFjb3B5X2J1Zl90b19ndWVzdChidWZzLCBucl9idWZzLCAwLCAmb3As IHNpemVvZihvcCkpICkKPiArICAgICAgICByYyA9IC1FRkFVTFQ7Cj4gKwo+ICsgb3V0Ogo+ICsg ICAgcmN1X3VubG9ja19kb21haW4oZCk7Cj4gKwo+ICsgICAgcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ ICtsb25nIGRvX2RtX29wKGRvbWlkX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG5yX2J1ZnMsCj4gKyAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5f ZG1fb3BfYnVmX3QpIGJ1ZnMpCj4gK3sKPiArICAgIHN0cnVjdCB4ZW5fZG1fb3BfYnVmICpuYXQ7 Cj4gKyAgICBpbnQgcmM7Cj4gKwo+ICsgICAgbmF0ID0geHphbGxvY19hcnJheShzdHJ1Y3QgeGVu X2RtX29wX2J1ZiwgbnJfYnVmcyk7Cj4gKyAgICBpZiAoICFuYXQgKQo+ICsgICAgICAgIHJldHVy biAtRU5PTUVNOwo+ICsKPiArICAgIGlmICggIWNvcHlfZnJvbV9ndWVzdF9vZmZzZXQobmF0LCBi dWZzLCAwLCBucl9idWZzKSApCj4gKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsgICAg cmMgPSBkbV9vcChkb21pZCwgbnJfYnVmcywgbmF0KTsKPiArCj4gKyAgICB4ZnJlZShuYXQpOwo+ ICsKPiArICAgIHJldHVybiByYzsKPiArfQo+IGRpZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xp Y3kvbW9kdWxlcy94ZW4uaWYgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKPiBp bmRleCAxYWNhNzVkLi5mOTI1NGMyIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9t b2R1bGVzL3hlbi5pZgo+ICsrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hlbi5pZgo+ IEBAIC0xNTEsNyArMTUxLDcgQEAgZGVmaW5lKGBkZXZpY2VfbW9kZWwnLCBgCj4gIAo+ICAJYWxs b3cgJDEgJDJfdGFyZ2V0OmRvbWFpbiB7IGdldGRvbWFpbmluZm8gc2h1dGRvd24gfTsKPiAgCWFs bG93ICQxICQyX3RhcmdldDptbXUgeyBtYXBfcmVhZCBtYXBfd3JpdGUgYWRqdXN0IHBoeXNtYXAg dGFyZ2V0X2hhY2sgfTsKPiAtCWFsbG93ICQxICQyX3RhcmdldDpodm0geyBnZXRwYXJhbSBzZXRw YXJhbSB0cmFja2RpcnR5dnJhbSBodm1jdGwgaXJxbGV2ZWwgcGNpcm91dGUgcGNpbGV2ZWwgY2Fj aGVhdHRyIHNlbmRfaXJxIH07Cj4gKwlhbGxvdyAkMSAkMl90YXJnZXQ6aHZtIHsgZ2V0cGFyYW0g c2V0cGFyYW0gdHJhY2tkaXJ0eXZyYW0gaHZtY3RsIGlycWxldmVsIHBjaXJvdXRlIHBjaWxldmVs IGNhY2hlYXR0ciBzZW5kX2lycSBkbSB9Owo+ICAnKQo+ICAKPiAgIyBtYWtlX2RldmljZV9tb2Rl bChwcml2LCBkbV9kb20sIGh2bV9kb20pCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKPiBpbmRleCA0YWIw ZjU3Li4yYmE0NmQ3IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o Cj4gKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKPiBAQCAtNDEsNiArNDEsNyBA QAo+ICAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gICNpbmNsdWRlIDx4ZW4vbWVtb3J5Lmg+Cj4g ICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KPiArI2luY2x1ZGUgPHhlbi9odm0vZG1fb3Au aD4KPiAgI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Cj4gICNpbmNsdWRlIDx4ZW4veHNtL2Zs YXNrX29wLmg+Cj4gICNpbmNsdWRlIDx4ZW4vdG1lbS5oPgo+IGRpZmYgLS1naXQgYS90b29scy9s aWJ4Yy94Y19wcml2YXRlLmMgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKPiBpbmRleCBkNTdj MzlhLi44ZTQ5NjM1IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwo+ICsr KyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwo+IEBAIC03NzYsNiArNzc2LDc2IEBAIGludCB4 Y19mZnM2NCh1aW50NjRfdCB4KQo+ICAgICAgcmV0dXJuIGwgPyB4Y19mZnMzMihsKSA6IGggPyB4 Y19mZnMzMihoKSArIDMyIDogMDsKPiAgfQo+ICAKPiAraW50IGRvX2RtX29wKHhjX2ludGVyZmFj ZSAqeGNoLCBkb21pZF90IGRvbWlkLCB1bnNpZ25lZCBpbnQgbnJfYnVmcywgLi4uKQo+ICt7Cj4g KyAgICBpbnQgcmV0ID0gLTE7Cj4gKyAgICBzdHJ1Y3QgIHsKPiArICAgICAgICB2b2lkICp1Owo+ ICsgICAgICAgIHZvaWQgKmg7Cj4gKyAgICB9ICpib3VuY2U7Cj4gKyAgICBERUNMQVJFX0hZUEVS Q0FMTF9CVUZGRVIoeGVuX2RtX29wX2J1Zl90LCBidWZzKTsKPiArICAgIHZhX2xpc3QgYXJnczsK PiArICAgIHVuc2lnbmVkIGludCBpZHg7Cj4gKwo+ICsgICAgYm91bmNlID0gY2FsbG9jKG5yX2J1 ZnMsIHNpemVvZigqYm91bmNlKSk7Cj4gKyAgICBpZiAoIGJvdW5jZSA9PSBOVUxMICkKPiArICAg ICAgICBnb3RvIGZhaWwxOwo+ICsKPiArICAgIGJ1ZnMgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2Fs bG9jKHhjaCwgYnVmcywgc2l6ZW9mKCpidWZzKSAqIG5yX2J1ZnMpOwo+ICsgICAgaWYgKCBidWZz ID09IE5VTEwgKQo+ICsgICAgICAgIGdvdG8gZmFpbDI7Cj4gKwo+ICsgICAgdmFfc3RhcnQoYXJn cywgbnJfYnVmcyk7Cj4gKyAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IG5yX2J1ZnM7IGlkeCsrKQoK Q29kaW5nIHN0eWxlLgoKPiArCj4gK2ludCBjb21wYXRfZG1fb3AoZG9taWRfdCBkb21pZCwKPiAr ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKPiArICAgICAgICAgICAgICAg ICBDT01QQVRfSEFORExFX1BBUkFNKGNvbXBhdF9kbV9vcF9idWZfdCkgYnVmcykKPiArewo+ICsg ICAgc3RydWN0IHhlbl9kbV9vcF9idWYgKm5hdDsKPiArICAgIHVuc2lnbmVkIGludCBpOwo+ICsg ICAgaW50IHJjID0gLUVGQVVMVDsKPiArCj4gKyAgICBuYXQgPSB4emFsbG9jX2FycmF5KHN0cnVj dCB4ZW5fZG1fb3BfYnVmLCBucl9idWZzKTsKPiArICAgIGlmICggIW5hdCApCj4gKyAgICAgICAg cmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBucl9idWZzOyBpKysg KQo+ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCBjb21wYXRfZG1fb3BfYnVmIGNtcDsKPiArCj4g KyAgICAgICAgaWYgKCBjb3B5X2Zyb21fY29tcGF0X29mZnNldCgmY21wLCBidWZzLCBpLCAxKSAp Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArI2RlZmluZSBYTEFUX2RtX29wX2J1Zl9I TkRMX2goX2RfLCBfc18pIFwKPiArICAgICAgICBndWVzdF9mcm9tX2NvbXBhdF9oYW5kbGUoKF9k XyktPmgsIChfc18pLT5oKQo+ICsKPiArICAgICAgICBYTEFUX2RtX29wX2J1ZigmbmF0W2ldLCAm Y21wKTsKPiArCj4gKyN1bmRlZiBYTEFUX2RtX29wX2J1Zl9ITkRMX2gKPiArICAgIH0KPiArCj4g KyAgICByYyA9IGRtX29wKGRvbWlkLCBucl9idWZzLCBuYXQpOwo+ICsKCk5lZWQgdG8gY29weSBi YWNrIHRvIHRoZSBvcmlnaW5hbCBwbGFjZXMgd2l0aCBjb3B5X3RvX2NvbXBhdD8KCldlaS4KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=