From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v4 12/27] ARM: vGICv3: handle virtual LPI pending and property tables Date: Tue, 4 Apr 2017 14:01:56 +0100 Message-ID: <6943ebf3-8898-58e6-ce61-cb68e7684414@arm.com> References: <20170403202829.7278-1-andre.przywara@arm.com> <20170403202829.7278-13-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvO5x-0005Oi-Ca for xen-devel@lists.xenproject.org; Tue, 04 Apr 2017 13:02:01 +0000 In-Reply-To: <20170403202829.7278-13-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGksCgpJIHBvc3RlZCB0aGUgY29tbWVudHMgb24gdjMgYnkgbWlzdGFrZS4gSSB3aWxsIGR1cGxp Y2F0ZSB0aGVtIGhlcmUuCgpPbiAwMy8wNC8xNyAyMToyOCwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6 Cj4gQWxsb3cgYSBndWVzdCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUg bWVtb3J5IHJlZ2lvbnMKPiBpdCBoYXMgcmVzZXJ2ZWQgZm9yIHRoZSBHSUN2MyBwZW5kaW5nIGFu ZCBwcm9wZXJ0eSB0YWJsZXMuCj4gV2Ugc2FuaXRpc2UgdGhlIHZhcmlvdXMgZmllbGRzIG9mIHRo ZSByZXNwZWN0aXZlIHJlZGlzdHJpYnV0b3IKPiByZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdl cyBpbnRvIFhlbidzIGFkZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5Cj4gYWNjZXNzLgo+Cj4gU2ln bmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4gLS0t Cj4gIHhlbi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAgfCAxMzYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAg IHwgIDYxICsrKysrKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aCB8ICAgNiArLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAgIHwgICAyICsKPiAgeGVu L2luY2x1ZGUveGVuL21tLmggICAgICAgICB8ICAgOCArKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAx OTUgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL3ZnaWMtdjMuYyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPiBpbmRleCA3OTdmZDg2 Li4yYzZiMzE3IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPiArKysgYi94 ZW4vYXJjaC9hcm0vdmdpYy12My5jCj4gQEAgLTE5LDEyICsxOSwxNCBAQAo+ICAgKi8KPgo+ICAj aW5jbHVkZSA8eGVuL2JpdG9wcy5oPgo+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+Cj4g ICNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgo+ICAjaW5jbHVk ZSA8eGVuL3NvZnRpcnEuaD4KPiAgI2luY2x1ZGUgPHhlbi9pcnEuaD4KPiAgI2luY2x1ZGUgPHhl bi9zY2hlZC5oPgo+ICAjaW5jbHVkZSA8eGVuL3NpemVzLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdm1h cC5oPgo+ICAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KPiAgI2luY2x1ZGUgPGFzbS9tbWlvLmg+ Cj4gICNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KPiBAQCAtMjI4LDEyICsyMzAsMTUgQEAg c3RhdGljIGludCBfX3ZnaWNfdjNfcmRpc3RyX3JkX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwg bW1pb19pbmZvX3QgKmluZm8sCj4gICAgICAgICAgZ290byByZWFkX3Jlc2VydmVkOwo+Cj4gICAg ICBjYXNlIFZSRUc2NChHSUNSX1BST1BCQVNFUik6Cj4gLSAgICAgICAgLyogTFBJJ3Mgbm90IGlt cGxlbWVudGVkICovCj4gLSAgICAgICAgZ290byByZWFkX2FzX3plcm9fNjQ7Cj4gKyAgICAgICAg aWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiAr ICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdCh2LT5kb21haW4tPmFyY2gudmdpYy5yZGlz dF9wcm9wYmFzZSwgaW5mbyk7Cgp2Z2ljX3JlZzY0X2V4dHJhY3Qgd2lsbCBsaWtlbHkgdHVybmVk IGludG8gYSBzZXJpZXMgb2Ygbm9uLWF0b21pYyAKb3BlcmF0aW9uLiBTbyBob3cgZG8geW91IHBy ZXZlbnQgaXNzdWU/Cgo+ICsgICAgICAgIHJldHVybiAxOwo+Cj4gICAgICBjYXNlIFZSRUc2NChH SUNSX1BFTkRCQVNFUik6Cj4gLSAgICAgICAgLyogTFBJJ3Mgbm90IGltcGxlbWVudGVkICovCj4g LSAgICAgICAgZ290byByZWFkX2FzX3plcm9fNjQ7Cj4gKyAgICAgICAgaWYgKCAhdmdpY19yZWc2 NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiArICAgICAgICAqciA9IHZn aWNfcmVnNjRfZXh0cmFjdCh2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2UsIGluZm8pOwoKRGl0 dG8uCgo+ICsgICAgICAgICpyICY9IH5HSUNSX1BFTkRCQVNFUl9QVFo7ICAgICAgIC8qIFdPLCBy ZWFkcyBhcyAwICovCj4gKyAgICAgICAgcmV0dXJuIDE7CgpbLi4uXQoKPiAgc3RhdGljIGludCBf X3ZnaWNfdjNfcmRpc3RyX3JkX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190 ICppbmZvLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBnaWNyX3JlZywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnaXN0ZXJfdCByKQo+ICB7Cj4gICAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8t PmRhYnQ7Cj4gKyAgICB1aW50NjRfdCByZWc7Cj4KPiAgICAgIHN3aXRjaCAoIGdpY3JfcmVnICkK PiAgICAgIHsKPiBAQCAtMzkzLDM2ICs0NzcsNTQgQEAgc3RhdGljIGludCBfX3ZnaWNfdjNfcmRp c3RyX3JkX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAo+ICAg ICAgICAgIGdvdG8gd3JpdGVfaW1wbF9kZWZpbmVkOwo+Cj4gICAgICBjYXNlIFZSRUc2NChHSUNS X1NFVExQSVIpOgo+IC0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KPiArICAg ICAgICAvKiBMUElzIHdpdGhvdXQgYW4gSVRTIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KPiAgICAg ICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKPgo+ICAgICAgY2FzZSBWUkVHNjQoR0lDUl9DTFJM UElSKToKPiAtICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCj4gKyAgICAgICAg LyogTFBJcyB3aXRob3V0IGFuIElUUyBhcmUgbm90IGltcGxlbWVudGVkICovCj4gICAgICAgICAg Z290byB3cml0ZV9pZ25vcmVfNjQ7Cj4KPiAgICAgIGNhc2UgMHgwMDUwOgo+ICAgICAgICAgIGdv dG8gd3JpdGVfcmVzZXJ2ZWQ7Cj4KPiAgICAgIGNhc2UgVlJFRzY0KEdJQ1JfUFJPUEJBU0VSKToK PiAtICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCj4gLSAgICAgICAgZ290byB3 cml0ZV9pZ25vcmVfNjQ7Cj4gKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3Mo ZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiArCj4gKyAgICAgICAgLyogV3JpdGluZyBQUk9QQkFT RVIgd2l0aCBMUElzIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRS4gKi8KPiArICAgICAgICBpZiAo IHYtPmFyY2gudmdpYy5mbGFncyAmIFZHSUNfVjNfTFBJU19FTkFCTEVEICkKCnYgd2lsbCBwb2lu dCB0byB0aGUgdkNQVSBhc3NvY2lhdGVkIHRvIHRoZSByZS1kaXN0cmlidXRvci4gSG93ZXZlciwg dGhpcyAKY291bGQgYmUgdXBkYXRlZCBmcm9tIGFueSB2Q1BVLiBTbyBJIHRoaW5rIHRoZXJlIGlz IHRpbnkgcmFjZSB3aGVyZSAKdi0+YXJjaC52Z2ljLmZsYWdzIG1heSBub3QgYmVlbiBzZWVuIGFu ZCB0aGVyZWZvcmUgeW91IHdpbGwgZ2V0IApyZGlzdF9wcm9wYmFzZSB3cml0dGVuIGFmdGVyd2Fy ZHMuCgo+ICsgICAgICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICAgICAgcmVnID0gdi0+ZG9t YWluLT5hcmNoLnZnaWMucmRpc3RfcHJvcGJhc2U7Cj4gKyAgICAgICAgdmdpY19yZWc2NF91cGRh dGUoJnJlZywgciwgaW5mbyk7Cj4gKyAgICAgICAgcmVnID0gc2FuaXRpemVfcHJvcGJhc2VyKHJl Zyk7Cj4gKyAgICAgICAgdi0+ZG9tYWluLT5hcmNoLnZnaWMucmRpc3RfcHJvcGJhc2UgPSByZWc7 CgpUaGlzIGNvZGUgY291bGQgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSBhbmQgSSBkb24ndCB0aGlu ayB0aGlzIHdpbGwgCmJlaGF2ZSB3ZWxsLgoKPiArICAgICAgICByZXR1cm4gMTsKPgo+ICAgICAg Y2FzZSBWUkVHNjQoR0lDUl9QRU5EQkFTRVIpOgo+IC0gICAgICAgIC8qIExQSSBpcyBub3QgaW1w bGVtZW50ZWQgKi8KPiAtICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKPiArICAgICAgICBp ZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsK PiArICAgICAgICAvKiBXcml0aW5nIFBFTkRCQVNFUiB3aXRoIExQSXMgZW5hYmxlZCBpcyBVTlBS RURJQ1RBQkxFLiAqLwo+ICsgICAgICAgIGlmICggdi0+YXJjaC52Z2ljLmZsYWdzICYgVkdJQ19W M19MUElTX0VOQUJMRUQgKQoKRGl0dG8KCj4gKyAgICAgICAgICAgIHJldHVybiAxOwo+ICsKPiAr ICAgICAgICByZWcgPSB2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2U7Cj4gKyAgICAgICAgdmdp Y19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7Cj4gKyAgICAgICAgcmVnID0gc2FuaXRpemVf cGVuZGJhc2VyKHJlZyk7Cj4gKyAgICAgICAgdi0+YXJjaC52Z2ljLnJkaXN0X3BlbmRiYXNlID0g cmVnOwoKRGl0dG8uCgpbLi4uXQoKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBi L3hlbi9jb21tb24vbWVtb3J5LmMKPiBpbmRleCBhZDBiMzNjLi4zY2EzZjYwIDEwMDY0NAo+IC0t LSBhL3hlbi9jb21tb24vbWVtb3J5LmMKPiArKysgYi94ZW4vY29tbW9uL21lbW9yeS5jCgpBbnkg bW9kaWZpY2F0aW9uIGluIGNvbW1vbiBjb2RlIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoIGFu ZCBoYXZlIAphcHByb3ByaWF0ZSBtYWludGFpbmVycyBDQ2VkLgoKPiBAQCAtMTQxOCw2ICsxNDE4 LDY3IEBAIGludCBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlcigKPiAgfQo+Cj4gIC8qCj4gKyAqIE1h cmsgYSBnaXZlbiBudW1iZXIgb2YgZ3Vlc3QgcGFnZXMgYXMgdXNlZCAoYnkgaW5jcmVhc2luZyB0 aGVpciByZWZjb3VudCksCj4gKyAqIHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIGd1ZXN0IGFkZHJl c3MuIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIG9uY2UgYmVmb3JlCj4gKyAqIGNhbGxpbmcgKHBv c3NpYmx5IHJlcGVhdGVkbHkpIG1hcF9vbmVfZ3Vlc3RfcGFnZXMoKS4KPiArICogQmVmb3JlIHRo ZSBkb21haW4gZ2V0cyBkZXN0cm95ZWQsIGNhbGwgcHV0X2d1ZXN0X3BhZ2VzKCkgdG8gZHJvcCB0 aGUKPiArICogcmVmZXJlbmNlLgo+ICsgKi8KCkkgd2FzIGhvcGluZyB0aGF0IHlvdSB3b3VsZCBo YXZlIHRha2VuIG15IGNvbW1lbnRzIGludG8gYWNjb3VudCB3aGVyZSAKeW91IHdyb3RlIHRoZSBu ZXcgZnVuY3Rpb25zIGJ1dCBpdCBzZWVtcyB0aGV5IHdlcmUgaWdub3JlZCA6Ly4gSSBmZWVsIAps aWtlIGl0IGlzIGEgd2FzdGVkIG9mIG15IHRpbWUgdG8gcmVwZWF0IGFnYWluIGFuZCBhZ2FpbiBj b21tZW50cy4KCkJvdGggZ2V0X2d1ZXN0X3BhZ2VzIGFuZCBwdXRfZ3Vlc3RfcGFnZXMgYXJlIHdy b25nIGJlY2F1c2UgeW91IGFyZSAKYXNzdW1pbmcgdGhlIHAybSBtYXBwaW5nIHdpbGwgbmV2ZXIg Y2hhbmdlcy4gVGhpcyBpcyB3cm9uZyBhbmQgSSBhc2tlZCBhIApmb3J3YXJkIHBsYW4gZm9yIHRo YXQgd2hpY2ggc2VlbXMgdG8gaGF2ZSBiZWVuIHNraXBwZWQgdG9vLi4uCgo+ICtpbnQgZ2V0X2d1 ZXN0X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBpbnQgbnJf cGFnZXMpCgpQbGVhc2UgdXNlIHRoZSB0eXBlIGdmbl90IHJhdGhlciBwYWRkcl90LAoKPiArewo+ ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwo+ICsK PiArICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKyApCj4gKyAgICB7Cj4gKyAgICAg ICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIChncGEgPj4gUEFHRV9TSElGVCkgKyBpLCBO VUxMLCBQMk1fQUxMT0MpOwoKR2V0IHBhZ2UgbWF5IHJldHVybiBhIGZvcmVpZ24gcGFnZSAoZS5n IGJlbG9uZ2luZyB0byBhbm90aGVyIGRvbWFpbikgYW5kIAp3ZSBkb24ndCB3YW50IHRvIHVzZSB0 aGlzIHR5cGUgb2YgcGFnZSBmb3IgSVRTIG1lbW9yeS4KCj4gKyAgICAgICAgaWYgKCAhcGFnZSAp Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAvKiBNYWtlIHN1cmUgd2UgZHJvcCB0aGUgcmVm ZXJlbmNlcyBvZiBwYWdlcyB3ZSBnb3Qgc28gZmFyLiAqLwo+ICsgICAgICAgICAgICBwdXRfZ3Vl c3RfcGFnZXMoZCwgZ3BhLCBpKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIHB1 dF9ndWVzdF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGdwYSwgdW5zaWduZWQgaW50 IG5yX3BhZ2VzKQoKU2FtZSBjb21tZW50cyBhcyBhYm92ZS4KCj4gK3sKPiArICAgIG1mbl90IG1m bjsKPiArICAgIGludCBpOwoKdW5zaWduZWQgaW50Cgo+ICsKPiArICAgIHAybV9yZWFkX2xvY2so JmQtPmFyY2gucDJtKTsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKyApCj4g KyAgICB7Cj4gKyAgICAgICAgbWZuID0gcDJtX2dldF9lbnRyeSgmZC0+YXJjaC5wMm0sIF9nZm4o KGdwYSA+PiBQQUdFX1NISUZUKSArIGkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgTlVMTCwgTlVMTCk7Cj4gKyAgICAgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01G TikgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9f cGFnZShtZm5feChtZm4pKSk7CgpUaGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlbHkgd3JvbmcgaW4g dGhlIGFjdHVhbCBzdGF0ZS4gWW91IGFzc3VtZSB0aGF0IAp0aGUgc3RhZ2UtMiBwYWdlIHRhYmxl IGhhcyBub3QgYmVlbiBtb2RpZmllZCBieSB0aGUgZ3Vlc3QgYmV0d2VlbiAKZ2V0X2d1ZXN0X3Bh Z2VzIGFuZCBwdXRfZ3Vlc3RfcGFnZXMuIElmIGl0IGhhcyBiZWVuIG1vZGlmaWVkLCB5b3UgbWF5 IApyZW1vdmUgYSByZWZlcmVuY2Ugb24gdGhlIHdyb25nIHBhZ2UuCgpGdXJ0aGVybW9yZSwgaXQg aXMgbGlrZWx5IGFuIGVycm9yIHRvIGhhdmUgdGhlIG1mbiBub3QgdmFsaWQgaW4gdGhpcyBjYXNl LgoKQXMgd2UgZGlzY3Vzc2VkIGVhcmxpZXIsIHRoZSB3YXkgZm9yd2FyZCBpcyB0byBwcm90ZWN0 IHRoZSBwYWdlcy4gSXQgaXMgCm5vdCBtYW5kYXRvcnkgZm9yIERPTTAsIGJ1dCBhIGNvbW1lbnQg aW4gdGhlIGNvZGUgaXMgbmVjZXNzYXJ5IHRvIApleHBsYWluIHdoYXQgaXMgbWlzc2luZy4KCj4g KyAgICB9Cj4gKyAgICBwMm1fcmVhZF91bmxvY2soJmQtPmFyY2gucDJtKTsKPiArfQo+ICsKPiAr LyoKPiArICogUHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gZ3Vlc3QgbWVtb3J5IGJ5ICJtYXBwaW5n IiBvbmUgcGFnZSBvZiBpdCBpbnRvCj4gKyAqIFhlbidzIFZBIHNwYWNlLiBJbiBmYWN0IGl0IHJl bGllcyBvbiB0aGUgbWVtb3J5IGJlaW5nIGFscmVhZHkgbWFwcGVkCj4gKyAqIGFuZCBqdXN0IHBy b3ZpZGVzIGEgcG9pbnRlciB0byBpdC4KPiArICovCj4gK3ZvaWQgKm1hcF9vbmVfZ3Vlc3RfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGd1ZXN0X2FkZHIpCj4gK3sKClRoaXMgbWlnaHQg YmUgY29ycmVjdCBmb3IgRE9NMCBidXQgd2lsbCBub3Qgd29yayBmb3IgZ3Vlc3QuIEV2ZW4gaWYg eW91IApkb24ndCBzdXBwb3J0IGd1ZXN0IHJpZ2h0IG5vdywgd2Ugc2hvdWxkIHJlYWxseSBhdm9p ZCBzdWNoIGFzc3VtcHRpb24gaW4gCnRoZSBjb2RlLiBJdCB3aWxsIGxpa2VseSBtZWFuIHF1aXRl IGEgbG90IG9mIHJld29yayB3aGljaCBJJ2QgbGlrZSB0byAKc2VlIG5vdy4KCkxvb2tpbmcgYXQg aG93IHlvdSB1c2UgdGhpcywgaXQgd291bGQgbWFrZSBtb3JlIHNlbnNlIHRvIGhhdmUgYW4gaGVs cGVyIAp0byBjb3B5IGZyb20gdGhlIGd1ZXN0IG1lbW9yeSB0byBhIGJ1ZmZlci4gSSB0aGluayB0 aGlzIGlzIG5vdCB0aGUgZmlyc3QgCnRpbWUgSSBhbSBzdWdnZXN0aW5nIHRoYXQuCgpJIHRoaW5r IHRoaXMgd291bGQgYWxzbyBhdm9pZCBwcm90ZWN0aW5nIHRoZSBndWVzdCBtZW1vcnkuCgpGb3Ig YW4gZXhhbXBsZSBvZiB3aGF0IEkgbWVhbnQgZ2l2ZSBhIGxvb2sgdG8gdGhlIHZJVFMgc2VyaWVz IHNlbnQgYnkgCkNhdml1bSBhIHllYXIgYWdvOgoKaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC84MTc3MjUxLwoKPiArICAgIHZvaWQgKnB0ciA9IG1hcF9kb21haW5fcGFnZShfbWZu KGd1ZXN0X2FkZHIgPj4gUEFHRV9TSElGVCkpOwo+ICsKPiArICAgIHJldHVybiBwdHIgKyAoZ3Vl c3RfYWRkciAmIH5QQUdFX01BU0spOwo+ICt9Cj4gKwo+ICsvKiAiVW5tYXAiIGEgcHJldmlvdXNs eSBtYXBwZWQgZ3Vlc3QgcGFnZS4gQ291bGQgYmUgb3B0aW1pemVkIGF3YXkuICovCj4gK3ZvaWQg dW5tYXBfb25lX2d1ZXN0X3BhZ2Uodm9pZCAqdmEpCj4gK3sKPiArICAgIHVubWFwX2RvbWFpbl9w YWdlKCgodWludHB0cl90KXZhICYgUEFHRV9NQVNLKSk7Cj4gK30KPiArCj4gKy8qCj4gICAqIExv Y2FsIHZhcmlhYmxlczoKPiAgICogbW9kZTogQwo+ICAgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4g ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9h c20tYXJtL2RvbWFpbi5oCj4gaW5kZXggNmVlNzUzOC4uZjQ2MDQ1NyAxMDA2NDQKPiAtLS0gYS94 ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9k b21haW4uaAo+IEBAIC0xMDksNiArMTA5LDggQEAgc3RydWN0IGFyY2hfZG9tYWluCj4gICAgICAg ICAgfSAqcmRpc3RfcmVnaW9uczsKPiAgICAgICAgICBpbnQgbnJfcmVnaW9uczsgICAgICAgICAg ICAgICAgICAgICAvKiBOdW1iZXIgb2YgcmRpc3QgcmVnaW9ucyAqLwo+ICAgICAgICAgIHVpbnQz Ml90IHJkaXN0X3N0cmlkZTsgICAgICAgICAgICAgIC8qIFJlLURpc3RyaWJ1dG9yIHN0cmlkZSAq Lwo+ICsgICAgICAgIHVuc2lnbmVkIGludCBucl9scGlzOwoKWW91IHN3aXRjaGVkIHRvICJ1bnNp Z25lZCBsb25nIiBpbiB0aGUgZ2ljLXYzLWl0cyBjb2RlLCBidXQgc3RpbGwga2VlcCAKInVuc2ln bmVkIGludCIgaGVyZS4KCldoeSB0aGF0PwoKWy4uLl0KCj4gKyAgICAgICAgdWludDY0X3QgcmRp c3RfcHJvcGJhc2U7Cj4gICAgICAgICAgc3RydWN0IHJiX3Jvb3QgaXRzX2RldmljZXM7ICAgICAg ICAgLyogRGV2aWNlcyBtYXBwZWQgdG8gYW4gSVRTICovCj4gICAgICAgICAgc3BpbmxvY2tfdCBp dHNfZGV2aWNlc19sb2NrOyAgICAgICAgLyogUHJvdGVjdHMgdGhlIGl0c19kZXZpY2VzIHRyZWUg Ki8KPiAgICAgICAgICBzdHJ1Y3QgcmFkaXhfdHJlZV9yb290IHBlbmRfbHBpX3RyZWU7IC8qIFN0 b3JlcyBzdHJ1Y3QgcGVuZGluZ19pcnEncyAqLwo+IEBAIC0yNTYsNyArMjU4LDkgQEAgc3RydWN0 IGFyY2hfdmNwdQo+Cj4gICAgICAgICAgLyogR0lDdjM6IHJlZGlzdHJpYnV0b3IgYmFzZSBhbmQg ZmxhZ3MgZm9yIHRoaXMgdkNQVSAqLwo+ICAgICAgICAgIHBhZGRyX3QgcmRpc3RfYmFzZTsKPiAt I2RlZmluZSBWR0lDX1YzX1JESVNUX0xBU1QgICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUg b2YgdGhlIHJkaXN0ICovCj4gKyAgICAgICAgdWludDY0X3QgcmRpc3RfcGVuZGJhc2U7Cj4gKyNk ZWZpbmUgVkdJQ19WM19SRElTVF9MQVNUICAgICAgKDEgPDwgMCkgICAgICAgIC8qIGxhc3QgdkNQ VSBvZiB0aGUgcmRpc3QgKi8KPiArI2RlZmluZSBWR0lDX1YzX0xQSVNfRU5BQkxFRCAgICAoMSA8 PCAxKQo+ICAgICAgICAgIHVpbnQ4X3QgZmxhZ3M7Cj4gICAgICB9IHZnaWM7Cj4KPiBkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3Zn aWMuaAo+IGluZGV4IGEyNGE5NzEuLmI1YWUzZTkgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUv YXNtLWFybS92Z2ljLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaAo+IEBAIC0z MTIsNiArMzEyLDggQEAgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFp biAqZCwgY29uc3Qgc3RydWN0IHZnaWNfb3BzICpvcHMpOwo+ICBpbnQgdmdpY192Ml9pbml0KHN0 cnVjdCBkb21haW4gKmQsIGludCAqbW1pb19jb3VudCk7Cj4gIGludCB2Z2ljX3YzX2luaXQoc3Ry dWN0IGRvbWFpbiAqZCwgaW50ICptbWlvX2NvdW50KTsKPgo+ICtleHRlcm4gaW50IHZnaWNfbHBp X2dldF9wcmlvcml0eShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKTsKClByb3RvdHlw ZSBzaG91bGQgYmUgYWRkZWQgaW4gdGhlIHNhbWUgcGF0Y2ggYXMgdGhlIGRlY2xhcmF0aW9uLiBT byAKcGxlYXNlIG1vdmUgdG8gcGF0Y2ggIzEwLgoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==