From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v2 18/21] xen/arm: Allow vpl011 to be used by DomU Date: Thu, 26 Jul 2018 17:10:23 -0700 (PDT) Message-ID: References: <1530918736-13965-18-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: Stefano Stabellini , Stefano Stabellini , andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org VGhhbmsgeW91IEp1bGllbi4gSSBhZGRyZXNzZWQgYWxtb3N0IGFsbCBjb21tZW50cy4gSSBoYWQg YSBwcm9ibGVtIHdpdGgKdGhlIGltcGxlbWVudGF0aW9uIG9mIGJ1ZmZlcmluZyB0aGUgY2hhcnMs IGFuZCBJIGhhdmUgYW4gYWx0ZXJuYXRpdmUKY29tbWVudCBvbiB0aGUgZnVuY3Rpb24gc2hhcmlu Zy4gU2VlIGJlbG93LgoKCk9uIFR1ZSwgMjQgSnVsIDIwMTgsIEp1bGllbiBHcmFsbCB3cm90ZToK PiBIaSBTdGVmYW5vLAo+IAo+IE9uIDA3LzA3LzE4IDAwOjEyLCBTdGVmYW5vIFN0YWJlbGxpbmkg d3JvdGU6Cj4gPiBNYWtlIHZwbDAxMSBiZWluZyBhYmxlIHRvIGJlIHVzZWQgd2l0aG91dCBhIHVz ZXJzcGFjZSBjb21wb25lbnQgaW4gRG9tMC4KPiA+IEluIHRoYXQgY2FzZSwgb3V0cHV0IGlzIHBy aW50ZWQgdG8gdGhlIFhlbiBzZXJpYWwgYW5kIGlucHV0IGlzIHJlY2VpdmVkCj4gPiBmcm9tIHRo ZSBYZW4gc2VyaWFsIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lLgo+ID4gCj4gPiBDYWxsIGRvbWFp bl92cGwwMTFfaW5pdCBkdXJpbmcgY29uc3RydWN0X2RvbVUgaWYgdnBsMDExIGlzIGVuYWJsZWQu Cj4gPiAKPiA+IEludHJvZHVjZSBhIG5ldyByaW5nIHN0cnVjdCB3aXRoIG9ubHkgdGhlIHJpbmcg YXJyYXkgdG8gYXZvaWQgYSB3YXN0ZSBvZgo+ID4gbWVtb3J5LiBJbnRyb2R1Y2Ugc2VwYXJhdGUg cmVhZF9kYXRlIGFuZCB3cml0ZV9kYXRhIGZ1bmN0aW9ucyBmb3IKPiA+IGluaXRpYWwgZG9tYWlu czogdnBsMDExX3dyaXRlX2RhdGFfbm9yaW5nIGlzIHZlcnkgc2ltcGxlIGFuZCBqdXN0IHdyaXRl cwo+ID4gdG8gdGhlIGNvbnNvbGUsIHdoaWxlIHZwbDAxMV9yZWFkX2RhdGFfaW5yaW5nIGlzIGEg ZHVwbGljYXRlIG9mCj4gPiB2cGwwMTFfcmVhZF9kYXRhLiBBbHRob3VnaCB0ZXh0dWFsbHkgYWxt b3N0IGlkZW50aWNhbCwgd2UgYXJlIGZvcmNlZCB0bwo+ID4gZHVwbGljYXRlIHRoZSBmdW5jdGlv bnMgYmVjYXVzZSB0aGUgc3RydWN0IGxheW91dCBpcyBkaWZmZXJlbnQuCj4gCj4gTG9va2luZyBh dCB0aGUgcGF0Y2hlcyBhcHBsaWVkLCBJIHRoaW5rIHRoZXJlIG5lZWQgc29tZSBtb3JlIGNvbW1l bnRzIGluIHRoZQo+IGNvZGUgdG8gaGVscCBhIHJlYWRlciBkaWZmZXJlbnRpYXRlIHdoaWNoIG1l dGhvZCBpcyB1c2VkLgoKT0sKCgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJl bGxpbmkgPHN0ZWZhbm9zQHhpbGlueC5jb20+Cj4gPiAtLS0KPiA+IENoYW5nZXMgaW4gdjI6Cj4g PiAtIG9ubHkgaW5pdCBpZiB2cGwwMTEKPiA+IC0gcmVuYW1lIHZwbDAxMV9yZWFkX2NoYXIgdG8g dnBsMDExX3J4X2NoYXIKPiA+IC0gcmVtb3ZlIHNwdXJpb3VzIGNoYW5nZQo+ID4gLSBmaXggY29k aW5nIHN0eWxlCj4gPiAtIHVzZSBkaWZmZXJlbnQgcmluZyBzdHJ1Y3QKPiA+IC0gbW92ZSB0aGUg d3JpdGVfZGF0YSBjaGFuZ2VzIHRvIHRoZWlyIG93biBmdW5jdGlvbgo+ID4gICAgKHZwbDAxMV93 cml0ZV9kYXRhX25vcmluZykKPiA+IC0gZHVwbGljYXRlIHZwbDAxMV9yZWFkX2RhdGEKPiA+IC0t LQo+ID4gICB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgIHwgIDEwICsrLQo+ID4gICB4ZW4v YXJjaC9hcm0vdnBsMDExLmMgICAgICAgIHwgMTg1Cj4gPiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCj4gPiAgIHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgg fCAgMTAgKysrCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMoKyksIDIzIGRl bGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWls ZC5jIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gPiBpbmRleCA3MThiZTQ4Li5kN2U5 MDQwIDEwMDY0NAo+ID4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gPiArKysg Yi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKPiA+IEBAIC0yNTMxLDcgKzI1MzEsMTUgQEAg c3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbVUoc3RydWN0IGRvbWFpbiAqZCwKPiA+IHN0 cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSkKPiA+ICAgICAgIGlmICggcmMgPCAwICkKPiA+ICAg ICAgICAgICByZXR1cm4gcmM7Cj4gPiAgIC0gICAgcmV0dXJuIF9fY29uc3RydWN0X2RvbWFpbihk LCAma2luZm8pOwo+ID4gKyAgICByYyA9IF9fY29uc3RydWN0X2RvbWFpbihkLCAma2luZm8pOwo+ ID4gKyAgICBpZiAoIHJjIDwgMCApCj4gPiArICAgICAgICByZXR1cm4gcmM7Cj4gPiArCj4gPiAr I2lmZGVmIENPTkZJR19TQlNBX1ZVQVJUX0NPTlNPTEUKPiA+ICsgICAgaWYgKCB2cGwwMTEgKQo+ ID4gKyAgICAgICAgcmMgPSBkb21haW5fdnBsMDExX2luaXQoZCwgTlVMTCk7Cj4gPiArI2VuZGlm Cj4gSSBkb24ndCB0aGluayB0aGUgI2lmZGVmIGlzIG5lY2Vzc2FyeSBoZXJlLiBXZSB3YW50IHRv IHJldHVybiBhbiBlcnJvciB3aGVuCj4gdnBsMDExIGlzIHNldCBidXQgbm90IHRoZSBlbXVsYXRp b24gY29tcGlsZWQgaW4uCgpPSwoKCj4gPiArICAgIHJldHVybiByYzsKPiA+ICAgfQo+ID4gICAg IGludCBfX2luaXQgY29uc3RydWN0X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKPiA+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBsMDExLmMKPiA+IGlu ZGV4IGU3NTk1N2YuLmQ0YWFiNjQgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vYXJjaC9hcm0vdnBsMDEx LmMKPiA+ICsrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwo+ID4gQEAgLTgzLDYgKzgzLDExMSBA QCBzdGF0aWMgdm9pZCB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMoc3RydWN0IGRvbWFp bgo+ID4gKmQpCj4gPiAgICNlbmRpZgo+ID4gICB9Cj4gPiAgICt2b2lkIHZwbDAxMV9yeF9jaGFy KHN0cnVjdCBkb21haW4gKmQsIGNoYXIgYykKPiAKPiBQbGVhc2UgYWRkIGRvY3VtZW50YXRpb24g ZXhwbGFpbiB3aGF0IHRoZSB1c2Ugb2YgdGhpcyBmdW5jdGlvbi4gSSB3b3VsZCBhbHNvCj4gcmVu YW1lIGl0IHRvIGNsYXJpZnkgd2hvIGNhbiBjYWxsIGl0IChpLmUgb25seSBpbiB0aGUgY2FzZSB3 aGVuIHRoZSBiYWNrZW5kIGlzCj4gaW4gWGVuKS4KCk9LCgoKPiA+ICt7Cj4gPiArICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4gPiArICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNo LnZwbDAxMTsKPiA+ICsgICAgc3RydWN0IHhlbmNvbnNfaW4gKmludGYgPSB2cGwwMTEtPmlucmlu ZzsKPiA+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kLCBpbl9maWZvX2xl dmVsOwo+ID4gKwo+IAo+IEFTU0VSVCghdnBsMDExLT5yaW5nX2VuYWJsZSk7CgpPSwoKCj4gPiAr ICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKPiA+ICsKPiA+ICsgICAgaW5fY29ucyA9IGludGYt PmluX2NvbnM7Cj4gPiArICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOwo+ID4gKyAgICBpZiAo IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID09Cj4g PiBzaXplb2YoaW50Zi0+aW4pICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgVlBMMDExX1VOTE9D SyhkLCBmbGFncyk7Cj4gPiArICAgICAgICByZXR1cm47Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgaW50Zi0+aW5beGVuY29uc19tYXNrKGluX3Byb2QsIHNpemVvZihpbnRmLT5pbikpXSA9IGM7 Cj4gPiArICAgIGludGYtPmluX3Byb2QgPSBpbl9wcm9kICsgMTsKPiA+ICsKPiA+ICsgICAgaW5f Zmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbl9jb25zLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKGludGYtPmluKSk7Cj4gPiArCj4gPiArICAgIHZwbDAxMV9kYXRh X2F2YWlsKGQsIGluX2ZpZm9fbGV2ZWwsIHNpemVvZihpbnRmLT5pbiksIDAsIDEwMjQpOwo+IAo+ IFdoZXJlIGRvZXMgdGhlIDEwMjQgY29tZSBmcm9tPyBNb3N0IGxpa2VseSwgeW91IHdhbnQgYSBk ZWZpbmUgZm9yIGl0LgoKT0sKCgo+ID4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGFfbm9yaW5nKHN0cnVj dCBkb21haW4gKmQsIHVpbnQ4X3QgZGF0YSkKPiA+ICt7Cj4gPiArICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gPiArICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsK PiA+ICsKPiA+ICsgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOwo+ID4gKwo+ID4gKyAgICBwcmlu dGsoIiVjIiwgZGF0YSk7Cj4gPiArICAgIGlmIChkYXRhID09ICdcbicpCj4gPiArICAgICAgICBw cmludGsoIkRPTSV1OiAiLCBkLT5kb21haW5faWQpOwo+IAo+IFlvdSB3YW50IHRvIGJ1ZmZlciB0 aGUgY2hhcmFjdGVycyBoZXJlIGFuZCBvbmx5IHByaW50IG9uIG5ld2xpbmUgb3Igd2hlbiB0aGUK PiBidWZmZXIgaXMgZnVsbC4gT3RoZXJ3aXNlIGNoYXJhY3RlcnMgd2lsbCBnZXQgbWFuZ2xlZCB3 aXRoIHRoZSBYZW4gY29uc29sZQo+IG91dHB1dCBvciBvdGhlciBkb21haW5zIG91dHB1dC4KCkkg ZGlkIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IHRoZW4gd2hlbiBJIHR5cGUgY2hhcmFjdGVycyBh dCB0aGUgZG9tYWluCnByb21wdCwgSSBkb24ndCBzZWUgdGhlbSBhbnltb3JlIG9uZSBieSBvbmUu IE9ubHkgYWZ0ZXIgSSBwcmVzcwoiZW50ZXIiLiBUaGF0IG1ha2VzIHRoZSBkb21haW4gY29uc29s ZSBub3QgdmVyeSB1c2FibGUuIFNob3VsZCB3ZSBrZWVwCml0IGFzPwoKCj4gPiArCj4gPiArICAg IHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7Cj4gPiArICAgIHZwbDAxMS0+dWFydGZyICY9IH5UWEZF Owo+ID4gKyAgICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMoZCk7Cj4gPiArCj4gPiAr ICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdWlu dDhfdCB2cGwwMTFfcmVhZF9kYXRhX2lucmluZyhzdHJ1Y3QgZG9tYWluICpkKQo+ID4gK3sKPiAK PiBJIHRoaW5rIHlvdSBjYW4gYXZvaWQgdGhlIGR1cGxpY2F0aW9uIGhlcmUgYnkgdXNpbmcgYSBt YWNyby4KCkkgcHJlZmVyIHRvIGF2b2lkIE1BQ1JPUyBmb3IgdGhpbmdzIGxpa2UgdGhpcy4gSSB3 b3VsZCByYXRoZXIgcmV1c2UgdGhlCmV4aXN0aW5nIGZ1bmN0aW9uIGZvciBib3RoIGNhc2VzIGxp a2UgaW4gdjEuIFdvdWxkIHlvdSBiZSBPSyB0byBnbyBiYWNrCnRvIHRoYXQ/CgoKPiA+ICsgICAg dW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ICsgICAgdWludDhfdCBkYXRhID0gMDsKPiA+ICsgICAg c3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+ID4gKyAgICBzdHJ1Y3Qg eGVuY29uc19pbiAqaW50ZiA9IHZwbDAxMS0+aW5yaW5nOwo+ID4gKyAgICBYRU5DT05TX1JJTkdf SURYIGluX2NvbnMsIGluX3Byb2Q7Cj4gPiArCj4gPiArICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdz KTsKPiA+ICsKPiA+ICsgICAgaW5fY29ucyA9IGludGYtPmluX2NvbnM7Cj4gPiArICAgIGluX3By b2QgPSBpbnRmLT5pbl9wcm9kOwo+ID4gKwo+ID4gKyAgICBzbXBfcm1iKCk7Cj4gPiArCj4gPiAr ICAgIC8qCj4gPiArICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRh IGluIHRoZSByaW5nIGJ1ZmZlciB3aGVuIHRoaXMKPiA+ICsgICAgICogZnVuY3Rpb24gaXMgY2Fs bGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBkYXRhCj4gPiByZWdp c3Rlcgo+ID4gKyAgICAgKiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcgaXMgbm90IHNldC4KPiA+ICsg ICAgICogSWYgdGhlIGd1ZXN0IHN0aWxsIGRvZXMgcmVhZCB3aGVuIFRYRkUgYml0IGlzIHNldCB0 aGVuIDAgd2lsbCBiZQo+ID4gcmV0dXJuZWQuCj4gPiArICAgICAqLwo+ID4gKyAgICBpZiAoIHhl bmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID4gMCApCj4g PiArICAgIHsKPiA+ICsgICAgICAgIHVuc2lnbmVkIGludCBmaWZvX2xldmVsOwo+ID4gKwo+ID4g KyAgICAgICAgZGF0YSA9IGludGYtPmluW3hlbmNvbnNfbWFzayhpbl9jb25zLCBzaXplb2YoaW50 Zi0+aW4pKV07Cj4gPiArICAgICAgICBpbl9jb25zICs9IDE7Cj4gPiArICAgICAgICBzbXBfbWIo KTsKPiA+ICsgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zOwo+ID4gKwo+ID4gKyAgICAg ICAgZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihp bnRmLT5pbikpOwo+ID4gKwo+ID4gKyAgICAgICAgLyogSWYgdGhlIEZJRk8gaXMgbm93IGVtcHR5 LCB3ZSBjbGVhciB0aGUgcmVjZWl2ZSB0aW1lb3V0Cj4gPiBpbnRlcnJ1cHQuICovCj4gPiArICAg ICAgICBpZiAoIGZpZm9fbGV2ZWwgPT0gMCApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAg ICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhGRTsKPiA+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRy aXMgJj0gflJUSTsKPiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgIC8qIElmIHRoZSBG SUZPIGlzIG1vcmUgdGhhbiBoYWxmIGVtcHR5LCB3ZSBjbGVhciB0aGUgUlggaW50ZXJydXB0Lgo+ ID4gKi8KPiA+ICsgICAgICAgIGlmICggZmlmb19sZXZlbCA8IHNpemVvZihpbnRmLT5pbikgLSBT QlNBX1VBUlRfRklGT19MRVZFTCApCj4gPiArICAgICAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9 IH5SWEk7Cj4gPiArCj4gPiArICAgICAgICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMo ZCk7Cj4gPiArICAgIH0KPiA+ICsgICAgZWxzZQo+ID4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0df RVJSLCAidnBsMDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVmZmVyIGVtcHR5XG4iKTsKPiA+ICsK PiA+ICsgICAgLyoKPiA+ICsgICAgICogV2UgaGF2ZSBjb25zdW1lZCBhIGNoYXJhY3RlciBvciB0 aGUgRklGTyB3YXMgZW1wdHksIHNvIGNsZWFyIHRoZQo+ID4gKyAgICAgKiAiRklGTyBmdWxsIiBi aXQuCj4gPiArICAgICAqLwo+ID4gKyAgICB2cGwwMTEtPnVhcnRmciAmPSB+UlhGRjsKPiA+ICsK PiA+ICsgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cj4gPiArCj4gPiArICAgIHJldHVybiBk YXRhOwo+ID4gK30KPiA+ICsKPiA+ICAgc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YShz dHJ1Y3QgZG9tYWluICpkKQo+ID4gICB7Cj4gPiAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ ID4gQEAgLTI0Niw3ICszNTEsMTAgQEAgc3RhdGljIGludCB2cGwwMTFfbW1pb19yZWFkKHN0cnVj dCB2Y3B1ICp2LAo+ID4gICAgICAgY2FzZSBEUjoKPiA+ICAgICAgICAgICBpZiAoICF2cGwwMTFf cmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7Cj4gPiAgIC0gICAgICAg ICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMV9yZWFkX2RhdGEoZCksIGluZm8pOwo+ID4g KyAgICAgICAgaWYgKCB2cGwwMTEtPnJpbmdfZW5hYmxlICkKPiA+ICsgICAgICAgICAgICAqciA9 IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFfcmVhZF9kYXRhKGQpLCBpbmZvKTsKPiA+ICsgICAg ICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFf cmVhZF9kYXRhX2lucmluZyhkKSwgaW5mbyk7Cj4gCj4gSSB0aGluayBzb21lIHJlbmFtaW5nIHdp bGwgaW1wcm92ZSB0aGUgcmVhZGluZy4gVGhpcyBpcyBxdWl0ZSB1bmludHVpdGl2ZSB0bwo+IHNl ZSBhIGZ1bmN0aW9uIHdpdGggInJpbmciIGluIGl0LCBjYWxsZWQgd2hlbiAhdnBsMDExLT5yaW5n X2VuYWJsZWQuCgpPSwoKCj4gPiAgICAgICAgICAgcmV0dXJuIDE7Cj4gPiAgICAgICAgIGNhc2Ug UlNSOgo+ID4gQEAgLTMzMSw3ICs0MzksMTAgQEAgc3RhdGljIGludCB2cGwwMTFfbW1pb193cml0 ZShzdHJ1Y3QgdmNwdSAqdiwKPiA+ICAgICAgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZkYXRh LCByLCBpbmZvKTsKPiA+ICAgICAgICAgICBkYXRhICY9IDB4RkY7Cj4gPiAtICAgICAgICB2cGww MTFfd3JpdGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOwo+ID4gKyAgICAgICAgaWYgKCB2cGwwMTEt PnJpbmdfZW5hYmxlICkKPiA+ICsgICAgICAgICAgICB2cGwwMTFfd3JpdGVfZGF0YSh2LT5kb21h aW4sIGRhdGEpOwo+ID4gKyAgICAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgIHZwbDAxMV93cml0 ZV9kYXRhX25vcmluZyh2LT5kb21haW4sIGRhdGEpOwo+ID4gICAgICAgICAgIHJldHVybiAxOwo+ ID4gICAgICAgfQo+ID4gICBAQCAtNDc2LDI3ICs1ODcsNDcgQEAgaW50IGRvbWFpbl92cGwwMTFf aW5pdChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QKPiA+IHZwbDAxMV9pbml0X2luZm8gKmluZm8p Cj4gPiAgICAgICBpZiAoIHZwbDAxMS0+cmluZy5yaW5nX2J1ZiApCj4gPiAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gPiAgIC0gICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJl c3Mgc3BhY2UuICovCj4gPiAtICAgIHJjID0gIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQsCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGluZm8tPmdmbiksCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPnJpbmcucmluZ19w YWdlLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5n LnJpbmdfYnVmKTsKPiA+IC0gICAgaWYgKCByYyA8IDAgKQo+ID4gLSAgICAgICAgZ290byBvdXQ7 Cj4gPiArICAgIC8qCj4gPiArICAgICAqIGluZm8gaXMgTlVMTCBmb3IgZG9tVXMgc3RhcnRlZCBi eSBYZW4gYXQgYm9vdCB0aW1lLCB3aXRoIG5vCj4gPiArICAgICAqIGNvcnJlc3BvbmRpbmcgdXNl cnNwYWNlIGNvbXBvbmVudCBpbiBkb20wID4gKyAgICAgKi8KPiAKPiBJIGRvbid0IHRoaW5rIHlv dSB3YW50IHRvIG1lbnRpb24gZG9tVXMgYXQgYWxsIGhlcmUuIFRoZSBlbXVsYXRpb24gc2hvdWxk IG5vdAo+IGNhcmUgd2hldGhlciBpdCBpcyBhIGd1ZXN0IG9yIHRoZSBoYXJkd2FyZSBkb21haW4u IEl0IHdvdWxkIHRoZW9yZXRpY2FsbHkKPiBwb3NzaWJsZSB0byBoYXZlIHRoZSBoYXJkd2FyZSBk b21haW4gcmUtdXNpbmcgdGhpcyBjb2RlLgo+IAo+IEZ1cnRoZXJtb3JlLCBub3RoaW5nIGluIHRo ZSBlbXVsYXRpb24gbWFuZGF0ZXMgdG8gaGF2ZSB0aGUgYmFja2VuZCBpbgo+IHRoZSBoYXJkd2Fy ZSBkb21haW4uIFRoaXMgY291bGQgYmUgYW55d2hlcmUuCj4gCj4gSXQgbG9va3MgbGlrZSB0byBt ZSB5b3Ugd2FudCB0byBvZmZlciAyIHNvbHV0aW9uczoKPiAJMSkgQ29uc29sZSBiYWNrZW5kIGlu IGEgZG9tYWluCj4gCTIpIENvbnNvbGUgYmFja2VuZCBpbiB0aGUgaHlwZXJ2aXNvcgo+IAo+IFNv IHByb2JhYmx5IGEgYmV0dGVyIG5hbWluZyBmb3IgcmluZ19lbmFibGUgd291bGQgYmUgImJhY2tl bmRfaW5fZG9tYWluIiAob3IKPiBzb21ldGhpbmcgc2ltaWxhcikuCgpJJ2xsIHJlbmFtZSByaW5n X2VuYWJsZSB0byBiYWNrZW5kX2luX2RvbWFpbiwgYW5kIGltcHJvdmUgdGhlIGNvbW1lbnQKYWJv dmUuCgoKPiA+ICsgICAgaWYgKCBpbmZvICE9IE5VTEwgKQo+ID4gKyAgICB7Cj4gPiArICAgICAg ICB2cGwwMTEtPnJpbmdfZW5hYmxlID0gdHJ1ZTsKPiA+ICsKPiA+ICsgICAgICAgIC8qIE1hcCB0 aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAqLwo+ID4gKyAgICAgICAgcmMgPSAg cHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoZCwKPiA+ICsgICAgICAgICAgICAgICAgZ2ZuX3goaW5m by0+Z2ZuKSwKPiA+ICsgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZy5yaW5nX3BhZ2UsCj4g PiArICAgICAgICAgICAgICAgICZ2cGwwMTEtPnJpbmcucmluZ19idWYpOwo+ID4gKyAgICAgICAg aWYgKCByYyA8IDAgKQo+ID4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKwo+ID4gKyAgICAg ICAgcmMgPSBhbGxvY191bmJvdW5kX3hlbl9ldmVudF9jaGFubmVsKGQsIDAsIGluZm8tPmNvbnNv bGVfZG9taWQsCj4gPiArICAgICAgICAgICAgICAgIHZwbDAxMV9ub3RpZmljYXRpb24pOwo+ID4g KyAgICAgICAgaWYgKCByYyA8IDAgKQo+ID4gKyAgICAgICAgICAgIGdvdG8gb3V0MTsKPiA+ICsK PiA+ICsgICAgICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7Cj4gPiArICAg IH0KPiA+ICsgICAgZWxzZQo+ID4gKyAgICB7Cj4gPiArICAgICAgICB2cGwwMTEtPnJpbmdfZW5h YmxlID0gZmFsc2U7Cj4gPiArCj4gPiArICAgICAgICB2cGwwMTEtPmlucmluZyA9IHh6YWxsb2Mo c3RydWN0IHhlbmNvbnNfaW4pOwo+ID4gKyAgICAgICAgaWYgKCB2cGwwMTEtPmlucmluZyA9PSBO VUxMICkKPiA+ICsgICAgICAgIHsKPiA+ICsgICAgICAgICAgICByYyA9IC1FSU5WQUw7Cj4gPiAr ICAgICAgICAgICAgZ290byBvdXQxOwo+ID4gKyAgICAgICAgfQo+ID4gKyAgICB9Cj4gPiAgICAg ICAgIHJjID0gdmdpY19yZXNlcnZlX3ZpcnEoZCwgR1VFU1RfVlBMMDExX1NQSSk7Cj4gPiAgICAg ICBpZiAoICFyYyApCj4gPiAgICAgICB7Cj4gPiAgICAgICAgICAgcmMgPSAtRUlOVkFMOwo+ID4g LSAgICAgICAgZ290byBvdXQxOwo+ID4gLSAgICB9Cj4gPiAtCj4gPiAtICAgIHJjID0gYWxsb2Nf dW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2RvbWlkLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnBsMDExX25vdGlmaWNh dGlvbik7Cj4gPiAtICAgIGlmICggcmMgPCAwICkKPiA+ICAgICAgICAgICBnb3RvIG91dDI7Cj4g PiAtCj4gPiAtICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7Cj4gPiArICAg IH0KPiA+ICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJnZwbDAxMS0+bG9jayk7Cj4gPiAgIEBAIC01 MDksNyArNjQwLDEwIEBAIG91dDI6Cj4gPiAgICAgICB2Z2ljX2ZyZWVfdmlycShkLCBHVUVTVF9W UEwwMTFfU1BJKTsKPiA+ICAgICBvdXQxOgo+ID4gLSAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBl cigmdnBsMDExLT5yaW5nLnJpbmdfYnVmLAo+ID4gdnBsMDExLT5yaW5nLnJpbmdfcGFnZSk7Cj4g PiArICAgIGlmICggdnBsMDExLT5yaW5nX2VuYWJsZSApCj4gPiArICAgICAgICBkZXN0cm95X3Jp bmdfZm9yX2hlbHBlcigmdnBsMDExLT5yaW5nLnJpbmdfYnVmLAo+ID4gdnBsMDExLT5yaW5nLnJp bmdfcGFnZSk7Cj4gPiArICAgIGVsc2UKPiA+ICsgICAgICAgIHhmcmVlKHZwbDAxMS0+aW5yaW5n KTsKPiA+ICAgICBvdXQ6Cj4gPiAgICAgICByZXR1cm4gcmM7Cj4gPiBAQCAtNTE5LDExICs2NTMs MTggQEAgdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ID4gICB7 Cj4gPiAgICAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7Cj4gPiAg IC0gICAgaWYgKCAhdnBsMDExLT5yaW5nLnJpbmdfYnVmICkKPiA+IC0gICAgICAgIHJldHVybjsK PiA+ICsgICAgaWYgKCB2cGwwMTEtPnJpbmdfZW5hYmxlICkKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgaWYgKCAhdnBsMDExLT5yaW5nLnJpbmdfYnVmICkKPiA+ICsgICAgICAgICAgICByZXR1cm47 Cj4gPiAgIC0gICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7Cj4g PiAtICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPnJpbmcucmluZ19idWYsCj4g PiB2cGwwMTEtPnJpbmcucmluZ19wYWdlKTsKPiA+ICsgICAgICAgIGZyZWVfeGVuX2V2ZW50X2No YW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOwo+ID4gKyAgICAgICAgZGVzdHJveV9yaW5nX2Zvcl9o ZWxwZXIoJnZwbDAxMS0+cmluZy5yaW5nX2J1ZiwKPiA+IHZwbDAxMS0+cmluZy5yaW5nX3BhZ2Up Owo+ID4gKyAgICB9Cj4gPiArICAgIGVsc2UKPiA+ICsgICAgewo+ID4gKyAgICAgICAgeGZyZWUo dnBsMDExLT5pbnJpbmcpOwo+ID4gKyAgICB9Cj4gPiAgIH0KPiA+ICAgICAvKgo+ID4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmggYi94ZW4vaW5jbHVkZS9hc20tYXJt L3ZwbDAxMS5oCj4gPiBpbmRleCBjM2QzNzViLi5iZTQzYWJmIDEwMDY0NAo+ID4gLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaAo+ID4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92 cGwwMTEuaAo+ID4gQEAgLTIxLDYgKzIxLDcgQEAKPiA+ICAgICAjaW5jbHVkZSA8cHVibGljL2Rv bWN0bC5oPgo+ID4gICAjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4KPiA+ICsjaW5jbHVkZSA8 cHVibGljL2lvL2NvbnNvbGUuaD4KPiA+ICAgI2luY2x1ZGUgPGFzbS92cmVnLmg+Cj4gPiAgICNp bmNsdWRlIDx4ZW4vbW0uaD4KPiA+ICAgQEAgLTMwLDEyICszMSwxOSBAQAo+ID4gICAgICNkZWZp bmUgU0JTQV9VQVJUX0ZJRk9fU0laRSAzMgo+ID4gICArc3RydWN0IHhlbmNvbnNfaW4gewo+IAo+ IFRoZSBuYW1lIGlzIHRvbyBjbG9zZSB0byB4ZW5jb25zX2ludGVyZmFjZSBhbmQgSSBkb24ndCB0 aGluayB0aGUgbmFtZSBpcwo+IGNvcnJlY3QgZm9yIHRoZSBoZWFkZXIgaXQgbGl2ZXMuCj4gCj4g SXQgcHJvYmFibHkgc2hvdWxkIGJlIHZwbDAxMV94ZW5fYmFja2VuZCBvciBzb21ldGhpbmcgc2lt aWxhci4KCkknbGwgcmVuYW1lIHhlbmNvbnNfaW4gdG8gdnBsMDExX3hlbl9iYWNrZW5kOwoKCj4g PiArICAgIGNoYXIgaW5bMTAyNF07Cj4gPiArICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywg aW5fcHJvZDsKPiA+ICt9Owo+ID4gKwo+ID4gICBzdHJ1Y3QgdnBsMDExIHsKPiA+ICsgICAgYm9v bCByaW5nX2VuYWJsZTsKPiA+ICAgICAgIHVuaW9uIHsKPiA+ICAgICAgICAgICBzdHJ1Y3Qgewo+ ID4gICAgICAgICAgICAgICB2b2lkICpyaW5nX2J1ZjsKPiA+ICAgICAgICAgICAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcmluZ19wYWdlOwo+ID4gICAgICAgICAgIH0gcmluZzsKPiA+ICsgICAgICAg IHN0cnVjdCB4ZW5jb25zX2luICppbnJpbmc7Cj4gCj4gVGhlIGNvZGUgaXMgcXVpdGUgY29uZnVz aW5nLiBZb3UgaGF2ZSBhIGZpZWxkICJyaW5nX2VuYWJsZWQiIHRvIGtub3cgd2hpY2gKPiBiaXRz IG9mIHRoZSB1bmlvbiBpcyB1c2VkLiBCdXQgYm90aCBuYW1lIGhhdmUgInJpbmciIGluIGl0Lgo+ IAo+IFlvdSBtb3N0IGxpa2VseSB3YW50IHRvIHJld29yayB0aGUgbmFtaW5nLiBJZiB5b3UgZm9s bG93IG15IHN1Z2dlc3Rpb24gYWJvdmUKPiBpdCB3b3VsZCBiZQo+IAo+IHVuaW9uCj4gewo+ICAg ICBzdHJ1Y3Qgewo+ICAgICB9IGRvbTsKPiAgICAgc3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZCB4 ZW47Cj4gfSBiYWNrZW5kOwoKSSdsbCBmb2xsb3cgdGhpcyBzdWdnZXN0aW9uLgoKCj4gVGhlIGRp ZmZlcmVudCBoZWxwZXJzIHdvdWxkIHRoZW4gbmVlZCB0byBiZSByZW5hbWVkIGFjY29yZGluZ2x5 LgoKSSdsbCBkbwoKCj4gPiAgICAgICB9Owo+ID4gICAgICAgdWludDMyX3QgICAgdWFydGZyOyAg ICAgICAgIC8qIEZsYWcgcmVnaXN0ZXIgKi8KPiA+ICAgICAgIHVpbnQzMl90ICAgIHVhcnRjcjsg ICAgICAgICAvKiBDb250cm9sIHJlZ2lzdGVyICovCj4gPiBAQCAtNTcsNiArNjUsNyBAQCBzdHJ1 Y3QgdnBsMDExX2luaXRfaW5mbyB7Cj4gPiAgIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0 IGRvbWFpbiAqZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2lu aXRfaW5mbyAqaW5mbyk7Cj4gPiAgIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRv bWFpbiAqZCk7Cj4gPiArdm9pZCB2cGwwMTFfcnhfY2hhcihzdHJ1Y3QgZG9tYWluICpkLCBjaGFy IGMpOwo+ID4gICAjZWxzZQo+ID4gICBzdGF0aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2lu aXQoc3RydWN0IGRvbWFpbiAqZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB2cGwwMTFfaW5pdF9pbmZvICppbmZvKQo+ID4gQEAgLTY1LDYgKzc0LDcg QEAgc3RhdGljIGlubGluZSBpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQs Cj4gPiAgIH0KPiA+ICAgICBzdGF0aWMgaW5saW5lIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQo c3RydWN0IGRvbWFpbiAqZCkgeyB9Cj4gPiArc3RhdGljIGlubGluZSB2b2lkIHZwbDAxMV9yeF9j aGFyKHN0cnVjdCBkb21haW4gKmQsIGNoYXIgYykgeyB9Cj4gCj4gSSBkb24ndCB0aGluayB0aGlz IGlzIG5lY2Vzc2FyeS4gSUlSQywgeW91IGFscmVhZHkgaWZkZWYgdGhlIGNhbGxlci4KCk9LCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs