From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Nuernberger, Stefan" Subject: Re: [PATCH RFC 39/55] x86: switch root_pgt to mfn_t and use new APIs Date: Tue, 19 Mar 2019 16:45:24 +0000 Message-ID: <1553013923.6788.126.camel@amazon.de> References: <20190207164456.9260-1-wei.liu2@citrix.com> <20190207164456.9260-40-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h6Hrm-0004NN-RT for xen-devel@lists.xenproject.org; Tue, 19 Mar 2019 16:45:30 +0000 In-Reply-To: <20190207164456.9260-40-wei.liu2@citrix.com> Content-Language: en-US Content-ID: <1F1F34A1FDC8CB4CB490AB1DC425E098@amazon.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" , "wei.liu2@citrix.com" Cc: "andrew.cooper3@citrix.com" , "jbeulich@suse.com" , "roger.pau@citrix.com" List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyMDE5LTAyLTA3IGF0IDE2OjQ0ICswMDAwLCBXZWkgTGl1IHdyb3RlOg0KPiBUaGlz IHRoZW4gcmVxdWlyZXMgbW92aW5nIGRlY2xhcmF0aW9uIG9mIHJvb3QgcGFnZSB0YWJsZSBtZm4g aW50bw0KPiBtbS5oDQo+IGFuZCBtb2RpZnkgc2V0dXBfY3B1X3Jvb3RfcGd0IHRvIGhhdmUgYSBz aW5nbGUgZXhpdCBwYXRoLg0KPiANCj4gV2UgYWxzbyBuZWVkIHRvIGZvcmNlIG1hcF9kb21haW5f cGFnZSB0byB1c2UgZGlyZWN0IG1hcCB3aGVuDQo+IHN3aXRjaGluZw0KPiBwZXItZG9tYWluIG1h cHBpbmdzLiBUaGlzIGlzIGNvbnRyYXJ5IHRvIG91ciBlbmQgZ29hbCBvZiByZW1vdmluZw0KPiBk aXJlY3QgbWFwLCBidXQgdGhpcyB3aWxsIGJlIHJlbW92ZWQgb25jZSB3ZSBtYWtlIG1hcF9kb21h aW5fcGFnZQ0KPiBjb250ZXh0LXN3aXRjaCBzYWZlIGluIGFub3RoZXIgKGxhcmdlKSBwYXRjaCBz ZXJpZXMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t Pg0KPiAtLS0NCj4gwqB4ZW4vYXJjaC94ODYvZG9tYWluLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fCAxNSArKysrKysrKysrKystLS0NCj4gwqB4ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2UuY8KgwqDC oMKgwqDCoHzCoMKgMiArLQ0KPiDCoHhlbi9hcmNoL3g4Ni9tbS5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqAyICstDQo+IMKgeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jwqDCoMKg wqDCoMKgwqDCoHzCoMKgMiArLQ0KPiDCoHhlbi9hcmNoL3g4Ni9zbXBib290LmPCoMKgwqDCoMKg wqDCoMKgwqDCoHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gLS0tLS0tLS0t LS0NCj4gwqB4ZW4vaW5jbHVkZS9hc20teDg2L21tLmjCoMKgwqDCoMKgwqDCoMKgfMKgwqAyICsr DQo+IMKgeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCB8wqDCoDEgLQ0KPiDCoDcgZmls ZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jDQo+ IGluZGV4IDMyZGM0MjUzZmYuLjYwMzQ5NWU1NWEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9kb21haW4uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMNCj4gQEAgLTY4LDYgKzY4 LDcgQEANCj4gwqAjaW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPg0KPiDCoCNpbmNsdWRlIDxhc20v cHYvbW0uaD4NCj4gwqAjaW5jbHVkZSA8YXNtL3NwZWNfY3RybC5oPg0KPiArI2luY2x1ZGUgPGFz bS9zZXR1cC5oPg0KPiDCoA0KPiDCoERFRklORV9QRVJfQ1BVKHN0cnVjdCB2Y3B1ICosIGN1cnJf dmNwdSk7DQo+IMKgDQo+IEBAIC0xNTg5LDEyICsxNTkwLDIwIEBAIHZvaWQgcGFyYXZpcnRfY3R4 dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdQ0KPiAqdikNCj4gwqANCj4gwqB2b2lkIHBhcmF2aXJ0 X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KQ0KPiDCoHsNCj4gLcKgwqDCoMKgcm9vdF9w Z2VudHJ5X3QgKnJvb3RfcGd0ID0gdGhpc19jcHUocm9vdF9wZ3QpOw0KPiArwqDCoMKgwqBtZm5f dCBycHRfbWZuID0gdGhpc19jcHUocm9vdF9wZ3RfbWZuKTsNCj4gwqANCj4gLcKgwqDCoMKgaWYg KCByb290X3BndCApDQo+IC3CoMKgwqDCoMKgwqDCoMKgcm9vdF9wZ3Rbcm9vdF90YWJsZV9vZmZz ZXQoUEVSRE9NQUlOX1ZJUlRfU1RBUlQpXSA9DQo+ICvCoMKgwqDCoGlmICggIW1mbl9lcShycHRf bWZuLCBJTlZBTElEX01GTikgKQ0KPiArwqDCoMKgwqB7DQo+ICvCoMKgwqDCoMKgwqDCoMKgcm9v dF9wZ2VudHJ5X3QgKnJwdDsNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqDCoG1hcGNhY2hlX292ZXJy aWRlX2N1cnJlbnQoSU5WQUxJRF9WQ1BVKTsNCg0KQ2FuIHlvdSBlbGFib3JhdGUgd2h5IHRoaXMg aXMgcmVxdWlyZWQ/IEEgY29tbWVudCBtaWdodCBoZWxwLiBJIGFzc3VtZQ0KdGhpcyBmb3JjZXMg dGhlIHJvb3QgcHQgdG8gYmUgbWFwcGVkIGluIGlkbGUgZG9tYWluIGNvbnRleHQgaW5zdGVhZCBv Zg0KY3VycmVudCB2Y3B1Pw0KDQotIFN0ZWZhbg0KDQo+ICvCoMKgwqDCoMKgwqDCoMKgcnB0ID0g bWFwX3hlbl9wYWdldGFibGVfbmV3KHJwdF9tZm4pOw0KPiArwqDCoMKgwqDCoMKgwqDCoHJwdFty b290X3RhYmxlX29mZnNldChQRVJET01BSU5fVklSVF9TVEFSVCldID0NCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBsNGVfZnJvbV9wYWdlKHYtPmRvbWFpbi0+YXJjaC5wZXJkb21haW5fbDNf cGcsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoF9fUEFHRV9IWVBFUlZJU09SX1JXKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqBVTk1BUF9YRU5f UEFHRVRBQkxFX05FVyhycHQpOw0KPiArwqDCoMKgwqDCoMKgwqDCoG1hcGNhY2hlX292ZXJyaWRl X2N1cnJlbnQoTlVMTCk7DQo+ICvCoMKgwqDCoH0NCj4gwqANCj4gwqDCoMKgwqDCoGlmICggdW5s aWtlbHkodi0+YXJjaC5kcjcgJiBEUjdfQUNUSVZFX01BU0spICkNCj4gwqDCoMKgwqDCoMKgwqDC oMKgYWN0aXZhdGVfZGVidWdyZWdzKHYpOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Rv bWFpbl9wYWdlLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2UuYw0KPiBpbmRleCAyNDA4M2U5 YTg2Li5jZmNmZmQzNWYzIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2Uu Yw0KPiArKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2UuYw0KPiBAQCAtNTcsNyArNTcsNyBA QCBzdGF0aWMgaW5saW5lIHN0cnVjdCB2Y3B1DQo+ICptYXBjYWNoZV9jdXJyZW50X3ZjcHUodm9p ZCkNCj4gwqDCoMKgwqDCoHJldHVybiB2Ow0KPiDCoH0NCj4gwqANCj4gLXZvaWQgX19pbml0IG1h cGNhY2hlX292ZXJyaWRlX2N1cnJlbnQoc3RydWN0IHZjcHUgKnYpDQo+ICt2b2lkIG1hcGNhY2hl X292ZXJyaWRlX2N1cnJlbnQoc3RydWN0IHZjcHUgKnYpDQo+IMKgew0KPiDCoMKgwqDCoMKgdGhp c19jcHUob3ZlcnJpZGUpID0gdjsNCj4gwqB9DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jDQo+IGluZGV4IDllMTE1ZWYwYjguLjQ0YzlkZjVjOWUg MTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9t bS5jDQo+IEBAIC01NjQsNyArNTY0LDcgQEAgdm9pZCB3cml0ZV9wdGJhc2Uoc3RydWN0IHZjcHUg KnYpDQo+IMKgwqDCoMKgwqBpZiAoIGlzX3B2X3ZjcHUodikgJiYgdi0+ZG9tYWluLT5hcmNoLnB2 LnhwdGkgKQ0KPiDCoMKgwqDCoMKgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqBjcHVfaW5mby0+cm9v dF9wZ3RfY2hhbmdlZCA9IHRydWU7DQo+IC3CoMKgwqDCoMKgwqDCoMKgY3B1X2luZm8tPnB2X2Ny MyA9IF9fcGEodGhpc19jcHUocm9vdF9wZ3QpKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqBjcHVfaW5m by0+cHZfY3IzID0gbWZuX3RvX21hZGRyKHRoaXNfY3B1KHJvb3RfcGd0X21mbikpOw0KPiDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoIG5ld19jcjQgJiBYODZfQ1I0X1BDSURFICkNCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjcHVfaW5mby0+cHZfY3IzIHw9IGdldF9wY2lkX2JpdHModiwgdHJ1 ZSk7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoHN3aXRjaF9jcjNfY3I0KHYtPmFyY2guY3IzLCBuZXdf Y3I0KTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYyBiL3hlbi9hcmNo L3g4Ni9wdi9kb21haW4uYw0KPiBpbmRleCA3ZTg0YjA0MDgyLi4yZmQ5NDRiN2UzIDEwMDY0NA0K PiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L3B2 L2RvbWFpbi5jDQo+IEBAIC0zMDMsNyArMzAzLDcgQEAgc3RhdGljIHZvaWQgX3RvZ2dsZV9ndWVz dF9wdChzdHJ1Y3QgdmNwdSAqdikNCj4gwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNwdV9pbmZv ICpjcHVfaW5mbyA9IGdldF9jcHVfaW5mbygpOw0KPiDCoA0KPiDCoMKgwqDCoMKgwqDCoMKgwqBj cHVfaW5mby0+cm9vdF9wZ3RfY2hhbmdlZCA9IHRydWU7DQo+IC3CoMKgwqDCoMKgwqDCoMKgY3B1 X2luZm8tPnB2X2NyMyA9IF9fcGEodGhpc19jcHUocm9vdF9wZ3QpKSB8DQo+ICvCoMKgwqDCoMKg wqDCoMKgY3B1X2luZm8tPnB2X2NyMyA9IG1mbl90b19tYWRkcih0aGlzX2NwdShyb290X3BndF9t Zm4pKSB8DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKGQtPmFyY2gucHYucGNpZCA/IGdldF9wY2lkX2JpdHModiwgdHJ1ZSkNCj4gOiAw KTsNCj4gwqDCoMKgwqDCoH0NCj4gwqANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zbXBi b290LmMgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jDQo+IGluZGV4IGE5YTM5Y2VhNmUuLjMyZGNl MDBkMTAgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9zbXBib290LmMNCj4gKysrIGIveGVu L2FyY2gveDg2L3NtcGJvb3QuYw0KPiBAQCAtODE5LDcgKzgxOSw3IEBAIHN0YXRpYyBpbnQgY2xv bmVfbWFwcGluZyhjb25zdCB2b2lkICpwdHIsDQo+IHJvb3RfcGdlbnRyeV90ICpycHQpDQo+IMKg wqDCoMKgwqByZXR1cm4gcmM7DQo+IMKgfQ0KPiDCoA0KPiAtREVGSU5FX1BFUl9DUFUocm9vdF9w Z2VudHJ5X3QgKiwgcm9vdF9wZ3QpOw0KPiArREVGSU5FX1BFUl9DUFUobWZuX3QsIHJvb3RfcGd0 X21mbik7DQo+IMKgDQo+IMKgc3RhdGljIHJvb3RfcGdlbnRyeV90IGNvbW1vbl9wZ3Q7DQo+IMKg DQo+IEBAIC04MjcsMTkgKzgyNywyNyBAQCBleHRlcm4gY29uc3QgY2hhciBfc3RleHRlbnRyeVtd LCBfZXRleHRlbnRyeVtdOw0KPiDCoA0KPiDCoHN0YXRpYyBpbnQgc2V0dXBfY3B1X3Jvb3RfcGd0 KHVuc2lnbmVkIGludCBjcHUpDQo+IMKgew0KPiAtwqDCoMKgwqByb290X3BnZW50cnlfdCAqcnB0 Ow0KPiArwqDCoMKgwqByb290X3BnZW50cnlfdCAqcnB0ID0gTlVMTDsNCj4gK8KgwqDCoMKgbWZu X3QgcnB0X21mbjsNCj4gwqDCoMKgwqDCoHVuc2lnbmVkIGludCBvZmY7DQo+IMKgwqDCoMKgwqBp bnQgcmM7DQo+IMKgDQo+IMKgwqDCoMKgwqBpZiAoICFvcHRfeHB0aV9od2RvbSAmJiAhb3B0X3hw dGlfZG9tdSApDQo+IC3CoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7DQo+ICvCoMKgwqDCoHsNCj4g K8KgwqDCoMKgwqDCoMKgwqByYyA9IDA7DQo+ICvCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7DQo+ ICvCoMKgwqDCoH0NCj4gwqANCj4gLcKgwqDCoMKgcnB0ID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgp Ow0KPiAtwqDCoMKgwqBpZiAoICFycHQgKQ0KPiAtwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5P TUVNOw0KPiArwqDCoMKgwqBycHRfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcoKTsNCj4g K8KgwqDCoMKgaWYgKCBtZm5fZXEocnB0X21mbiwgSU5WQUxJRF9NRk4pICkNCj4gK8KgwqDCoMKg ew0KPiArwqDCoMKgwqDCoMKgwqDCoHJjID0gLUVOT01FTTsNCj4gK8KgwqDCoMKgwqDCoMKgwqBn b3RvIG91dDsNCj4gK8KgwqDCoMKgfQ0KPiDCoA0KPiArwqDCoMKgwqBycHQgPSBtYXBfeGVuX3Bh Z2V0YWJsZV9uZXcocnB0X21mbik7DQo+IMKgwqDCoMKgwqBjbGVhcl9wYWdlKHJwdCk7DQo+IC3C oMKgwqDCoHBlcl9jcHUocm9vdF9wZ3QsIGNwdSkgPSBycHQ7DQo+ICvCoMKgwqDCoHBlcl9jcHUo cm9vdF9wZ3RfbWZuLCBjcHUpID0gcnB0X21mbjsNCj4gwqANCj4gwqDCoMKgwqDCoHJwdFtyb290 X3RhYmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldID0NCj4gwqDCoMKgwqDCoMKgwqDCoMKg aWRsZV9wZ190YWJsZVtyb290X3RhYmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldOw0KPiBA QCAtODU2LDcgKzg2NCw3IEBAIHN0YXRpYyBpbnQgc2V0dXBfY3B1X3Jvb3RfcGd0KHVuc2lnbmVk IGludCBjcHUpDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmMgPSBjbG9uZV9tYXBwaW5n KHB0ciwgcnB0KTsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCByYyApDQo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIG91dDsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgY29tbW9uX3BndCA9IHJwdFty b290X3RhYmxlX29mZnNldChYRU5fVklSVF9TVEFSVCldOw0KPiDCoMKgwqDCoMKgfQ0KPiBAQCAt ODc1LDE5ICs4ODMsMjQgQEAgc3RhdGljIGludCBzZXR1cF9jcHVfcm9vdF9wZ3QodW5zaWduZWQg aW50IGNwdSkNCj4gwqDCoMKgwqDCoGlmICggIXJjICkNCj4gwqDCoMKgwqDCoMKgwqDCoMKgcmMg PSBjbG9uZV9tYXBwaW5nKCh2b2lkICopcGVyX2NwdShzdHVicy5hZGRyLCBjcHUpLCBycHQpOw0K PiDCoA0KPiArIG91dDoNCj4gK8KgwqDCoMKgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocnB0KTsN Cj4gwqDCoMKgwqDCoHJldHVybiByYzsNCj4gwqB9DQo+IMKgDQo+IMKgc3RhdGljIHZvaWQgY2xl YW51cF9jcHVfcm9vdF9wZ3QodW5zaWduZWQgaW50IGNwdSkNCj4gwqB7DQo+IC3CoMKgwqDCoHJv b3RfcGdlbnRyeV90ICpycHQgPSBwZXJfY3B1KHJvb3RfcGd0LCBjcHUpOw0KPiArwqDCoMKgwqBt Zm5fdCBycHRfbWZuID0gcGVyX2NwdShyb290X3BndF9tZm4sIGNwdSk7DQo+ICvCoMKgwqDCoHJv b3RfcGdlbnRyeV90ICpycHQ7DQo+IMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcjsNCj4gwqDCoMKg wqDCoHVuc2lnbmVkIGxvbmcgc3R1Yl9saW5lYXIgPSBwZXJfY3B1KHN0dWJzLmFkZHIsIGNwdSk7 DQo+IMKgDQo+IC3CoMKgwqDCoGlmICggIXJwdCApDQo+ICvCoMKgwqDCoGlmICggbWZuX2VxKHJw dF9tZm4sIElOVkFMSURfTUZOKSApDQo+IMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gwqAN Cj4gLcKgwqDCoMKgcGVyX2NwdShyb290X3BndCwgY3B1KSA9IE5VTEw7DQo+ICvCoMKgwqDCoHBl cl9jcHUocm9vdF9wZ3RfbWZuLCBjcHUpID0gSU5WQUxJRF9NRk47DQo+ICsNCj4gK8KgwqDCoMKg cnB0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KHJwdF9tZm4pOw0KPiDCoA0KPiDCoMKgwqDCoMKg Zm9yICggciA9IHJvb3RfdGFibGVfb2Zmc2V0KERJUkVDVE1BUF9WSVJUX1NUQVJUKTsNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHIgPCByb290X3RhYmxlX29mZnNldChIWVBFUlZJU09SX1ZJUlRf RU5EKTsgKytyICkNCj4gQEAgLTkzMiw3ICs5NDUsOCBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2Nw dV9yb290X3BndCh1bnNpZ25lZCBpbnQNCj4gY3B1KQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqBmcmVl X3hlbl9wYWdldGFibGVfbmV3KGwzdF9tZm4pOw0KPiDCoMKgwqDCoMKgfQ0KPiDCoA0KPiAtwqDC oMKgwqBmcmVlX3hlbl9wYWdldGFibGUocnB0KTsNCj4gK8KgwqDCoMKgVU5NQVBfWEVOX1BBR0VU QUJMRV9ORVcocnB0KTsNCj4gK8KgwqDCoMKgZnJlZV94ZW5fcGFnZXRhYmxlX25ldyhycHRfbWZu KTsNCj4gwqANCj4gwqDCoMKgwqDCoC8qIEFsc28gemFwIHRoZSBzdHViIG1hcHBpbmcgZm9yIHRo aXMgQ1BVLiAqLw0KPiDCoMKgwqDCoMKgaWYgKCBzdHViX2xpbmVhciApDQo+IEBAIC0xMTM4LDcg KzExNTIsNyBAQCB2b2lkIF9faW5pdCBzbXBfcHJlcGFyZV9jcHVzKHZvaWQpDQo+IMKgwqDCoMKg wqByYyA9IHNldHVwX2NwdV9yb290X3BndCgwKTsNCj4gwqDCoMKgwqDCoGlmICggcmMgKQ0KPiDC oMKgwqDCoMKgwqDCoMKgwqBwYW5pYygiRXJyb3IgJWQgc2V0dGluZyB1cCBQViByb290IHBhZ2Ug dGFibGVcbiIsIHJjKTsNCj4gLcKgwqDCoMKgaWYgKCBwZXJfY3B1KHJvb3RfcGd0LCAwKSApDQo+ ICvCoMKgwqDCoGlmICggIW1mbl9lcShwZXJfY3B1KHJvb3RfcGd0X21mbiwgMCksIElOVkFMSURf TUZOKSApDQo+IMKgwqDCoMKgwqB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoGdldF9jcHVfaW5mbygp LT5wdl9jcjMgPSAwOw0KPiDCoA0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oDQo+IGluZGV4IDQzNzhkOWY4MTUuLjcwOGI4 NGJiODkgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaA0KPiArKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L21tLmgNCj4gQEAgLTY1Nyw0ICs2NTcsNiBAQCB2b2lkIGZyZWVf eGVuX3BhZ2V0YWJsZV9uZXcobWZuX3QgbWZuKTsNCj4gwqANCj4gwqBsMV9wZ2VudHJ5X3QgKnZp cnRfdG9feGVuX2wxZSh1bnNpZ25lZCBsb25nIHYpOw0KPiDCoA0KPiArREVDTEFSRV9QRVJfQ1BV KG1mbl90LCByb290X3BndF9tZm4pOw0KPiArDQo+IMKgI2VuZGlmIC8qIF9fQVNNX1g4Nl9NTV9I X18gKi8NCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94 ZW4vaW5jbHVkZS9hc20tDQo+IHg4Ni9wcm9jZXNzb3IuaA0KPiBpbmRleCBkZjAxYWUzMGQ3Li45 Zjk4YWM5NmY1IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5o DQo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgNCj4gQEAgLTQ0OSw3ICs0 NDksNiBAQCBleHRlcm4gaWR0X2VudHJ5X3QgaWR0X3RhYmxlW107DQo+IMKgZXh0ZXJuIGlkdF9l bnRyeV90ICppZHRfdGFibGVzW107DQo+IMKgDQo+IMKgREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCB0 c3Nfc3RydWN0LCBpbml0X3Rzcyk7DQo+IC1ERUNMQVJFX1BFUl9DUFUocm9vdF9wZ2VudHJ5X3Qg Kiwgcm9vdF9wZ3QpOw0KPiDCoA0KPiDCoGV4dGVybiB2b2lkIHdyaXRlX3B0YmFzZShzdHJ1Y3Qg dmNwdSAqdik7DQo+IMKgCgoKCkFtYXpvbiBEZXZlbG9wbWVudCBDZW50ZXIgR2VybWFueSBHbWJI CktyYXVzZW5zdHIuIDM4CjEwMTE3IEJlcmxpbgpHZXNjaGFlZnRzZnVlaHJlcjogQ2hyaXN0aWFu IFNjaGxhZWdlciwgUmFsZiBIZXJicmljaApVc3QtSUQ6IERFIDI4OSAyMzcgODc5CkVpbmdldHJh Z2VuIGFtIEFtdHNnZXJpY2h0IENoYXJsb3R0ZW5idXJnIEhSQiAxNDkxNzMgQgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==