From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v11 05/11] x86/mm: add HYPERVISOR_memory_op to acquire guest resources Date: Mon, 16 Oct 2017 14:07:49 +0000 Message-ID: References: <20171012162603.3016-1-paul.durrant@citrix.com> <20171012162603.3016-6-paul.durrant@citrix.com> <59E4D5E80200007800186BEF@prv-mh.provo.novell.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 1e463o-0002PC-TY for xen-devel@lists.xenproject.org; Mon, 16 Oct 2017 14:08:05 +0000 In-Reply-To: <59E4D5E80200007800186BEF@prv-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Jan Beulich' Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Ian Jackson , "xen-devel@lists.xenproject.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEphbiBCZXVsaWNoIFttYWlsdG86 SkJldWxpY2hAc3VzZS5jb21dCj4gU2VudDogMTYgT2N0b2JlciAyMDE3IDE0OjUzCj4gVG86IFBh dWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIg PEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBXZWkgTGl1Cj4gPHdlaS5saXUyQGNpdHJpeC5j b20+OyBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+OyBJYW4KPiBKYWNr c29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgU3RlZmFubyBTdGFiZWxsaW5pCj4gPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+OyB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7IEtvbnJh ZCBSemVzenV0ZWsKPiBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPjsgVGltIChYZW4ub3Jn KSA8dGltQHhlbi5vcmc+Cj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MTEgMDUvMTFdIHg4Ni9tbTog YWRkIEhZUEVSVklTT1JfbWVtb3J5X29wIHRvCj4gYWNxdWlyZSBndWVzdCByZXNvdXJjZXMKPiAK PiA+Pj4gT24gMTIuMTAuMTcgYXQgMTg6MjUsIDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4gd3Jv dGU6Cj4gPiBAQCAtNDAyLDE0ICs0NjksNTYgQEAgaW50IGNvbXBhdF9tZW1vcnlfb3AodW5zaWdu ZWQgaW50IGNtZCwKPiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGNvbXBhdCkKPiA+ICAg ICAgICAgIHJjID0gZG9fbWVtb3J5X29wKGNtZCwgbmF0LmhuZCk7Cj4gPiAgICAgICAgICBpZiAo IHJjIDwgMCApCj4gPiAgICAgICAgICB7Cj4gPiAtICAgICAgICAgICAgaWYgKCByYyA9PSAtRU5P QlVGUyAmJiBvcCA9PSBYRU5NRU1fZ2V0X3ZudW1haW5mbyApCj4gPiArICAgICAgICAgICAgc3dp dGNoICggb3ApCj4gCj4gTWlzc2luZyBibGFuay4KCk9oIHllcy4KCj4gCj4gPiAgICAgICAgICAg ICAgewo+ID4gLSAgICAgICAgICAgICAgICBjbXAudm51bWEubnJfdm5vZGVzID0gbmF0LnZudW1h LT5ucl92bm9kZXM7Cj4gPiAtICAgICAgICAgICAgICAgIGNtcC52bnVtYS5ucl92Y3B1cyA9IG5h dC52bnVtYS0+bnJfdmNwdXM7Cj4gPiAtICAgICAgICAgICAgICAgIGNtcC52bnVtYS5ucl92bWVt cmFuZ2VzID0gbmF0LnZudW1hLT5ucl92bWVtcmFuZ2VzOwo+ID4gLSAgICAgICAgICAgICAgICBp ZiAoIF9fY29weV90b19ndWVzdChjb21wYXQsICZjbXAudm51bWEsIDEpICkKPiA+IC0gICAgICAg ICAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKPiA+ICsgICAgICAgICAgICBjYXNlIFhFTk1FTV9n ZXRfdm51bWFpbmZvOgo+ID4gKyAgICAgICAgICAgICAgICBpZiAoIHJjID09IC1FTk9CVUZTICkK PiA+ICsgICAgICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgY21wLnZudW1h Lm5yX3Zub2RlcyA9IG5hdC52bnVtYS0+bnJfdm5vZGVzOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY21wLnZudW1hLm5yX3ZjcHVzID0gbmF0LnZudW1hLT5ucl92Y3B1czsKPiA+ICsgICAgICAg ICAgICAgICAgICAgIGNtcC52bnVtYS5ucl92bWVtcmFuZ2VzID0gbmF0LnZudW1hLT5ucl92bWVt cmFuZ2VzOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fZ3Vlc3QoY29t cGF0LCAmY21wLnZudW1hLCAxKSApCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAt RUZBVUxUOwo+ID4gKyAgICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAg IGJyZWFrOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIGNhc2UgWEVOTUVNX2FjcXVpcmVfcmVzb3Vy Y2U6Cj4gPiArICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICB4ZW5fdWxvbmdfdCAq eGVuX2ZyYW1lX2xpc3QgPSAoeGVuX3Vsb25nX3QgKikobmF0Lm1hciArIDEpOwo+IAo+IGNvbnN0 CgpPay4KCj4gCj4gPiArICAgICAgICAgICAgICAgIGlmICggcmMgPT0gLUVJTlZBTCAmJiB4ZW5f ZnJhbWVfbGlzdFswXSAhPSAwICkKPiAKPiBJIHRoaW5rIHRoaXMgd2lsbCBnbyB3cm9uZyBpZiB5 b3UgZ2V0IC1FSU5WQUwgZm9yIG90aGVyIHRoYW4gdGhlCj4gc3BlY2lmaWMgcmVhc29uIHlvdSBj b25zaWRlciBoZXJlLCBpbiBwYXJ0aWN1bGFyIHdoZW4gY2FsbGVyCj4gcGFzc2VkIGluIGEgdmFs aWQgYXJyYXkuIFlvdSdkIG5lZWQgdG8gYWxzbyBjaGVjayBmb3IKPiBjbXAubWFyLm5yX2ZyYW1l cyBiZWluZyB6ZXJvLiBCdXQgc2VlIGFsc28gYmVsb3cuCj4gCj4gPiArICAgICAgICAgICAgICAg IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgIC8qCj4gPiArICAgICAgICAgICAgICAgICAgICAg KiBUaGUgdmFsdWUgb2YgbnJfZnJhbWVzIHBhc3NlZCB0byB0aGUgaW1wbGVtZW50YXRpb24KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAqIHdhcyBub3QgdGhlIHZhbHVlIHBhc3NlZCBieSB0aGUg Y2FsbGVyLCBpdCB3YXMKPiA+ICsgICAgICAgICAgICAgICAgICAgICAqIG92ZXJyaWRkZW4uCj4g PiArICAgICAgICAgICAgICAgICAgICAgKiBUaGUgdmFsdWUgaW4geGVuX2ZyYW1lX2xpc3RbMF0g aXMgdGhlIG1heGltdW0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAqIG51bWJlciBvZiBmcmFt ZXMgdGhhdCBjYW4gYmUgYm91bmNlZCBzbyB3ZSBuZWVkCj4gPiArICAgICAgICAgICAgICAgICAg ICAgKiB0byBzZXQgY21wLm5yX2ZyYW1lcyB0byB0aGUgbWluaW11bSBvZiB0aGlzIGFuZAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICogdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyBhbGxv d2VkIGJ5IHRoZQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICogaW1wbGVtZW50YXRpb24gYmVm b3JlIHBhc3NpbmcgYmFjayB0byB0aGUgY2FsbGVyLgo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICovCj4gPiArICAgICAgICAgICAgICAgICAgICBjbXAubWFyLm5yX2ZyYW1lcyA9IG1pbl90KHVu c2lnbmVkIGludCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeGVuX2ZyYW1lX2xpc3RbMF0sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hdC5tYXItPm5yX2ZyYW1lcyk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICByYyA9IC1FMkJJRzsKPiA+ICsgICAgICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAg ICAgICAgICAgICAgICAvKiBJbiBlaXRoZXIgb2YgdGhlc2UgY2FzZXMgbnJfZnJhbWVzIGlzIGFu IE9VVCB2YWx1ZSAqLwo+ID4gKyAgICAgICAgICAgICAgICBpZiAoIHJjID09IC1FSU5WQUwgfHwg cmMgPT0gLUUyQklHICkKPiA+ICsgICAgICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGNvbXBhdCwgJmNtcC5tYXIsIDEpICkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7Cj4gCj4gVGhlIHR3byBpZigpcyBzaG91 bGQgYmUgY29tYmluZWQuIEFsc28gLSBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QoKT8KClllcywgbWF5 YmUgdGhhdCB3b3VsZCBuZWF0ZXIuCgo+IAo+ID4gKyAgICAgICAgICAgICAgICB9Cj4gPiArCj4g PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsgICAgICAg ICAgICBkZWZhdWx0Ogo+ID4gKyAgICAgICAgICAgICAgICBicmVhazsKPiAKPiBObyByZWFsIG5l ZWQgZm9yIGEgZGVmYXVsdCBsYWJlbC4gWWV0IGlmIHlvdSB3YW50IHRvIGtlZXAgaXQsIHBsZWFz ZQo+IGhhdmUgYSBibGFuayBsaW5lIGFoZWFkIG9mIGl0Lgo+IAoKT2suCgo+ID4gQEAgLTUzNSw2 ICs2NDQsMzAgQEAgaW50IGNvbXBhdF9tZW1vcnlfb3AodW5zaWduZWQgaW50IGNtZCwKPiBYRU5f R1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGNvbXBhdCkKPiA+ICAgICAgICAgICAgICAgICAgcmMg PSAtRUZBVUxUOwo+ID4gICAgICAgICAgICAgIGJyZWFrOwo+ID4KPiA+ICsgICAgICAgIGNhc2Ug WEVOTUVNX2FjcXVpcmVfcmVzb3VyY2U6Cj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAgICAg eGVuX3Vsb25nX3QgKnhlbl9mcmFtZV9saXN0ID0gKHhlbl91bG9uZ190ICopKG5hdC5tYXIgKyAx KTsKPiAKPiBjb25zdAoKT2suCgo+IAo+ID4gKyAgICAgICAgICAgIGNvbXBhdF91bG9uZ190ICpj b21wYXRfZnJhbWVfbGlzdCA9Cj4gPiArICAgICAgICAgICAgICAgIChjb21wYXRfdWxvbmdfdCAq KShuYXQubWFyICsgMSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgLyogTk9URTogdGhlIGNvbXBh dCBhcnJheSBvdmVyd3JpdGVzIHRoZSBuYXRpdmUgYXJyYXkgKi8KPiAKPiBQZXJoYXBzICJ0aGUg c21hbGxlciBjb21wYXQgYXJyYXkgLi4uIj8KCk9rLgoKPiAKPiA+ICsgICAgICAgICAgICBmb3Ig KCBpID0gMDsgaSA8IGNtcC5tYXIubnJfZnJhbWVzOyBpKysgKQo+ID4gKyAgICAgICAgICAgIHsK PiA+ICsgICAgICAgICAgICAgICAgY29tcGF0X3Vsb25nX3QgZnJhbWUgPSB4ZW5fZnJhbWVfbGlz dFtpXTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCBmcmFtZSAhPSB4ZW5fZnJhbWVf bGlzdFtpXSApCj4gPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVSQU5HRTsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgICAgY29tcGF0X2ZyYW1lX2xpc3RbaV0gPSBmcmFtZTsKPiA+ICsg ICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fY29tcGF0 X29mZnNldChjbXAubWFyLmZyYW1lX2xpc3QsIDAsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb21wYXRfZnJhbWVfbGlzdCwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcC5tYXIubnJfZnJhbWVzKSApCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIGJyZWFr Owo+ID4gKyAgICAgICAgfQo+ID4gICAgICAgICAgZGVmYXVsdDoKPiAKPiBBZ2FpbiBtaXNzaW5n IGEgYmxhbmsgbGluZSBhYm92ZSBoZXJlLgoKT2suCgo+IAo+ID4gLS0tIGEveGVuL2NvbW1vbi9t ZW1vcnkuYwo+ID4gKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+ID4gQEAgLTk2NSw2ICs5NjUs ODggQEAgc3RhdGljIGxvbmcgeGF0cF9wZXJtaXNzaW9uX2NoZWNrKHN0cnVjdCBkb21haW4KPiAq ZCwgdW5zaWduZWQgaW50IHNwYWNlKQo+ID4gICAgICByZXR1cm4geHNtX2FkZF90b19waHlzbWFw KFhTTV9UQVJHRVQsIGN1cnJlbnQtPmRvbWFpbiwgZCk7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMg aW50IGFjcXVpcmVfcmVzb3VyY2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4g PiArewo+ID4gKyAgICBzdHJ1Y3QgZG9tYWluICpkLCAqY3VycmQgPSBjdXJyZW50LT5kb21haW47 Cj4gPiArICAgIHhlbl9tZW1fYWNxdWlyZV9yZXNvdXJjZV90IHhtYXI7Cj4gPiArICAgIHVuc2ln bmVkIGxvbmcgbWZuX2xpc3RbMl07Cj4gPiArICAgIGludCByYzsKPiA+ICsKPiA+ICsgICAgaWYg KCBjb3B5X2Zyb21fZ3Vlc3QoJnhtYXIsIGFyZywgMSkgKQo+ID4gKyAgICAgICAgcmV0dXJuIC1F RkFVTFQ7Cj4gPiArCj4gPiArICAgIGlmICggeG1hci5wYWQgIT0gMCApCj4gPiArICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgaWYgKCB4bWFyLm5yX2ZyYW1lcyA9PSAwIHx8 Cj4gPiArICAgICAgICAgeG1hci5ucl9mcmFtZXMgPiBBUlJBWV9TSVpFKG1mbl9saXN0KSApCj4g PiArICAgIHsKPiA+ICsgICAgICAgIHJjID0geG1hci5ucl9mcmFtZXMgPT0gMCA/IC1FSU5WQUwg OiAtRTJCSUc7Cj4gCj4gUXVlcnlpbmcgdGhlIGltcGxlbWVudGF0aW9uIGxpbWl0IHNob3VsZCBi ZSBwb3NzaWJsZSB3aXRob3V0Cj4gcmVjZWl2aW5nIGFuIGVycm9yLiBIZW5jZSBteSBvcmlnaW5h bCBzdWdnZXN0aW9uIHRvIGtleSB0aGlzCj4gb2ZmIG9mIHRoZSBoYW5kbGUgYmVpbmcgYSBudWxs IG9uZSAoaW4gd2hpY2ggY2FzZSBub24temVybwo+IG5yX2ZyYW1lcyB3b3VsZCBpbmRlZWQgYmUg LUVJTlZBTCksIHdoaWNoIGFmYWljcyB3b3VsZCBhbHNvCj4gc2ltcGxpZnkgc29tZSBvZiB0aGUg Y29tcGF0IGhhbmRsaW5nLgoKT2ssIEZBT0QsIGRvIHlvdSBtZWFuIHRoYXQgcGFzc2luZyBpbiBu cl9mcmFtZXMgYW5kIGEgTlVMTCBoYW5kbGUgc2hvdWxkIG5vdCB5aWVsZCBhbiBlcnJvciBidXQg c2hvdWxkIHBhc3MgYmFjayB0aGUgaW1wbGVtZW50YXRpb24gbGltaXQgb2YgbnJfZnJhbWVzPyAK Cj4gCj4gPiArICAgICAgICB4bWFyLm5yX2ZyYW1lcyA9IEFSUkFZX1NJWkUobWZuX2xpc3QpOwo+ ID4gKwo+ID4gKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFyZywgJnhtYXIsIDEpICkKPiA+ ICsgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiA+ICsKPiA+ICsgICAgICAgIHJldHVybiBy YzsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBkID0gcmN1X2xvY2tfZG9tYWluX2J5X2FueV9p ZCh4bWFyLmRvbWlkKTsKPiA+ICsgICAgaWYgKCBkID09IE5VTEwgKQo+ID4gKyAgICAgICAgcmV0 dXJuIC1FU1JDSDsKPiA+ICsKPiA+ICsgICAgcmMgPSB4c21fZG9tYWluX3Jlc291cmNlX21hcChY U01fRE1fUFJJViwgZCk7Cj4gPiArICAgIGlmICggcmMgKQo+ID4gKyAgICAgICAgZ290byBvdXQ7 Cj4gPiArCj4gPiArICAgIHN3aXRjaCAoIHhtYXIudHlwZSApCj4gPiArICAgIHsKPiA+ICsgICAg ZGVmYXVsdDoKPiA+ICsgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7Cj4gPiArICAgICAgICBicmVh azsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZiAoIHJjICkKPiA+ICsgICAgICAgIGdvdG8g b3V0Owo+ID4gKwo+ID4gKyAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoY3VycmQpICkK PiA+ICsgICAgewo+ID4gKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KHhtYXIuZnJhbWVfbGlz dCwgbWZuX2xpc3QsIHhtYXIubnJfZnJhbWVzKSApCj4gPiArICAgICAgICAgICAgcmMgPSAtRUZB VUxUOwo+ID4gKyAgICB9Cj4gPiArICAgIGVsc2UKPiA+ICsgICAgewo+ID4gKyAgICAgICAgeGVu X3Bmbl90IGdmbl9saXN0W0FSUkFZX1NJWkUobWZuX2xpc3QpXTsKPiA+ICsgICAgICAgIHVuc2ln bmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICAgICAgcmMgPSAtRUZBVUxUOwo+ID4gKyAgICAgICAg aWYgKCBjb3B5X2Zyb21fZ3Vlc3QoZ2ZuX2xpc3QsIHhtYXIuZnJhbWVfbGlzdCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoZ2ZuX2xpc3QpKSApCj4gCj4gWW91 IHNob3VsZG4ndCBjb3B5IG1vcmUgdGhhbiB4bWFyLm5yX2ZyYW1lcyBoZXJlLCBvciBlbHNlIHlv dQo+IHJpc2sgcnVubmluZyBwYXN0IGEgcGFnZSBib3VuZGFyeSBhbmQgcGVyaGFwcyBpbnRvIGEg bm9uLQo+IHByZXNlbnQgcGFnZS4KCkdvb2QgcG9pbnQuIFRoYXQncyBjbGVhcmx5IHdyb25nLgoK PiBZb3UgY29uc3VtZSAuLi4KPiAKPiA+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICsKPiA+ ICsgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgeG1hci5ucl9mcmFtZXM7IGkrKyApCj4gCj4gLi4u IGV4YWN0bHkgdGhpcyBtYW55IGZyYW1lcyBhbnl3YXkuCj4gCj4gPiArICAgICAgICB7Cj4gPiAr ICAgICAgICAgICAgcmMgPSBzZXRfZm9yZWlnbl9wMm1fZW50cnkoY3VycmQsIGdmbl9saXN0W2ld LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4obWZuX2xp c3RbaV0pKTsKPiA+ICsgICAgICAgICAgICBpZiAoIHJjICkKPiA+ICsgICAgICAgICAgICB7Cj4g PiArICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICE9IDAgKQo+ID4gKyAgICAgICAgICAgICAg ICB7Cj4gPiArICAgICAgICAgICAgICAgICAgICBpbnQgaWdub3JlOwo+ID4gKwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWdub3JlID0gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZSgKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZCwgX2dmbihnZm5fbGlzdFtpXSksIF9tZm4obWZu X2xpc3RbaV0pLCAwKTsKPiAKPiBXaHkgd291bGQgYW4gZXJyb3IgaGVyZSBiZSBwbGFpbiBpZ25v cmVkPwo+IAoKV2hhdCBjb3VsZCBJIHVzZWZ1bGx5IGRvIHdpdGggaXQ/IFNob3VsZCBJIGp1c3Qg Y3Jhc2ggdGhlIGRvbWFpbiBhdCB0aGlzIHBvaW50LCBzaW5jZSBJIGNhbid0IHJlc3RvcmUgYSBj b25zaXN0ZW50IHN0YXRlPwoKPiA+IEBAIC0xNDA2LDYgKzE0ODgsMTQgQEAgbG9uZyBkb19tZW1v cnlfb3AodW5zaWduZWQgbG9uZyBjbWQsCj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBh cmcpCj4gPiAgICAgIH0KPiA+ICAjZW5kaWYKPiA+Cj4gPiArICAgIGNhc2UgWEVOTUVNX2FjcXVp cmVfcmVzb3VyY2U6Cj4gPiArI2lmZGVmIENPTkZJR19YODYKPiA+ICsgICAgICAgIHJjID0gYWNx dWlyZV9yZXNvdXJjZShhcmcpOwo+ID4gKyNlbHNlCj4gPiArICAgICAgICByYyA9IC1FT1BOT1RT VVBQOwo+ID4gKyNlbmRpZgo+IAo+IEkgdGhpbmsgdGhpcyB3aWxsIGNhdXNlIGFuICJ1bnVzZWQg c3RhdGljIGZ1bmN0aW9uIiB3YXJuaW5nIG9uIEFSTS4KCi4uLndoaWNoIGlzIHdoeSBJIG9yaWdp bmFsbHkgaGFkIHRoZSBmdW5jdGlvbiB3cmFwcGVkIGluIHRoZSAjaWZkZWYgYXMgd2VsbC4gV2hh dCBkbyB5b3Ugd2FudCBtZSB0byBkbz8KCj4gCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMv bWVtb3J5LmgKPiA+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAo+ID4gQEAgLTU5 OSw2ICs1OTksNDcgQEAgc3RydWN0IHhlbl9yZXNlcnZlZF9kZXZpY2VfbWVtb3J5X21hcCB7Cj4g PiAgdHlwZWRlZiBzdHJ1Y3QgeGVuX3Jlc2VydmVkX2RldmljZV9tZW1vcnlfbWFwCj4geGVuX3Jl c2VydmVkX2RldmljZV9tZW1vcnlfbWFwX3Q7Cj4gPiAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo eGVuX3Jlc2VydmVkX2RldmljZV9tZW1vcnlfbWFwX3QpOwo+ID4KPiA+ICsvKgo+ID4gKyAqIEdl dCB0aGUgcGFnZXMgZm9yIGEgcGFydGljdWxhciBndWVzdCByZXNvdXJjZSwgc28gdGhhdCB0aGV5 IGNhbiBiZQo+ID4gKyAqIG1hcHBlZCBkaXJlY3RseSBieSBhIHRvb2xzIGRvbWFpbi4KPiA+ICsg Ki8KPiA+ICsjZGVmaW5lIFhFTk1FTV9hY3F1aXJlX3Jlc291cmNlIDI4Cj4gPiArc3RydWN0IHhl bl9tZW1fYWNxdWlyZV9yZXNvdXJjZSB7Cj4gPiArICAgIC8qIElOIC0gdGhlIGRvbWFpbiB3aG9z ZSByZXNvdXJjZSBpcyB0byBiZSBtYXBwZWQgKi8KPiA+ICsgICAgZG9taWRfdCBkb21pZDsKPiA+ ICsgICAgLyogSU4gLSB0aGUgdHlwZSBvZiByZXNvdXJjZSAqLwo+ID4gKyAgICB1aW50MTZfdCB0 eXBlOwo+ID4gKyAgICAvKgo+ID4gKyAgICAgKiBJTiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJj ZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJlIHplcm8KPiA+ICsgICAgICogICAgICB1bmxlc3Mg c3RhdGVkIG90aGVyd2lzZS4KPiA+ICsgICAgICovCj4gPiArICAgIHVpbnQzMl90IGlkOwo+ID4g KyAgICAvKiBJTi9PVVQgLSBBcyBhbiBJTiBwYXJhbWV0ZXIgbnVtYmVyIG9mICg0SykgZnJhbWVz IG9mIHRoZSByZXNvdXJjZQo+IAo+IFBsZWFzZSBkb24ndCBzYXkgNGsgaGVyZSAtIHRoaXMgbm90 IGJlaW5nIGFuIHg4Ni1zcGVjaWZpYyBpbnRlcmZhY2UKPiBvdGhlciBzeXN0ZW0gcGFnZSBzaXpl cyBvdWdodCB0byBiZSBwZXJtaXR0ZWQuCgpJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0 IHJlc291cmNlcyBzdWNoIGFzIGdyYW50IHRhYmxlcyB3ZXJlIG9ubHkgZXZlcnkgbWFwcGVkIGlu IDRrIGNodW5rcy4gUGVyaGFwcyB0aGUgNGsgc2hvdWxkIHR5cGUtc3BlY2lmaWM/IEl0IG5lZWRz IHRvIGJlIHNwZWNpZmllZCBzb21ld2hlcmUuCgo+IAo+ID4gKyAgICAgKiAgICAgICAgICB0byBi ZSBtYXBwZWQuIEhvd2V2ZXIsIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgMCB0aGVuCj4gPiAr ICAgICAqICAgICAgICAgIC1FSU5WQUwgd2lsbCBiZSByZXR1cm5lZCBhbmQgdGhpcyBmaWVsZCB3 aWxsIGJlIHNldCB0byB0aGUKPiA+ICsgICAgICogICAgICAgICAgbWF4aW11bSB2YWx1ZSBzdXBw b3J0ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiBBbHNvLAo+ID4gKyAgICAgKiAgICAgICAgICBp ZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGV4Y2VlZHMgdGhlIGltcGxlbWVudGF0b24gbGltaXQKPiA+ ICsgICAgICogICAgICAgICAgdGhlbiAtRTJCSUcgd2lsbCBiZSByZXR1cm5lZCBhbmQsIHNpbWls YXJseSwgdGhpcyBmaWVsZAo+ID4gKyAgICAgKiAgICAgICAgICB3aWxsIGJlIHNldCB0aGUgbWF4 aW11bSB2YWx1ZSBzdXBwb3J0ZWQgYnkgdGhlCj4gPiArICAgICAqICAgICAgICAgIGltcGxlbWVu dGF0aW9uLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgdWludDMyX3QgbnJfZnJhbWVzOwo+ID4gKyAg ICB1aW50MzJfdCBwYWQ7Cj4gPiArICAgIC8qIElOIC0gdGhlIGluZGV4IG9mIHRoZSBpbml0aWFs IGZyYW1lIHRvIGJlIG1hcHBlZC4gVGhpcyBwYXJhbWV0ZXIKPiA+ICsgICAgICogICAgICBpcyBv cHRpb25hbCBpZiBucl9mcmFtZXMgaXMgMC4KPiA+ICsgICAgICovCj4gPiArICAgIHVpbnQ2NF9h bGlnbmVkX3QgZnJhbWU7Cj4gPiArICAgIC8qIElOL09VVCAtIElmIHRoZSB0b29scyBkb21haW4g aXMgUFYgdGhlbiwgdXBvbiByZXR1cm4sIGZyYW1lX2xpc3QKPiA+ICsgICAgICogICAgICAgICAg d2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgTUZOcyBvZiB0aGUgcmVzb3VyY2UuCj4gPiArICAg ICAqICAgICAgICAgIElmIHRoZSB0b29scyBkb21haW4gaXMgSFZNIHRoZW4gaXQgaXMgZXhwZWN0 ZWQgdGhhdCwgb24KPiA+ICsgICAgICogICAgICAgICAgZW50cnksIGZyYW1lX2xpc3Qgd2lsbCBi ZSBwb3B1bGF0ZWQgd2l0aCBhIGxpc3Qgb2YgR0ZOcwo+ID4gKyAgICAgKiAgICAgICAgICB0aGF0 IHdpbGwgYmUgbWFwcGVkIHRvIHRoZSBNRk5zIG9mIHRoZSByZXNvdXJjZS4KPiA+ICsgICAgICog ICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwgaWYgbnJfZnJhbWVzIGlzIDAuCj4g PiArICAgICAqLwo+IAo+IEZvciBib3RoIG9mIHRoZXNlIGNvbW1lbnRzIC0gcy9vcHRpb25hbC9p Z25vcmVkLz8gQW5kIHRoaXMsIGFmYWljcywKPiBhbHNvIGFwcGxpZXMgdG8gZG9taWQsIHR5cGUs IGFuZCBpZCwgc28gcGVyaGFwcyBiZXR0ZXIgc3RhdGUgb25jZQo+IGluIHRoZSBjb21tZW50IHRv IChjdXJyZW50bHkpIG5yX2ZyYW1lcyB0aGF0IGFsbCBvdGhlciBmaWVsZHMgZXhjZXB0Cj4gZm9y IHBhZCB3aWxsIGJlIGlnbm9yZWQuCgpObywgSSB0aGluayBpdCdzIHJlYXNvbmFibGUgZm9yIGRv bWlkLCB0eXBlIGFuZCBpZCB0byBhbHdheXMgYmUgdmFsaWQgZXZlbiBpZiBucl9mcmFtZXMgaXMg emVyby4KCj4gCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAo+ID4gKysrIGIveGVu L2luY2x1ZGUveHNtL2R1bW15LmgKPiA+IEBAIC03MjQsMyArNzI0LDkgQEAgc3RhdGljIFhTTV9J TkxJTkUgaW50IHhzbV94ZW5fdmVyc2lvbgo+IChYU01fREVGQVVMVF9BUkcgdWludDMyX3Qgb3Ap Cj4gPiAgICAgICAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0aW9uKFhTTV9QUklWLCBjdXJyZW50 LT5kb21haW4sIE5VTEwpOwo+ID4gICAgICB9Cj4gPiAgfQo+ID4gKwo+ID4gK3N0YXRpYyBYU01f SU5MSU5FIGludCB4c21fZG9tYWluX3Jlc291cmNlX21hcChYU01fREVGQVVMVF9BUkcKPiBzdHJ1 Y3QgZG9tYWluICpkKQo+ID4gK3sKPiA+ICsgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0RNX1BS SVYpOwo+ID4gKyAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0aW9uKGFjdGlvbiwgY3VycmVudC0+ ZG9tYWluLCBkKTsKPiA+ICt9Cj4gCj4gUGVyaGFwcyBiZXR0ZXIgcGxhY2UgdGhpcyBuZWFyIHNv bWV0aGluZyBzaW1pbGFyL3JlbGF0ZWQgKGFsc28gZm9yCj4gc29tZSBvZiB0aGUgb3RoZXIgYWRk aXRpb25zIGZ1cnRoZXIgZG93bik/CgpPay4KCiAgUGF1bAoKPiAKPiBKYW4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=