From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v5 03/11] x86/mmcfg: add handlers for the PVH Dom0 MMCFG areas Date: Tue, 22 Aug 2017 12:11:41 +0000 Message-ID: References: <20170814142850.39133-1-roger.pau@citrix.com> <20170814142850.39133-4-roger.pau@citrix.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 1dk82L-00046b-Pk for xen-devel@lists.xenproject.org; Tue, 22 Aug 2017 12:12:01 +0000 In-Reply-To: <20170814142850.39133-4-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 aWx0bzpyb2dlci5wYXVAY2l0cml4LmNvbV0NCj4gU2VudDogMTQgQXVndXN0IDIwMTcgMTU6MjkN Cj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogYm9yaXMub3N0cm92 c2t5QG9yYWNsZS5jb207IGtvbnJhZC53aWxrQG9yYWNsZS5jb207IFJvZ2VyIFBhdSBNb25uZQ0K PiA8cm9nZXIucGF1QGNpdHJpeC5jb20+OyBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ OyBBbmRyZXcgQ29vcGVyDQo+IDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgUGF1bCBEdXJy YW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHY1IDAzLzEx XSB4ODYvbW1jZmc6IGFkZCBoYW5kbGVycyBmb3IgdGhlIFBWSCBEb20wDQo+IE1NQ0ZHIGFyZWFz DQo+IA0KPiBJbnRyb2R1Y2UgYSBzZXQgb2YgaGFuZGxlcnMgZm9yIHRoZSBhY2Nlc3NlcyB0byB0 aGUgTU1DRkcgYXJlYXMuIFRob3NlDQo+IGFyZWFzIGFyZSBzZXR1cCBiYXNlZCBvbiB0aGUgY29u dGVudHMgb2YgdGhlIGhhcmR3YXJlIE1NQ0ZHIHRhYmxlcywNCj4gYW5kIHRoZSBsaXN0IG9mIGhh bmRsZWQgTU1DRkcgYXJlYXMgaXMgc3RvcmVkIGluc2lkZSBvZiB0aGUgaHZtX2RvbWFpbg0KPiBz dHJ1Y3QuDQo+IA0KPiBUaGUgcmVhZC93cml0ZXMgYXJlIGZvcndhcmRlZCB0byB0aGUgZ2VuZXJp YyB2cGNpIGhhbmRsZXJzIG9uY2UgdGhlDQo+IGFkZHJlc3MgaXMgZGVjb2RlZCBpbiBvcmRlciB0 byBvYnRhaW4gdGhlIGRldmljZSBhbmQgcmVnaXN0ZXIgdGhlDQo+IGd1ZXN0IGlzIHRyeWluZyB0 byBhY2Nlc3MuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5w YXVAY2l0cml4LmNvbT4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50 QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+DQo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPg0KPiBD YzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCj4gLS0tDQo+IENoYW5n ZXMgc2luY2UgdjQ6DQo+ICAtIENoYW5nZSB0aGUgYXR0cmlidXRlIG9mIHB2aF9zZXR1cF9tbWNm ZyB0byBfX2h3ZG9tX2luaXQuDQo+ICAtIFRyeSB0byBhZGQgYXMgbWFueSBNTUNGRyByZWdpb25z IGFzIHBvc3NpYmxlLCBldmVuIGlmIG9uZSBmYWlscyB0bw0KPiAgICBhZGQuDQo+ICAtIENoYW5n ZSBzb21lIGZpZWxkcyBvZiB0aGUgaHZtX21tY2ZnIHN0cnVjdDogdHVybiBzaXplIGludG8gYQ0K PiAgICB1bnNpZ25lZCBpbnQsIHNlZ21lbnQgaW50byB1aW50MTZfdCBhbmQgYnVzIGludG8gdWlu dDhfdC4NCj4gIC0gQ29udmVydCBzb21lIGFkZHJlc3MgcGFyYW1ldGVycyBmcm9tIHVuc2lnbmVk IGxvbmcgdG8gcGFkZHJfdCBmb3INCj4gICAgY29uc2lzdGVuY3kuDQo+ICAtIE1ha2UgdnBjaV9t bWNmZ19kZWNvZGVfYWRkciByZXR1cm4gdGhlIGRlY29kZWQgcmVnaXN0ZXIgaW4gdGhlDQo+ICAg IHJldHVybiBvZiB0aGUgZnVuY3Rpb24uDQo+ICAtIEludHJvZHVjZSBhIG5ldyBtYWNybyB0byBj b252ZXJ0IGEgTU1DRkcgYWRkcmVzcyBpbnRvIGEgQkRGLCBhbmQNCj4gICAgdXNlIGl0IGluIHZw Y2lfbW1jZmdfZGVjb2RlX2FkZHIgdG8gY2xhcmlmeSB0aGUgbG9naWMuDQo+ICAtIEluIHZwY2lf bW1jZmdfe3JlYWQvd3JpdGV9IHVuaWZ5IHRoZSBsb2dpYyBmb3IgOEIgYWNjZXNzZXMgYW5kDQo+ ICAgIHNtYWxsZXIgb25lcy4NCj4gIC0gQWRkIHRoZSBfX2h3ZG9tX2luaXQgYXR0cmlidXRlIHRv IHJlZ2lzdGVyX3ZwY2lfbW1jZmdfaGFuZGxlci4NCj4gIC0gVGVzdCB0aGF0IHJlZyArIHNpemUg ZG9lc24ndCBjcm9zcyBhIGRldmljZSBib3VuZGFyeS4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjM6 DQo+ICAtIFByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gcHJldmlvdXMgcGF0Y2hlczogZHJvcCB4ZW5f IHByZWZpeCBmb3IgdnBjaQ0KPiAgICBmdW5jdGlvbnMsIHBhc3Mgc2xvdCBhbmQgZnVuYyBpbnN0 ZWFkIG9mIGRldmZuIGFuZCBmaXggdGhlIGVycm9yDQo+ICAgIHBhdGhzIG9mIHRoZSBNTUNGRyBo YW5kbGVycy4NCj4gIC0gcy9lY2FtL21tY2ZnLy4NCj4gIC0gTW92ZSB0aGUgZGVzdHJveSBjb2Rl IHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24sIHNvIHRoZSBodm1fbW1jZmcNCj4gICAgc3RydWN0IGNh biBiZSBwcml2YXRlIHRvIGh2bS9pby5jLg0KPiAgLSBDb25zdGlmeSB0aGUgcmV0dXJuIG9mIHZw Y2lfbW1jZmdfZmluZC4NCj4gIC0gVXNlIGQgaW5zdGVhZCBvZiB2LT5kb21haW4gaW4gdnBjaV9t bWNmZ19hY2NlcHQuDQo+ICAtIEFsbG93IDhieXRlIGFjY2Vzc2VzIHRvIHRoZSBtbWNmZy4NCj4g DQo+IENoYW5nZXMgc2luY2UgdjE6DQo+ICAtIEFkZGVkIGxvY2tpbmcuDQo+IC0tLQ0KPiAgeGVu L2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMgICAgfCAgMjIgKysrKysNCj4gIHhlbi9hcmNoL3g4 Ni9odm0vaHZtLmMgICAgICAgICAgIHwgICAzICsNCj4gIHhlbi9hcmNoL3g4Ni9odm0vaW8uYyAg ICAgICAgICAgIHwgMTgzDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQ0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgIDMgKw0KPiAgeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCAgICAgfCAgIDcgKysNCj4gIHhlbi9pbmNsdWRlL2FzbS14 ODYvcGNpLmggICAgICAgIHwgICAyICsNCj4gIDYgZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2RvbTBfYnVpbGQuYw0KPiBiL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jDQo+IGluZGV4 IDBlN2QwNmJlOTUuLjA0YTg2ODJkMzMgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v ZG9tMF9idWlsZC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jDQo+IEBA IC0zOCw2ICszOCw4IEBADQo+ICAjaW5jbHVkZSA8cHVibGljL2h2bS9odm1faW5mb190YWJsZS5o Pg0KPiAgI2luY2x1ZGUgPHB1YmxpYy9odm0vaHZtX3ZjcHUuaD4NCj4gDQo+ICsjaW5jbHVkZSAi Li4veDg2XzY0L21tY29uZmlnLmgiDQo+ICsNCj4gIC8qDQo+ICAgKiBIYXZlIHRoZSBUU1MgY292 ZXIgdGhlIElTQSBwb3J0IHJhbmdlLCB3aGljaCBtYWtlcyBpdA0KPiAgICogLSAxMDQgYnl0ZXMg YmFzZSBzdHJ1Y3R1cmUNCj4gQEAgLTEwNDEsNiArMTA0MywyNCBAQCBzdGF0aWMgaW50IF9faW5p dCBwdmhfc2V0dXBfYWNwaShzdHJ1Y3QgZG9tYWluICpkLA0KPiBwYWRkcl90IHN0YXJ0X2luZm8p DQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiArc3RhdGljIHZvaWQgX19od2RvbV9pbml0 IHB2aF9zZXR1cF9tbWNmZyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiArew0KPiArICAgIHVuc2lnbmVk IGludCBpOw0KPiArICAgIGludCByYzsNCj4gKw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgcGNp X21tY2ZnX2NvbmZpZ19udW07IGkrKyApDQo+ICsgICAgew0KPiArICAgICAgICByYyA9IHJlZ2lz dGVyX3ZwY2lfbW1jZmdfaGFuZGxlcihkLCBwY2lfbW1jZmdfY29uZmlnW2ldLmFkZHJlc3MsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9tbWNmZ19jb25m aWdbaV0uc3RhcnRfYnVzX251bWJlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGNpX21tY2ZnX2NvbmZpZ1tpXS5lbmRfYnVzX251bWJlciwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpX21tY2ZnX2NvbmZpZ1tpXS5w Y2lfc2VnbWVudCk7DQo+ICsgICAgICAgIGlmICggcmMgKQ0KPiArICAgICAgICAgICAgcHJpbnRr KCJVbmFibGUgdG8gc2V0dXAgTU1DRkcgaGFuZGxlciBhdCAlI2x4IGZvciBzZWdtZW50ICV1XG4i LA0KPiArICAgICAgICAgICAgICAgICAgIHBjaV9tbWNmZ19jb25maWdbaV0uYWRkcmVzcywNCj4g KyAgICAgICAgICAgICAgICAgICBwY2lfbW1jZmdfY29uZmlnW2ldLnBjaV9zZWdtZW50KTsNCj4g KyAgICB9DQo+ICt9DQo+ICsNCj4gIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHZoKHN0cnVj dCBkb21haW4gKmQsIGNvbnN0IG1vZHVsZV90ICppbWFnZSwNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VfaGVhZHJvb20sDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdCAqaW5pdHJkLA0KPiBAQCAtMTA5MCw2ICsxMTEw LDggQEAgaW50IF9faW5pdCBkb20wX2NvbnN0cnVjdF9wdmgoc3RydWN0IGRvbWFpbiAqZCwNCj4g Y29uc3QgbW9kdWxlX3QgKmltYWdlLA0KPiAgICAgICAgICByZXR1cm4gcmM7DQo+ICAgICAgfQ0K PiANCj4gKyAgICBwdmhfc2V0dXBfbW1jZmcoZCk7DQo+ICsNCj4gICAgICBwYW5pYygiQnVpbGRp bmcgYSBQVkh2MiBEb20wIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLiIpOw0KPiAgICAgIHJldHVybiAw Ow0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMNCj4gaW5kZXggY2M3M2RmOGRjNy4uMzE2ODk3MzgyMCAxMDA2NDQNCj4g LS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jDQo+IEBAIC01ODMsNiArNTgzLDcgQEAgaW50IGh2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZA0KPiBsb25nIGRvbWNyX2ZsYWdzLA0KPiAgICAgIHNwaW5f bG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOw0KPiAgICAgIElO SVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxpc3QpOw0KPiAgICAg IElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9kb21haW4uZzJtX2lvcG9ydF9saXN0KTsNCj4g KyAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMpOw0K PiANCj4gICAgICByYyA9IGNyZWF0ZV9wZXJkb21haW5fbWFwcGluZyhkLCBQRVJET01BSU5fVklS VF9TVEFSVCwgMCwgTlVMTCwNCj4gTlVMTCk7DQo+ICAgICAgaWYgKCByYyApDQo+IEBAIC03Mjgs NiArNzI5LDggQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkNCj4g ICAgICAgICAgbGlzdF9kZWwoJmlvcG9ydC0+bGlzdCk7DQo+ICAgICAgICAgIHhmcmVlKGlvcG9y dCk7DQo+ICAgICAgfQ0KPiArDQo+ICsgICAgZGVzdHJveV92cGNpX21tY2ZnKCZkLT5hcmNoLmh2 bV9kb21haW4ubW1jZmdfcmVnaW9ucyk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGludCBodm1fc2F2 ZV90c2NfYWRqdXN0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90DQo+ICpo KQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2 bS9pby5jDQo+IGluZGV4IGMzYjY4ZWIyNTcuLjI4NDVkYzViNDggMTAwNjQ0DQo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vaW8uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMNCj4gQEAg LTI4MCw3ICsyODAsNyBAQCB1bnNpZ25lZCBpbnQgaHZtX3BjaV9kZWNvZGVfYWRkcih1bnNpZ25l ZCBpbnQgY2Y4LA0KPiB1bnNpZ25lZCBpbnQgYWRkciwNCj4gIHN0YXRpYyBib29sIHZwY2lfYWNj ZXNzX2FsbG93ZWQodW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IGxlbikNCj4gIHsNCj4g ICAgICAvKiBDaGVjayBhY2Nlc3Mgc2l6ZS4gKi8NCj4gLSAgICBpZiAoIGxlbiAhPSAxICYmIGxl biAhPSAyICYmIGxlbiAhPSA0ICkNCj4gKyAgICBpZiAoIGxlbiAhPSAxICYmIGxlbiAhPSAyICYm IGxlbiAhPSA0ICYmIGxlbiAhPSA4ICkNCj4gICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4g ICAgICAvKiBDaGVjayB0aGF0IGFjY2VzcyBpcyBzaXplIGFsaWduZWQuICovDQo+IEBAIC0zOTEs NiArMzkxLDE4NyBAQCB2b2lkIHJlZ2lzdGVyX3ZwY2lfcG9ydGlvX2hhbmRsZXIoc3RydWN0IGRv bWFpbg0KPiAqZCkNCj4gICAgICBoYW5kbGVyLT5vcHMgPSAmdnBjaV9wb3J0aW9fb3BzOw0KPiAg fQ0KPiANCj4gK3N0cnVjdCBodm1fbW1jZmcgew0KPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgbmV4 dDsNCj4gKyAgICBwYWRkcl90IGFkZHI7DQo+ICsgICAgdW5zaWduZWQgaW50IHNpemU7DQo+ICsg ICAgdWludDE2X3Qgc2VnbWVudDsNCj4gKyAgICBpbnQ4X3QgYnVzOw0KPiArfTsNCj4gKw0KPiAr LyogSGFuZGxlcnMgdG8gdHJhcCBQQ0kgTU1DRkcgY29uZmlnIGFjY2Vzc2VzLiAqLw0KPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKnZwY2lfbW1jZmdfZmluZChzdHJ1Y3QgZG9tYWlu ICpkLA0KPiBwYWRkcl90IGFkZHIpDQo+ICt7DQo+ICsgICAgY29uc3Qgc3RydWN0IGh2bV9tbWNm ZyAqbW1jZmc7DQo+ICsNCj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggbW1jZmcsICZkLT5h cmNoLmh2bV9kb21haW4ubW1jZmdfcmVnaW9ucywNCj4gbmV4dCApDQo+ICsgICAgICAgIGlmICgg YWRkciA+PSBtbWNmZy0+YWRkciAmJiBhZGRyIDwgbW1jZmctPmFkZHIgKyBtbWNmZy0+c2l6ZSAp DQo+ICsgICAgICAgICAgICByZXR1cm4gbW1jZmc7DQo+ICsNCj4gKyAgICByZXR1cm4gTlVMTDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHVuc2lnbmVkIGludCB2cGNpX21tY2ZnX2RlY29kZV9hZGRy KGNvbnN0IHN0cnVjdCBodm1fbW1jZmcNCj4gKm1tY2ZnLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50ICpidXMs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50ICpzbG90LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCAqZnVuYykNCj4gK3sNCj4gKyAgICB1bnNpZ25lZCBpbnQgYmRmOw0KPiAr DQo+ICsgICAgYWRkciAtPSBtbWNmZy0+YWRkcjsNCj4gKyAgICBiZGYgPSBNTUNGR19CREYoYWRk cik7DQo+ICsgICAgKmJ1cyA9IFBDSV9CVVMoYmRmKSArIG1tY2ZnLT5idXM7DQo+ICsgICAgKnNs b3QgPSBQQ0lfU0xPVChiZGYpOw0KPiArICAgICpmdW5jID0gUENJX0ZVTkMoYmRmKTsNCj4gKw0K PiArICAgIHJldHVybiBhZGRyICYgKFBDSV9DRkdfU1BBQ0VfRVhQX1NJWkUgLSAxKTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCB2cGNpX21tY2ZnX2FjY2VwdChzdHJ1Y3QgdmNwdSAqdiwgdW5z aWduZWQgbG9uZyBhZGRyKQ0KPiArew0KPiArICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21h aW47DQo+ICsgICAgYm9vbCBmb3VuZDsNCj4gKw0KPiArICAgIHZwY2lfcmxvY2soZCk7DQo+ICsg ICAgZm91bmQgPSB2cGNpX21tY2ZnX2ZpbmQoZCwgYWRkcik7DQo+ICsgICAgdnBjaV9ydW5sb2Nr KGQpOw0KPiArDQo+ICsgICAgcmV0dXJuIGZvdW5kOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 IHZwY2lfbW1jZmdfcmVhZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9u ZyAqZGF0YSkNCj4gK3sNCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOw0KPiAr ICAgIGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKm1tY2ZnOw0KPiArICAgIHVuc2lnbmVkIGludCBi dXMsIHNsb3QsIGZ1bmMsIHJlZzsNCj4gKw0KPiArICAgICpkYXRhID0gfjB1bDsNCj4gKw0KPiAr ICAgIHZwY2lfcmxvY2soZCk7DQo+ICsgICAgbW1jZmcgPSB2cGNpX21tY2ZnX2ZpbmQoZCwgYWRk cik7DQo+ICsgICAgaWYgKCAhbW1jZmcgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdnBjaV9ydW5s b2NrKGQpOw0KPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArICAgIH0NCj4gKw0K PiArICAgIHJlZyA9IHZwY2lfbW1jZmdfZGVjb2RlX2FkZHIobW1jZmcsIGFkZHIsICZidXMsICZz bG90LCAmZnVuYyk7DQo+ICsNCj4gKyAgICBpZiAoICF2cGNpX2FjY2Vzc19hbGxvd2VkKHJlZywg bGVuKSB8fA0KPiArICAgICAgICAgKHJlZyArIGxlbikgPiBQQ0lfQ0ZHX1NQQUNFX0VYUF9TSVpF ICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHZwY2lfcnVubG9jayhkKTsNCj4gKyAgICAgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIEFj Y29yZGluZyB0byB0aGUgUENJZSAzLjFBIHNwZWNpZmljYXRpb246DQo+ICsgICAgICogIC0gQ29u ZmlndXJhdGlvbiBSZWFkcyBhbmQgV3JpdGVzIG11c3QgdXN1YWxseSBiZSBEV09SRCBvciBzbWFs bGVyDQo+ICsgICAgICogICAgaW4gc2l6ZS4NCj4gKyAgICAgKiAgLSBCZWNhdXNlIFJvb3QgQ29t cGxleCBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBzdXBwb3J0DQo+ICsgICAg ICogICAgYWNjZXNzZXMgdG8gYSBSQ1JCIHRoYXQgY3Jvc3MgRFcgYm91bmRhcmllcyBbLi4uXSBz b2Z0d2FyZQ0KPiArICAgICAqICAgIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIGNhdXNlIHRoZSBn ZW5lcmF0aW9uIG9mIHN1Y2ggYWNjZXNzZXMNCj4gKyAgICAgKiAgICB3aGVuIGFjY2Vzc2luZyBh IFJDUkIgdW5sZXNzIHRoZSBSb290IENvbXBsZXggd2lsbCBzdXBwb3J0IHRoZQ0KPiArICAgICAq ICAgIGFjY2Vzcy4NCj4gKyAgICAgKiAgWGVuIGhvd2V2ZXIgc3VwcG9ydHMgOGJ5dGUgYWNjZXNz ZXMgYnkgc3BsaXR0aW5nIHRoZW0gaW50byB0d28NCj4gKyAgICAgKiAgNGJ5dGUgYWNjZXNzZXMu DQo+ICsgICAgICovDQo+ICsgICAgKmRhdGEgPSB2cGNpX3JlYWQobW1jZmctPnNlZ21lbnQsIGJ1 cywgc2xvdCwgZnVuYywgcmVnLCBtaW4oNHUsIGxlbikpOw0KPiArICAgIGlmICggbGVuID09IDgg KQ0KPiArICAgICAgICAqZGF0YSB8PSAodWludDY0X3QpdnBjaV9yZWFkKG1tY2ZnLT5zZWdtZW50 LCBidXMsIHNsb3QsIGZ1bmMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnICsgNCwgNCkgPDwgMzI7DQo+ICsgICAgdnBjaV9ydW5sb2NrKGQpOw0KPiArDQo+ICsg ICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB2cGNpX21t Y2ZnX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyBkYXRh KQ0KPiArew0KPiArICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47DQo+ICsgICAgY29u c3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmc7DQo+ICsgICAgdW5zaWduZWQgaW50IGJ1cywgc2xv dCwgZnVuYywgcmVnOw0KPiArDQo+ICsgICAgdnBjaV93bG9jayhkKTsNCj4gKyAgICBtbWNmZyA9 IHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKTsNCj4gKyAgICBpZiAoICFtbWNmZyApDQo+ICsgICAg ew0KPiArICAgICAgICB2cGNpX3d1bmxvY2soZCk7DQo+ICsgICAgICAgIHJldHVybiBYODZFTVVM X09LQVk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmVnID0gdnBjaV9tbWNmZ19kZWNvZGVfYWRk cihtbWNmZywgYWRkciwgJmJ1cywgJnNsb3QsICZmdW5jKTsNCj4gKw0KPiArICAgIGlmICggIXZw Y2lfYWNjZXNzX2FsbG93ZWQocmVnLCBsZW4pIHx8DQo+ICsgICAgICAgICAocmVnICsgbGVuKSA+ IFBDSV9DRkdfU1BBQ0VfRVhQX1NJWkUgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdnBjaV93dW5s b2NrKGQpOw0KPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArICAgIH0NCj4gKw0K PiArICAgIHZwY2lfd3JpdGUobW1jZmctPnNlZ21lbnQsIGJ1cywgc2xvdCwgZnVuYywgcmVnLCBt aW4oNHUsIGxlbiksIGRhdGEpOw0KPiArICAgIGlmICggbGVuID09IDggKQ0KPiArICAgICAgICB2 cGNpX3dyaXRlKG1tY2ZnLT5zZWdtZW50LCBidXMsIHNsb3QsIGZ1bmMsIHJlZyArIDQsIDQsIGRh dGEgPj4gMzIpOw0KPiArICAgIHZwY2lfd3VubG9jayhkKTsNCj4gKw0KPiArICAgIHJldHVybiBY ODZFTVVMX09LQVk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21taW9f b3BzIHZwY2lfbW1jZmdfb3BzID0gew0KPiArICAgIC5jaGVjayA9IHZwY2lfbW1jZmdfYWNjZXB0 LA0KPiArICAgIC5yZWFkID0gdnBjaV9tbWNmZ19yZWFkLA0KPiArICAgIC53cml0ZSA9IHZwY2lf bW1jZmdfd3JpdGUsDQo+ICt9Ow0KPiArDQo+ICtpbnQgX19od2RvbV9pbml0IHJlZ2lzdGVyX3Zw Y2lfbW1jZmdfaGFuZGxlcihzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90DQo+IGFkZHIsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg c3RhcnRfYnVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGVuZF9idXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VnKQ0KPiArew0KPiArICAgIHN0cnVjdCBo dm1fbW1jZmcgKm1tY2ZnOw0KPiArDQo+ICsgICAgQVNTRVJUKGlzX2hhcmR3YXJlX2RvbWFpbihk KSk7DQo+ICsNCj4gKyAgICB2cGNpX3dsb2NrKGQpOw0KPiArICAgIGlmICggdnBjaV9tbWNmZ19m aW5kKGQsIGFkZHIpICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHZwY2lfd3VubG9jayhkKTsNCj4g KyAgICAgICAgcmV0dXJuIC1FRVhJU1Q7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgbW1jZmcgPSB4 bWFsbG9jKHN0cnVjdCBodm1fbW1jZmcpOw0KPiArICAgIGlmICggIW1tY2ZnICkNCj4gKyAgICB7 DQo+ICsgICAgICAgIHZwY2lfd3VubG9jayhkKTsNCj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKCBsaXN0X2VtcHR5KCZkLT5hcmNoLmh2bV9kb21h aW4ubW1jZmdfcmVnaW9ucykgKQ0KPiArICAgICAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwg JnZwY2lfbW1jZmdfb3BzKTsNCj4gKw0KPiArICAgIG1tY2ZnLT5hZGRyID0gYWRkciArIChzdGFy dF9idXMgPDwgMjApOw0KPiArICAgIG1tY2ZnLT5idXMgPSBzdGFydF9idXM7DQo+ICsgICAgbW1j ZmctPnNlZ21lbnQgPSBzZWc7DQo+ICsgICAgbW1jZmctPnNpemUgPSAoZW5kX2J1cyAtIHN0YXJ0 X2J1cyArIDEpIDw8IDIwOw0KPiArICAgIGxpc3RfYWRkKCZtbWNmZy0+bmV4dCwgJmQtPmFyY2gu aHZtX2RvbWFpbi5tbWNmZ19yZWdpb25zKTsNCj4gKyAgICB2cGNpX3d1bmxvY2soZCk7DQo+ICsN Cj4gKyAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArdm9pZCBkZXN0cm95X3ZwY2lfbW1jZmco c3RydWN0IGxpc3RfaGVhZCAqZG9tYWluX21tY2ZnKQ0KPiArew0KPiArICAgIHdoaWxlICggIWxp c3RfZW1wdHkoZG9tYWluX21tY2ZnKSApDQo+ICsgICAgew0KPiArICAgICAgICBzdHJ1Y3QgaHZt X21tY2ZnICptbWNmZyA9IGxpc3RfZmlyc3RfZW50cnkoZG9tYWluX21tY2ZnLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9t bWNmZywgbmV4dCk7DQo+ICsNCj4gKyAgICAgICAgbGlzdF9kZWwoJm1tY2ZnLT5uZXh0KTsNCj4g KyAgICAgICAgeGZyZWUobW1jZmcpOw0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAgLyoNCj4gICAq IExvY2FsIHZhcmlhYmxlczoNCj4gICAqIG1vZGU6IEMNCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLQ0KPiB4ODYvaHZtL2Rv bWFpbi5oDQo+IGluZGV4IDNhNTRkNTA2MDYuLmU4ZGMwMWJjM2UgMTAwNjQ0DQo+IC0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2RvbWFpbi5oDQo+IEBAIC0xODcsNiArMTg3LDkgQEAgc3RydWN0IGh2bV9kb21haW4g ew0KPiAgICAgIC8qIExvY2sgZm9yIHRoZSBQQ0kgZW11bGF0aW9uIGxheWVyICh2UENJKS4gKi8N Cj4gICAgICByd2xvY2tfdCB2cGNpX2xvY2s7DQo+IA0KPiArICAgIC8qIExpc3Qgb2YgTU1DRkcg cmVnaW9ucyB0cmFwcGVkIGJ5IFhlbi4gKi8NCj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1tY2Zn X3JlZ2lvbnM7DQo+ICsNCj4gICAgICAvKiBMaXN0IG9mIHBlcm1hbmVudGx5IHdyaXRlLW1hcHBl ZCBwYWdlcy4gKi8NCj4gICAgICBzdHJ1Y3Qgew0KPiAgICAgICAgICBzcGlubG9ja190IGxvY2s7 DQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vaW8uaA0KPiBpbmRleCAwMTMyMmEyZTIxLi44MzcwNDYwMjZjIDEwMDY0 NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oDQo+ICsrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lvLmgNCj4gQEAgLTE2Myw2ICsxNjMsMTMgQEAgdm9pZCByZWdpc3Rl cl9nMm1fcG9ydGlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbg0KPiAqZCk7DQo+ICAvKiBIVk0gcG9y dCBJTyBoYW5kbGVyIGZvciBQQ0kgYWNjZXNzZXMuICovDQo+ICB2b2lkIHJlZ2lzdGVyX3ZwY2lf cG9ydGlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCk7DQo+IA0KPiArLyogSFZNIE1NSU8gaGFu ZGxlciBmb3IgUENJIE1NQ0ZHIGFjY2Vzc2VzLiAqLw0KPiAraW50IHJlZ2lzdGVyX3ZwY2lfbW1j ZmdfaGFuZGxlcihzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9idXMsIHVuc2lnbmVkIGlu dCBlbmRfYnVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgc2VnKTsNCj4gKy8qIERlc3Ryb3kgdHJhY2tlZCBNTUNGRyBhcmVhcy4gKi8NCj4gK3ZvaWQg ZGVzdHJveV92cGNpX21tY2ZnKHN0cnVjdCBsaXN0X2hlYWQgKmRvbWFpbl9tbWNmZyk7DQo+ICsN Cj4gICNlbmRpZiAvKiBfX0FTTV9YODZfSFZNX0lPX0hfXyAqLw0KPiANCj4gDQo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3BjaS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wY2ku aA0KPiBpbmRleCAzNjgwMWQzMTdiLi5hYzE2YzhmZDVkIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L3BjaS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGNpLmgNCj4g QEAgLTYsNiArNiw4IEBADQo+ICAjZGVmaW5lIENGOF9BRERSX0hJKGNmOCkgKCAgKChjZjgpICYg MHgwZjAwMDAwMCkgPj4gMTYpDQo+ICAjZGVmaW5lIENGOF9FTkFCTEVEKGNmOCkgKCEhKChjZjgp ICYgMHg4MDAwMDAwMCkpDQo+IA0KPiArI2RlZmluZSBNTUNGR19CREYoYWRkcikgICggKChhZGRy KSAmIDB4MGZmZmYwMDApID4+IDEyKQ0KPiArDQo+ICAjZGVmaW5lIElTX1NOQl9HRlgoaWQpIChp ZCA9PSAweDAxMDY4MDg2IHx8IGlkID09IDB4MDExNjgwODYgXA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgfHwgaWQgPT0gMHgwMTI2ODA4NiB8fCBpZCA9PSAweDAxMDI4MDg2IFwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHx8IGlkID09IDB4MDExMjgwODYgfHwgaWQgPT0gMHgwMTIy ODA4NiBcDQo+IC0tDQo+IDIuMTEuMCAoQXBwbGUgR2l0LTgxKQ0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK