From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 2/2] x86/io: move the list of guest to machine IO ports out of domain_iommu Date: Tue, 28 Mar 2017 15:58:31 +0000 Message-ID: References: <20170328131226.13347-1-roger.pau@citrix.com> <20170328131226.13347-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cstkc-0003DC-LL for xen-devel@lists.xenproject.org; Tue, 28 Mar 2017 16:13:42 +0000 In-Reply-To: <20170328131226.13347-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: Roger Pau Monne , "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUNCj4g U2VudDogMjggTWFyY2ggMjAxNyAxNDoxMg0KPiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnDQo+IENjOiBSb2dlciBQYXUgTW9ubmUgPHJvZ2VyLnBhdUBjaXRyaXguY29tPjsgSmFu IEJldWxpY2gNCj4gPGpiZXVsaWNoQHN1c2UuY29tPjsgQW5kcmV3IENvb3BlciA8QW5kcmV3LkNv b3BlcjNAY2l0cml4LmNvbT47IFBhdWwNCj4gRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5j b20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2MiAyLzJdIHg4Ni9pbzogbW92ZSB0aGUgbGlzdCBvZiBn dWVzdCB0byBtYWNoaW5lIElPIHBvcnRzDQo+IG91dCBvZiBkb21haW5faW9tbXUNCj4gDQo+IFRo ZXJlJ3Mgbm8gcmVhc29uIHRvIHN0b3JlIHRoYXQgbGlzdCBpbnNpZGUgb2YgdGhlIGRvbWFpbl9p b21tdSBzdHJ1Y3QsIHRoZQ0KPiBmb3J3YXJkaW5nIG9mIGd1ZXN0IElPIHBvcnRzIGludG8gbWFj aGluZSBJTyBwb3J0cyBpcyBub3QgdGllZCB0byB0aGUgcHJlc2VuY2UNCj4gb2YgYW4gSU9NTVUu DQo+IA0KPiBNb3ZlIGl0IGluc2lkZSBvZiB0aGUgaHZtX2RvbWFpbiBzdHJ1Y3QgaW5zdGVhZC4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPg0KDQpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNv bT4NCg0KPiAtLS0NCj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+IENjOiBQYXVsIER1 cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KPiAtLS0NCj4gIHhlbi9hcmNoL3g4Ni9k b21jdGwuYyAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQ0KPiAgeGVuL2FyY2gveDg2L2h2 bS9odm0uYyAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKysNCj4gIHhlbi9hcmNoL3g4Ni9o dm0vaW8uYyAgICAgICAgICAgICAgIHwgIDQgKystLQ0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gveDg2L2lvbW11LmMgfCAxMSAtLS0tLS0tLS0tLQ0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vZG9tYWluLmggICAgfCAgMyArKysNCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaCAg ICAgICAgIHwgIDEgLQ0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94 ZW4vYXJjaC94ODYvZG9tY3RsLmMNCj4gaW5kZXggMTIyMDIyNC4uYjdiODc0OCAxMDA2NDQNCj4g LS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwu Yw0KPiBAQCAtNzIxLDExICs3MjEsMTEgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgNCj4gDQo+ICAg ICAgY2FzZSBYRU5fRE9NQ1RMX2lvcG9ydF9tYXBwaW5nOg0KPiAgICAgIHsNCj4gLSAgICAgICAg c3RydWN0IGRvbWFpbl9pb21tdSAqaGQ7DQo+ICAgICAgICAgIHVuc2lnbmVkIGludCBmZ3AgPSBk b21jdGwtPnUuaW9wb3J0X21hcHBpbmcuZmlyc3RfZ3BvcnQ7DQo+ICAgICAgICAgIHVuc2lnbmVk IGludCBmbXAgPSBkb21jdGwtPnUuaW9wb3J0X21hcHBpbmcuZmlyc3RfbXBvcnQ7DQo+ICAgICAg ICAgIHVuc2lnbmVkIGludCBucCA9IGRvbWN0bC0+dS5pb3BvcnRfbWFwcGluZy5ucl9wb3J0czsN Cj4gICAgICAgICAgdW5zaWduZWQgaW50IGFkZCA9IGRvbWN0bC0+dS5pb3BvcnRfbWFwcGluZy5h ZGRfbWFwcGluZzsNCj4gKyAgICAgICAgc3RydWN0IGh2bV9kb21haW4gKmh2bV9kb21haW47DQo+ ICAgICAgICAgIHN0cnVjdCBnMm1faW9wb3J0ICpnMm1faW9wb3J0Ow0KPiAgICAgICAgICBpbnQg Zm91bmQgPSAwOw0KPiANCj4gQEAgLTc0NywxNCArNzQ3LDE0IEBAIGxvbmcgYXJjaF9kb19kb21j dGwoDQo+ICAgICAgICAgIGlmICggcmV0ICkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4g LSAgICAgICAgaGQgPSBkb21faW9tbXUoZCk7DQo+ICsgICAgICAgIGh2bV9kb21haW4gPSAmZC0+ YXJjaC5odm1fZG9tYWluOw0KPiAgICAgICAgICBpZiAoIGFkZCApDQo+ICAgICAgICAgIHsNCj4g ICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19JTkZPDQo+ICAgICAgICAgICAgICAgICAgICAg ImlvcG9ydF9tYXA6YWRkOiBkb20lZCBncG9ydD0leCBtcG9ydD0leCBucj0leFxuIiwNCj4gICAg ICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGZncCwgZm1wLCBucCk7DQo+IA0KPiAtICAg ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShnMm1faW9wb3J0LCAmaGQtPmFyY2guZzJtX2lv cG9ydF9saXN0LCBsaXN0KQ0KPiArICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShnMm1f aW9wb3J0LCAmaHZtX2RvbWFpbi0+ZzJtX2lvcG9ydF9saXN0LA0KPiBsaXN0KQ0KPiAgICAgICAg ICAgICAgICAgIGlmIChnMm1faW9wb3J0LT5tcG9ydCA9PSBmbXAgKQ0KPiAgICAgICAgICAgICAg ICAgIHsNCj4gICAgICAgICAgICAgICAgICAgICAgZzJtX2lvcG9ydC0+Z3BvcnQgPSBmZ3A7DQo+ IEBAIC03NzMsNyArNzczLDcgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgNCj4gICAgICAgICAgICAg ICAgICBnMm1faW9wb3J0LT5ncG9ydCA9IGZncDsNCj4gICAgICAgICAgICAgICAgICBnMm1faW9w b3J0LT5tcG9ydCA9IGZtcDsNCj4gICAgICAgICAgICAgICAgICBnMm1faW9wb3J0LT5ucCA9IG5w Ow0KPiAtICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmcybV9pb3BvcnQtPmxpc3QsICZo ZC0+YXJjaC5nMm1faW9wb3J0X2xpc3QpOw0KPiArICAgICAgICAgICAgICAgIGxpc3RfYWRkX3Rh aWwoJmcybV9pb3BvcnQtPmxpc3QsICZodm1fZG9tYWluLT5nMm1faW9wb3J0X2xpc3QpOw0KPiAg ICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgaWYgKCAhcmV0ICkNCj4gICAgICAgICAgICAg ICAgICByZXQgPSBpb3BvcnRzX3Blcm1pdF9hY2Nlc3MoZCwgZm1wLCBmbXAgKyBucCAtIDEpOw0K PiBAQCAtNzg4LDcgKzc4OCw3IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoDQo+ICAgICAgICAgICAg ICBwcmludGsoWEVOTE9HX0dfSU5GTw0KPiAgICAgICAgICAgICAgICAgICAgICJpb3BvcnRfbWFw OnJlbW92ZTogZG9tJWQgZ3BvcnQ9JXggbXBvcnQ9JXggbnI9JXhcbiIsDQo+ICAgICAgICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkLCBmZ3AsIGZtcCwgbnApOw0KPiAtICAgICAgICAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeShnMm1faW9wb3J0LCAmaGQtPmFyY2guZzJtX2lvcG9ydF9saXN0LCBs aXN0KQ0KPiArICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShnMm1faW9wb3J0LCAmaHZt X2RvbWFpbi0+ZzJtX2lvcG9ydF9saXN0LA0KPiBsaXN0KQ0KPiAgICAgICAgICAgICAgICAgIGlm ICggZzJtX2lvcG9ydC0+bXBvcnQgPT0gZm1wICkNCj4gICAgICAgICAgICAgICAgICB7DQo+ICAg ICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZnMm1faW9wb3J0LT5saXN0KTsNCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jDQo+ IGluZGV4IDNhMmQwMDEuLmI2YzVjOWIgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiBAQCAtNjA4LDYgKzYwOCw3 IEBAIGludCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkNCj4gICAgICBz cGluX2xvY2tfaW5pdCgmZC0+YXJjaC5odm1fZG9tYWluLnVjX2xvY2spOw0KPiAgICAgIHNwaW5f bG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOw0KPiAgICAgIElO SVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxpc3QpOw0KPiArICAg IElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9kb21haW4uZzJtX2lvcG9ydF9saXN0KTsNCj4g DQo+ICAgICAgaHZtX2luaXRfY2FjaGVhdHRyX3JlZ2lvbl9saXN0KGQpOw0KPiANCj4gQEAgLTcw Nyw2ICs3MDgsOSBAQCB2b2lkIGh2bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0 DQo+IGRvbWFpbiAqZCkNCj4gDQo+ICB2b2lkIGh2bV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9t YWluICpkKQ0KPiAgew0KPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKmlvcG9ydF9saXN0LCAqdG1w Ow0KPiArICAgIHN0cnVjdCBnMm1faW9wb3J0ICppb3BvcnQ7DQo+ICsNCj4gICAgICB4ZnJlZShk LT5hcmNoLmh2bV9kb21haW4uaW9faGFuZGxlcik7DQo+ICAgICAgZC0+YXJjaC5odm1fZG9tYWlu LmlvX2hhbmRsZXIgPSBOVUxMOw0KPiANCj4gQEAgLTcyMiw2ICs3MjYsMTQgQEAgdm9pZCBodm1f ZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkNCj4gDQo+ICAgICAgeGZyZWUoZC0+YXJj aC5odm1fZG9tYWluLnBsX3RpbWUpOw0KPiAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5wbF90aW1l ID0gTlVMTDsNCj4gKw0KPiArICAgIGxpc3RfZm9yX2VhY2hfc2FmZSAoIGlvcG9ydF9saXN0LCB0 bXAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5nMm1f aW9wb3J0X2xpc3QgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgaW9wb3J0ID0gbGlzdF9lbnRyeShp b3BvcnRfbGlzdCwgc3RydWN0IGcybV9pb3BvcnQsIGxpc3QpOw0KPiArICAgICAgICBsaXN0X2Rl bCgmaW9wb3J0LT5saXN0KTsNCj4gKyAgICAgICAgeGZyZWUoaW9wb3J0KTsNCj4gKyAgICB9DQo+ ICB9DQo+IA0KPiAgc3RhdGljIGludCBodm1fc2F2ZV90c2NfYWRqdXN0KHN0cnVjdCBkb21haW4g KmQsIGh2bV9kb21haW5fY29udGV4dF90DQo+ICpoKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2bS9pby5jDQo+IGluZGV4IDNiM2E2MDAuLjll MDA0MDkgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYw0KPiArKysgYi94ZW4v YXJjaC94ODYvaHZtL2lvLmMNCj4gQEAgLTE3MSwxMiArMTcxLDEyIEBAIHN0YXRpYyBib29sX3Qg ZzJtX3BvcnRpb19hY2NlcHQoY29uc3Qgc3RydWN0DQo+IGh2bV9pb19oYW5kbGVyICpoYW5kbGVy LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpb3JlcV90ICpwKQ0K PiAgew0KPiAgICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsNCj4gLSAgICBjb25zdCBz dHJ1Y3QgZG9tYWluX2lvbW11ICpkaW8gPSBkb21faW9tbXUoY3Vyci0+ZG9tYWluKTsNCj4gKyAg ICBjb25zdCBzdHJ1Y3QgaHZtX2RvbWFpbiAqaHZtX2RvbWFpbiA9ICZjdXJyLT5kb21haW4tDQo+ ID5hcmNoLmh2bV9kb21haW47DQo+ICAgICAgc3RydWN0IGh2bV92Y3B1X2lvICp2aW8gPSAmY3Vy ci0+YXJjaC5odm1fdmNwdS5odm1faW87DQo+ICAgICAgc3RydWN0IGcybV9pb3BvcnQgKmcybV9p b3BvcnQ7DQo+ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCBlbmQ7DQo+IA0KPiAtICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnkoIGcybV9pb3BvcnQsICZkaW8tPmFyY2guZzJtX2lvcG9ydF9saXN0LCBs aXN0ICkNCj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KCBnMm1faW9wb3J0LCAmaHZtX2RvbWFp bi0+ZzJtX2lvcG9ydF9saXN0LCBsaXN0ICkNCj4gICAgICB7DQo+ICAgICAgICAgIHN0YXJ0ID0g ZzJtX2lvcG9ydC0+Z3BvcnQ7DQo+ICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgZzJtX2lvcG9ydC0+ bnA7DQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYw0K PiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jDQo+IGluZGV4IDc1MGM2NjMu LjAyNTM4MjMgMTAwNjQ0DQo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21t dS5jDQo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jDQo+IEBAIC0x MjMsNyArMTIzLDYgQEAgaW50IGFyY2hfaW9tbXVfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAq ZCkNCj4gICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsNCj4gDQo+ ICAgICAgc3Bpbl9sb2NrX2luaXQoJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7DQo+IC0gICAgSU5J VF9MSVNUX0hFQUQoJmhkLT5hcmNoLmcybV9pb3BvcnRfbGlzdCk7DQo+ICAgICAgSU5JVF9MSVNU X0hFQUQoJmhkLT5hcmNoLm1hcHBlZF9ybXJycyk7DQo+IA0KPiAgICAgIHJldHVybiAwOw0KPiBA QCAtMTMxLDE2ICsxMzAsNiBAQCBpbnQgYXJjaF9pb21tdV9kb21haW5faW5pdChzdHJ1Y3QgZG9t YWluICpkKQ0KPiANCj4gIHZvaWQgYXJjaF9pb21tdV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9t YWluICpkKQ0KPiAgew0KPiAtICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9t X2lvbW11KGQpOw0KPiAtICAgIHN0cnVjdCBsaXN0X2hlYWQgKmlvcG9ydF9saXN0LCAqdG1wOw0K PiAtICAgIHN0cnVjdCBnMm1faW9wb3J0ICppb3BvcnQ7DQo+IC0NCj4gLSAgICBsaXN0X2Zvcl9l YWNoX3NhZmUgKCBpb3BvcnRfbGlzdCwgdG1wLCAmaGQtPmFyY2guZzJtX2lvcG9ydF9saXN0ICkN Cj4gLSAgICB7DQo+IC0gICAgICAgIGlvcG9ydCA9IGxpc3RfZW50cnkoaW9wb3J0X2xpc3QsIHN0 cnVjdCBnMm1faW9wb3J0LCBsaXN0KTsNCj4gLSAgICAgICAgbGlzdF9kZWwoJmlvcG9ydC0+bGlz dCk7DQo+IC0gICAgICAgIHhmcmVlKGlvcG9ydCk7DQo+IC0gICAgfQ0KPiAgfQ0KPiANCj4gIC8q DQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9p bmNsdWRlL2FzbS0NCj4geDg2L2h2bS9kb21haW4uaA0KPiBpbmRleCA0MjBjYmRjLi5iZGZjMDgy IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaA0KPiArKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaA0KPiBAQCAtMTgwLDYgKzE4MCw5IEBA IHN0cnVjdCBodm1fZG9tYWluIHsNCj4gDQo+ICAgICAgdW5zaWduZWQgbG9uZyAqaW9fYml0bWFw Ow0KPiANCj4gKyAgICAvKiBMaXN0IG9mIGd1ZXN0IHRvIG1hY2hpbmUgSU8gcG9ydHMgbWFwcGlu Zy4gKi8NCj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGcybV9pb3BvcnRfbGlzdDsNCj4gKw0KPiAg ICAgIC8qIExpc3Qgb2YgcGVybWFuZW50bHkgd3JpdGUtbWFwcGVkIHBhZ2VzLiAqLw0KPiAgICAg IHN0cnVjdCB7DQo+ICAgICAgICAgIHNwaW5sb2NrX3QgbG9jazsNCj4gZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaA0K PiBpbmRleCBiZTk1MTA2Li4wMDA4NTA1IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20t eDg2L2lvbW11LmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oDQo+IEBAIC0z NCw3ICszNCw2IEBAIHN0cnVjdCBhcmNoX2lvbW11DQo+ICAgICAgdTY0IHBnZF9tYWRkcjsgICAg ICAgICAgICAgICAgIC8qIGlvIHBhZ2UgZGlyZWN0b3J5IG1hY2hpbmUgYWRkcmVzcyAqLw0KPiAg ICAgIHNwaW5sb2NrX3QgbWFwcGluZ19sb2NrOyAgICAgICAgICAgIC8qIGlvIHBhZ2UgdGFibGUg bG9jayAqLw0KPiAgICAgIGludCBhZ2F3OyAgICAgLyogYWRqdXN0ZWQgZ3Vlc3QgYWRkcmVzcyB3 aWR0aCwgMCBpcyBsZXZlbCAyIDMwLWJpdCAqLw0KPiAtICAgIHN0cnVjdCBsaXN0X2hlYWQgZzJt X2lvcG9ydF9saXN0OyAgIC8qIGd1ZXN0IHRvIG1hY2hpbmUgaW9wb3J0IG1hcHBpbmcgKi8NCj4g ICAgICB1NjQgaW9tbXVfYml0bWFwOyAgICAgICAgICAgICAgLyogYml0bWFwIG9mIGlvbW11KHMp IHRoYXQgdGhlIGRvbWFpbiB1c2VzICovDQo+ICAgICAgc3RydWN0IGxpc3RfaGVhZCBtYXBwZWRf cm1ycnM7DQo+IA0KPiAtLQ0KPiAyLjEwLjEgKEFwcGxlIEdpdC03OCkNCg0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==