From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2 18/21] xen/arm: Allow vpl011 to be used by DomU Date: Tue, 24 Jul 2018 12:00:58 +0100 Message-ID: References: <1530918736-13965-18-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1530918736-13965-18-git-send-email-sstabellini@kernel.org> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Stefano Stabellini Cc: Stefano Stabellini , andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgU3RlZmFubywKCk9uIDA3LzA3LzE4IDAwOjEyLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6 Cj4gTWFrZSB2cGwwMTEgYmVpbmcgYWJsZSB0byBiZSB1c2VkIHdpdGhvdXQgYSB1c2Vyc3BhY2Ug Y29tcG9uZW50IGluIERvbTAuCj4gSW4gdGhhdCBjYXNlLCBvdXRwdXQgaXMgcHJpbnRlZCB0byB0 aGUgWGVuIHNlcmlhbCBhbmQgaW5wdXQgaXMgcmVjZWl2ZWQKPiBmcm9tIHRoZSBYZW4gc2VyaWFs IG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lLgo+IAo+IENhbGwgZG9tYWluX3ZwbDAxMV9pbml0IGR1 cmluZyBjb25zdHJ1Y3RfZG9tVSBpZiB2cGwwMTEgaXMgZW5hYmxlZC4KPiAKPiBJbnRyb2R1Y2Ug YSBuZXcgcmluZyBzdHJ1Y3Qgd2l0aCBvbmx5IHRoZSByaW5nIGFycmF5IHRvIGF2b2lkIGEgd2Fz dGUgb2YKPiBtZW1vcnkuIEludHJvZHVjZSBzZXBhcmF0ZSByZWFkX2RhdGUgYW5kIHdyaXRlX2Rh dGEgZnVuY3Rpb25zIGZvcgo+IGluaXRpYWwgZG9tYWluczogdnBsMDExX3dyaXRlX2RhdGFfbm9y aW5nIGlzIHZlcnkgc2ltcGxlIGFuZCBqdXN0IHdyaXRlcwo+IHRvIHRoZSBjb25zb2xlLCB3aGls ZSB2cGwwMTFfcmVhZF9kYXRhX2lucmluZyBpcyBhIGR1cGxpY2F0ZSBvZgo+IHZwbDAxMV9yZWFk X2RhdGEuIEFsdGhvdWdoIHRleHR1YWxseSBhbG1vc3QgaWRlbnRpY2FsLCB3ZSBhcmUgZm9yY2Vk IHRvCj4gZHVwbGljYXRlIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGUgc3RydWN0IGxheW91dCBp cyBkaWZmZXJlbnQuCgpMb29raW5nIGF0IHRoZSBwYXRjaGVzIGFwcGxpZWQsIEkgdGhpbmsgdGhl cmUgbmVlZCBzb21lIG1vcmUgY29tbWVudHMgaW4gCnRoZSBjb2RlIHRvIGhlbHAgYSByZWFkZXIg ZGlmZmVyZW50aWF0ZSB3aGljaCBtZXRob2QgaXMgdXNlZC4KCj4gCj4gU2lnbmVkLW9mZi1ieTog U3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vc0B4aWxpbnguY29tPgo+IC0tLQo+IENoYW5nZXMg aW4gdjI6Cj4gLSBvbmx5IGluaXQgaWYgdnBsMDExCj4gLSByZW5hbWUgdnBsMDExX3JlYWRfY2hh ciB0byB2cGwwMTFfcnhfY2hhcgo+IC0gcmVtb3ZlIHNwdXJpb3VzIGNoYW5nZQo+IC0gZml4IGNv ZGluZyBzdHlsZQo+IC0gdXNlIGRpZmZlcmVudCByaW5nIHN0cnVjdAo+IC0gbW92ZSB0aGUgd3Jp dGVfZGF0YSBjaGFuZ2VzIHRvIHRoZWlyIG93biBmdW5jdGlvbgo+ICAgICh2cGwwMTFfd3JpdGVf ZGF0YV9ub3JpbmcpCj4gLSBkdXBsaWNhdGUgdnBsMDExX3JlYWRfZGF0YQo+IC0tLQo+ICAgeGVu L2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jICB8ICAxMCArKy0KPiAgIHhlbi9hcmNoL2FybS92cGww MTEuYyAgICAgICAgfCAxODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQo+ICAgeGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCB8ICAxMCArKysKPiAgIDMgZmls ZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWlu X2J1aWxkLmMKPiBpbmRleCA3MThiZTQ4Li5kN2U5MDQwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L2FybS9kb21haW5fYnVpbGQuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+ IEBAIC0yNTMxLDcgKzI1MzEsMTUgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbVUo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQo+ICAgICAgIGlm ICggcmMgPCAwICkKPiAgICAgICAgICAgcmV0dXJuIHJjOwo+ICAgCj4gLSAgICByZXR1cm4gX19j b25zdHJ1Y3RfZG9tYWluKGQsICZraW5mbyk7Cj4gKyAgICByYyA9IF9fY29uc3RydWN0X2RvbWFp bihkLCAma2luZm8pOwo+ICsgICAgaWYgKCByYyA8IDAgKQo+ICsgICAgICAgIHJldHVybiByYzsK PiArCj4gKyNpZmRlZiBDT05GSUdfU0JTQV9WVUFSVF9DT05TT0xFCj4gKyAgICBpZiAoIHZwbDAx MSApCj4gKyAgICAgICAgcmMgPSBkb21haW5fdnBsMDExX2luaXQoZCwgTlVMTCk7Cj4gKyNlbmRp ZgpJIGRvbid0IHRoaW5rIHRoZSAjaWZkZWYgaXMgbmVjZXNzYXJ5IGhlcmUuIFdlIHdhbnQgdG8g cmV0dXJuIGFuIGVycm9yIAp3aGVuIHZwbDAxMSBpcyBzZXQgYnV0IG5vdCB0aGUgZW11bGF0aW9u IGNvbXBpbGVkIGluLgoKPiArICAgIHJldHVybiByYzsKPiAgIH0KPiAgIAo+ICAgaW50IF9faW5p dCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBsMDExLmMKPiBpbmRleCBlNzU5NTdmLi5k NGFhYjY0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92cGwwMTEuYwo+ICsrKyBiL3hlbi9h cmNoL2FybS92cGwwMTEuYwo+IEBAIC04Myw2ICs4MywxMTEgQEAgc3RhdGljIHZvaWQgdnBsMDEx X3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHN0cnVjdCBkb21haW4gKmQpCj4gICAjZW5kaWYKPiAg IH0KPiAgIAo+ICt2b2lkIHZwbDAxMV9yeF9jaGFyKHN0cnVjdCBkb21haW4gKmQsIGNoYXIgYykK ClBsZWFzZSBhZGQgZG9jdW1lbnRhdGlvbiBleHBsYWluIHdoYXQgdGhlIHVzZSBvZiB0aGlzIGZ1 bmN0aW9uLiBJIHdvdWxkIAphbHNvIHJlbmFtZSBpdCB0byBjbGFyaWZ5IHdobyBjYW4gY2FsbCBp dCAoaS5lIG9ubHkgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgCmJhY2tlbmQgaXMgaW4gWGVuKS4KCj4g K3sKPiArICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAgICBzdHJ1Y3QgdnBsMDExICp2cGww MTEgPSAmZC0+YXJjaC52cGwwMTE7Cj4gKyAgICBzdHJ1Y3QgeGVuY29uc19pbiAqaW50ZiA9IHZw bDAxMS0+aW5yaW5nOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kLCBp bl9maWZvX2xldmVsOwo+ICsKCkFTU0VSVCghdnBsMDExLT5yaW5nX2VuYWJsZSk7Cgo+ICsgICAg VlBMMDExX0xPQ0soZCwgZmxhZ3MpOwo+ICsKPiArICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25z Owo+ICsgICAgaW5fcHJvZCA9IGludGYtPmluX3Byb2Q7Cj4gKyAgICBpZiAoIHhlbmNvbnNfcXVl dWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID09IHNpemVvZihpbnRmLT5p bikgKQo+ICsgICAgewo+ICsgICAgICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOwo+ICsgICAg ICAgIHJldHVybjsKPiArICAgIH0KPiArCj4gKyAgICBpbnRmLT5pblt4ZW5jb25zX21hc2soaW5f cHJvZCwgc2l6ZW9mKGludGYtPmluKSldID0gYzsKPiArICAgIGludGYtPmluX3Byb2QgPSBpbl9w cm9kICsgMTsKPiArCj4gKyAgICBpbl9maWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQoaW5fcHJv ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9jb25zLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnRmLT5pbikpOwo+ICsKPiAr ICAgIHZwbDAxMV9kYXRhX2F2YWlsKGQsIGluX2ZpZm9fbGV2ZWwsIHNpemVvZihpbnRmLT5pbiks IDAsIDEwMjQpOwoKV2hlcmUgZG9lcyB0aGUgMTAyNCBjb21lIGZyb20/IE1vc3QgbGlrZWx5LCB5 b3Ugd2FudCBhIGRlZmluZSBmb3IgaXQuCgo+ICsgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHZwbDAxMV93cml0ZV9kYXRhX25vcmluZyhzdHJ1Y3Qg ZG9tYWluICpkLCB1aW50OF90IGRhdGEpCj4gK3sKPiArICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7Cj4gKwo+ICsg ICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOwo+ICsKPiArICAgIHByaW50aygiJWMiLCBkYXRhKTsK PiArICAgIGlmIChkYXRhID09ICdcbicpCj4gKyAgICAgICAgcHJpbnRrKCJET00ldTogIiwgZC0+ ZG9tYWluX2lkKTsKCllvdSB3YW50IHRvIGJ1ZmZlciB0aGUgY2hhcmFjdGVycyBoZXJlIGFuZCBv bmx5IHByaW50IG9uIG5ld2xpbmUgb3Igd2hlbiAKdGhlIGJ1ZmZlciBpcyBmdWxsLiBPdGhlcndp c2UgY2hhcmFjdGVycyB3aWxsIGdldCBtYW5nbGVkIHdpdGggdGhlIFhlbiAKY29uc29sZSBvdXRw dXQgb3Igb3RoZXIgZG9tYWlucyBvdXRwdXQuCgo+ICsKPiArICAgIHZwbDAxMS0+dWFydHJpcyB8 PSBUWEk7Cj4gKyAgICB2cGwwMTEtPnVhcnRmciAmPSB+VFhGRTsKPiArICAgIHZwbDAxMV91cGRh dGVfaW50ZXJydXB0X3N0YXR1cyhkKTsKPiArCj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdz KTsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YV9pbnJpbmcoc3Ry dWN0IGRvbWFpbiAqZCkKPiArewoKSSB0aGluayB5b3UgY2FuIGF2b2lkIHRoZSBkdXBsaWNhdGlv biBoZXJlIGJ5IHVzaW5nIGEgbWFjcm8uCgo+ICsgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAr ICAgIHVpbnQ4X3QgZGF0YSA9IDA7Cj4gKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+ YXJjaC52cGwwMTE7Cj4gKyAgICBzdHJ1Y3QgeGVuY29uc19pbiAqaW50ZiA9IHZwbDAxMS0+aW5y aW5nOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOwo+ICsKPiArICAg IFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICBpbl9jb25zID0gaW50Zi0+aW5fY29u czsKPiArICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOwo+ICsKPiArICAgIHNtcF9ybWIoKTsK PiArCj4gKyAgICAvKgo+ICsgICAgICogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGVyZSB3aWxsIGJl IGRhdGEgaW4gdGhlIHJpbmcgYnVmZmVyIHdoZW4gdGhpcwo+ICsgICAgICogZnVuY3Rpb24gaXMg Y2FsbGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBkYXRhIHJlZ2lz dGVyCj4gKyAgICAgKiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcgaXMgbm90IHNldC4KPiArICAgICAq IElmIHRoZSBndWVzdCBzdGlsbCBkb2VzIHJlYWQgd2hlbiBUWEZFIGJpdCBpcyBzZXQgdGhlbiAw IHdpbGwgYmUgcmV0dXJuZWQuCj4gKyAgICAgKi8KPiArICAgIGlmICggeGVuY29uc19xdWV1ZWQo aW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPiAwICkKPiArICAgIHsKPiArICAg ICAgICB1bnNpZ25lZCBpbnQgZmlmb19sZXZlbDsKPiArCj4gKyAgICAgICAgZGF0YSA9IGludGYt PmluW3hlbmNvbnNfbWFzayhpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKV07Cj4gKyAgICAgICAg aW5fY29ucyArPSAxOwo+ICsgICAgICAgIHNtcF9tYigpOwo+ICsgICAgICAgIGludGYtPmluX2Nv bnMgPSBpbl9jb25zOwo+ICsKPiArICAgICAgICBmaWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQo aW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSk7Cj4gKwo+ICsgICAgICAgIC8qIElm IHRoZSBGSUZPIGlzIG5vdyBlbXB0eSwgd2UgY2xlYXIgdGhlIHJlY2VpdmUgdGltZW91dCBpbnRl cnJ1cHQuICovCj4gKyAgICAgICAgaWYgKCBmaWZvX2xldmVsID09IDAgKQo+ICsgICAgICAgIHsK PiArICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhGRTsKPiArICAgICAgICAgICAgdnBs MDExLT51YXJ0cmlzICY9IH5SVEk7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvKiBJZiB0 aGUgRklGTyBpcyBtb3JlIHRoYW4gaGFsZiBlbXB0eSwgd2UgY2xlYXIgdGhlIFJYIGludGVycnVw dC4gKi8KPiArICAgICAgICBpZiAoIGZpZm9fbGV2ZWwgPCBzaXplb2YoaW50Zi0+aW4pIC0gU0JT QV9VQVJUX0ZJRk9fTEVWRUwgKQo+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflJY STsKPiArCj4gKyAgICAgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQpOwo+ICsg ICAgfQo+ICsgICAgZWxzZQo+ICsgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTog VW5leHBlY3RlZCBJTiByaW5nIGJ1ZmZlciBlbXB0eVxuIik7Cj4gKwo+ICsgICAgLyoKPiArICAg ICAqIFdlIGhhdmUgY29uc3VtZWQgYSBjaGFyYWN0ZXIgb3IgdGhlIEZJRk8gd2FzIGVtcHR5LCBz byBjbGVhciB0aGUKPiArICAgICAqICJGSUZPIGZ1bGwiIGJpdC4KPiArICAgICAqLwo+ICsgICAg dnBsMDExLT51YXJ0ZnIgJj0gflJYRkY7Cj4gKwo+ICsgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFn cyk7Cj4gKwo+ICsgICAgcmV0dXJuIGRhdGE7Cj4gK30KPiArCj4gICBzdGF0aWMgdWludDhfdCB2 cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCj4gICB7Cj4gICAgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKPiBAQCAtMjQ2LDcgKzM1MSwxMCBAQCBzdGF0aWMgaW50IHZwbDAxMV9tbWlv X3JlYWQoc3RydWN0IHZjcHUgKnYsCj4gICAgICAgY2FzZSBEUjoKPiAgICAgICAgICAgaWYgKCAh dnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICAgCj4g LSAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0YShkKSwgaW5m byk7Cj4gKyAgICAgICAgaWYgKCB2cGwwMTEtPnJpbmdfZW5hYmxlICkKPiArICAgICAgICAgICAg KnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0YShkKSwgaW5mbyk7Cj4gKyAg ICAgICAgZWxzZQo+ICsgICAgICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFf cmVhZF9kYXRhX2lucmluZyhkKSwgaW5mbyk7CgpJIHRoaW5rIHNvbWUgcmVuYW1pbmcgd2lsbCBp bXByb3ZlIHRoZSByZWFkaW5nLiBUaGlzIGlzIHF1aXRlIAp1bmludHVpdGl2ZSB0byBzZWUgYSBm dW5jdGlvbiB3aXRoICJyaW5nIiBpbiBpdCwgY2FsbGVkIHdoZW4gCiF2cGwwMTEtPnJpbmdfZW5h YmxlZC4KCj4gICAgICAgICAgIHJldHVybiAxOwo+ICAgCj4gICAgICAgY2FzZSBSU1I6Cj4gQEAg LTMzMSw3ICs0MzksMTAgQEAgc3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNw dSAqdiwKPiAgIAo+ICAgICAgICAgICB2cmVnX3JlZzMyX3VwZGF0ZSgmZGF0YSwgciwgaW5mbyk7 Cj4gICAgICAgICAgIGRhdGEgJj0gMHhGRjsKPiAtICAgICAgICB2cGwwMTFfd3JpdGVfZGF0YSh2 LT5kb21haW4sIGRhdGEpOwo+ICsgICAgICAgIGlmICggdnBsMDExLT5yaW5nX2VuYWJsZSApCj4g KyAgICAgICAgICAgIHZwbDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgZGF0YSk7Cj4gKyAgICAg ICAgZWxzZQo+ICsgICAgICAgICAgICB2cGwwMTFfd3JpdGVfZGF0YV9ub3Jpbmcodi0+ZG9tYWlu LCBkYXRhKTsKPiAgICAgICAgICAgcmV0dXJuIDE7Cj4gICAgICAgfQo+ICAgCj4gQEAgLTQ3Niwy NyArNTg3LDQ3IEBAIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCj4gICAgICAgaWYgKCB2cGwwMTEtPnJpbmcucmlu Z19idWYgKQo+ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgIAo+IC0gICAgLyogTWFwIHRo ZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJlc3Mgc3BhY2UuICovCj4gLSAgICByYyA9ICBwcmVwYXJl X3JpbmdfZm9yX2hlbHBlcihkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2ZuX3goaW5mby0+Z2ZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2 cGwwMTEtPnJpbmcucmluZ19wYWdlLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnZwbDAxMS0+cmluZy5yaW5nX2J1Zik7Cj4gLSAgICBpZiAoIHJjIDwgMCApCj4gLSAgICAg ICAgZ290byBvdXQ7Cj4gKyAgICAvKgo+ICsgICAgICogaW5mbyBpcyBOVUxMIGZvciBkb21VcyBz dGFydGVkIGJ5IFhlbiBhdCBib290IHRpbWUsIHdpdGggbm8KPiArICAgICAqIGNvcnJlc3BvbmRp bmcgdXNlcnNwYWNlIGNvbXBvbmVudCBpbiBkb20wID4gKyAgICAgKi8KCkkgZG9uJ3QgdGhpbmsg eW91IHdhbnQgdG8gbWVudGlvbiBkb21VcyBhdCBhbGwgaGVyZS4gVGhlIGVtdWxhdGlvbiAKc2hv dWxkIG5vdCBjYXJlIHdoZXRoZXIgaXQgaXMgYSBndWVzdCBvciB0aGUgaGFyZHdhcmUgZG9tYWlu LiBJdCB3b3VsZCAKdGhlb3JldGljYWxseSBwb3NzaWJsZSB0byBoYXZlIHRoZSBoYXJkd2FyZSBk b21haW4gcmUtdXNpbmcgdGhpcyBjb2RlLgoKRnVydGhlcm1vcmUsIG5vdGhpbmcgaW4gdGhlIGVt dWxhdGlvbiBtYW5kYXRlcyB0byBoYXZlIHRoZSBiYWNrZW5kIGluCnRoZSBoYXJkd2FyZSBkb21h aW4uIFRoaXMgY291bGQgYmUgYW55d2hlcmUuCgpJdCBsb29rcyBsaWtlIHRvIG1lIHlvdSB3YW50 IHRvIG9mZmVyIDIgc29sdXRpb25zOgoJMSkgQ29uc29sZSBiYWNrZW5kIGluIGEgZG9tYWluCgky KSBDb25zb2xlIGJhY2tlbmQgaW4gdGhlIGh5cGVydmlzb3IKClNvIHByb2JhYmx5IGEgYmV0dGVy IG5hbWluZyBmb3IgcmluZ19lbmFibGUgd291bGQgYmUgImJhY2tlbmRfaW5fZG9tYWluIiAKKG9y IHNvbWV0aGluZyBzaW1pbGFyKS4KCj4gKyAgICBpZiAoIGluZm8gIT0gTlVMTCApCj4gKyAgICB7 Cj4gKyAgICAgICAgdnBsMDExLT5yaW5nX2VuYWJsZSA9IHRydWU7Cj4gKwo+ICsgICAgICAgIC8q IE1hcCB0aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAqLwo+ICsgICAgICAgIHJj ID0gIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQsCj4gKyAgICAgICAgICAgICAgICBnZm5feChp bmZvLT5nZm4pLAo+ICsgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZy5yaW5nX3BhZ2UsCj4g KyAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nLnJpbmdfYnVmKTsKPiArICAgICAgICBpZiAo IHJjIDwgMCApCj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgICAgICByYyA9IGFs bG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgaW5mby0+Y29uc29sZV9kb21pZCwK PiArICAgICAgICAgICAgICAgIHZwbDAxMV9ub3RpZmljYXRpb24pOwo+ICsgICAgICAgIGlmICgg cmMgPCAwICkKPiArICAgICAgICAgICAgZ290byBvdXQxOwo+ICsKPiArICAgICAgICB2cGwwMTEt PmV2dGNobiA9IGluZm8tPmV2dGNobiA9IHJjOwo+ICsgICAgfQo+ICsgICAgZWxzZQo+ICsgICAg ewo+ICsgICAgICAgIHZwbDAxMS0+cmluZ19lbmFibGUgPSBmYWxzZTsKPiArCj4gKyAgICAgICAg dnBsMDExLT5pbnJpbmcgPSB4emFsbG9jKHN0cnVjdCB4ZW5jb25zX2luKTsKPiArICAgICAgICBp ZiAoIHZwbDAxMS0+aW5yaW5nID09IE5VTEwgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg cmMgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICBnb3RvIG91dDE7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICAgCj4gICAgICAgcmMgPSB2Z2ljX3Jlc2VydmVfdmlycShkLCBHVUVTVF9WUEwwMTFf U1BJKTsKPiAgICAgICBpZiAoICFyYyApCj4gICAgICAgewo+ICAgICAgICAgICByYyA9IC1FSU5W QUw7Cj4gLSAgICAgICAgZ290byBvdXQxOwo+IC0gICAgfQo+IC0KPiAtICAgIHJjID0gYWxsb2Nf dW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2RvbWlkLAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMV9ub3RpZmljYXRp b24pOwo+IC0gICAgaWYgKCByYyA8IDAgKQo+ICAgICAgICAgICBnb3RvIG91dDI7Cj4gLQo+IC0g ICAgdnBsMDExLT5ldnRjaG4gPSBpbmZvLT5ldnRjaG4gPSByYzsKPiArICAgIH0KPiAgIAo+ICAg ICAgIHNwaW5fbG9ja19pbml0KCZ2cGwwMTEtPmxvY2spOwo+ICAgCj4gQEAgLTUwOSw3ICs2NDAs MTAgQEAgb3V0MjoKPiAgICAgICB2Z2ljX2ZyZWVfdmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsK PiAgIAo+ICAgb3V0MToKPiAtICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPnJp bmcucmluZ19idWYsIHZwbDAxMS0+cmluZy5yaW5nX3BhZ2UpOwo+ICsgICAgaWYgKCB2cGwwMTEt PnJpbmdfZW5hYmxlICkKPiArICAgICAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBlcigmdnBsMDEx LT5yaW5nLnJpbmdfYnVmLCB2cGwwMTEtPnJpbmcucmluZ19wYWdlKTsKPiArICAgIGVsc2UKPiAr ICAgICAgICB4ZnJlZSh2cGwwMTEtPmlucmluZyk7Cj4gICAKPiAgIG91dDoKPiAgICAgICByZXR1 cm4gcmM7Cj4gQEAgLTUxOSwxMSArNjUzLDE4IEBAIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQo c3RydWN0IGRvbWFpbiAqZCkKPiAgIHsKPiAgICAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAm ZC0+YXJjaC52cGwwMTE7Cj4gICAKPiAtICAgIGlmICggIXZwbDAxMS0+cmluZy5yaW5nX2J1ZiAp Cj4gLSAgICAgICAgcmV0dXJuOwo+ICsgICAgaWYgKCB2cGwwMTEtPnJpbmdfZW5hYmxlICkKPiAr ICAgIHsKPiArICAgICAgICBpZiAoICF2cGwwMTEtPnJpbmcucmluZ19idWYgKQo+ICsgICAgICAg ICAgICByZXR1cm47Cj4gICAKPiAtICAgIGZyZWVfeGVuX2V2ZW50X2NoYW5uZWwoZCwgdnBsMDEx LT5ldnRjaG4pOwo+IC0gICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZy5y aW5nX2J1ZiwgdnBsMDExLT5yaW5nLnJpbmdfcGFnZSk7Cj4gKyAgICAgICAgZnJlZV94ZW5fZXZl bnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7Cj4gKyAgICAgICAgZGVzdHJveV9yaW5nX2Zv cl9oZWxwZXIoJnZwbDAxMS0+cmluZy5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nLnJpbmdfcGFnZSk7 Cj4gKyAgICB9Cj4gKyAgICBlbHNlCj4gKyAgICB7Cj4gKyAgICAgICAgeGZyZWUodnBsMDExLT5p bnJpbmcpOwo+ICsgICAgfQo+ICAgfQo+ICAgCj4gICAvKgo+IGRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaAo+IGlu ZGV4IGMzZDM3NWIuLmJlNDNhYmYgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS92 cGwwMTEuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKPiBAQCAtMjEsNiAr MjEsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5oPgo+ICAgI2luY2x1ZGUg PHB1YmxpYy9pby9yaW5nLmg+Cj4gKyNpbmNsdWRlIDxwdWJsaWMvaW8vY29uc29sZS5oPgo+ICAg I2luY2x1ZGUgPGFzbS92cmVnLmg+Cj4gICAjaW5jbHVkZSA8eGVuL21tLmg+Cj4gICAKPiBAQCAt MzAsMTIgKzMxLDE5IEBACj4gICAKPiAgICNkZWZpbmUgU0JTQV9VQVJUX0ZJRk9fU0laRSAzMgo+ ICAgCj4gK3N0cnVjdCB4ZW5jb25zX2luIHsKClRoZSBuYW1lIGlzIHRvbyBjbG9zZSB0byB4ZW5j b25zX2ludGVyZmFjZSBhbmQgSSBkb24ndCB0aGluayB0aGUgbmFtZSBpcyAKY29ycmVjdCBmb3Ig dGhlIGhlYWRlciBpdCBsaXZlcy4KCkl0IHByb2JhYmx5IHNob3VsZCBiZSB2cGwwMTFfeGVuX2Jh Y2tlbmQgb3Igc29tZXRoaW5nIHNpbWlsYXIuCgo+ICsgICAgY2hhciBpblsxMDI0XTsKPiArICAg IFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZDsKPiArfTsKPiArCj4gICBzdHJ1Y3Qg dnBsMDExIHsKPiArICAgIGJvb2wgcmluZ19lbmFibGU7Cj4gICAgICAgdW5pb24gewo+ICAgICAg ICAgICBzdHJ1Y3Qgewo+ICAgICAgICAgICAgICAgdm9pZCAqcmluZ19idWY7Cj4gICAgICAgICAg ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5nX3BhZ2U7Cj4gICAgICAgICAgIH0gcmluZzsKPiAr ICAgICAgICBzdHJ1Y3QgeGVuY29uc19pbiAqaW5yaW5nOwoKVGhlIGNvZGUgaXMgcXVpdGUgY29u ZnVzaW5nLiBZb3UgaGF2ZSBhIGZpZWxkICJyaW5nX2VuYWJsZWQiIHRvIGtub3cgCndoaWNoIGJp dHMgb2YgdGhlIHVuaW9uIGlzIHVzZWQuIEJ1dCBib3RoIG5hbWUgaGF2ZSAicmluZyIgaW4gaXQu CgpZb3UgbW9zdCBsaWtlbHkgd2FudCB0byByZXdvcmsgdGhlIG5hbWluZy4gSWYgeW91IGZvbGxv dyBteSBzdWdnZXN0aW9uIAphYm92ZSBpdCB3b3VsZCBiZQoKdW5pb24KewogICAgIHN0cnVjdCB7 CiAgICAgfSBkb207CiAgICAgc3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZCB4ZW47Cn0gYmFja2Vu ZDsKClRoZSBkaWZmZXJlbnQgaGVscGVycyB3b3VsZCB0aGVuIG5lZWQgdG8gYmUgcmVuYW1lZCBh Y2NvcmRpbmdseS4KCgo+ICAgICAgIH07Cj4gICAgICAgdWludDMyX3QgICAgdWFydGZyOyAgICAg ICAgIC8qIEZsYWcgcmVnaXN0ZXIgKi8KPiAgICAgICB1aW50MzJfdCAgICB1YXJ0Y3I7ICAgICAg ICAgLyogQ29udHJvbCByZWdpc3RlciAqLwo+IEBAIC01Nyw2ICs2NSw3IEBAIHN0cnVjdCB2cGww MTFfaW5pdF9pbmZvIHsKPiAgIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAq ZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmlu Zm8pOwo+ICAgdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKPiAr dm9pZCB2cGwwMTFfcnhfY2hhcihzdHJ1Y3QgZG9tYWluICpkLCBjaGFyIGMpOwo+ICAgI2Vsc2UK PiAgIHN0YXRpYyBpbmxpbmUgaW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpk LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2cGwwMTFf aW5pdF9pbmZvICppbmZvKQo+IEBAIC02NSw2ICs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRv bWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAo+ICAgfQo+ICAgCj4gICBzdGF0aWMg aW5saW5lIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkgeyB9Cj4g K3N0YXRpYyBpbmxpbmUgdm9pZCB2cGwwMTFfcnhfY2hhcihzdHJ1Y3QgZG9tYWluICpkLCBjaGFy IGMpIHsgfQoKSSBkb24ndCB0aGluayB0aGlzIGlzIG5lY2Vzc2FyeS4gSUlSQywgeW91IGFscmVh ZHkgaWZkZWYgdGhlIGNhbGxlci4KCj4gICAjZW5kaWYKPiAgICNlbmRpZiAgLyogX1ZQTDAxMV9I XyAqLwo+ICAgCj4gCgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs