From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 4/8] xen: make grant resource limits per domain Date: Wed, 6 Sep 2017 09:10:45 +0000 Message-ID: References: <20170906082632.6494-1-jgross@suse.com> <20170906082632.6494-5-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-5-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+IFN1YmplY3Q6IFtYZW4tZGV2ZWxdIFtQQVRDSCB2MiA0LzhdIHhlbjogbWFrZSBncmFu dCByZXNvdXJjZSBsaW1pdHMgcGVyDQo+IGRvbWFpbg0KPiANCj4gSW5zdGVhZCBvZiB1c2luZyB0 aGUgc2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50IHRhYmxlcyAobWF4Lg0KPiBu dW1iZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0cmFjayBmcmFtZXMpIGZv ciBhbGwgZG9tYWlucw0KPiBtYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWluLiBUaGlzIHdpbGwg YWxsb3cgc2V0dGluZyBpbmRpdmlkdWFsIGxpbWl0cw0KPiBpbiB0aGUgZnV0dXJlLiBGb3Igbm93 IGluaXRpYWxpemUgdGhlIHBlciBkb21haW4gbGltaXRzIHdpdGggdGhlIGdsb2JhbA0KPiB2YWx1 ZXMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ DQo+IC0tLQ0KPiAgeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIHwgODMgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQs IDQ2IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3hl bi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYw0KPiBpbmRl eCBiNTBjMzM0ZjcwLi5hZTVmMTI2MmU4IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2dyYW50 X3RhYmxlLmMNCj4gKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jDQo+IEBAIC02OSw2ICs2 OSw5IEBAIHN0cnVjdCBncmFudF90YWJsZSB7DQo+ICAgICAgLyogVGhlIGRlZmluZWQgdmVyc2lv bnMgYXJlIDEgYW5kIDIuICBTZXQgdG8gMCBpZiB3ZSBkb24ndCBrbm93DQo+ICAgICAgICAgd2hh dCB2ZXJzaW9uIHRvIHVzZSB5ZXQuICovDQo+ICAgICAgdW5zaWduZWQgICAgICAgICAgICAgIGd0 X3ZlcnNpb247DQo+ICsgICAgLyogUmVzb3VyY2UgbGltaXRzIG9mIHRoZSBkb21haW4uICovDQo+ ICsgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG1heF9ncmFudF9mcmFtZXM7DQo+ICsgICAgdW5z aWduZWQgaW50ICAgICAgICAgIG1heF9tYXB0cmFja19mcmFtZXM7DQo+ICB9Ow0KPiANCj4gICNp Zm5kZWYgREVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTIC8qIHRvIGFsbG93IGFyY2ggdG8gb3Zl cnJpZGUgKi8NCj4gQEAgLTI4NSw4ICsyODgsOCBAQCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9m cmFtZXMoY29uc3QgdW5zaWduZWQNCj4gaW50IG51bSkNCj4gICAgICByZXR1cm4gRElWX1JPVU5E X1VQKG51bSAqIHNoYV9wZXJfcGFnZSwgQUNHTlRfUEVSX1BBR0UpOw0KPiAgfQ0KPiANCj4gLSNk ZWZpbmUgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMgXA0KPiAtICAgIG51bV9hY3RfZnJhbWVz X2Zyb21fc2hhX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKQ0KPiArI2RlZmluZSBtYXhfbnJfYWN0 aXZlX2dyYW50X2ZyYW1lcyhndCkgXA0KPiArICAgIG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2Zy YW1lcyhndC0+bWF4X2dyYW50X2ZyYW1lcykNCj4gDQo+ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludA0KPiAgbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0KQ0K PiBAQCAtNTI0LDcgKzUyNyw3IEBAIGdldF9tYXB0cmFja19oYW5kbGUoDQo+ICAgICAgICogb3V0 IG9mIG1lbW9yeSwgdHJ5IHN0ZWFsaW5nIGFuIGVudHJ5IGZyb20gYW5vdGhlciBWQ1BVIChpbiBj YXNlIHRoZQ0KPiAgICAgICAqIGd1ZXN0IGlzbid0IG1hcHBpbmcgYWNyb3NzIGl0cyBWQ1BVcyBl dmVubHkpLg0KPiAgICAgICAqLw0KPiAtICAgIGlmICggbnJfbWFwdHJhY2tfZnJhbWVzKGxndCkg PCBtYXhfbWFwdHJhY2tfZnJhbWVzICkNCj4gKyAgICBpZiAoIG5yX21hcHRyYWNrX2ZyYW1lcyhs Z3QpIDwgbGd0LT5tYXhfbWFwdHJhY2tfZnJhbWVzICkNCj4gICAgICAgICAgbmV3X210ID0gYWxs b2NfeGVuaGVhcF9wYWdlKCk7DQo+IA0KPiAgICAgIGlmICggIW5ld19tdCApDQo+IEBAIC0xNjYz LDcgKzE2NjYsNyBAQCBnbnR0YWJfZ3Jvd190YWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQNCj4gcmVxX25yX2ZyYW1lcykNCj4gICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0g ZC0+Z3JhbnRfdGFibGU7DQo+ICAgICAgdW5zaWduZWQgaW50IGksIGo7DQo+IA0KPiAtICAgIEFT U0VSVChyZXFfbnJfZnJhbWVzIDw9IG1heF9ncmFudF9mcmFtZXMpOw0KPiArICAgIEFTU0VSVChy ZXFfbnJfZnJhbWVzIDw9IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsNCj4gDQo+ICAgICAgZ2Rwcmlu dGsoWEVOTE9HX0lORk8sDQo+ICAgICAgICAgICAgICAiRXhwYW5kaW5nIGRvbSAoJWQpIGdyYW50 IHRhYmxlIGZyb20gKCVkKSB0byAoJWQpIGZyYW1lcy5cbiIsDQo+IEBAIC0xNzI4LDE0ICsxNzMx LDE1IEBAIGdyYW50X3RhYmxlX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4gICAgICBpZiAoIGd0 LT5ucl9ncmFudF9mcmFtZXMgKQ0KPiAgICAgICAgICByZXR1cm4gMDsNCj4gDQo+IC0gICAgZ3Qt Pm5yX2dyYW50X2ZyYW1lcyA9IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOw0KPiArICAgIGd0LT5u cl9ncmFudF9mcmFtZXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsDQo+IElOSVRJQUxfTlJfR1JBTlRf RlJBTUVTLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsNCj4gDQo+ICAgICAgLyogQWN0aXZlIGdyYW50IHRhYmxl LiAqLw0KPiAgICAgIGlmICggKGd0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3Rp dmVfZ3JhbnRfZW50cnkgKiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcykpID09IE5VTEwgKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ucl9hY3RpdmVfZ3JhbnRfZnJhbWVzKGd0KSkp ID09IE5VTEwgKQ0KPiAgICAgICAgICBnb3RvIG5vX21lbV8xOw0KPiAgICAgIGZvciAoIGkgPSAw Ow0KPiAtICAgICAgICAgIGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoSU5JVElB TF9OUl9HUkFOVF9GUkFNRVMpOw0KPiBpKysgKQ0KPiArICAgICAgICAgIGkgPCBudW1fYWN0X2Zy YW1lc19mcm9tX3NoYV9mcmFtZXMoZ3QtPm5yX2dyYW50X2ZyYW1lcyk7IGkrKyApDQo+ICAgICAg ew0KPiAgICAgICAgICBpZiAoIChndC0+YWN0aXZlW2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkp ID09IE5VTEwgKQ0KPiAgICAgICAgICAgICAgZ290byBub19tZW1fMjsNCj4gQEAgLTE3NDUsMTQg KzE3NDksMTQgQEAgZ3JhbnRfdGFibGVfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgIH0N Cj4gDQo+ICAgICAgLyogVHJhY2tpbmcgb2YgbWFwcGVkIGZvcmVpZ24gZnJhbWVzIHRhYmxlICov DQo+IC0gICAgZ3QtPm1hcHRyYWNrID0gdnphbGxvYyhtYXhfbWFwdHJhY2tfZnJhbWVzICogc2l6 ZW9mKCpndC0+bWFwdHJhY2spKTsNCj4gKyAgICBndC0+bWFwdHJhY2sgPSB2emFsbG9jKGd0LT5t YXhfbWFwdHJhY2tfZnJhbWVzICogc2l6ZW9mKCpndC0NCj4gPm1hcHRyYWNrKSk7DQo+ICAgICAg aWYgKCBndC0+bWFwdHJhY2sgPT0gTlVMTCApDQo+ICAgICAgICAgIGdvdG8gbm9fbWVtXzI7DQo+ IA0KPiAgICAgIC8qIFNoYXJlZCBncmFudCB0YWJsZS4gKi8NCj4gLSAgICBpZiAoIChndC0+c2hh cmVkX3JhdyA9IHh6YWxsb2NfYXJyYXkodm9pZCAqLCBtYXhfZ3JhbnRfZnJhbWVzKSkgPT0gTlVM TCApDQo+ICsgICAgaWYgKCAoZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwg Z3QtPm1heF9ncmFudF9mcmFtZXMpKSA9PQ0KPiBOVUxMICkNCj4gICAgICAgICAgZ290byBub19t ZW1fMzsNCj4gLSAgICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOyBp KysgKQ0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZ3QtPm5yX2dyYW50X2ZyYW1lczsgaSsrICkN Cj4gICAgICB7DQo+ICAgICAgICAgIGlmICggKGd0LT5zaGFyZWRfcmF3W2ldID0gYWxsb2NfeGVu aGVhcF9wYWdlKCkpID09IE5VTEwgKQ0KPiAgICAgICAgICAgICAgZ290byBub19tZW1fNDsNCj4g QEAgLTE3NjEsMTEgKzE3NjUsMTEgQEAgZ3JhbnRfdGFibGVfaW5pdChzdHJ1Y3QgZG9tYWluICpk KQ0KPiANCj4gICAgICAvKiBTdGF0dXMgcGFnZXMgZm9yIGdyYW50IHRhYmxlIC0gZm9yIHZlcnNp b24gMiAqLw0KPiAgICAgIGd0LT5zdGF0dXMgPSB4emFsbG9jX2FycmF5KGdyYW50X3N0YXR1c190 ICosDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRfdG9fc3RhdHVzX2Zy YW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhndC0+bWF4X2dyYW50X2ZyYW1lcykpOw0KPiAgICAg IGlmICggZ3QtPnN0YXR1cyA9PSBOVUxMICkNCj4gICAgICAgICAgZ290byBub19tZW1fNDsNCj4g DQo+IC0gICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsrICkN Cj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IGd0LT5ucl9ncmFudF9mcmFtZXM7IGkrKyApDQo+ICAg ICAgICAgIGdudHRhYl9jcmVhdGVfc2hhcmVkX3BhZ2UoZCwgZ3QsIGkpOw0KPiANCj4gICAgICBn dC0+bnJfc3RhdHVzX2ZyYW1lcyA9IDA7DQo+IEBAIC0xNzczLDcgKzE3NzcsNyBAQCBncmFudF90 YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQpDQo+ICAgICAgcmV0dXJuIDA7DQo+IA0KPiAgIG5v X21lbV80Og0KPiAtICAgIGZvciAoIGkgPSAwOyBpIDwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7 IGkrKyApDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBndC0+bnJfZ3JhbnRfZnJhbWVzOyBpKysg KQ0KPiAgICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZShndC0+c2hhcmVkX3Jhd1tpXSk7DQo+ICAg ICAgeGZyZWUoZ3QtPnNoYXJlZF9yYXcpOw0KPiAgICAgIGd0LT5zaGFyZWRfcmF3ID0gTlVMTDsN Cj4gQEAgLTE3ODIsNyArMTc4Niw3IEBAIGdyYW50X3RhYmxlX2luaXQoc3RydWN0IGRvbWFpbiAq ZCkNCj4gICAgICBndC0+bWFwdHJhY2sgPSBOVUxMOw0KPiAgIG5vX21lbV8yOg0KPiAgICAgIGZv ciAoIGkgPSAwOw0KPiAtICAgICAgICAgIGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFt ZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOw0KPiBpKysgKQ0KPiArICAgICAgICAgIGkgPCBu dW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoZ3QtPm5yX2dyYW50X2ZyYW1lcyk7IGkrKyAp DQo+ICAgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKGd0LT5hY3RpdmVbaV0pOw0KPiAgICAgIHhm cmVlKGd0LT5hY3RpdmUpOw0KPiAgICAgIGd0LT5hY3RpdmUgPSBOVUxMOw0KPiBAQCAtMTgwNywx NSArMTgxMSw2IEBAIGdudHRhYl9zZXR1cF90YWJsZSgNCj4gICAgICBpZiAoIHVubGlrZWx5KGNv cHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkpICkNCj4gICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7 DQo+IA0KPiAtICAgIGlmICggdW5saWtlbHkob3AubnJfZnJhbWVzID4gbWF4X2dyYW50X2ZyYW1l cykgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJYZW4gb25s eSBzdXBwb3J0cyB1cCB0byAlZCBncmFudC10YWJsZQ0KPiBmcmFtZXMiDQo+IC0gICAgICAgICAg ICAgICAgIiBwZXIgZG9tYWluLlxuIiwNCj4gLSAgICAgICAgICAgICAgICBtYXhfZ3JhbnRfZnJh bWVzKTsNCj4gLSAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsNCj4gLSAg ICAgICAgZ290byBvdXQ7DQo+IC0gICAgfQ0KPiAtDQo+ICAgICAgaWYgKCAhZ3Vlc3RfaGFuZGxl X29rYXkob3AuZnJhbWVfbGlzdCwgb3AubnJfZnJhbWVzKSApDQo+ICAgICAgICAgIHJldHVybiAt RUZBVUxUOw0KPiANCj4gQEAgLTE4MzUsNiArMTgzMCwxNSBAQCBnbnR0YWJfc2V0dXBfdGFibGUo DQo+ICAgICAgZ3QgPSBkLT5ncmFudF90YWJsZTsNCj4gICAgICBncmFudF93cml0ZV9sb2NrKGd0 KTsNCj4gDQo+ICsgICAgaWYgKCB1bmxpa2VseShvcC5ucl9mcmFtZXMgPiBndC0+bWF4X2dyYW50 X2ZyYW1lcykgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJY ZW4gb25seSBzdXBwb3J0cyB1cCB0byAlZCBncmFudC10YWJsZQ0KPiBmcmFtZXMiDQo+ICsgICAg ICAgICAgICAgICAgIiBwZXIgZG9tYWluLlxuIiwNCj4gKyAgICAgICAgICAgICAgICBndC0+bWF4 X2dyYW50X2ZyYW1lcyk7DQoNClRoZSBtZXNzYWdlIHNob3VsZCBwcm9iYWJseSBub3cgc2F5IHRo YXQgdGhlIGRvbWFpbiBoYXMgb25seSBiZWVuIHByb3Zpc2lvbmVkIHdpdGggWCBncmFudCBmcmFt ZXMsIHJhdGhlciB0aGFuIGltcGx5aW5nIHRoYXQgdGhlIGxpbWl0IGlzIHN0aWxsIGdsb2JhbCBh cyBpdCBkb2VzLg0KT3RoZXJ3aXNlIExHVE0gc28gd2l0aCB0aGF0IHR3ZWFrLi4uDQoNClJldmll d2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+ICsgICAg ICAgIG9wLnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7DQo+ICsgICAgICAgIGdvdG8gdW5s b2NrOw0KPiArICAgIH0NCj4gKw0KPiAgICAgIGlmICggZ3QtPmd0X3ZlcnNpb24gPT0gMCApDQo+ ICAgICAgew0KPiAgICAgICAgICBpZiAoIGdyYW50X3RhYmxlX2luaXQoZCkgKQ0KPiBAQCAtMTg1 Miw3ICsxODU2LDcgQEAgZ250dGFiX3NldHVwX3RhYmxlKA0KPiAgICAgIHsNCj4gICAgICAgICAg Z2RwcmludGsoWEVOTE9HX0lORk8sDQo+ICAgICAgICAgICAgICAgICAgICJFeHBhbmQgZ3JhbnQg dGFibGUgdG8gJXUgZmFpbGVkLiBDdXJyZW50OiAldSBNYXg6ICV1XG4iLA0KPiAtICAgICAgICAg ICAgICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhndCksIG1heF9ncmFudF9mcmFt ZXMpOw0KPiArICAgICAgICAgICAgICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhn dCksIGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsNCj4gICAgICAgICAgb3Auc3RhdHVzID0gR05UU1Rf Z2VuZXJhbF9lcnJvcjsNCj4gICAgICAgICAgZ290byB1bmxvY2s7DQo+ICAgICAgfQ0KPiBAQCAt MTg4Nyw2ICsxODkxLDcgQEAgZ250dGFiX3F1ZXJ5X3NpemUoDQo+ICB7DQo+ICAgICAgc3RydWN0 IGdudHRhYl9xdWVyeV9zaXplIG9wOw0KPiAgICAgIHN0cnVjdCBkb21haW4gKmQ7DQo+ICsgICAg c3RydWN0IGdyYW50X3RhYmxlICpndDsNCj4gDQo+ICAgICAgaWYgKCBjb3VudCAhPSAxICkNCj4g ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+IEBAIC0xOTA3LDEzICsxOTEyLDE1IEBAIGdudHRh Yl9xdWVyeV9zaXplKA0KPiAgICAgICAgICBnb3RvIG91dDsNCj4gICAgICB9DQo+IA0KPiAtICAg IGdyYW50X3JlYWRfbG9jayhkLT5ncmFudF90YWJsZSk7DQo+ICsgICAgZ3QgPSBkLT5ncmFudF90 YWJsZTsNCj4gDQo+IC0gICAgb3AubnJfZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhkLT5n cmFudF90YWJsZSk7DQo+IC0gICAgb3AubWF4X25yX2ZyYW1lcyA9IG1heF9ncmFudF9mcmFtZXM7 DQo+ICsgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsNCj4gKw0KPiArICAgIG9wLm5yX2ZyYW1lcyAg ICAgPSBucl9ncmFudF9mcmFtZXMoZ3QpOw0KPiArICAgIG9wLm1heF9ucl9mcmFtZXMgPSBndC0+ bWF4X2dyYW50X2ZyYW1lczsNCj4gICAgICBvcC5zdGF0dXMgICAgICAgID0gR05UU1Rfb2theTsN Cj4gDQo+IC0gICAgZ3JhbnRfcmVhZF91bmxvY2soZC0+Z3JhbnRfdGFibGUpOw0KPiArICAgIGdy YW50X3JlYWRfdW5sb2NrKGd0KTsNCj4gDQo+ICAgb3V0Og0KPiAgICAgIGlmICggZCApDQo+IEBA IC0zNDY0LDYgKzM0NzEsOCBAQCBncmFudF90YWJsZV9jcmVhdGUoDQo+ICAgICAgLyogU2ltcGxl IHN0dWZmLiAqLw0KPiAgICAgIHBlcmNwdV9yd2xvY2tfcmVzb3VyY2VfaW5pdCgmdC0+bG9jaywg Z3JhbnRfcndsb2NrKTsNCj4gICAgICBzcGluX2xvY2tfaW5pdCgmdC0+bWFwdHJhY2tfbG9jayk7 DQo+ICsgICAgdC0+bWF4X2dyYW50X2ZyYW1lcyA9IG1heF9ncmFudF9mcmFtZXM7DQo+ICsgICAg dC0+bWF4X21hcHRyYWNrX2ZyYW1lcyA9IG1heF9tYXB0cmFja19mcmFtZXM7DQo+IA0KPiAgICAg IC8qIE9rYXksIGluc3RhbGwgdGhlIHN0cnVjdHVyZS4gKi8NCj4gICAgICBkLT5ncmFudF90YWJs ZSA9IHQ7DQo+IEBAIC0zNzI3LDcgKzM3MzYsNyBAQCBpbnQgZ250dGFiX21hcF9mcmFtZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZA0KPiBsb25nIGlkeCwgZ2ZuX3QgZ2ZuLA0KPiAgICAgIH0N Cj4gICAgICBlbHNlDQo+ICAgICAgew0KPiAtICAgICAgICBpZiAoIChpZHggPj0gbnJfZ3JhbnRf ZnJhbWVzKGd0KSkgJiYgKGlkeCA8IG1heF9ncmFudF9mcmFtZXMpICkNCj4gKyAgICAgICAgaWYg KCAoaWR4ID49IG5yX2dyYW50X2ZyYW1lcyhndCkpICYmIChpZHggPCBndC0+bWF4X2dyYW50X2Zy YW1lcykgKQ0KPiAgICAgICAgICAgICAgZ250dGFiX2dyb3dfdGFibGUoZCwgaWR4ICsgMSk7DQo+ IA0KPiAgICAgICAgICBpZiAoIGlkeCA8IG5yX2dyYW50X2ZyYW1lcyhndCkgKQ0KPiBAQCAtMzc1 NCw2ICszNzYzLDEyIEBAIHN0YXRpYyB2b2lkIGdudHRhYl91c2FnZV9wcmludChzdHJ1Y3QgZG9t YWluICpyZCkNCj4gDQo+ICAgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsNCj4gDQo+ICsgICAgcHJp bnRrKCJncmFudC10YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjolNWQgKHYlZClcbiINCj4gKyAgICAg ICAgICAgIiAgJWQgZnJhbWVzICglZCBtYXgpLCAlZCBtYXB0cmFjayBmcmFtZXMgKCVkIG1heClc biIsDQo+ICsgICAgICAgICAgIHJkLT5kb21haW5faWQsIGd0LT5ndF92ZXJzaW9uLA0KPiArICAg ICAgICAgICBucl9ncmFudF9mcmFtZXMoZ3QpLCBndC0+bWF4X2dyYW50X2ZyYW1lcywNCj4gKyAg ICAgICAgICAgbnJfbWFwdHJhY2tfZnJhbWVzKGd0KSwgZ3QtPm1heF9tYXB0cmFja19mcmFtZXMp Ow0KPiArDQo+ICAgICAgZm9yICggcmVmID0gMDsgcmVmICE9IG5yX2dyYW50X2VudHJpZXMoZ3Qp OyByZWYrKyApDQo+ICAgICAgew0KPiAgICAgICAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5 ICphY3Q7DQo+IEBAIC0zNzgxLDEyICszNzk2LDcgQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdl X3ByaW50KHN0cnVjdCBkb21haW4gKnJkKQ0KPiAgICAgICAgICAgICAgc3RhdHVzID0gc3RhdHVz X2VudHJ5KGd0LCByZWYpOw0KPiAgICAgICAgICB9DQo+IA0KPiAtICAgICAgICBpZiAoIGZpcnN0 ICkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgcHJpbnRrKCJncmFudC10YWJsZSBmb3Ig cmVtb3RlIGRvbWFpbjolNWQgKHYlZClcbiIsDQo+IC0gICAgICAgICAgICAgICAgICAgcmQtPmRv bWFpbl9pZCwgZ3QtPmd0X3ZlcnNpb24pOw0KPiAtICAgICAgICAgICAgZmlyc3QgPSAwOw0KPiAt ICAgICAgICB9DQo+ICsgICAgICAgIGZpcnN0ID0gMDsNCj4gDQo+ICAgICAgICAgIC8qICAgICAg WzB4WFhYXSAgZGRkZGQgMHhYWFhYWFggMHhYWFhYWFhYWCAgICAgIGRkZGRkIDB4WFhYWFhYIDB4 WFgNCj4gKi8NCj4gICAgICAgICAgcHJpbnRrKCJbMHglMDN4XSAgJTVkIDB4JTA2bHggMHglMDh4 ICAgICAgJTVkIDB4JTA2IlBSSXg2NCINCj4gMHglMDJ4XG4iLA0KPiBAQCAtMzc5OCw4ICszODA4 LDcgQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50KHN0cnVjdCBkb21haW4gKnJkKQ0K PiAgICAgIGdyYW50X3JlYWRfdW5sb2NrKGd0KTsNCj4gDQo+ICAgICAgaWYgKCBmaXJzdCApDQo+ IC0gICAgICAgIHByaW50aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkb21haW46JTVkIC4uLiAi DQo+IC0gICAgICAgICAgICAgICAibm8gYWN0aXZlIGdyYW50IHRhYmxlIGVudHJpZXNcbiIsIHJk LT5kb21haW5faWQpOw0KPiArICAgICAgICBwcmludGsoIm5vIGFjdGl2ZSBncmFudCB0YWJsZSBl bnRyaWVzXG4iKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnRf YWxsKHVuc2lnbmVkIGNoYXIga2V5KQ0KPiAtLQ0KPiAyLjEyLjMNCj4gDQo+IA0KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBYZW4tZGV2ZWwgbWFp bGluZyBsaXN0DQo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=