From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 2/9] x86/mmcfg: add handlers for the PVH Dom0 MMCFG areas Date: Mon, 10 Jul 2017 13:34:52 +0000 Message-ID: <048eaee43846431f8d1d4450df68d9ad@AMSPEX02CL01.citrite.net> References: <20170630150117.88489-1-roger.pau@citrix.com> <20170630150117.88489-3-roger.pau@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 1dUYqK-0005H5-KA for xen-devel@lists.xenproject.org; Mon, 10 Jul 2017 13:35:16 +0000 In-Reply-To: <20170630150117.88489-3-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 , "julien.grall@arm.com" , Jan Beulich , "boris.ostrovsky@oracle.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUgW21h aWx0bzpyb2dlci5wYXVAY2l0cml4LmNvbV0NCj4gU2VudDogMzAgSnVuZSAyMDE3IDE2OjAxDQo+ IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IGJvcmlzLm9zdHJvdnNr eUBvcmFjbGUuY29tOyBqdWxpZW4uZ3JhbGxAYXJtLmNvbTsNCj4ga29ucmFkLndpbGtAb3JhY2xl LmNvbTsgUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT47IEphbg0KPiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IEFuZHJldyBDb29wZXINCj4gPEFuZHJldy5Db29wZXIz QGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPg0KPiBT dWJqZWN0OiBbUEFUQ0ggdjQgMi85XSB4ODYvbW1jZmc6IGFkZCBoYW5kbGVycyBmb3IgdGhlIFBW SCBEb20wIE1NQ0ZHDQo+IGFyZWFzDQo+IA0KPiBJbnRyb2R1Y2UgYSBzZXQgb2YgaGFuZGxlcnMg Zm9yIHRoZSBhY2Nlc3NlcyB0byB0aGUgTU1DRkcgYXJlYXMuIFRob3NlDQo+IGFyZWFzIGFyZSBz ZXR1cCBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgdGhlIGhhcmR3YXJlIE1NQ0ZHIHRhYmxlcywN Cj4gYW5kIHRoZSBsaXN0IG9mIGhhbmRsZWQgTU1DRkcgYXJlYXMgaXMgc3RvcmVkIGluc2lkZSBv ZiB0aGUgaHZtX2RvbWFpbg0KPiBzdHJ1Y3QuDQo+IA0KPiBUaGUgcmVhZC93cml0ZXMgYXJlIGZv cndhcmRlZCB0byB0aGUgZ2VuZXJpYyB2cGNpIGhhbmRsZXJzIG9uY2UgdGhlDQo+IGFkZHJlc3Mg aXMgZGVjb2RlZCBpbiBvcmRlciB0byBvYnRhaW4gdGhlIGRldmljZSBhbmQgcmVnaXN0ZXIgdGhl DQo+IGd1ZXN0IGlzIHRyeWluZyB0byBhY2Nlc3MuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBSb2dl ciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4NCj4gLS0tDQo+IENjOiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPg0KPiBDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4NCj4gLS0tDQo+IENoYW5nZXMgc2luY2UgdjM6DQo+ICAtIFByb3BhZ2F0ZSBjaGFuZ2Vz IGZyb20gcHJldmlvdXMgcGF0Y2hlczogZHJvcCB4ZW5fIHByZWZpeCBmb3IgdnBjaQ0KPiAgICBm dW5jdGlvbnMsIHBhc3Mgc2xvdCBhbmQgZnVuYyBpbnN0ZWFkIG9mIGRldmZuIGFuZCBmaXggdGhl IGVycm9yDQo+ICAgIHBhdGhzIG9mIHRoZSBNTUNGRyBoYW5kbGVycy4NCj4gIC0gcy9lY2FtL21t Y2ZnLy4NCj4gIC0gTW92ZSB0aGUgZGVzdHJveSBjb2RlIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24s IHNvIHRoZSBodm1fbW1jZmcNCj4gICAgc3RydWN0IGNhbiBiZSBwcml2YXRlIHRvIGh2bS9pby5j Lg0KPiAgLSBDb25zdGlmeSB0aGUgcmV0dXJuIG9mIHZwY2lfbW1jZmdfZmluZC4NCj4gIC0gVXNl IGQgaW5zdGVhZCBvZiB2LT5kb21haW4gaW4gdnBjaV9tbWNmZ19hY2NlcHQuDQo+ICAtIEFsbG93 IDhieXRlIGFjY2Vzc2VzIHRvIHRoZSBtbWNmZy4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjE6DQo+ ICAtIEFkZGVkIGxvY2tpbmcuDQo+IC0tLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxk LmMgICAgfCAgMjcgKysrKysrDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICB8 ICAgMyArDQo+ICB4ZW4vYXJjaC94ODYvaHZtL2lvLmMgICAgICAgICAgICB8IDE4OA0KPiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gIHhlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2RvbWFpbi5oIHwgICAzICsNCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgg ICAgIHwgICA3ICsrDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDIyNSBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWls ZC5jDQo+IGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMNCj4gaW5kZXggMGU3ZDA2YmU5 NS4uNTdkYjhhZGM4ZCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxk LmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMNCj4gQEAgLTM4LDYgKzM4 LDggQEANCj4gICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV9pbmZvX3RhYmxlLmg+DQo+ICAjaW5j bHVkZSA8cHVibGljL2h2bS9odm1fdmNwdS5oPg0KPiANCj4gKyNpbmNsdWRlICIuLi94ODZfNjQv bW1jb25maWcuaCINCj4gKw0KPiAgLyoNCj4gICAqIEhhdmUgdGhlIFRTUyBjb3ZlciB0aGUgSVNB IHBvcnQgcmFuZ2UsIHdoaWNoIG1ha2VzIGl0DQo+ICAgKiAtIDEwNCBieXRlcyBiYXNlIHN0cnVj dHVyZQ0KPiBAQCAtMTA0MSw2ICsxMDQzLDI0IEBAIHN0YXRpYyBpbnQgX19pbml0IHB2aF9zZXR1 cF9hY3BpKHN0cnVjdCBkb21haW4gKmQsDQo+IHBhZGRyX3Qgc3RhcnRfaW5mbykNCj4gICAgICBy ZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICtpbnQgX19pbml0IHB2aF9zZXR1cF9tbWNmZyhzdHJ1Y3Qg ZG9tYWluICpkKQ0KPiArew0KPiArICAgIHVuc2lnbmVkIGludCBpOw0KPiArICAgIGludCByYzsN Cj4gKw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgcGNpX21tY2ZnX2NvbmZpZ19udW07IGkrKyAp DQo+ICsgICAgew0KPiArICAgICAgICByYyA9IHJlZ2lzdGVyX3ZwY2lfbW1jZmdfaGFuZGxlcihk LCBwY2lfbW1jZmdfY29uZmlnW2ldLmFkZHJlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBjaV9tbWNmZ19jb25maWdbaV0uc3RhcnRfYnVzX251bWJlciwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpX21tY2ZnX2Nv bmZpZ1tpXS5lbmRfYnVzX251bWJlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGNpX21tY2ZnX2NvbmZpZ1tpXS5wY2lfc2VnbWVudCk7DQo+ICsgICAgICAg IGlmICggcmMgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIHJjOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICBpbnQgX19pbml0IGRvbTBfY29uc3RydWN0X3B2 aChzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGltYWdlX2hlYWRyb29tLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3QgKmluaXRyZCwNCj4gQEAgLTEwOTAs NiArMTExMCwxMyBAQCBpbnQgX19pbml0IGRvbTBfY29uc3RydWN0X3B2aChzdHJ1Y3QgZG9tYWlu ICpkLA0KPiBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsDQo+ICAgICAgICAgIHJldHVybiByYzsNCj4g ICAgICB9DQo+IA0KPiArICAgIHJjID0gcHZoX3NldHVwX21tY2ZnKGQpOw0KPiArICAgIGlmICgg cmMgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgcHJpbnRrKCJGYWlsZWQgdG8gc2V0dXAgRG9tMCBQ Q0kgTU1DRkcgYXJlYXM6ICVkXG4iLCByYyk7DQo+ICsgICAgICAgIHJldHVybiByYzsNCj4gKyAg ICB9DQo+ICsNCj4gICAgICBwYW5pYygiQnVpbGRpbmcgYSBQVkh2MiBEb20wIGlzIG5vdCB5ZXQg c3VwcG9ydGVkLiIpOw0KPiAgICAgIHJldHVybiAwOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMNCj4gaW5kZXggYzQx NzZlZTQ1OC4uZjQ1ZTJiZDIzZCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0u Yw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jDQo+IEBAIC01ODQsNiArNTg0LDcgQEAg aW50IGh2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZA0KPiBs b25nIGRvbWNyX2ZsYWdzLA0KPiAgICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21h aW4ud3JpdGVfbWFwLmxvY2spOw0KPiAgICAgIElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9k b21haW4ud3JpdGVfbWFwLmxpc3QpOw0KPiAgICAgIElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2 bV9kb21haW4uZzJtX2lvcG9ydF9saXN0KTsNCj4gKyAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJj aC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMpOw0KPiANCj4gICAgICByYyA9IGNyZWF0ZV9wZXJk b21haW5fbWFwcGluZyhkLCBQRVJET01BSU5fVklSVF9TVEFSVCwgMCwgTlVMTCwNCj4gTlVMTCk7 DQo+ICAgICAgaWYgKCByYyApDQo+IEBAIC03MjksNiArNzMwLDggQEAgdm9pZCBodm1fZG9tYWlu X2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkNCj4gICAgICAgICAgbGlzdF9kZWwoJmlvcG9ydC0+ bGlzdCk7DQo+ICAgICAgICAgIHhmcmVlKGlvcG9ydCk7DQo+ICAgICAgfQ0KPiArDQo+ICsgICAg ZGVzdHJveV92cGNpX21tY2ZnKCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfcmVnaW9ucyk7DQo+ ICB9DQo+IA0KPiAgc3RhdGljIGludCBodm1fc2F2ZV90c2NfYWRqdXN0KHN0cnVjdCBkb21haW4g KmQsIGh2bV9kb21haW5fY29udGV4dF90DQo+ICpoKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2bS9pby5jDQo+IGluZGV4IDRlOTFhNDg1Y2Qu LmJiNjdmM2FjY2MgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYw0KPiArKysg Yi94ZW4vYXJjaC94ODYvaHZtL2lvLmMNCj4gQEAgLTI2MSwxMSArMjYxLDExIEBAIHZvaWQgcmVn aXN0ZXJfZzJtX3BvcnRpb19oYW5kbGVyKHN0cnVjdCBkb21haW4NCj4gKmQpDQo+ICBzdGF0aWMg aW50IHZwY2lfYWNjZXNzX2NoZWNrKHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCBsZW4p DQo+ICB7DQo+ICAgICAgLyogQ2hlY2sgYWNjZXNzIHNpemUuICovDQo+IC0gICAgaWYgKCBsZW4g IT0gMSAmJiBsZW4gIT0gMiAmJiBsZW4gIT0gNCApDQo+ICsgICAgaWYgKCBsZW4gIT0gMSAmJiBs ZW4gIT0gMiAmJiBsZW4gIT0gNCAmJiBsZW4gIT0gOCApDQo+ICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiANCj4gLSAgICAvKiBDaGVjayBpZiBhY2Nlc3MgY3Jvc3NlcyBhIGRvdWJsZS13b3Jk IGJvdW5kYXJ5LiAqLw0KPiAtICAgIGlmICggKHJlZyAmIDMpICsgbGVuID4gNCApDQo+ICsgICAg LyogQ2hlY2sgaWYgYWNjZXNzIGNyb3NzZXMgYSBkb3VibGUtd29yZCBib3VuZGFyeSBvciBpdCdz IG5vdCBhbGlnbmVkLiAqLw0KPiArICAgIGlmICggKGxlbiA8PSA0ICYmIChyZWcgJiAzKSArIGxl biA+IDQpIHx8IChsZW4gPT0gOCAmJiAocmVnICYgMykgIT0gMCkgKQ0KDQpNYXliZSAhIShyZWcg JiAzKSBpbiB0aGUgc2Vjb25kIGNsYXVzZSB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIHByZXZp b3VzIGNsYXVzZSdzIGJvb2xlYW4gdXNhZ2Ugb2YgKHJlZyAmIDMpPw0KDQo+ICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPiANCj4gICAgICByZXR1cm4gMDsNCj4gQEAgLTM5OCw2ICszOTgsMTg4 IEBAIHZvaWQgcmVnaXN0ZXJfdnBjaV9wb3J0aW9faGFuZGxlcihzdHJ1Y3QgZG9tYWluDQo+ICpk KQ0KPiAgICAgIGhhbmRsZXItPm9wcyA9ICZ2cGNpX3BvcnRpb19vcHM7DQo+ICB9DQo+IA0KPiAr c3RydWN0IGh2bV9tbWNmZyB7DQo+ICsgICAgcGFkZHJfdCBhZGRyOw0KPiArICAgIHNpemVfdCBz aXplOw0KPiArICAgIHVuc2lnbmVkIGludCBidXM7DQo+ICsgICAgdW5zaWduZWQgaW50IHNlZ21l bnQ7DQo+ICsgICAgc3RydWN0IGxpc3RfaGVhZCBuZXh0Ow0KPiArfTsNCj4gKw0KPiArLyogSGFu ZGxlcnMgdG8gdHJhcCBQQ0kgRUNBTSBjb25maWcgYWNjZXNzZXMuICovDQo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGh2bV9tbWNmZyAqdnBjaV9tbWNmZ19maW5kKHN0cnVjdCBkb21haW4gKmQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYWRkcikNCj4gK3sNCj4gKyAgICBjb25zdCBzdHJ1Y3QgaHZtX21tY2ZnICptbWNmZzsN Cj4gKw0KPiArICAgIEFTU0VSVCh2cGNpX2xvY2tlZChkKSk7DQo+ICsgICAgbGlzdF9mb3JfZWFj aF9lbnRyeSAoIG1tY2ZnLCAmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMsDQo+IG5l eHQgKQ0KPiArICAgICAgICBpZiAoIGFkZHIgPj0gbW1jZmctPmFkZHIgJiYgYWRkciA8IG1tY2Zn LT5hZGRyICsgbW1jZmctPnNpemUgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIG1tY2ZnOw0KPiAr DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHZwY2lfbW1j ZmdfZGVjb2RlX2FkZHIoY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmcsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQg aW50ICpidXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAqc2xvdCwgdW5zaWduZWQgaW50ICpmdW5jLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnJlZykNCj4gK3sNCj4gKyAgICBhZGRyIC09IG1t Y2ZnLT5hZGRyOw0KPiArICAgICpidXMgPSAoKGFkZHIgPj4gMjApICYgMHhmZikgKyBtbWNmZy0+ YnVzOw0KPiArICAgICpzbG90ID0gKGFkZHIgPj4gMTUpICYgMHgxZjsNCj4gKyAgICAqZnVuYyA9 IChhZGRyID4+IDEyKSAmIDB4NzsNCj4gKyAgICAqcmVnID0gYWRkciAmIDB4ZmZmOw0KDQpMb3Rz IG9mIG1hZ2ljIG51bWJlcnMgaGVyZS4gUGVyaGFwcyBkZWZpbmUgc29tZSBtYWNyb3MgYW5hbG9n b3VzIHRvIHRoZSBDRjggb25lcz8NCg0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHZwY2lfbW1j ZmdfYWNjZXB0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIpDQo+ICt7DQo+ICsg ICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsNCj4gKyAgICBib29sIGZvdW5kOw0KPiAr DQo+ICsgICAgdnBjaV9sb2NrKGQpOw0KPiArICAgIGZvdW5kID0gdnBjaV9tbWNmZ19maW5kKGQs IGFkZHIpOw0KPiArICAgIHZwY2lfdW5sb2NrKGQpOw0KPiArDQo+ICsgICAgcmV0dXJuIGZvdW5k Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHZwY2lfbW1jZmdfcmVhZChzdHJ1Y3QgdmNwdSAq diwgdW5zaWduZWQgbG9uZyBhZGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyAqZGF0YSkNCj4gK3sNCj4gKyAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gdi0+ZG9tYWluOw0KPiArICAgIGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKm1t Y2ZnOw0KPiArICAgIHVuc2lnbmVkIGludCBidXMsIHNsb3QsIGZ1bmMsIHJlZzsNCj4gKw0KPiAr ICAgICpkYXRhID0gfih1bnNpZ25lZCBsb25nKTA7DQo+ICsNCj4gKyAgICB2cGNpX2xvY2soZCk7 DQo+ICsgICAgbW1jZmcgPSB2cGNpX21tY2ZnX2ZpbmQoZCwgYWRkcik7DQo+ICsgICAgaWYgKCAh bW1jZmcgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdnBjaV91bmxvY2soZCk7DQo+ICsgICAgICAg IHJldHVybiBYODZFTVVMX09LQVk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgdnBjaV9tbWNmZ19k ZWNvZGVfYWRkcihtbWNmZywgYWRkciwgJmJ1cywgJnNsb3QsICZmdW5jLCAmcmVnKTsNCj4gKw0K PiArICAgIGlmICggdnBjaV9hY2Nlc3NfY2hlY2socmVnLCBsZW4pICkNCj4gKyAgICB7DQo+ICsg ICAgICAgIHZwY2lfdW5sb2NrKGQpOw0KPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0K PiArICAgIH0NCj4gKw0KPiArICAgIHBjaWRldnNfbG9jaygpOw0KPiArICAgIGlmICggbGVuID09 IDggKQ0KPiArICAgIHsNCj4gKyAgICAgICAgLyoNCj4gKyAgICAgICAgICogQWNjb3JkaW5nIHRv IHRoZSBQQ0llIDMuMUEgc3BlY2lmaWNhdGlvbjoNCj4gKyAgICAgICAgICogIC0gQ29uZmlndXJh dGlvbiBSZWFkcyBhbmQgV3JpdGVzIG11c3QgdXN1YWxseSBiZSBEV09SRCBvciBzbWFsbGVyDQo+ ICsgICAgICAgICAqICAgIGluIHNpemUuDQo+ICsgICAgICAgICAqICAtIEJlY2F1c2UgUm9vdCBD b21wbGV4IGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvDQo+IHN1cHBvcnQNCj4g KyAgICAgICAgICogICAgYWNjZXNzZXMgdG8gYSBSQ1JCIHRoYXQgY3Jvc3MgRFcgYm91bmRhcmll cyBbLi4uXSBzb2Z0d2FyZQ0KPiArICAgICAgICAgKiAgICBzaG91bGQgdGFrZSBjYXJlIG5vdCB0 byBjYXVzZSB0aGUgZ2VuZXJhdGlvbiBvZiBzdWNoIGFjY2Vzc2VzDQo+ICsgICAgICAgICAqICAg IHdoZW4gYWNjZXNzaW5nIGEgUkNSQiB1bmxlc3MgdGhlIFJvb3QgQ29tcGxleCB3aWxsIHN1cHBv cnQgdGhlDQo+ICsgICAgICAgICAqICAgIGFjY2Vzcy4NCj4gKyAgICAgICAgICogIFhlbiBob3dl dmVyIHN1cHBvcnRzIDhieXRlIGFjY2Vzc2VzIGJ5IHNwbGl0dGluZyB0aGVtIGludG8gdHdvDQo+ ICsgICAgICAgICAqICA0Ynl0ZSBhY2Nlc3Nlcy4NCj4gKyAgICAgICAgICovDQo+ICsgICAgICAg ICpkYXRhID0gdnBjaV9yZWFkKG1tY2ZnLT5zZWdtZW50LCBidXMsIHNsb3QsIGZ1bmMsIHJlZywg NCk7DQo+ICsgICAgICAgICpkYXRhIHw9ICh1aW50NjRfdCl2cGNpX3JlYWQobW1jZmctPnNlZ21l bnQsIGJ1cywgc2xvdCwgZnVuYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWcgKyA0LCA0KSA8PCAzMjsNCj4gKyAgICB9DQo+ICsgICAgZWxzZQ0KPiArICAgICAg ICAqZGF0YSA9IHZwY2lfcmVhZChtbWNmZy0+c2VnbWVudCwgYnVzLCBzbG90LCBmdW5jLCByZWcs IGxlbik7DQo+ICsgICAgcGNpZGV2c191bmxvY2soKTsNCj4gKyAgICB2cGNpX3VubG9jayhkKTsN Cj4gKw0KPiArICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgdnBjaV9tbWNmZ193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVk IGxvbmcgZGF0YSkNCj4gK3sNCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOw0K PiArICAgIGNvbnN0IHN0cnVjdCBodm1fbW1jZmcgKm1tY2ZnOw0KPiArICAgIHVuc2lnbmVkIGlu dCBidXMsIHNsb3QsIGZ1bmMsIHJlZzsNCj4gKw0KPiArICAgIHZwY2lfbG9jayhkKTsNCj4gKyAg ICBtbWNmZyA9IHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKTsNCj4gKyAgICBpZiAoICFtbWNmZyAp DQo+ICsgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICsNCj4gKyAgICB2cGNpX21tY2Zn X2RlY29kZV9hZGRyKG1tY2ZnLCBhZGRyLCAmYnVzLCAmc2xvdCwgJmZ1bmMsICZyZWcpOw0KPiAr DQo+ICsgICAgaWYgKCB2cGNpX2FjY2Vzc19jaGVjayhyZWcsIGxlbikgKQ0KPiArICAgICAgICBy ZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArDQo+ICsgICAgcGNpZGV2c19sb2NrKCk7DQo+ICsgICAg aWYgKCBsZW4gPT0gOCApDQo+ICsgICAgew0KPiArICAgICAgICB2cGNpX3dyaXRlKG1tY2ZnLT5z ZWdtZW50LCBidXMsIHNsb3QsIGZ1bmMsIHJlZywgNCwgZGF0YSk7DQo+ICsgICAgICAgIHZwY2lf d3JpdGUobW1jZmctPnNlZ21lbnQsIGJ1cywgc2xvdCwgZnVuYywgcmVnICsgNCwgNCwgZGF0YSA+ PiAzMik7DQo+ICsgICAgfQ0KPiArICAgIGVsc2UNCj4gKyAgICAgICAgdnBjaV93cml0ZShtbWNm Zy0+c2VnbWVudCwgYnVzLCBzbG90LCBmdW5jLCByZWcsIGxlbiwgZGF0YSk7DQo+ICsgICAgcGNp ZGV2c191bmxvY2soKTsNCj4gKyAgICB2cGNpX3VubG9jayhkKTsNCj4gKw0KPiArICAgIHJldHVy biBYODZFTVVMX09LQVk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21t aW9fb3BzIHZwY2lfbW1jZmdfb3BzID0gew0KPiArICAgIC5jaGVjayA9IHZwY2lfbW1jZmdfYWNj ZXB0LA0KPiArICAgIC5yZWFkID0gdnBjaV9tbWNmZ19yZWFkLA0KPiArICAgIC53cml0ZSA9IHZw Y2lfbW1jZmdfd3JpdGUsDQo+ICt9Ow0KPiArDQo+ICtpbnQgcmVnaXN0ZXJfdnBjaV9tbWNmZ19o YW5kbGVyKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgYWRkciwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X2J1cywgdW5zaWduZWQgaW50IGVu ZF9idXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz ZWcpDQo+ICt7DQo+ICsgICAgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmc7DQo+ICsNCj4gKyAgICBB U1NFUlQoaXNfaGFyZHdhcmVfZG9tYWluKGQpKTsNCj4gKw0KPiArICAgIHZwY2lfbG9jayhkKTsN Cj4gKyAgICBpZiAoIHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKSApDQo+ICsgICAgew0KPiArICAg ICAgICB2cGNpX3VubG9jayhkKTsNCj4gKyAgICAgICAgcmV0dXJuIC1FRVhJU1Q7DQo+ICsgICAg fQ0KPiArDQo+ICsgICAgbW1jZmcgPSB4bWFsbG9jKHN0cnVjdCBodm1fbW1jZmcpOw0KPiArICAg IGlmICggIW1tY2ZnICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHZwY2lfdW5sb2NrKGQpOw0KPiAr ICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoIGxpc3Rf ZW1wdHkoJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19yZWdpb25zKSApDQo+ICsgICAgICAgIHJl Z2lzdGVyX21taW9faGFuZGxlcihkLCAmdnBjaV9tbWNmZ19vcHMpOw0KPiArDQo+ICsgICAgbW1j ZmctPmFkZHIgPSBhZGRyICsgKHN0YXJ0X2J1cyA8PCAyMCk7DQo+ICsgICAgbW1jZmctPmJ1cyA9 IHN0YXJ0X2J1czsNCj4gKyAgICBtbWNmZy0+c2VnbWVudCA9IHNlZzsNCj4gKyAgICBtbWNmZy0+ c2l6ZSA9IChlbmRfYnVzIC0gc3RhcnRfYnVzICsgMSkgPDwgMjA7DQo+ICsgICAgbGlzdF9hZGQo Jm1tY2ZnLT5uZXh0LCAmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMpOw0KPiArICAg IHZwY2lfdW5sb2NrKGQpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3Zv aWQgZGVzdHJveV92cGNpX21tY2ZnKHN0cnVjdCBsaXN0X2hlYWQgKmRvbWFpbl9tbWNmZykNCj4g K3sNCj4gKyAgICB3aGlsZSAoICFsaXN0X2VtcHR5KGRvbWFpbl9tbWNmZykgKQ0KPiArICAgIHsN Cj4gKyAgICAgICAgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmcgPSBsaXN0X2ZpcnN0X2VudHJ5KGRv bWFpbl9tbWNmZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBodm1fbW1jZmcsIG5leHQpOw0KPiArDQo+ICsgICAgICAgIGxpc3Rf ZGVsKCZtbWNmZy0+bmV4dCk7DQo+ICsgICAgICAgIHhmcmVlKG1tY2ZnKTsNCj4gKyAgICB9DQo+ ICt9DQo+ICsNCj4gIC8qDQo+ICAgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICAgKiBtb2RlOiBDDQo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9pbmNs dWRlL2FzbS0NCj4geDg2L2h2bS9kb21haW4uaA0KPiBpbmRleCBjYmY0MTcwNzg5Li43MDI4Zjkz ODYxIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaA0KPiAr KysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaA0KPiBAQCAtMTg3LDYgKzE4Nyw5 IEBAIHN0cnVjdCBodm1fZG9tYWluIHsNCj4gICAgICAvKiBMb2NrIGZvciB0aGUgUENJIGVtdWxh dGlvbiBsYXllciAodlBDSSkuICovDQo+ICAgICAgc3BpbmxvY2tfdCB2cGNpX2xvY2s7DQo+IA0K PiArICAgIC8qIExpc3Qgb2YgRUNBTSAoTU1DRkcpIHJlZ2lvbnMgdHJhcHBlZCBieSBYZW4uICov DQo+ICsgICAgc3RydWN0IGxpc3RfaGVhZCBtbWNmZ19yZWdpb25zOw0KPiArDQo+ICAgICAgLyog TGlzdCBvZiBwZXJtYW5lbnRseSB3cml0ZS1tYXBwZWQgcGFnZXMuICovDQo+ICAgICAgc3RydWN0 IHsNCj4gICAgICAgICAgc3BpbmxvY2tfdCBsb2NrOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vaW8uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgNCj4gaW5k ZXggMGFmMWVkMTRkYy4uNGZlOTk2ZmU0OSAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vaW8uaA0KPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oDQo+IEBA IC0xNjMsNiArMTYzLDEzIEBAIHZvaWQgcmVnaXN0ZXJfZzJtX3BvcnRpb19oYW5kbGVyKHN0cnVj dCBkb21haW4NCj4gKmQpOw0KPiAgLyogSFZNIHBvcnQgSU8gaGFuZGxlciBmb3IgUENJIGFjY2Vz c2VzLiAqLw0KPiAgdm9pZCByZWdpc3Rlcl92cGNpX3BvcnRpb19oYW5kbGVyKHN0cnVjdCBkb21h aW4gKmQpOw0KPiANCj4gKy8qIEhWTSBNTUlPIGhhbmRsZXIgZm9yIFBDSSBNTUNGRyBhY2Nlc3Nl cy4gKi8NCj4gK2ludCByZWdpc3Rlcl92cGNpX21tY2ZnX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBhZGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgc3RhcnRfYnVzLCB1bnNpZ25lZCBpbnQgZW5kX2J1cywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlZyk7DQo+ICsvKiBEZXN0cm95IHRy YWNrZWQgTU1DRkcgYXJlYXMuICovDQo+ICt2b2lkIGRlc3Ryb3lfdnBjaV9tbWNmZyhzdHJ1Y3Qg bGlzdF9oZWFkICpkb21haW5fbW1jZmcpOw0KPiArDQo+ICAjZW5kaWYgLyogX19BU01fWDg2X0hW TV9JT19IX18gKi8NCj4gDQoNClJlc3QgTEdUTS4NCg0KICBQYXVsDQoNCj4gDQo+IC0tDQo+IDIu MTEuMCAoQXBwbGUgR2l0LTgxKQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK