From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 22/30] xen/x86: support PVHv2 Dom0 BAR remapping Date: Mon, 3 Oct 2016 10:10:44 +0000 Message-ID: <4bfac2f9375e4cee884ec2cbbd4fa5bd@AMSPEX02CL03.citrite.net> References: <1474991845-27962-1-git-send-email-roger.pau@citrix.com> <1474991845-27962-23-git-send-email-roger.pau@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 1br0Cw-0002R1-Gf for xen-devel@lists.xenproject.org; Mon, 03 Oct 2016 10:10:50 +0000 In-Reply-To: <1474991845-27962-23-git-send-email-roger.pau@citrix.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: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , "boris.ostrovsky@oracle.com" , Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUgW21h aWx0bzpyb2dlci5wYXVAY2l0cml4LmNvbV0NCj4gU2VudDogMjcgU2VwdGVtYmVyIDIwMTYgMTY6 NTcNCj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzoga29ucmFkLndp bGtAb3JhY2xlLmNvbTsgYm9yaXMub3N0cm92c2t5QG9yYWNsZS5jb207IFJvZ2VyIFBhdSBNb25u ZQ0KPiA8cm9nZXIucGF1QGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBj aXRyaXguY29tPjsgSmFuDQo+IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPjsgQW5kcmV3IENv b3Blcg0KPiA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHYy IDIyLzMwXSB4ZW4veDg2OiBzdXBwb3J0IFBWSHYyIERvbTAgQkFSIHJlbWFwcGluZw0KPiANCj4g QWRkIGhhbmRsZXJzIHRvIGRldGVjdCBhdHRlbXBzIGZyb20gYSBQVkh2MiBEb20wIHRvIGNoYW5n ZSB0aGUgcG9zaXRpb24NCj4gb2YgdGhlIFBDSSBCQVJzIGFuZCBwcm9wZXJseSByZW1hcCB0aGVt Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJp eC5jb20+DQo+IC0tLQ0KPiBDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNv bT4NCj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+IC0tLQ0KPiAgeGVuL2FyY2gveDg2 L2h2bS9pby5jICAgICAgICAgfCAgIDIgKw0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNp LmMgfCAzMDcNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ICB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oICB8ICAxOSArKysNCj4gIHhlbi9pbmNsdWRl L3hlbi9wY2kuaCAgICAgICAgIHwgICAzICsNCj4gIDQgZmlsZXMgY2hhbmdlZCwgMzMxIGluc2Vy dGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4v YXJjaC94ODYvaHZtL2lvLmMgaW5kZXgNCj4gN2RlMWRlMy4uNGRiMDI2NiAxMDA2NDQNCj4gLS0t IGEveGVuL2FyY2gveDg2L2h2bS9pby5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYw0K PiBAQCAtODYyLDYgKzg2Miw4IEBAIHN0YXRpYyBpbnQgaHZtX3B0X2FkZF9yZWdpc3RlcihzdHJ1 Y3QgaHZtX3B0X2RldmljZQ0KPiAqZGV2LCAgfQ0KPiANCj4gIHN0YXRpYyBzdHJ1Y3QgaHZtX3B0 X2hhbmRsZXJfaW5pdCAqaHdkb21fcHRfaGFuZGxlcnNbXSA9IHsNCj4gKyAgICAmaHZtX3B0X2Jh cl9pbml0LA0KPiArICAgICZodm1fcHRfdmZfYmFyX2luaXQsDQo+ICB9Ow0KPiANCj4gIGludCBo d2RvbV9hZGRfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSBkaWZmIC0tZ2l0DQo+IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2ku YyBpbmRleA0KPiA2ZDgzMWRkLi42MGM5ZTc0IDEwMDY0NA0KPiAtLS0gYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9wY2kuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYw0K PiBAQCAtNjMzLDYgKzYzMywzMTMgQEAgc3RhdGljIGludCBwY2lfc2l6ZV9iYXIodW5zaWduZWQg aW50IHNlZywgdW5zaWduZWQNCj4gaW50IGJ1cywgdW5zaWduZWQgaW50IHNsb3QsDQo+ICAgICAg cmV0dXJuIDA7DQo+ICB9DQo+IA0KPiArc3RhdGljIGJvb2wgYmFyX3JlZ19pc192Zih1aW50MzJf dCByZWFsX29mZnNldCwgdWludDMyX3QNCj4gK2hhbmRsZXJfb2Zmc2V0KSB7DQo+ICsgICAgaWYg KCByZWFsX29mZnNldCAtIGhhbmRsZXJfb2Zmc2V0ID09IFBDSV9TUklPVl9CQVIgKQ0KPiArICAg ICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsN Cj4gK30NCj4gKw0KDQpSZXR1cm4gdGhlIGJvb2wgZXhwcmVzc2lvbiByYXRoZXIgdGhhbiB0aGUg aWYtdGhlbi1lbHNlPw0KDQo+ICtzdGF0aWMgaW50IGJhcl9yZWdfaW5pdChzdHJ1Y3QgaHZtX3B0 X2RldmljZSAqcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1fcHRfcmVn X2hhbmRsZXIgKmhhbmRsZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBy ZWFsX29mZnNldCwgdWludDMyX3QgKmRhdGEpIHsNCj4gKyAgICB1aW50OF90IHNlZywgYnVzLCBz bG90LCBmdW5jOw0KPiArICAgIHVpbnQ2NF90IGFkZHIsIHNpemU7DQo+ICsgICAgdWludDMyX3Qg dmFsOw0KPiArICAgIHVuc2lnbmVkIGludCBpbmRleCA9IGhhbmRsZXItPm9mZnNldCAvIDQ7DQo+ ICsgICAgYm9vbCB2ZiA9IGJhcl9yZWdfaXNfdmYocmVhbF9vZmZzZXQsIGhhbmRsZXItPm9mZnNl dCk7DQo+ICsgICAgc3RydWN0IGh2bV9wdF9iYXIgKmJhcnMgPSAodmYgPyBzLT52Zl9iYXJzIDog cy0+YmFycyk7DQo+ICsgICAgaW50IG51bV9iYXJzID0gKHZmID8gUENJX1NSSU9WX05VTV9CQVJT IDogcy0+bnVtX2JhcnMpOw0KPiArICAgIGludCByYzsNCj4gKw0KPiArICAgIGlmICggaW5kZXgg Pj0gbnVtX2JhcnMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgKmRhdGEgPSBIVk1fUFRfSU5WQUxJ RF9SRUc7DQo+ICsgICAgICAgIHJldHVybiAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHNlZyA9 IHMtPnBkZXYtPnNlZzsNCj4gKyAgICBidXMgPSBzLT5wZGV2LT5idXM7DQo+ICsgICAgc2xvdCA9 IFBDSV9TTE9UKHMtPnBkZXYtPmRldmZuKTsNCj4gKyAgICBmdW5jID0gUENJX0ZVTkMocy0+cGRl di0+ZGV2Zm4pOw0KPiArICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgc2xvdCwg ZnVuYywgcmVhbF9vZmZzZXQpOw0KPiArDQo+ICsgICAgaWYgKCBpbmRleCA+IDAgJiYgYmFyc1tp bmRleCAtIDFdLnR5cGUgPT0gSFZNX1BUX0JBUl9NRU02NF9MTyApDQo+ICsgICAgICAgIGJhcnNb aW5kZXhdLnR5cGUgPSBIVk1fUFRfQkFSX01FTTY0X0hJOw0KPiArICAgIGVsc2UgaWYgKCAodmFs ICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0NCj4gUENJX0JBU0VfQUREUkVTU19TUEFDRV9J TyApDQo+ICsgICAgew0KPiArICAgICAgICBiYXJzW2luZGV4XS50eXBlID0gSFZNX1BUX0JBUl9V TlVTRUQ7DQo+ICsgICAgfQ0KPiArICAgIGVsc2UgaWYgKCAodmFsICYgUENJX0JBU0VfQUREUkVT U19NRU1fVFlQRV9NQVNLKSA9PQ0KPiArICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01F TV9UWVBFXzY0ICkNCj4gKyAgICAgICAgYmFyc1tpbmRleF0udHlwZSA9IEhWTV9QVF9CQVJfTUVN NjRfTE87DQo+ICsgICAgZWxzZQ0KPiArICAgICAgICBiYXJzW2luZGV4XS50eXBlID0gSFZNX1BU X0JBUl9NRU0zMjsNCj4gKw0KPiArICAgIGlmICggYmFyc1tpbmRleF0udHlwZSA9PSBIVk1fUFRf QkFSX01FTTMyIHx8DQo+ICsgICAgICAgICBiYXJzW2luZGV4XS50eXBlID09IEhWTV9QVF9CQVJf TUVNNjRfTE8gKQ0KPiArICAgIHsNCj4gKyAgICAgICAgLyogU2l6ZSB0aGUgQkFSIGFuZCBtYXAg aXQuICovDQo+ICsgICAgICAgIHJjID0gcGNpX3NpemVfYmFyKHNlZywgYnVzLCBzbG90LCBmdW5j LCByZWFsX29mZnNldCAtIGhhbmRsZXItPm9mZnNldCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgbnVtX2JhcnMsICZpbmRleCwgJmFkZHIsICZzaXplKTsNCj4gKyAgICAgICAgaWYgKCBy YyApDQo+ICsgICAgICAgIHsNCj4gKyAgICAgICAgICAgIHByaW50a19wZGV2KHMtPnBkZXYsIFhF TkxPR19FUlIsICJ1bmFibGUgdG8gc2l6ZSBCQVIjJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpbmRleCk7DQo+ICsgICAgICAgICAgICByZXR1cm4gcmM7DQo+ICsgICAgICAgIH0N Cj4gKw0KPiArICAgICAgICBpZiAoIHNpemUgPT0gMCApDQo+ICsgICAgICAgICAgICBiYXJzW2lu ZGV4XS50eXBlID0gSFZNX1BUX0JBUl9VTlVTRUQ7DQo+ICsgICAgICAgIGVsc2UNCj4gKyAgICAg ICAgew0KPiArICAgICAgICAgICAgcHJpbnRrX3BkZXYocy0+cGRldiwgWEVOTE9HX0RFQlVHLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIk1hcHBpbmcgQkFSIyV1OiAlI2x4IHNpemU6ICV1 XG4iLCBpbmRleCwgYWRkciwgc2l6ZSk7DQo+ICsgICAgICAgICAgICByYyA9IG1vZGlmeV9tbWlv XzExKHMtPnBkZXYtPmRvbWFpbiwgUEZOX0RPV04oYWRkciksDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERJVl9ST1VORF9VUChzaXplLCBQQUdFX1NJWkUpLCB0cnVlKTsNCj4g KyAgICAgICAgICAgIGlmICggcmMgKQ0KPiArICAgICAgICAgICAgew0KPiArICAgICAgICAgICAg ICAgIHByaW50a19wZGV2KHMtPnBkZXYsIFhFTkxPR19FUlIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImZhaWxlZCB0byBtYXAgQkFSIyVkIGludG8gbWVtb3J5IG1hcDogJWRcbiIs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIHJjKTsNCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gcmM7DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgIH0NCj4gKyAg ICB9DQo+ICsNCj4gKyAgICAqZGF0YSA9IGJhcnNbaW5kZXhdLnR5cGUgPT0gSFZNX1BUX0JBUl9V TlVTRUQgPw0KPiBIVk1fUFRfSU5WQUxJRF9SRUcgOiB2YWw7DQo+ICsgICAgcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gKy8qIE9ubHkgYWxsb3cgd3JpdGVzIHRvIGNoZWNrIHRoZSBzaXplIG9mIHRo ZSBCQVJzICovIHN0YXRpYyBpbnQNCj4gK2FsbG93X2Jhcl93cml0ZShzdHJ1Y3QgaHZtX3B0X2Jh ciAqYmFyLCBzdHJ1Y3QgaHZtX3B0X3JlZyAqcmVnLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVpbnQzMl90IHZhbCkgew0KPiArICAgIHVpbnQz Ml90IG1hc2s7DQo+ICsNCj4gKyAgICBpZiAoIGJhci0+dHlwZSA9PSBIVk1fUFRfQkFSX01FTTY0 X0hJICkNCj4gKyAgICAgICAgbWFzayA9IH4wOw0KPiArICAgIGVsc2UNCj4gKyAgICAgICAgbWFz ayA9ICh1aW50MzJfdCkgUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSzsNCj4gKw0KPiArICAgIGlm ICggdmFsICE9IH4wICYmICh2YWwgJiBtYXNrKSAhPSAocmVnLT52YWwuZHdvcmQgJiBtYXNrKSAp DQo+ICsgICAgew0KPiArICAgICAgICBwcmludGtfcGRldihwZGV2LCBYRU5MT0dfRVJSLA0KPiAr ICAgICAgICAgICAgICAgICJjaGFuZ2luZyB0aGUgcG9zaXRpb24gb2YgdGhlIEJBUnMgaXMgbm90 IHlldCBzdXBwb3J0ZWQ6ICUjeFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgdmFsKTsNCg0K VGhpcyBkb2Vzbid0IHNlZW0gdG8gcXVpdGUgdGFsbHkgd2l0aCBjb21taXQgY29tbWVudC4gQ2Fu IEJBUnMgYmUgcmUtcHJvZ3JhbW1lZCBvciBub3Q/DQoNCj4gKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgYmFyX3JlZ193cml0ZShzdHJ1Y3QgaHZtX3B0X2RldmljZSAqcywgc3RydWN0IGh2bV9w dF9yZWcgKnJlZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqdmFsLCB1 aW50MzJfdCBkZXZfdmFsdWUsIHVpbnQzMl90DQo+ICt2YWxpZF9tYXNrKSB7DQo+ICsgICAgaW50 IGluZGV4ID0gcmVnLT5oYW5kbGVyLT5vZmZzZXQgLyA0Ow0KPiArDQo+ICsgICAgcmV0dXJuIGFs bG93X2Jhcl93cml0ZSgmcy0+YmFyc1tpbmRleF0sIHJlZywgcy0+cGRldiwgKnZhbCk7IH0NCj4g Kw0KPiArc3RhdGljIGludCB2Zl9iYXJfcmVnX3dyaXRlKHN0cnVjdCBodm1fcHRfZGV2aWNlICpz LCBzdHJ1Y3QgaHZtX3B0X3JlZw0KPiAqcmVnLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90ICp2YWwsIHVpbnQzMl90IGRldl92YWx1ZSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCB2YWxpZF9tYXNrKSB7DQo+ICsgICAgaW50IGluZGV4ID0g cmVnLT5oYW5kbGVyLT5vZmZzZXQgLyA0Ow0KPiArDQo+ICsgICAgcmV0dXJuIGFsbG93X2Jhcl93 cml0ZSgmcy0+dmZfYmFyc1tpbmRleF0sIHJlZywgcy0+cGRldiwgKnZhbCk7IH0NCj4gKw0KPiAr LyogQkFSIHJlZ3Mgc3RhdGljIGluZm9ybWF0aW9uIHRhYmxlICovIHN0YXRpYyBzdHJ1Y3QNCj4g K2h2bV9wdF9yZWdfaGFuZGxlciBiYXJfaGFuZGxlcltdID0gew0KPiArICAgIC8qIEJBUiAwIHJl ZyAqLw0KPiArICAgIC8qIG1hc2sgb2YgQkFSIG5lZWQgdG8gYmUgZGVjaWRlZCBsYXRlciwgZGVw ZW5kcyBvbiBJTy9NRU0gdHlwZSAqLw0KPiArICAgIHsNCj4gKyAgICAgICAgLm9mZnNldCAgICAg PSAwLA0KPiArICAgICAgICAuc2l6ZSAgICAgICA9IDQsDQo+ICsgICAgICAgIC5pbml0X3ZhbCAg ID0gMHgwMDAwMDAwMCwNCj4gKyAgICAgICAgLmluaXQgICAgICAgPSBiYXJfcmVnX2luaXQsDQo+ ICsgICAgICAgIC51LmR3LndyaXRlID0gYmFyX3JlZ193cml0ZSwNCj4gKyAgICB9LA0KPiArICAg IC8qIEJBUiAxIHJlZyAqLw0KPiArICAgIHsNCj4gKyAgICAgICAgLm9mZnNldCAgICAgPSA0LA0K PiArICAgICAgICAuc2l6ZSAgICAgICA9IDQsDQo+ICsgICAgICAgIC5pbml0X3ZhbCAgID0gMHgw MDAwMDAwMCwNCj4gKyAgICAgICAgLmluaXQgICAgICAgPSBiYXJfcmVnX2luaXQsDQo+ICsgICAg ICAgIC51LmR3LndyaXRlID0gYmFyX3JlZ193cml0ZSwNCj4gKyAgICB9LA0KPiArICAgIC8qIEJB UiAyIHJlZyAqLw0KPiArICAgIHsNCj4gKyAgICAgICAgLm9mZnNldCAgICAgPSA4LA0KPiArICAg ICAgICAuc2l6ZSAgICAgICA9IDQsDQo+ICsgICAgICAgIC5pbml0X3ZhbCAgID0gMHgwMDAwMDAw MCwNCj4gKyAgICAgICAgLmluaXQgICAgICAgPSBiYXJfcmVnX2luaXQsDQo+ICsgICAgICAgIC51 LmR3LndyaXRlID0gYmFyX3JlZ193cml0ZSwNCj4gKyAgICB9LA0KPiArICAgIC8qIEJBUiAzIHJl ZyAqLw0KPiArICAgIHsNCj4gKyAgICAgICAgLm9mZnNldCAgICAgPSAxMiwNCj4gKyAgICAgICAg LnNpemUgICAgICAgPSA0LA0KPiArICAgICAgICAuaW5pdF92YWwgICA9IDB4MDAwMDAwMDAsDQo+ ICsgICAgICAgIC5pbml0ICAgICAgID0gYmFyX3JlZ19pbml0LA0KPiArICAgICAgICAudS5kdy53 cml0ZSA9IGJhcl9yZWdfd3JpdGUsDQo+ICsgICAgfSwNCj4gKyAgICAvKiBCQVIgNCByZWcgKi8N Cj4gKyAgICB7DQo+ICsgICAgICAgIC5vZmZzZXQgICAgID0gMTYsDQo+ICsgICAgICAgIC5zaXpl ICAgICAgID0gNCwNCj4gKyAgICAgICAgLmluaXRfdmFsICAgPSAweDAwMDAwMDAwLA0KPiArICAg ICAgICAuaW5pdCAgICAgICA9IGJhcl9yZWdfaW5pdCwNCj4gKyAgICAgICAgLnUuZHcud3JpdGUg PSBiYXJfcmVnX3dyaXRlLA0KPiArICAgIH0sDQo+ICsgICAgLyogQkFSIDUgcmVnICovDQo+ICsg ICAgew0KPiArICAgICAgICAub2Zmc2V0ICAgICA9IDIwLA0KPiArICAgICAgICAuc2l6ZSAgICAg ICA9IDQsDQo+ICsgICAgICAgIC5pbml0X3ZhbCAgID0gMHgwMDAwMDAwMCwNCj4gKyAgICAgICAg LmluaXQgICAgICAgPSBiYXJfcmVnX2luaXQsDQo+ICsgICAgICAgIC51LmR3LndyaXRlID0gYmFy X3JlZ193cml0ZSwNCj4gKyAgICB9LA0KPiArICAgIC8qIFRPRE86IHdlIHNob3VsZCBhbHNvIHRy YXAgYWNjZXNzZXMgdG8gdGhlIGV4cGFuc2lvbiBST00gYmFzZQ0KPiBhZGRyZXNzLiAqLw0KPiAr ICAgIC8qIEVuZC4gKi8NCj4gKyAgICB7DQo+ICsgICAgICAgIC5zaXplID0gMCwNCj4gKyAgICB9 LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBiYXJfZ3JvdXBfaW5pdChzdHJ1Y3QgaHZtX3B0 X2RldmljZSAqZGV2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3B0 X3JlZ19ncm91cCAqZ3JvdXApIHsNCj4gKyAgICB1aW50OF90IHNlZywgYnVzLCBzbG90LCBmdW5j Ow0KPiArDQo+ICsgICAgc2VnID0gZGV2LT5wZGV2LT5zZWc7DQo+ICsgICAgYnVzID0gZGV2LT5w ZGV2LT5idXM7DQo+ICsgICAgc2xvdCA9IFBDSV9TTE9UKGRldi0+cGRldi0+ZGV2Zm4pOw0KPiAr ICAgIGZ1bmMgPSBQQ0lfRlVOQyhkZXYtPnBkZXYtPmRldmZuKTsNCj4gKyAgICBkZXYtPmh0eXBl ID0gcGNpX2NvbmZfcmVhZDgoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIFBDSV9IRUFERVJfVFlQRSkg Jg0KPiAweDdmOw0KPiArICAgIHN3aXRjaCAoIGRldi0+aHR5cGUgKQ0KPiArICAgIHsNCj4gKyAg ICBjYXNlIFBDSV9IRUFERVJfVFlQRV9OT1JNQUw6DQo+ICsgICAgICAgIGdyb3VwLT5zaXplID0g MzY7DQo+ICsgICAgICAgIGRldi0+bnVtX2JhcnMgPSA2Ow0KPiArICAgICAgICBicmVhazsNCj4g KyAgICBjYXNlIFBDSV9IRUFERVJfVFlQRV9CUklER0U6DQo+ICsgICAgICAgIGdyb3VwLT5zaXpl ID0gNDQ7DQo+ICsgICAgICAgIGRldi0+bnVtX2JhcnMgPSAyOw0KPiArICAgICAgICBicmVhazsN Cj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBwcmludGtfcGRldihkZXYtPnBkZXYsIFhFTkxP R19FUlIsICJkZXZpY2UgdHlwZSAlI3ggbm90DQo+IHN1cHBvcnRlZFxuIiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgZGV2LT5odHlwZSk7DQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAr ICAgIH0NCj4gKyAgICBncm91cC0+YmFzZV9vZmZzZXQgPSBQQ0lfQkFTRV9BRERSRVNTXzA7DQo+ ICsNCj4gKyAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RydWN0IGh2bV9wdF9oYW5kbGVy X2luaXQgaHZtX3B0X2Jhcl9pbml0ID0gew0KPiArICAgIC5oYW5kbGVycyA9IGJhcl9oYW5kbGVy LA0KPiArICAgIC5pbml0ID0gYmFyX2dyb3VwX2luaXQsDQo+ICt9Ow0KPiArDQo+ICsvKiBCQVIg cmVncyBzdGF0aWMgaW5mb3JtYXRpb24gdGFibGUgKi8gc3RhdGljIHN0cnVjdA0KPiAraHZtX3B0 X3JlZ19oYW5kbGVyIHZmX2Jhcl9oYW5kbGVyW10gPSB7DQo+ICsgICAgLyogQkFSIDAgcmVnICov DQo+ICsgICAgLyogbWFzayBvZiBCQVIgbmVlZCB0byBiZSBkZWNpZGVkIGxhdGVyLCBkZXBlbmRz IG9uIElPL01FTSB0eXBlICovDQo+ICsgICAgew0KPiArICAgICAgICAub2Zmc2V0ICAgICA9IDAs DQo+ICsgICAgICAgIC5zaXplICAgICAgID0gNCwNCj4gKyAgICAgICAgLmluaXRfdmFsICAgPSAw eDAwMDAwMDAwLA0KPiArICAgICAgICAuaW5pdCAgICAgICA9IGJhcl9yZWdfaW5pdCwNCj4gKyAg ICAgICAgLnUuZHcud3JpdGUgPSB2Zl9iYXJfcmVnX3dyaXRlLA0KPiArICAgIH0sDQo+ICsgICAg LyogQkFSIDEgcmVnICovDQo+ICsgICAgew0KPiArICAgICAgICAub2Zmc2V0ICAgICA9IDQsDQo+ ICsgICAgICAgIC5zaXplICAgICAgID0gNCwNCj4gKyAgICAgICAgLmluaXRfdmFsICAgPSAweDAw MDAwMDAwLA0KPiArICAgICAgICAuaW5pdCAgICAgICA9IGJhcl9yZWdfaW5pdCwNCj4gKyAgICAg ICAgLnUuZHcud3JpdGUgPSB2Zl9iYXJfcmVnX3dyaXRlLA0KPiArICAgIH0sDQo+ICsgICAgLyog QkFSIDIgcmVnICovDQo+ICsgICAgew0KPiArICAgICAgICAub2Zmc2V0ICAgICA9IDgsDQo+ICsg ICAgICAgIC5zaXplICAgICAgID0gNCwNCj4gKyAgICAgICAgLmluaXRfdmFsICAgPSAweDAwMDAw MDAwLA0KPiArICAgICAgICAuaW5pdCAgICAgICA9IGJhcl9yZWdfaW5pdCwNCj4gKyAgICAgICAg LnUuZHcud3JpdGUgPSB2Zl9iYXJfcmVnX3dyaXRlLA0KPiArICAgIH0sDQo+ICsgICAgLyogQkFS IDMgcmVnICovDQo+ICsgICAgew0KPiArICAgICAgICAub2Zmc2V0ICAgICA9IDEyLA0KPiArICAg ICAgICAuc2l6ZSAgICAgICA9IDQsDQo+ICsgICAgICAgIC5pbml0X3ZhbCAgID0gMHgwMDAwMDAw MCwNCj4gKyAgICAgICAgLmluaXQgICAgICAgPSBiYXJfcmVnX2luaXQsDQo+ICsgICAgICAgIC51 LmR3LndyaXRlID0gdmZfYmFyX3JlZ193cml0ZSwNCj4gKyAgICB9LA0KPiArICAgIC8qIEJBUiA0 IHJlZyAqLw0KPiArICAgIHsNCj4gKyAgICAgICAgLm9mZnNldCAgICAgPSAxNiwNCj4gKyAgICAg ICAgLnNpemUgICAgICAgPSA0LA0KPiArICAgICAgICAuaW5pdF92YWwgICA9IDB4MDAwMDAwMDAs DQo+ICsgICAgICAgIC5pbml0ICAgICAgID0gYmFyX3JlZ19pbml0LA0KPiArICAgICAgICAudS5k dy53cml0ZSA9IHZmX2Jhcl9yZWdfd3JpdGUsDQo+ICsgICAgfSwNCj4gKyAgICAvKiBCQVIgNSBy ZWcgKi8NCj4gKyAgICB7DQo+ICsgICAgICAgIC5vZmZzZXQgICAgID0gMjAsDQo+ICsgICAgICAg IC5zaXplICAgICAgID0gNCwNCj4gKyAgICAgICAgLmluaXRfdmFsICAgPSAweDAwMDAwMDAwLA0K PiArICAgICAgICAuaW5pdCAgICAgICA9IGJhcl9yZWdfaW5pdCwNCj4gKyAgICAgICAgLnUuZHcu d3JpdGUgPSB2Zl9iYXJfcmVnX3dyaXRlLA0KPiArICAgIH0sDQo+ICsgICAgLyogRW5kLiAqLw0K PiArICAgIHsNCj4gKyAgICAgICAgLnNpemUgPSAwLA0KPiArICAgIH0sDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgaW50IHZmX2Jhcl9ncm91cF9pbml0KHN0cnVjdCBodm1fcHRfZGV2aWNlICpkZXYs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1fcHRfcmVnX2dyb3VwICpn cm91cCkgew0KPiArICAgIHVpbnQ4X3Qgc2VnLCBidXMsIHNsb3QsIGZ1bmM7DQo+ICsgICAgc3Ry dWN0IHBjaV9kZXYgKnBkZXYgPSBkZXYtPnBkZXY7DQo+ICsgICAgaW50IHNyX29mZnNldDsNCj4g KyAgICB1aW50MTZfdCBjdHJsOw0KPiArDQo+ICsgICAgc2VnID0gZGV2LT5wZGV2LT5zZWc7DQo+ ICsgICAgYnVzID0gZGV2LT5wZGV2LT5idXM7DQo+ICsgICAgc2xvdCA9IFBDSV9TTE9UKGRldi0+ cGRldi0+ZGV2Zm4pOw0KPiArICAgIGZ1bmMgPSBQQ0lfRlVOQyhkZXYtPnBkZXYtPmRldmZuKTsN Cj4gKw0KPiArICAgIHNyX29mZnNldCA9IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5KHNlZywgYnVz LCBwZGV2LT5kZXZmbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lfRVhUX0NBUF9JRF9TUklPVik7DQo+ICsgICAgaWYgKCBzcl9vZmZzZXQgPT0gMCApDQo+ ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAgcHJpbnRrX3BkZXYocGRldiwg WEVOTE9HX0RFQlVHLCAiZm91bmQgU1ItSU9WIGNhcGFiaWxpdGllc1xuIik7DQo+ICsgICAgY3Ry bCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgc3Jfb2Zmc2V0ICsgUENJ X1NSSU9WX0NUUkwpOw0KPiArICAgIGlmICggKGN0cmwgJiAoUENJX1NSSU9WX0NUUkxfVkZFIHwg UENJX1NSSU9WX0NUUkxfTVNFKSkgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgcHJpbnRrX3BkZXYo cGRldiwgWEVOTE9HX0VSUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgIlNSLUlPViBmdW5jdGlv bnMgYWxyZWFkeSBlbmFibGVkICglIzA0eClcbiIsIGN0cmwpOw0KPiArICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBncm91cC0+YmFzZV9vZmZzZXQgPSBzcl9v ZmZzZXQgKyBQQ0lfU1JJT1ZfQkFSOw0KPiArICAgIGdyb3VwLT5zaXplID0gUENJX1NSSU9WX05V TV9CQVJTICogNDsNCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdHJ1Y3Qg aHZtX3B0X2hhbmRsZXJfaW5pdCBodm1fcHRfdmZfYmFyX2luaXQgPSB7DQo+ICsgICAgLmhhbmRs ZXJzID0gdmZfYmFyX2hhbmRsZXIsDQo+ICsgICAgLmluaXQgPSB2Zl9iYXJfZ3JvdXBfaW5pdCwN Cj4gK307DQo+ICsNCj4gIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4IGRl dmZuLA0KPiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2luZm8gKmlu Zm8sIG5vZGVpZF90IG5vZGUpICB7IGRpZmYgLS1naXQNCj4gYS94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9pby5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCBpbmRleA0KPiA4MGY4MzBk Li4yNWFmMDM2IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oDQo+ ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgNCj4gQEAgLTE5LDYgKzE5LDcgQEAN Cj4gICNpZm5kZWYgX19BU01fWDg2X0hWTV9JT19IX18NCj4gICNkZWZpbmUgX19BU01fWDg2X0hW TV9JT19IX18NCj4gDQo+ICsjaW5jbHVkZSA8eGVuL3BjaV9yZWdzLmg+DQo+ICAjaW5jbHVkZSA8 YXNtL2h2bS92cGljLmg+DQo+ICAjaW5jbHVkZSA8YXNtL2h2bS92aW9hcGljLmg+DQo+ICAjaW5j bHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPg0KPiBAQCAtMjc1LDYgKzI3NiwxNiBAQCBzdHJ1Y3Qg aHZtX3B0X21zaSB7DQo+ICAgICAgYm9vbF90IG1hcHBlZDsgICAgICAgLyogd2hlbiBwaXJxIGlz IG1hcHBlZCAqLw0KPiAgfTsNCj4gDQo+ICtzdHJ1Y3QgaHZtX3B0X2JhciB7DQo+ICsgICAgdWlu dDMyX3QgdmFsOw0KPiArICAgIGVudW0gYmFyX3R5cGUgew0KPiArICAgICAgICBIVk1fUFRfQkFS X1VOVVNFRCwNCj4gKyAgICAgICAgSFZNX1BUX0JBUl9NRU0zMiwNCj4gKyAgICAgICAgSFZNX1BU X0JBUl9NRU02NF9MTywNCj4gKyAgICAgICAgSFZNX1BUX0JBUl9NRU02NF9ISSwNCj4gKyAgICB9 IHR5cGU7DQo+ICt9Ow0KPiArDQo+ICAvKg0KPiAgICogR3Vlc3QgcGFzc2VkLXRocm91Z2ggUENJ IGRldmljZS4NCj4gICAqLw0KPiBAQCAtMjg5LDYgKzMwMCwxNCBAQCBzdHJ1Y3QgaHZtX3B0X2Rl dmljZSB7DQo+ICAgICAgLyogTVNJIHN0YXR1cy4gKi8NCj4gICAgICBzdHJ1Y3QgaHZtX3B0X21z aSBtc2k7DQo+IA0KPiArICAgIC8qIFBDSSBoZWFkZXIgdHlwZS4gKi8NCj4gKyAgICB1aW50OF90 IGh0eXBlOw0KPiArDQo+ICsgICAgLyogQkFSIHRyYWNraW5nLiAqLw0KPiArICAgIGludCBudW1f YmFyczsNCj4gKyAgICBzdHJ1Y3QgaHZtX3B0X2JhciBiYXJzWzZdOw0KPiArICAgIHN0cnVjdCBo dm1fcHRfYmFyIHZmX2JhcnNbUENJX1NSSU9WX05VTV9CQVJTXTsNCj4gKw0KPiAgICAgIHN0cnVj dCBsaXN0X2hlYWQgcmVnaXN0ZXJfZ3JvdXBzOw0KPiAgfTsNCj4gDQo+IGRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS94ZW4vcGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmggaW5kZXgNCj4gYjIx YTg5MS4uNTFlMDI1NSAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUveGVuL3BjaS5oDQo+ICsr KyBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaA0KPiBAQCAtMTc0LDQgKzE3NCw3IEBAIGludCBtc2l4 dGJsX3B0X3JlZ2lzdGVyKHN0cnVjdCBkb21haW4gKiwgc3RydWN0IHBpcnEgKiwNCj4gdWludDY0 X3QgZ3RhYmxlKTsgIHZvaWQgbXNpeHRibF9wdF91bnJlZ2lzdGVyKHN0cnVjdCBkb21haW4gKiwg c3RydWN0IHBpcnEgKik7DQo+IHZvaWQgbXNpeHRibF9wdF9jbGVhbnVwKHN0cnVjdCBkb21haW4g KmQpOw0KPiANCj4gK2V4dGVybiBzdHJ1Y3QgaHZtX3B0X2hhbmRsZXJfaW5pdCBodm1fcHRfYmFy X2luaXQ7IGV4dGVybiBzdHJ1Y3QNCj4gK2h2bV9wdF9oYW5kbGVyX2luaXQgaHZtX3B0X3ZmX2Jh cl9pbml0Ow0KPiArDQo+ICAjZW5kaWYgLyogX19YRU5fUENJX0hfXyAqLw0KPiAtLQ0KPiAyLjcu NCAoQXBwbGUgR2l0LTY2KQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK