From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 3/8] xen: delay allocation of grant table sub structures Date: Wed, 6 Sep 2017 08:44:45 +0000 Message-ID: <089e12335a1a4a78a80a5d02651a5395@AMSPEX02CL03.citrite.net> References: <20170906082632.6494-1-jgross@suse.com> <20170906082632.6494-4-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170906082632.6494-4-jgross@suse.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: 'Juergen Gross' , "xen-devel@lists.xen.org" Cc: "sstabellini@kernel.org" , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "jbeulich@suse.com" , Ian Jackson List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YNCj4gSnVlcmdlbiBH cm9zcw0KPiBTZW50OiAwNiBTZXB0ZW1iZXIgMjAxNyAwOToyNg0KPiBUbzogeGVuLWRldmVsQGxp c3RzLnhlbi5vcmcNCj4gQ2M6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT47IHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc7IFdlaSBMaXUNCj4gPHdlaS5saXUyQGNpdHJpeC5jb20+OyBHZW9y Z2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+Ow0KPiBBbmRyZXcgQ29vcGVyIDxB bmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgSWFuIEphY2tzb24NCj4gPElhbi5KYWNrc29uQGNp dHJpeC5jb20+OyBUaW0gKFhlbi5vcmcpIDx0aW1AeGVuLm9yZz47DQo+IGpiZXVsaWNoQHN1c2Uu Y29tDQo+IFN1YmplY3Q6IFtYZW4tZGV2ZWxdIFtQQVRDSCB2MiAzLzhdIHhlbjogZGVsYXkgYWxs b2NhdGlvbiBvZiBncmFudCB0YWJsZSBzdWINCj4gc3RydWN0dXJlcw0KPiANCj4gRGVsYXkgdGhl IGFsbG9jYXRpb24gb2YgdGhlIGdyYW50IHRhYmxlIHN1YiBzdHJ1Y3R1cmVzIGluIG9yZGVyIHRv DQo+IGFsbG93IG1vZGlmeWluZyBwYXJhbWV0ZXJzIG5lZWRlZCBmb3Igc2l6aW5nIG9mIHRoZXNl IHN0cnVjdHVyZXMgYXQgYQ0KPiBwZXIgZG9tYWluIGJhc2lzLiBFaXRoZXIgZG8gaXQgZnJvbSBn bnR0YWJfc2V0dXBfdGFibGUoKSBvciBqdXN0DQo+IGJlZm9yZSB0aGUgZG9tYWluIGlzIHN0YXJ0 ZWQgdGhlIGZpcnN0IHRpbWUuDQoNCldoeSBkb2VzIGl0IG5lZWQgdG8gYmUgaW4gdHdvIHBsYWNl cz8gQ291bGQgaXQgbm90IGp1c3QgYmUgZG9uZSBvbiB0aGUgZmlyc3QgY2FsbCB0byBnbnR0YWJf Z3Jvd190YWJsZSgpPw0KDQooTXkgbmV3IGRpcmVjdCBtYXBwaW5nIHNlcmllcyBkcm9wcyB0aGUg Y2FsbCB0byBnbnR0YWJfc2V0dXBfdGFibGUoKSBpZiB0aGUgbmV3IEFQSSBpcyBhdmFpbGFibGUp Lg0KDQogIFBhdWwNCg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3Nz QHN1c2UuY29tPg0KPiAtLS0NCj4gIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgIHwgIDE3 ICsrKysrLQ0KPiAgeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgfCAxMzkgKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLQ0KPiAgeGVuL2luY2x1ZGUveGVu L2dyYW50X3RhYmxlLmggfCAgIDIgKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25z KCspLCA2MSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2RvbWFp bi5jIGIveGVuL2NvbW1vbi9kb21haW4uYw0KPiBpbmRleCA1YWViY2YyNjVmLi4xMWViMTc3OGEz IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jDQo+ICsrKyBiL3hlbi9jb21tb24v ZG9tYWluLmMNCj4gQEAgLTM2Myw2ICszNjMsOSBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3Jl YXRlKGRvbWlkX3QgZG9taWQsDQo+IHVuc2lnbmVkIGludCBkb21jcl9mbGFncywNCj4gICAgICAg ICAgICAgIGdvdG8gZmFpbDsNCj4gICAgICAgICAgaW5pdF9zdGF0dXMgfD0gSU5JVF9nbnR0YWI7 DQo+IA0KPiArICAgICAgICBpZiAoIGRvbWlkID09IDAgJiYgZ3JhbnRfdGFibGVfaW5pdChkKSAp DQo+ICsgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ICsNCj4gICAgICAgICAgcG9vbGlkID0gMDsN Cj4gDQo+ICAgICAgICAgIGVyciA9IC1FTk9NRU07DQo+IEBAIC05OTgsNyArMTAwMSw4IEBAIGlu dCBfX2RvbWFpbl9wYXVzZV9ieV9zeXN0ZW1jb250cm9sbGVyKHN0cnVjdA0KPiBkb21haW4gKmQs DQo+ICAgICAgICAgIHByZXYgPSBjbXB4Y2hnKCZkLT5jb250cm9sbGVyX3BhdXNlX2NvdW50LCBv bGQsIG5ldyk7DQo+ICAgICAgfSB3aGlsZSAoIHByZXYgIT0gb2xkICk7DQo+IA0KPiAtICAgIHBh dXNlX2ZuKGQpOw0KPiArICAgIGlmICggcGF1c2VfZm4gKQ0KPiArICAgICAgICBwYXVzZV9mbihk KTsNCj4gDQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IEBAIC0xMDA2LDYgKzEwMTAsNyBAQCBp bnQgX19kb21haW5fcGF1c2VfYnlfc3lzdGVtY29udHJvbGxlcihzdHJ1Y3QNCj4gZG9tYWluICpk LA0KPiAgaW50IGRvbWFpbl91bnBhdXNlX2J5X3N5c3RlbWNvbnRyb2xsZXIoc3RydWN0IGRvbWFp biAqZCkNCj4gIHsNCj4gICAgICBpbnQgb2xkLCBuZXcsIHByZXYgPSBkLT5jb250cm9sbGVyX3Bh dXNlX2NvdW50Ow0KPiArICAgIGludCByZXQ7DQo+IA0KPiAgICAgIGRvDQo+ICAgICAgew0KPiBA QCAtMTAyOSw4ICsxMDM0LDE2IEBAIGludCBkb21haW5fdW5wYXVzZV9ieV9zeXN0ZW1jb250cm9s bGVyKHN0cnVjdA0KPiBkb21haW4gKmQpDQo+ICAgICAgICogQ3JlYXRpb24gaXMgY29uc2lkZXJl ZCBmaW5pc2hlZCB3aGVuIHRoZSBjb250cm9sbGVyIHJlZmVyZW5jZSBjb3VudA0KPiAgICAgICAq IGZpcnN0IGRyb3BzIHRvIDAuDQo+ICAgICAgICovDQo+IC0gICAgaWYgKCBuZXcgPT0gMCApDQo+ ICsgICAgaWYgKCBuZXcgPT0gMCAmJiAhZC0+Y3JlYXRpb25fZmluaXNoZWQgKQ0KPiArICAgIHsN Cj4gKyAgICAgICAgcmV0ID0gZ3JhbnRfdGFibGVfaW5pdChkKTsNCj4gKyAgICAgICAgaWYgKCBy ZXQgKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBfX2RvbWFpbl9wYXVzZV9ieV9zeXN0 ZW1jb250cm9sbGVyKGQsIE5VTEwpOw0KPiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAg ICAgICAgfQ0KPiAgICAgICAgICBkLT5jcmVhdGlvbl9maW5pc2hlZCA9IHRydWU7DQo+ICsgICAg fQ0KPiANCj4gICAgICBkb21haW5fdW5wYXVzZShkKTsNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4v Y29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMNCj4gaW5kZXgg YTk0ZGZkZGE3Yi4uYjUwYzMzNGY3MCAxMDA2NDQNCj4gLS0tIGEveGVuL2NvbW1vbi9ncmFudF90 YWJsZS5jDQo+ICsrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYw0KPiBAQCAtMTcxOSw2ICsx NzE5LDc4IEBAIGFjdGl2ZV9hbGxvY19mYWlsZWQ6DQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+ IA0KPiAraW50DQo+ICtncmFudF90YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQpDQo+ICt7DQo+ ICsgICAgc3RydWN0IGdyYW50X3RhYmxlICpndCA9IGQtPmdyYW50X3RhYmxlOw0KPiArICAgIHVu c2lnbmVkIGludCBpLCBqOw0KPiArDQo+ICsgICAgaWYgKCBndC0+bnJfZ3JhbnRfZnJhbWVzICkN Cj4gKyAgICAgICAgcmV0dXJuIDA7DQo+ICsNCj4gKyAgICBndC0+bnJfZ3JhbnRfZnJhbWVzID0g SU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7DQo+ICsNCj4gKyAgICAvKiBBY3RpdmUgZ3JhbnQgdGFi bGUuICovDQo+ICsgICAgaWYgKCAoZ3QtPmFjdGl2ZSA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IGFj dGl2ZV9ncmFudF9lbnRyeSAqLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1heF9ucl9hY3RpdmVfZ3JhbnRfZnJhbWVzKSkgPT0gTlVMTCApDQo+ICsgICAgICAgIGdv dG8gbm9fbWVtXzE7DQo+ICsgICAgZm9yICggaSA9IDA7DQo+ICsgICAgICAgICAgaSA8DQo+IG51 bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyk7IGkr KyApDQo+ICsgICAgew0KPiArICAgICAgICBpZiAoIChndC0+YWN0aXZlW2ldID0gYWxsb2NfeGVu aGVhcF9wYWdlKCkpID09IE5VTEwgKQ0KPiArICAgICAgICAgICAgZ290byBub19tZW1fMjsNCj4g KyAgICAgICAgY2xlYXJfcGFnZShndC0+YWN0aXZlW2ldKTsNCj4gKyAgICAgICAgZm9yICggaiA9 IDA7IGogPCBBQ0dOVF9QRVJfUEFHRTsgaisrICkNCj4gKyAgICAgICAgICAgIHNwaW5fbG9ja19p bml0KCZndC0+YWN0aXZlW2ldW2pdLmxvY2spOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qIFRy YWNraW5nIG9mIG1hcHBlZCBmb3JlaWduIGZyYW1lcyB0YWJsZSAqLw0KPiArICAgIGd0LT5tYXB0 cmFjayA9IHZ6YWxsb2MobWF4X21hcHRyYWNrX2ZyYW1lcyAqIHNpemVvZigqZ3QtPm1hcHRyYWNr KSk7DQo+ICsgICAgaWYgKCBndC0+bWFwdHJhY2sgPT0gTlVMTCApDQo+ICsgICAgICAgIGdvdG8g bm9fbWVtXzI7DQo+ICsNCj4gKyAgICAvKiBTaGFyZWQgZ3JhbnQgdGFibGUuICovDQo+ICsgICAg aWYgKCAoZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwgbWF4X2dyYW50X2Zy YW1lcykpID09IE5VTEwNCj4gKQ0KPiArICAgICAgICBnb3RvIG5vX21lbV8zOw0KPiArICAgIGZv ciAoIGkgPSAwOyBpIDwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7IGkrKyApDQo+ICsgICAgew0K PiArICAgICAgICBpZiAoIChndC0+c2hhcmVkX3Jhd1tpXSA9IGFsbG9jX3hlbmhlYXBfcGFnZSgp KSA9PSBOVUxMICkNCj4gKyAgICAgICAgICAgIGdvdG8gbm9fbWVtXzQ7DQo+ICsgICAgICAgIGNs ZWFyX3BhZ2UoZ3QtPnNoYXJlZF9yYXdbaV0pOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qIFN0 YXR1cyBwYWdlcyBmb3IgZ3JhbnQgdGFibGUgLSBmb3IgdmVyc2lvbiAyICovDQo+ICsgICAgZ3Qt PnN0YXR1cyA9IHh6YWxsb2NfYXJyYXkoZ3JhbnRfc3RhdHVzX3QgKiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFt ZXMpKTsNCj4gKyAgICBpZiAoIGd0LT5zdGF0dXMgPT0gTlVMTCApDQo+ICsgICAgICAgIGdvdG8g bm9fbWVtXzQ7DQo+ICsNCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRf RlJBTUVTOyBpKysgKQ0KPiArICAgICAgICBnbnR0YWJfY3JlYXRlX3NoYXJlZF9wYWdlKGQsIGd0 LCBpKTsNCj4gKw0KPiArICAgIGd0LT5ucl9zdGF0dXNfZnJhbWVzID0gMDsNCj4gKw0KPiArICAg IHJldHVybiAwOw0KPiArDQo+ICsgbm9fbWVtXzQ6DQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBJ TklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsrICkNCj4gKyAgICAgICAgZnJlZV94ZW5oZWFwX3Bh Z2UoZ3QtPnNoYXJlZF9yYXdbaV0pOw0KPiArICAgIHhmcmVlKGd0LT5zaGFyZWRfcmF3KTsNCj4g KyAgICBndC0+c2hhcmVkX3JhdyA9IE5VTEw7DQo+ICsgbm9fbWVtXzM6DQo+ICsgICAgdmZyZWUo Z3QtPm1hcHRyYWNrKTsNCj4gKyAgICBndC0+bWFwdHJhY2sgPSBOVUxMOw0KPiArIG5vX21lbV8y Og0KPiArICAgIGZvciAoIGkgPSAwOw0KPiArICAgICAgICAgIGkgPA0KPiBudW1fYWN0X2ZyYW1l c19mcm9tX3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOyBpKysgKQ0KPiArICAg ICAgICBmcmVlX3hlbmhlYXBfcGFnZShndC0+YWN0aXZlW2ldKTsNCj4gKyAgICB4ZnJlZShndC0+ YWN0aXZlKTsNCj4gKyAgICBndC0+YWN0aXZlID0gTlVMTDsNCj4gKyBub19tZW1fMToNCj4gKyAg ICBndC0+bnJfZ3JhbnRfZnJhbWVzID0gMDsNCj4gKyAgICByZXR1cm4gLUVOT01FTTsNCj4gK30N Cj4gKw0KPiAgc3RhdGljIGxvbmcNCj4gIGdudHRhYl9zZXR1cF90YWJsZSgNCj4gICAgICBYRU5f R1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9zZXR1cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGlu dA0KPiBjb3VudCkNCj4gQEAgLTE3NjQsNyArMTgzNiwxNCBAQCBnbnR0YWJfc2V0dXBfdGFibGUo DQo+ICAgICAgZ3JhbnRfd3JpdGVfbG9jayhndCk7DQo+IA0KPiAgICAgIGlmICggZ3QtPmd0X3Zl cnNpb24gPT0gMCApDQo+ICsgICAgew0KPiArICAgICAgICBpZiAoIGdyYW50X3RhYmxlX2luaXQo ZCkgKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5l cmFsX2Vycm9yOw0KPiArICAgICAgICAgICAgZ290byB1bmxvY2s7DQo+ICsgICAgICAgIH0NCj4g ICAgICAgICAgZ3QtPmd0X3ZlcnNpb24gPSAxOw0KPiArICAgIH0NCj4gDQo+ICAgICAgaWYgKCAo b3AubnJfZnJhbWVzID4gbnJfZ3JhbnRfZnJhbWVzKGd0KSB8fA0KPiAgICAgICAgICAgICgoZ3Qt Pmd0X3ZlcnNpb24gPiAxKSAmJg0KPiBAQCAtMzM3OCw3NSArMzQ1NywxNyBAQCBncmFudF90YWJs ZV9jcmVhdGUoDQo+ICAgICAgc3RydWN0IGRvbWFpbiAqZCkNCj4gIHsNCj4gICAgICBzdHJ1Y3Qg Z3JhbnRfdGFibGUgKnQ7DQo+IC0gICAgdW5zaWduZWQgaW50IGksIGo7DQo+IA0KPiAgICAgIGlm ICggKHQgPSB4emFsbG9jKHN0cnVjdCBncmFudF90YWJsZSkpID09IE5VTEwgKQ0KPiAtICAgICAg ICBnb3RvIG5vX21lbV8wOw0KPiArICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gDQo+ICAgICAg LyogU2ltcGxlIHN0dWZmLiAqLw0KPiAgICAgIHBlcmNwdV9yd2xvY2tfcmVzb3VyY2VfaW5pdCgm dC0+bG9jaywgZ3JhbnRfcndsb2NrKTsNCj4gICAgICBzcGluX2xvY2tfaW5pdCgmdC0+bWFwdHJh Y2tfbG9jayk7DQo+IC0gICAgdC0+bnJfZ3JhbnRfZnJhbWVzID0gSU5JVElBTF9OUl9HUkFOVF9G UkFNRVM7DQo+IC0NCj4gLSAgICAvKiBBY3RpdmUgZ3JhbnQgdGFibGUuICovDQo+IC0gICAgaWYg KCAodC0+YWN0aXZlID0geHphbGxvY19hcnJheShzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICos DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0aXZlX2dy YW50X2ZyYW1lcykpID09IE5VTEwgKQ0KPiAtICAgICAgICBnb3RvIG5vX21lbV8xOw0KPiAtICAg IGZvciAoIGkgPSAwOw0KPiAtICAgICAgICAgIGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9m cmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOw0KPiBpKysgKQ0KPiAtICAgIHsNCj4gLSAg ICAgICAgaWYgKCAodC0+YWN0aXZlW2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkpID09IE5VTEwg KQ0KPiAtICAgICAgICAgICAgZ290byBub19tZW1fMjsNCj4gLSAgICAgICAgY2xlYXJfcGFnZSh0 LT5hY3RpdmVbaV0pOw0KPiAtICAgICAgICBmb3IgKCBqID0gMDsgaiA8IEFDR05UX1BFUl9QQUdF OyBqKysgKQ0KPiAtICAgICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJnQtPmFjdGl2ZVtpXVtqXS5s b2NrKTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICAvKiBUcmFja2luZyBvZiBtYXBwZWQgZm9yZWln biBmcmFtZXMgdGFibGUgKi8NCj4gLSAgICB0LT5tYXB0cmFjayA9IHZ6YWxsb2MobWF4X21hcHRy YWNrX2ZyYW1lcyAqIHNpemVvZigqdC0+bWFwdHJhY2spKTsNCj4gLSAgICBpZiAoIHQtPm1hcHRy YWNrID09IE5VTEwgKQ0KPiAtICAgICAgICBnb3RvIG5vX21lbV8yOw0KPiAtDQo+IC0gICAgLyog U2hhcmVkIGdyYW50IHRhYmxlLiAqLw0KPiAtICAgIGlmICggKHQtPnNoYXJlZF9yYXcgPSB4emFs bG9jX2FycmF5KHZvaWQgKiwgbWF4X2dyYW50X2ZyYW1lcykpID09IE5VTEwgKQ0KPiAtICAgICAg ICBnb3RvIG5vX21lbV8zOw0KPiAtICAgIGZvciAoIGkgPSAwOyBpIDwgSU5JVElBTF9OUl9HUkFO VF9GUkFNRVM7IGkrKyApDQo+IC0gICAgew0KPiAtICAgICAgICBpZiAoICh0LT5zaGFyZWRfcmF3 W2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkpID09IE5VTEwgKQ0KPiAtICAgICAgICAgICAgZ290 byBub19tZW1fNDsNCj4gLSAgICAgICAgY2xlYXJfcGFnZSh0LT5zaGFyZWRfcmF3W2ldKTsNCj4g LSAgICB9DQo+IC0NCj4gLSAgICAvKiBTdGF0dXMgcGFnZXMgZm9yIGdyYW50IHRhYmxlIC0gZm9y IHZlcnNpb24gMiAqLw0KPiAtICAgIHQtPnN0YXR1cyA9IHh6YWxsb2NfYXJyYXkoZ3JhbnRfc3Rh dHVzX3QgKiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1 c19mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykpOw0KPiAtICAgIGlmICggdC0+c3RhdHVzID09IE5V TEwgKQ0KPiAtICAgICAgICBnb3RvIG5vX21lbV80Ow0KPiAtDQo+IC0gICAgZm9yICggaSA9IDA7 IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsrICkNCj4gLSAgICAgICAgZ250dGFiX2Ny ZWF0ZV9zaGFyZWRfcGFnZShkLCB0LCBpKTsNCj4gLQ0KPiAtICAgIHQtPm5yX3N0YXR1c19mcmFt ZXMgPSAwOw0KPiANCj4gICAgICAvKiBPa2F5LCBpbnN0YWxsIHRoZSBzdHJ1Y3R1cmUuICovDQo+ ICAgICAgZC0+Z3JhbnRfdGFibGUgPSB0Ow0KPiAgICAgIHJldHVybiAwOw0KPiAtDQo+IC0gbm9f bWVtXzQ6DQo+IC0gICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsg aSsrICkNCj4gLSAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2UodC0+c2hhcmVkX3Jhd1tpXSk7DQo+ IC0gICAgeGZyZWUodC0+c2hhcmVkX3Jhdyk7DQo+IC0gbm9fbWVtXzM6DQo+IC0gICAgdmZyZWUo dC0+bWFwdHJhY2spOw0KPiAtIG5vX21lbV8yOg0KPiAtICAgIGZvciAoIGkgPSAwOw0KPiAtICAg ICAgICAgIGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFO VF9GUkFNRVMpOw0KPiBpKysgKQ0KPiAtICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZSh0LT5hY3Rp dmVbaV0pOw0KPiAtICAgIHhmcmVlKHQtPmFjdGl2ZSk7DQo+IC0gbm9fbWVtXzE6DQo+IC0gICAg eGZyZWUodCk7DQo+IC0gbm9fbWVtXzA6DQo+IC0gICAgcmV0dXJuIC1FTk9NRU07DQo+ICB9DQo+ IA0KPiAgdm9pZA0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgg Yi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaA0KPiBpbmRleCA0M2IwN2U2MGM1Li44NGE4 ZDYxNjE2IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaA0KPiAr KysgYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaA0KPiBAQCAtMzUsNiArMzUsOCBAQCBl eHRlcm4gdW5zaWduZWQgaW50IG1heF9ncmFudF9mcmFtZXM7DQo+ICAvKiBDcmVhdGUvZGVzdHJv eSBwZXItZG9tYWluIGdyYW50IHRhYmxlIGNvbnRleHQuICovDQo+ICBpbnQgZ3JhbnRfdGFibGVf Y3JlYXRlKA0KPiAgICAgIHN0cnVjdCBkb21haW4gKmQpOw0KPiAraW50IGdyYW50X3RhYmxlX2lu aXQoDQo+ICsgICAgc3RydWN0IGRvbWFpbiAqZCk7DQo+ICB2b2lkIGdyYW50X3RhYmxlX2Rlc3Ry b3koDQo+ICAgICAgc3RydWN0IGRvbWFpbiAqZCk7DQo+ICB2b2lkIGdyYW50X3RhYmxlX2luaXRf dmNwdShzdHJ1Y3QgdmNwdSAqdik7DQo+IC0tDQo+IDIuMTIuMw0KPiANCj4gDQo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFhlbi1kZXZlbCBtYWls aW5nIGxpc3QNCj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==