From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v7 12/16] xen: delay allocation of grant table sub structures Date: Tue, 19 Sep 2017 10:39:49 +0000 Message-ID: <9301eeab62514d93913723fc62889f12@AMSPEX02CL03.citrite.net> References: <20170919095852.15785-1-jgross@suse.com> <20170919095852.15785-13-jgross@suse.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 1duFwW-0007Jf-0j for xen-devel@lists.xenproject.org; Tue, 19 Sep 2017 10:39:52 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Juergen Gross' , "xen-devel@lists.xenproject.org" Cc: "sstabellini@kernel.org" , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "julien.grall@arm.com" , "jbeulich@suse.com" , Ian Jackson , "dgdegra@tycho.nsa.gov" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKdWVyZ2VuIEdyb3NzIFttYWls dG86amdyb3NzQHN1c2UuY29tXQ0KPiBTZW50OiAxOSBTZXB0ZW1iZXIgMjAxNyAxMTozNg0KPiBU bzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IHhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogc3N0YWJlbGxpbmlAa2VybmVsLm9yZzsgV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT47IEdlb3JnZSBEdW5sYXANCj4gPEdlb3JnZS5EdW5sYXBAY2l0 cml4LmNvbT47IEFuZHJldyBDb29wZXINCj4gPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBJ YW4gSmFja3NvbiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IFRpbQ0KPiAoWGVuLm9yZykgPHRp bUB4ZW4ub3JnPjsganVsaWVuLmdyYWxsQGFybS5jb207IGpiZXVsaWNoQHN1c2UuY29tOw0KPiBk Z2RlZ3JhQHR5Y2hvLm5zYS5nb3YNCj4gU3ViamVjdDogUmU6IFtYZW4tZGV2ZWxdIFtQQVRDSCB2 NyAxMi8xNl0geGVuOiBkZWxheSBhbGxvY2F0aW9uIG9mIGdyYW50IHRhYmxlDQo+IHN1YiBzdHJ1 Y3R1cmVzDQo+IA0KPiBPbiAxOS8wOS8xNyAxMjoyOCwgUGF1bCBEdXJyYW50IHdyb3RlOg0KPiA+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0 bzp4ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YNCj4gPj4gSnVl cmdlbiBHcm9zcw0KPiA+PiBTZW50OiAxOSBTZXB0ZW1iZXIgMjAxNyAxMDo1OQ0KPiA+PiBUbzog eGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+ID4+IENjOiBKdWVyZ2VuIEdyb3NzIDxq Z3Jvc3NAc3VzZS5jb20+OyBzc3RhYmVsbGluaUBrZXJuZWwub3JnOyBXZWkgTGl1DQo+ID4+IDx3 ZWkubGl1MkBjaXRyaXguY29tPjsgR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXgu Y29tPjsNCj4gPj4gQW5kcmV3IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IElh biBKYWNrc29uDQo+ID4+IDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgVGltIChYZW4ub3JnKSA8 dGltQHhlbi5vcmc+Ow0KPiA+PiBqdWxpZW4uZ3JhbGxAYXJtLmNvbTsgamJldWxpY2hAc3VzZS5j b207IGRnZGVncmFAdHljaG8ubnNhLmdvdg0KPiA+PiBTdWJqZWN0OiBbWGVuLWRldmVsXSBbUEFU Q0ggdjcgMTIvMTZdIHhlbjogZGVsYXkgYWxsb2NhdGlvbiBvZiBncmFudCB0YWJsZQ0KPiA+PiBz dWIgc3RydWN0dXJlcw0KPiA+Pg0KPiA+PiBEZWxheSB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgZ3Jh bnQgdGFibGUgc3ViIHN0cnVjdHVyZXMgaW4gb3JkZXIgdG8NCj4gPj4gYWxsb3cgbW9kaWZ5aW5n IHBhcmFtZXRlcnMgbmVlZGVkIGZvciBzaXppbmcgb2YgdGhlc2Ugc3RydWN0dXJlcyBhdCBhDQo+ ID4+IHBlciBkb21haW4gYmFzaXMuIEFsbG9jYXRlIHRoZSBzdHJ1Y3R1cmVzIGZyb20gZ250dGFi X3NldHVwX3RhYmxlKCkNCj4gPj4gYW5kIHRoZSB0YWJsZSBmcmFtZXMgb25seSBmcm9tIGdudHRh Yl9ncm93X3RhYmxlKCkuDQo+ID4NCj4gPiBJcyB0aGlzIGxhc3Qgc2VudGVuY2Ugc3RpbGwgY29y cmVjdD8NCj4gDQo+IE9ubHkgcGFydGlhbGx5Lg0KPiANCj4gVGhlIHN0cnVjdHVyZXMgYXJlIG5v dyBhbGxvY2F0ZWQgZnJvbSBncmFudF90YWJsZV9zZXRfbGltaXRzKCkgYW5kIGZvcg0KPiBkb20w IGZyb20gZ3JhbnRfdGFibGVfY3JlYXRlKCkuDQo+IA0KDQpUaGF0IHdhcyBteSByZWFkaW5nIHRv by4uLiBKdXN0IHdhc24ndCBzdXJlIEkgd2FzIGJlaW5nIGZvb2xlZCBieSB0aGUgbGFyZ2UgbnVt YmVyIG9mIGRpZmZzLiBXaXRoIHRoZSBjb21tZW50IGZpeGVkOg0KDQpSZXZlaXdlZC1ieTogUGF1 bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiANCj4gSnVlcmdlbg0KPiAN Cj4gPg0KPiA+ICAgUGF1bA0KPiA+DQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4g R3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCj4gPj4gLS0tDQo+ID4+IFY2Og0KPiA+PiAtIG1vdmUg Y2FsbCBvZiBncmFudF90YWJsZV9pbml0KCkgZm9yIGRvbTAgdG8gZ3JhbnRfdGFibGVfY3JlYXRl KCkNCj4gPj4gICAoSmFuIEJldWxpY2gpDQo+ID4+IC0gbW92ZSBmcmFtZSBhbGxvY2F0aW9ucyB0 byBnbnR0YWJfZ3Jvd190YWJsZSgpIChKYW4gQmV1bGljaCkNCj4gPj4gLSBzZXZlcmFsIG90aGVy IGNoYW5nZXMgZHVlIHRvIG5ldyBwYXRjaCBvcmRlcg0KPiA+Pg0KPiA+PiBWNDoNCj4gPj4gLSBt YWtlIHJldCBtb3JlIGxvY2FsIChXZWkgTGl1KQ0KPiA+Pg0KPiA+PiBWMzoNCj4gPj4gLSBtb3Zl IGNhbGwgb2YgZ3JhbnRfdGFibGVfaW5pdCgpIGZyb20gZ250dGFiX3NldHVwX3RhYmxlKCkgdG8N Cj4gPj4gICBnbnR0YWJfZ3Jvd190YWJsZSgpIChQYXVsIER1cnJhbnQpDQo+ID4+IC0tLQ0KPiA+ PiAgeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tDQo+IC0tLQ0KPiA+PiAtLS0tLS0tLS0NCj4gPj4gIDEgZmlsZSBjaGFuZ2Vk LCA1MiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYw0K PiA+PiBpbmRleCBmNDhlZWZmN2FkLi5mNjY5NDA1NTFlIDEwMDY0NA0KPiA+PiAtLS0gYS94ZW4v Y29tbW9uL2dyYW50X3RhYmxlLmMNCj4gPj4gKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5j DQo+ID4+IEBAIC0xNjU1LDYgKzE2NTUsNDYgQEAgZ250dGFiX3VucG9wdWxhdGVfc3RhdHVzX2Zy YW1lcyhzdHJ1Y3QNCj4gZG9tYWluDQo+ID4+ICpkLCBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0KQ0K PiA+PiAgICAgIGd0LT5ucl9zdGF0dXNfZnJhbWVzID0gMDsNCj4gPj4gIH0NCj4gPj4NCj4gPj4g K3N0YXRpYyBpbnQNCj4gPj4gK2dyYW50X3RhYmxlX2luaXQoc3RydWN0IGdyYW50X3RhYmxlICpn dCkNCj4gPj4gK3sNCj4gPj4gKyAgICBpZiAoIGd0LT5hY3RpdmUgKQ0KPiA+PiArICAgICAgICBy ZXR1cm4gLUVCVVNZOw0KPiA+PiArDQo+ID4+ICsgICAgLyogQWN0aXZlIGdyYW50IHRhYmxlLiAq Lw0KPiA+PiArICAgIGd0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3Jh bnRfZW50cnkgKiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJf YWN0aXZlX2dyYW50X2ZyYW1lcyk7DQo+ID4+ICsgICAgaWYgKCBndC0+YWN0aXZlID09IE5VTEwg KQ0KPiA+PiArICAgICAgICBnb3RvIG5vX21lbTsNCj4gPj4gKw0KPiA+PiArICAgIC8qIFRyYWNr aW5nIG9mIG1hcHBlZCBmb3JlaWduIGZyYW1lcyB0YWJsZSAqLw0KPiA+PiArICAgIGd0LT5tYXB0 cmFjayA9IHZ6YWxsb2MobWF4X21hcHRyYWNrX2ZyYW1lcyAqIHNpemVvZigqZ3QtDQo+ID5tYXB0 cmFjaykpOw0KPiA+PiArICAgIGlmICggZ3QtPm1hcHRyYWNrID09IE5VTEwgKQ0KPiA+PiArICAg ICAgICBnb3RvIG5vX21lbTsNCj4gPj4gKw0KPiA+PiArICAgIC8qIFNoYXJlZCBncmFudCB0YWJs ZS4gKi8NCj4gPj4gKyAgICBndC0+c2hhcmVkX3JhdyA9IHh6YWxsb2NfYXJyYXkodm9pZCAqLCBt YXhfZ3JhbnRfZnJhbWVzKTsNCj4gPj4gKyAgICBpZiAoIGd0LT5zaGFyZWRfcmF3ID09IE5VTEwg KQ0KPiA+PiArICAgICAgICBnb3RvIG5vX21lbTsNCj4gPj4gKw0KPiA+PiArICAgIC8qIFN0YXR1 cyBwYWdlcyBmb3IgZ3JhbnQgdGFibGUgLSBmb3IgdmVyc2lvbiAyICovDQo+ID4+ICsgICAgZ3Qt PnN0YXR1cyA9IHh6YWxsb2NfYXJyYXkoZ3JhbnRfc3RhdHVzX3QgKiwNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9m cmFtZXMpKTsNCj4gPj4gKyAgICBpZiAoIGd0LT5zdGF0dXMgPT0gTlVMTCApDQo+ID4+ICsgICAg ICAgIGdvdG8gbm9fbWVtOw0KPiA+PiArDQo+ID4+ICsgICAgcmV0dXJuIDA7DQo+ID4+ICsNCj4g Pj4gKyBub19tZW06DQo+ID4+ICsgICAgeGZyZWUoZ3QtPnNoYXJlZF9yYXcpOw0KPiA+PiArICAg IGd0LT5zaGFyZWRfcmF3ID0gTlVMTDsNCj4gPj4gKyAgICB2ZnJlZShndC0+bWFwdHJhY2spOw0K PiA+PiArICAgIGd0LT5tYXB0cmFjayA9IE5VTEw7DQo+ID4+ICsgICAgeGZyZWUoZ3QtPmFjdGl2 ZSk7DQo+ID4+ICsgICAgZ3QtPmFjdGl2ZSA9IE5VTEw7DQo+ID4+ICsgICAgcmV0dXJuIC1FTk9N RU07DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gIC8qDQo+ID4+ICAgKiBHcm93IHRoZSBncmFudCB0 YWJsZS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIGdyYW50IHRhYmxlJ3MNCj4gPj4gICAqIHdy aXRlIGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4NCj4gPj4gQEAgLTE2NjUsNiAr MTcwNSwxMCBAQCBnbnR0YWJfZ3Jvd190YWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZA0K PiBpbnQNCj4gPj4gcmVxX25yX2ZyYW1lcykNCj4gPj4gICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUg Kmd0ID0gZC0+Z3JhbnRfdGFibGU7DQo+ID4+ICAgICAgdW5zaWduZWQgaW50IGksIGo7DQo+ID4+ DQo+ID4+ICsgICAgQVNTRVJUKGd0LT5hY3RpdmUpOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKCBy ZXFfbnJfZnJhbWVzIDwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgKQ0KPiA+PiArICAgICAgICBy ZXFfbnJfZnJhbWVzID0gSU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7DQo+ID4+ICAgICAgQVNTRVJU KHJlcV9ucl9mcmFtZXMgPD0gbWF4X2dyYW50X2ZyYW1lcyk7DQo+ID4+DQo+ID4+ICAgICAgZ2Rw cmludGsoWEVOTE9HX0lORk8sDQo+ID4+IEBAIC0zMzgxLDc1ICszNDI1LDIxIEBAIGdyYW50X3Rh YmxlX2NyZWF0ZSgNCj4gPj4gICAgICBzdHJ1Y3QgZG9tYWluICpkKQ0KPiA+PiAgew0KPiA+PiAg ICAgIHN0cnVjdCBncmFudF90YWJsZSAqdDsNCj4gPj4gLSAgICB1bnNpZ25lZCBpbnQgaSwgajsN Cj4gPj4NCj4gPj4gICAgICBpZiAoICh0ID0geHphbGxvYyhzdHJ1Y3QgZ3JhbnRfdGFibGUpKSA9 PSBOVUxMICkNCj4gPj4gLSAgICAgICAgZ290byBub19tZW1fMDsNCj4gPj4gKyAgICAgICAgcmV0 dXJuIC1FTk9NRU07DQo+ID4+DQo+ID4+ICAgICAgLyogU2ltcGxlIHN0dWZmLiAqLw0KPiA+PiAg ICAgIHBlcmNwdV9yd2xvY2tfcmVzb3VyY2VfaW5pdCgmdC0+bG9jaywgZ3JhbnRfcndsb2NrKTsN Cj4gPj4gICAgICBzcGluX2xvY2tfaW5pdCgmdC0+bWFwdHJhY2tfbG9jayk7DQo+ID4+IC0gICAg dC0+bnJfZ3JhbnRfZnJhbWVzID0gSU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7DQo+ID4+IC0NCj4g Pj4gLSAgICAvKiBBY3RpdmUgZ3JhbnQgdGFibGUuICovDQo+ID4+IC0gICAgaWYgKCAodC0+YWN0 aXZlID0geHphbGxvY19hcnJheShzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICosDQo+ID4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0aXZlX2dyYW50X2Zy YW1lcykpID09IE5VTEwgKQ0KPiA+PiAtICAgICAgICBnb3RvIG5vX21lbV8xOw0KPiA+PiAtICAg IGZvciAoIGkgPSAwOw0KPiA+PiAtICAgICAgICAgIGkgPA0KPiBudW1fYWN0X2ZyYW1lc19mcm9t X3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOw0KPiA+PiBpKysgKQ0KPiA+PiAt ICAgIHsNCj4gPj4gLSAgICAgICAgaWYgKCAodC0+YWN0aXZlW2ldID0gYWxsb2NfeGVuaGVhcF9w YWdlKCkpID09IE5VTEwgKQ0KPiA+PiAtICAgICAgICAgICAgZ290byBub19tZW1fMjsNCj4gPj4g LSAgICAgICAgY2xlYXJfcGFnZSh0LT5hY3RpdmVbaV0pOw0KPiA+PiAtICAgICAgICBmb3IgKCBq ID0gMDsgaiA8IEFDR05UX1BFUl9QQUdFOyBqKysgKQ0KPiA+PiAtICAgICAgICAgICAgc3Bpbl9s b2NrX2luaXQoJnQtPmFjdGl2ZVtpXVtqXS5sb2NrKTsNCj4gPj4gLSAgICB9DQo+ID4+IC0NCj4g Pj4gLSAgICAvKiBUcmFja2luZyBvZiBtYXBwZWQgZm9yZWlnbiBmcmFtZXMgdGFibGUgKi8NCj4g Pj4gLSAgICB0LT5tYXB0cmFjayA9IHZ6YWxsb2MobWF4X21hcHRyYWNrX2ZyYW1lcyAqIHNpemVv ZigqdC0+bWFwdHJhY2spKTsNCj4gPj4gLSAgICBpZiAoIHQtPm1hcHRyYWNrID09IE5VTEwgKQ0K PiA+PiAtICAgICAgICBnb3RvIG5vX21lbV8yOw0KPiA+PiAtDQo+ID4+IC0gICAgLyogU2hhcmVk IGdyYW50IHRhYmxlLiAqLw0KPiA+PiAtICAgIGlmICggKHQtPnNoYXJlZF9yYXcgPSB4emFsbG9j X2FycmF5KHZvaWQgKiwgbWF4X2dyYW50X2ZyYW1lcykpID09DQo+IE5VTEwgKQ0KPiA+PiAtICAg ICAgICBnb3RvIG5vX21lbV8zOw0KPiA+PiAtICAgIGZvciAoIGkgPSAwOyBpIDwgSU5JVElBTF9O Ul9HUkFOVF9GUkFNRVM7IGkrKyApDQo+ID4+IC0gICAgew0KPiA+PiAtICAgICAgICBpZiAoICh0 LT5zaGFyZWRfcmF3W2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkpID09IE5VTEwgKQ0KPiA+PiAt ICAgICAgICAgICAgZ290byBub19tZW1fNDsNCj4gPj4gLSAgICAgICAgY2xlYXJfcGFnZSh0LT5z aGFyZWRfcmF3W2ldKTsNCj4gPj4gLSAgICB9DQo+ID4+IC0NCj4gPj4gLSAgICAvKiBTdGF0dXMg cGFnZXMgZm9yIGdyYW50IHRhYmxlIC0gZm9yIHZlcnNpb24gMiAqLw0KPiA+PiAtICAgIHQtPnN0 YXR1cyA9IHh6YWxsb2NfYXJyYXkoZ3JhbnRfc3RhdHVzX3QgKiwNCj4gPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dyYW50X2ZyYW1l cykpOw0KPiA+PiAtICAgIGlmICggdC0+c3RhdHVzID09IE5VTEwgKQ0KPiA+PiAtICAgICAgICBn b3RvIG5vX21lbV80Ow0KPiA+PiAtDQo+ID4+IC0gICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFM X05SX0dSQU5UX0ZSQU1FUzsgaSsrICkNCj4gPj4gLSAgICAgICAgZ250dGFiX2NyZWF0ZV9zaGFy ZWRfcGFnZShkLCB0LCBpKTsNCj4gPj4gLQ0KPiA+PiAtICAgIHQtPm5yX3N0YXR1c19mcmFtZXMg PSAwOw0KPiA+Pg0KPiA+PiAgICAgIC8qIE9rYXksIGluc3RhbGwgdGhlIHN0cnVjdHVyZS4gKi8N Cj4gPj4gICAgICBkLT5ncmFudF90YWJsZSA9IHQ7DQo+ID4+IC0gICAgcmV0dXJuIDA7DQo+ID4+ DQo+ID4+IC0gbm9fbWVtXzQ6DQo+ID4+IC0gICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05S X0dSQU5UX0ZSQU1FUzsgaSsrICkNCj4gPj4gLSAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2UodC0+ c2hhcmVkX3Jhd1tpXSk7DQo+ID4+IC0gICAgeGZyZWUodC0+c2hhcmVkX3Jhdyk7DQo+ID4+IC0g bm9fbWVtXzM6DQo+ID4+IC0gICAgdmZyZWUodC0+bWFwdHJhY2spOw0KPiA+PiAtIG5vX21lbV8y Og0KPiA+PiAtICAgIGZvciAoIGkgPSAwOw0KPiA+PiAtICAgICAgICAgIGkgPA0KPiBudW1fYWN0 X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOw0KPiA+PiBp KysgKQ0KPiA+PiAtICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZSh0LT5hY3RpdmVbaV0pOw0KPiA+ PiAtICAgIHhmcmVlKHQtPmFjdGl2ZSk7DQo+ID4+IC0gbm9fbWVtXzE6DQo+ID4+IC0gICAgeGZy ZWUodCk7DQo+ID4+IC0gbm9fbWVtXzA6DQo+ID4+IC0gICAgcmV0dXJuIC1FTk9NRU07DQo+ID4+ ICsgICAgaWYgKCBkLT5kb21haW5faWQgPT0gMCApDQo+ID4+ICsgICAgICAgIHJldHVybiBncmFu dF90YWJsZV9pbml0KHQpOw0KPiA+PiArDQo+ID4+ICsgICAgcmV0dXJuIDA7DQo+ID4+ICB9DQo+ ID4+DQo+ID4+ICB2b2lkDQo+ID4+IEBAIC0zNjUxLDggKzM2NDEsOSBAQCBpbnQgZ3JhbnRfdGFi bGVfc2V0X2xpbWl0cyhzdHJ1Y3QgZG9tYWluICpkLA0KPiA+PiB1bnNpZ25lZCBpbnQgZ3JhbnRf ZnJhbWVzLA0KPiA+Pg0KPiA+PiAgICAgIGdyYW50X3dyaXRlX2xvY2soZ3QpOw0KPiA+Pg0KPiA+ PiAtICAgIHJldCA9IDA7DQo+ID4+IC0gICAgLyogU2V0IGxpbWl0cywgYWxsb2MgbmVlZGVkIGFy cmF5cy4gKi8NCj4gPj4gKyAgICAvKiBTZXQgbGltaXRzLiAqLw0KPiA+PiArICAgIGlmICggIWd0 LT5hY3RpdmUgKQ0KPiA+PiArICAgICAgICByZXQgPSBncmFudF90YWJsZV9pbml0KGd0KTsNCj4g Pj4NCj4gPj4gICAgICBncmFudF93cml0ZV91bmxvY2soZ3QpOw0KPiA+Pg0KPiA+PiAtLQ0KPiA+ PiAyLjEyLjMNCj4gPj4NCj4gPj4NCj4gPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18NCj4gPj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+PiBYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZw0KPiA+PiBodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=