From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [RFC PATCH 11/24] ARM: vGICv3: handle virtual LPI pending and property tables Date: Thu, 3 Nov 2016 20:21:15 +0000 Message-ID: <1546eda5-fc0c-281b-a8dc-c6ea1ed188eb@arm.com> References: <20160928182457.12433-1-andre.przywara@arm.com> <20160928182457.12433-12-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c2OVG-0007y4-Dg for xen-devel@lists.xenproject.org; Thu, 03 Nov 2016 20:20:50 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Vijay Kilari Cc: xen-devel , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAyNC8xMC8xNiAxNjozMiwgVmlqYXkgS2lsYXJpIHdyb3RlOgo+IE9uIFdlZCwgU2Vw IDI4LCAyMDE2IGF0IDExOjU0IFBNLCBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJt LmNvbT4gd3JvdGU6Cj4+IEFsbG93IGEgZ3Vlc3QgdG8gcHJvdmlkZSB0aGUgYWRkcmVzcyBhbmQg c2l6ZSBmb3IgdGhlIG1lbW9yeSByZWdpb25zCj4+IGl0IGhhcyByZXNlcnZlZCBmb3IgdGhlIEdJ Q3YzIHBlbmRpbmcgYW5kIHByb3BlcnR5IHRhYmxlcy4KPj4gV2Ugc2FuaXRpc2UgdGhlIHZhcmlv dXMgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIHJlZGlzdHJpYnV0b3IKPj4gcmVnaXN0ZXJzIGFu ZCBtYXAgdGhvc2UgcGFnZXMgaW50byBYZW4ncyBhZGRyZXNzIHNwYWNlIHRvIGhhdmUgZWFzeQo+ PiBhY2Nlc3MuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5 d2FyYUBhcm0uY29tPgo+PiAtLS0KPj4gIHhlbi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAgIHwg MTg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiAgeGVuL2Fy Y2gvYXJtL3ZnaWMuYyAgICAgICAgICAgfCAgIDQgKwo+PiAgeGVuL2luY2x1ZGUvYXNtLWFybS9k b21haW4uaCAgfCAgIDcgKy0KPj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oIHwgIDEw ICsrLQo+PiAgeGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmggICAgfCAgIDMgKwo+PiAgNSBmaWxl cyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+ PiBpbmRleCBlOWI2NDkwLi44ZmU4Mzg2IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdp Yy12My5jCj4+ICsrKyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPj4gQEAgLTIwLDEyICsyMCwx NCBAQAo+Pgo+PiAgI2luY2x1ZGUgPHhlbi9iaXRvcHMuaD4KPj4gICNpbmNsdWRlIDx4ZW4vY29u ZmlnLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+Cj4+ICAjaW5jbHVkZSA8eGVu L2xpYi5oPgo+PiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4+ICAjaW5jbHVkZSA8eGVuL3NvZnRp cnEuaD4KPj4gICNpbmNsdWRlIDx4ZW4vaXJxLmg+Cj4+ICAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+ Cj4+ICAjaW5jbHVkZSA8eGVuL3NpemVzLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KPj4g ICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgo+PiAgI2luY2x1ZGUgPGFzbS9tbWlvLmg+Cj4+ICAj aW5jbHVkZSA8YXNtL2dpY192M19kZWZzLmg+Cj4+IEBAIC0yMjgsMTIgKzIzMCwxNCBAQCBzdGF0 aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywKPj4gICAgICAgICAgZ290byByZWFkX3Jlc2VydmVkOwo+Pgo+PiAgICAg IGNhc2UgVlJFRzY0KEdJQ1JfUFJPUEJBU0VSKToKPj4gLSAgICAgICAgLyogTFBJJ3Mgbm90IGlt cGxlbWVudGVkICovCj4+IC0gICAgICAgIGdvdG8gcmVhZF9hc196ZXJvXzY0Owo+PiArICAgICAg ICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ PiArICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdCh2LT5kb21haW4tPmFyY2gudmdpYy5y ZGlzdF9wcm9wYmFzZSwgaW5mbyk7Cj4+ICsgICAgICAgIHJldHVybiAxOwo+Pgo+PiAgICAgIGNh c2UgVlJFRzY0KEdJQ1JfUEVOREJBU0VSKToKPj4gLSAgICAgICAgLyogTFBJJ3Mgbm90IGltcGxl bWVudGVkICovCj4+IC0gICAgICAgIGdvdG8gcmVhZF9hc196ZXJvXzY0Owo+PiArICAgICAgICBp ZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+PiAr ICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdCh2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJh c2UsIGluZm8pOwo+PiArICAgICAgICByZXR1cm4gMTsKPj4KPj4gICAgICBjYXNlIDB4MDA4MDoK Pj4gICAgICAgICAgZ290byByZWFkX3Jlc2VydmVkOwo+PiBAQCAtMzAxLDExICszMDUsNiBAQCBi YWRfd2lkdGg6Cj4+ICAgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7Cj4+ICAgICAgcmV0 dXJuIDA7Cj4+Cj4+IC1yZWFkX2FzX3plcm9fNjQ6Cj4+IC0gICAgaWYgKCAhdmdpY19yZWc2NF9j aGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPj4gLSAgICAqciA9IDA7Cj4+IC0g ICAgcmV0dXJuIDE7Cj4+IC0KPj4gIHJlYWRfYXNfemVyb18zMjoKPj4gICAgICBpZiAoIGRhYnQu c2l6ZSAhPSBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKPj4gICAgICAqciA9IDA7Cj4+IEBA IC0zMzAsMTEgKzMyOSwxNDkgQEAgcmVhZF91bmtub3duOgo+PiAgICAgIHJldHVybiAxOwo+PiAg fQo+Pgo+PiArc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2VfZmllbGQodWludDY0X3QgcmVn LCB1aW50NjRfdCBmaWVsZF9tYXNrLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGZpZWxkX3NoaWZ0LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgKCpzYW5pdGlzZV9mbikodWludDY0X3QpKQo+PiArewo+PiArICAgIHVp bnQ2NF90IGZpZWxkID0gKHJlZyAmIGZpZWxkX21hc2spID4+IGZpZWxkX3NoaWZ0Owo+PiArCj4+ ICsgICAgZmllbGQgPSBzYW5pdGlzZV9mbihmaWVsZCkgPDwgZmllbGRfc2hpZnQ7Cj4+ICsgICAg cmV0dXJuIChyZWcgJiB+ZmllbGRfbWFzaykgfCBmaWVsZDsKPj4gK30KPj4gKwo+PiArLyogV2Ug d2FudCB0byBhdm9pZCBvdXRlciBzaGFyZWFibGUuICovCj4+ICtzdGF0aWMgdWludDY0X3Qgdmdp Y19zYW5pdGlzZV9zaGFyZWFiaWxpdHkodWludDY0X3QgZmllbGQpCj4+ICt7Cj4+ICsgICAgc3dp dGNoIChmaWVsZCkgewo+PiArICAgIGNhc2UgR0lDX0JBU0VSX091dGVyU2hhcmVhYmxlOgo+PiAr ICAgICAgICByZXR1cm4gR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxlOwo+PiArICAgIGRlZmF1bHQ6 Cj4+ICsgICAgICAgIHJldHVybiBmaWVsZDsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gKy8qIEF2 b2lkIGFueSBpbm5lciBub24tY2FjaGVhYmxlIG1hcHBpbmcuICovCj4+ICtzdGF0aWMgdWludDY0 X3QgdmdpY19zYW5pdGlzZV9pbm5lcl9jYWNoZWFiaWxpdHkodWludDY0X3QgZmllbGQpCj4+ICt7 Cj4+ICsgICAgc3dpdGNoIChmaWVsZCkgewo+PiArICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25D bkI6Cj4+ICsgICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkM6Cj4+ICsgICAgICAgIHJldHVybiBH SUNfQkFTRVJfQ0FDSEVfUmFXYjsKPj4gKyAgICBkZWZhdWx0Ogo+PiArICAgICAgICByZXR1cm4g ZmllbGQ7Cj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICsvKiBOb24tY2FjaGVhYmxlIG9yIHNhbWUt YXMtaW5uZXIgYXJlIE9LLiAqLwo+PiArc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2Vfb3V0 ZXJfY2FjaGVhYmlsaXR5KHVpbnQ2NF90IGZpZWxkKQo+PiArewo+PiArICAgIHN3aXRjaCAoZmll bGQpIHsKPj4gKyAgICBjYXNlIEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lcjoKPj4gKyAgICBj YXNlIEdJQ19CQVNFUl9DQUNIRV9uQzoKPj4gKyAgICAgICAgcmV0dXJuIGZpZWxkOwo+PiArICAg IGRlZmF1bHQ6Cj4+ICsgICAgICAgIHJldHVybiBHSUNfQkFTRVJfQ0FDSEVfbkM7Cj4+ICsgICAg fQo+PiArfQo+PiArCj4+ICtzdGF0aWMgdWludDY0X3Qgc2FuaXRpemVfcHJvcGJhc2VyKHVpbnQ2 NF90IHJlZykKPj4gK3sKPj4gKyAgICByZWcgPSB2Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lD Ul9QUk9QQkFTRVJfU0hBUkVBQklMSVRZX01BU0ssCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHSUNSX1BST1BCQVNFUl9TSEFSRUFCSUxJVFlfU0hJRlQsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX3NoYXJlYWJpbGl0eSk7Cj4+ICsgICAg cmVnID0gdmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUFJPUEJBU0VSX0lOTkVSX0NBQ0hF QUJJTElUWV9NQVNLLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lDUl9QUk9Q QkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NISUZULAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmdpY19zYW5pdGlzZV9pbm5lcl9jYWNoZWFiaWxpdHkpOwo+PiArICAgIHJlZyA9 IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BST1BCQVNFUl9PVVRFUl9DQUNIRUFCSUxJ VFlfTUFTSywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJQ1JfUFJPUEJBU0VS X09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZnaWNfc2FuaXRpc2Vfb3V0ZXJfY2FjaGVhYmlsaXR5KTsKPj4gKwo+PiArICAgIHJlZyAm PSB+UFJPUEJBU0VSX1JFUzBfTUFTSzsKPj4gKyAgICByZWcgJj0gfkdFTk1BU0soNTEsIDQ4KTsK Pj4gKyAgICByZXR1cm4gcmVnOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdWludDY0X3Qgc2FuaXRp emVfcGVuZGJhc2VyKHVpbnQ2NF90IHJlZykKPj4gK3sKPj4gKyAgICByZWcgPSB2Z2ljX3Nhbml0 aXNlX2ZpZWxkKHJlZywgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX01BU0ssCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNSX1BFTkRCQVNFUl9TSEFSRUFCSUxJVFlfU0hJ RlQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX3NoYXJl YWJpbGl0eSk7Cj4+ICsgICAgcmVnID0gdmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUEVO REJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9NQVNLLAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0lDUl9QRU5EQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NISUZULAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9pbm5lcl9jYWNoZWFiaWxp dHkpOwo+PiArICAgIHJlZyA9IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BFTkRCQVNF Ul9PVVRFUl9DQUNIRUFCSUxJVFlfTUFTSywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdJQ1JfUEVOREJBU0VSX09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2Vfb3V0ZXJfY2FjaGVhYmlsaXR5KTsK Pj4gKwo+PiArICAgIHJlZyAmPSB+UEVOREJBU0VSX1JFUzBfTUFTSzsKPj4gKyAgICByZWcgJj0g fkdFTk1BU0soNTEsIDQ4KTsKPj4gKyAgICByZXR1cm4gcmVnOwo+PiArfQo+PiArCj4+ICsvKgo+ PiArICogQWxsb3cgbWFwcGluZyBzb21lIHBhcnRzIG9mIGd1ZXN0IG1lbW9yeSBpbnRvIFhlbidz IFZBIHNwYWNlIHRvIGhhdmUgZWFzeQo+PiArICogYWNjZXNzIHRvIGl0LiBUaGlzIGlzIHRvIGFs bG93IElUUyBjb25maWd1cmF0aW9uIGRhdGEgdG8gYmUgaGVsZCBpbgo+PiArICogZ3Vlc3QgbWVt b3J5IGFuZCBhdm9pZCB1c2luZyBYZW4gbWVtb3J5IGZvciB0aGF0Lgo+PiArICovCj4+ICt2b2lk ICptYXBfZ3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBndWVzdF9hZGRyLCBp bnQgbnJfcGFnZXMpCj4gICAgSSB0aGluayB0aGlzIGZpbGUgaXMgbm90IHJpZ2h0IHBsYWNlIHRv IHB1dCB0aGlzIGdlbmVyaWMgZnVuY3Rpb24KClllYWgsIHBvc3NpYmx5LgoKPj4gK3sKPj4gKyAg ICBtZm5fdCBvbmVwYWdlOwo+PiArICAgIG1mbl90ICpwYWdlczsKPj4gKyAgICBpbnQgaTsKPj4g KyAgICB2b2lkICpwdHI7Cj4+ICsKPj4gKyAgICAvKiBUT0RPOiBmcmVlIHByZXZpb3VzIG1hcHBp bmcsIGNoYW5nZSBwcm90b3R5cGU/IHVzZSBnZXQtcHV0LXB1dD8gKi8KPj4gKwo+PiArICAgIGd1 ZXN0X2FkZHIgJj0gUEFHRV9NQVNLOwo+PiArCj4+ICsgICAgaWYgKCBucl9wYWdlcyA9PSAxICkK Pj4gKyAgICB7Cj4+ICsgICAgICAgIHBhZ2VzID0gJm9uZXBhZ2U7Cj4+ICsgICAgfSBlbHNlCj4+ ICsgICAgewo+PiArICAgICAgICBwYWdlcyA9IHhtYWxsb2NfYXJyYXkobWZuX3QsIG5yX3BhZ2Vz KTsKPj4gKyAgICAgICAgaWYgKCAhcGFnZXMgKQo+PiArICAgICAgICAgICAgcmV0dXJuIE5VTEw7 Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IG5yX3BhZ2VzOyBpKyspCj4+ ICsgICAgewo+PiArICAgICAgICBnZXRfcGFnZV9mcm9tX2dmbihkLCAoZ3Vlc3RfYWRkciA+PiBQ QUdFX1NISUZUKSArIGksIE5VTEwsIFAyTV9BTExPQyk7Cj4gCj4gICAgICAgICAgICAgIGNoZWNr IHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uCgpZZXMuCgo+PiArICAgICAgICBwYWdlc1tp XSA9IF9tZm4oKGd1ZXN0X2FkZHIgKyBpICogUEFHRV9TSVpFKSA+PiBQQUdFX1NISUZUKTsKPj4g KyAgICB9Cj4+ICsKPj4gKyAgICBwdHIgPSB2bWFwKHBhZ2VzLCBucl9wYWdlcyk7Cj4+ICsKPj4g KyAgICBpZiAoIG5yX3BhZ2VzID4gMSApCj4+ICsgICAgICAgIHhmcmVlKHBhZ2VzKTsKPj4gKwo+ PiArICAgIHJldHVybiBwdHI7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgdW5tYXBfZ3Vlc3RfcGFnZXMo dm9pZCAqdmEsIGludCBucl9wYWdlcykKPiAgICAgICBzYW1lIGhlcmUuIENhbiBiZSBwdXQgaW4g Z2VuZXJpYyBmaWxlIHAybS5jPwo+PiArewo+PiArICAgIHBhZGRyX3QgcGE7Cj4+ICsgICAgdW5z aWduZWQgbG9uZyBpOwo+PiArCj4+ICsgICAgaWYgKCAhdmEgKQo+PiArICAgICAgICByZXR1cm47 Cj4+ICsKPj4gKyAgICB2YSA9ICh2b2lkICopKCh1aW50cHRyX3QpdmEgJiBQQUdFX01BU0spOwo+ PiArICAgIHBhID0gdmlydF90b19tYWRkcih2YSk7Cj4gICBjYW4gdXNlIF9wYSgpCgpEbyB5b3Ug bWVhbiBfX3BhKCk/IFdoaWNoIGlzIGRlZmluZWQgdG8gYmUgZXhhY3RseSB2aXJ0X3RvX21hZGRy KCk/CkkgcHJlZmVyIHRoZSBtb3JlIHZlcmJvc2UgdmVyc2lvbiwgd2hpY2ggaXMgbW9yZSByZWFk YWJsZSwgSU1ITy4KCj4+ICsKPj4gKyAgICB2dW5tYXAodmEpOwo+PiArICAgIGZvciAoaSA9IDA7 IGkgPCBucl9wYWdlczsgaSsrKQo+PiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZSgocGEg Pj4gUEFHRV9TSElGVCkgKyBpKSk7Cj4+ICsKPj4gKyAgICByZXR1cm47Cj4+ICt9Cj4+ICsKPj4g IHN0YXRpYyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2 LCBtbWlvX2luZm9fdCAqaW5mbywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGdpY3JfcmVnLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCByKQo+PiAgewo+PiAgICAgIHN0cnVjdCBoc3Jf ZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKPj4gKyAgICB1aW50NjRfdCByZWc7Cj4+Cj4+ICAgICAg c3dpdGNoICggZ2ljcl9yZWcgKQo+PiAgICAgIHsKPj4gQEAgLTM3NSwxMyArNTEyLDM3IEBAIHN0 YXRpYyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBt bWlvX2luZm9fdCAqaW5mbywKPj4gICAgICBjYXNlIDB4MDA1MDoKPj4gICAgICAgICAgZ290byB3 cml0ZV9yZXNlcnZlZDsKPj4KPj4gLSAgICBjYXNlIFZSRUc2NChHSUNSX1BST1BCQVNFUik6Cj4+ IC0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KPj4gLSAgICAgICAgZ290byB3 cml0ZV9pZ25vcmVfNjQ7Cj4+ICsgICAgY2FzZSBWUkVHNjQoR0lDUl9QUk9QQkFTRVIpOiB7Cj4+ ICsgICAgICAgIGludCBucl9wYWdlczsKPj4gKwo+PiArICAgICAgICBpZiAoIGluZm8tPmRhYnQu c2l6ZSA8IERBQlRfV09SRCApIGdvdG8gYmFkX3dpZHRoOwo+PiArICAgICAgICBpZiAoIHYtPmFy Y2gudmdpYy5mbGFncyAmIFZHSUNfVjNfTFBJU19FTkFCTEVEICkKPj4gKyAgICAgICAgICAgIHJl dHVybiAxOwo+PiArCj4+ICsgICAgICAgIHJlZyA9IHYtPmRvbWFpbi0+YXJjaC52Z2ljLnJkaXN0 X3Byb3BiYXNlOwo+PiArICAgICAgICB2Z2ljX3JlZzY0X3VwZGF0ZSgmcmVnLCByLCBpbmZvKTsK Pj4gKyAgICAgICAgcmVnID0gc2FuaXRpemVfcHJvcGJhc2VyKHJlZyk7Cj4+ICsgICAgICAgIHYt PmRvbWFpbi0+YXJjaC52Z2ljLnJkaXN0X3Byb3BiYXNlID0gcmVnOwo+Pgo+PiArICAgICAgICBu cl9wYWdlcyA9IEJJVCgodi0+ZG9tYWluLT5hcmNoLnZnaWMucmRpc3RfcHJvcGJhc2UgJiAweDFm KSArIDEpIC0gODE5MjsKPiAgICAgICAgICAgICAgc2hvdWxkIGJlIHZhbGlkYXRlZCBhZ2FpbnN0 IEhPU1RfTFBJUz8KCkkgZG9uJ3QgdGhpbmsgc28uIFRoZSBhY3R1YWwgTFBJIG51bWJlcnMgYXJl IHRvdGFsbHkgaW5kZXBlbmRlbnQgYmV0d2Vlbgpob3N0IGFuZCBEb20wLgpTbyB3aHkgYW5kIGhv dyBzaG91bGQgdGhpcyBiZSBtYXRjaGVkPwoKPj4gKyAgICAgICAgbnJfcGFnZXMgPSBESVZfUk9V TkRfVVAobnJfcGFnZXMsIFBBR0VfU0laRSk7Cj4+ICsgICAgICAgIHVubWFwX2d1ZXN0X3BhZ2Vz KHYtPmRvbWFpbi0+YXJjaC52Z2ljLnByb3B0YWJsZSwgbnJfcGFnZXMpOwo+PiArICAgICAgICB2 LT5kb21haW4tPmFyY2gudmdpYy5wcm9wdGFibGUgPSBtYXBfZ3Vlc3RfcGFnZXModi0+ZG9tYWlu LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVnICYgR0VOTUFTSyg0NywgMTIpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJfcGFnZXMpOwo+PiArICAgICAgICBy ZXR1cm4gMTsKPj4gKyAgICB9Cj4+ICAgICAgY2FzZSBWUkVHNjQoR0lDUl9QRU5EQkFTRVIpOgo+ PiAtICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCj4+IC0gICAgICAgIGdvdG8g d3JpdGVfaWdub3JlXzY0Owo+PiArICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSA8IERBQlRf V09SRCApIGdvdG8gYmFkX3dpZHRoOwo+IAo+ICAgIGNoZWNrIG9uIFZHSUNfVjNfTFBJU19FTkFC TEVEIGlzIHJlcXVpcmVkCgpSaWdodCwgZm9yZ290IHRoaXMuCgo+PiArICAgICAgIHJlZyA9IHYt PmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZTsKPj4gKyAgICAgICB2Z2ljX3JlZzY0X3VwZGF0ZSgm cmVnLCByLCBpbmZvKTsKPj4gKyAgICAgICByZWcgPSBzYW5pdGl6ZV9wZW5kYmFzZXIocmVnKTsK Pj4gKyAgICAgICB2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2UgPSByZWc7Cj4+ICsKPj4gKyAg ICAgICAgdW5tYXBfZ3Vlc3RfcGFnZXModi0+YXJjaC52Z2ljLnBlbmR0YWJsZSwgMTYpOwo+ICAg ICAgd2h5IG9ubHkgMTYgcGFnZXMgYXJlIHVubWFwcGVkPwoKV2VsbCwgaXQgbWF0Y2hlcyB0aGUg YWxsb2NhdGlvbiBiZWxvdywgYnV0IEkgYWdyZWUgdGhhdCB0aGlzIHNob3VsZAptYXRjaCB0aGUg YWR2ZXJ0aXNlZCBudW1iZXIgb2YgTFBJcyBpbiBHSUNEX1RZUEVSLgoKQ2hlZXJzLApBbmRyZS4K Cj4+ICsgICAgICAgdi0+YXJjaC52Z2ljLnBlbmR0YWJsZSA9IG1hcF9ndWVzdF9wYWdlcyh2LT5k b21haW4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnICYgR0VOTUFTSyg0NywgMTIpLCAxNik7Cj4+ICsgICAgICAgcmV0dXJuIDE7Cj4+Cj4+ ICAgICAgY2FzZSAweDAwODA6Cj4+ICAgICAgICAgIGdvdG8gd3JpdGVfcmVzZXJ2ZWQ7Cj4+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy5jIGIveGVuL2FyY2gvYXJtL3ZnaWMuYwo+PiBp bmRleCBiOTYxNTUxLi40ZDkzMDRmIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy5j Cj4+ICsrKyBiL3hlbi9hcmNoL2FybS92Z2ljLmMKPj4gQEAgLTQ4OCw2ICs0ODgsMTAgQEAgc3Ry dWN0IHBlbmRpbmdfaXJxICpscGlfdG9fcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQg aW50IGxwaSwKPj4gICAgICAgICAgZW1wdHktPnBpcnEuaXJxID0gbHBpOwo+PiAgICAgIH0KPj4K Pj4gKyAgICAvKiBVcGRhdGUgdGhlIGVuYWJsZWQgc3RhdHVzICovCj4+ICsgICAgaWYgKCBnaWN2 M19scGlfaXNfZW5hYmxlZCh2LT5kb21haW4sIGxwaSkgKQo+PiArICAgICAgICBzZXRfYml0KEdJ Q19JUlFfR1VFU1RfRU5BQkxFRCwgJmVtcHR5LT5waXJxLnN0YXR1cyk7Cj4+ICsKPj4gICAgICBy ZXR1cm4gJmVtcHR5LT5waXJxOwo+PiAgfQo+Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLWFybS9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPj4gaW5kZXgg YWU4YTlkZS4uMGNkMzUwMCAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21h aW4uaAo+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4+IEBAIC0xMDksNiAr MTA5LDggQEAgc3RydWN0IGFyY2hfZG9tYWluCj4+ICAgICAgICAgIH0gKnJkaXN0X3JlZ2lvbnM7 Cj4+ICAgICAgICAgIGludCBucl9yZWdpb25zOyAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJl ciBvZiByZGlzdCByZWdpb25zICovCj4+ICAgICAgICAgIHVpbnQzMl90IHJkaXN0X3N0cmlkZTsg ICAgICAgICAgICAgIC8qIFJlLURpc3RyaWJ1dG9yIHN0cmlkZSAqLwo+PiArICAgICAgICB1aW50 NjRfdCByZGlzdF9wcm9wYmFzZTsKPj4gKyAgICAgICAgdWludDhfdCAqcHJvcHRhYmxlOwo+PiAg I2VuZGlmCj4+ICAgICAgfSB2Z2ljOwo+Pgo+PiBAQCAtMjQ3LDcgKzI0OSwxMCBAQCBzdHJ1Y3Qg YXJjaF92Y3B1Cj4+Cj4+ICAgICAgICAgIC8qIEdJQ3YzOiByZWRpc3RyaWJ1dG9yIGJhc2UgYW5k IGZsYWdzIGZvciB0aGlzIHZDUFUgKi8KPj4gICAgICAgICAgcGFkZHJfdCByZGlzdF9iYXNlOwo+ PiAtI2RlZmluZSBWR0lDX1YzX1JESVNUX0xBU1QgICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZD UFUgb2YgdGhlIHJkaXN0ICovCj4+ICsjZGVmaW5lIFZHSUNfVjNfUkRJU1RfTEFTVCAgICAgICgx IDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUgb2YgdGhlIHJkaXN0ICovCj4+ICsjZGVmaW5lIFZH SUNfVjNfTFBJU19FTkFCTEVEICAgICgxIDw8IDEpCj4+ICsgICAgICAgIHVpbnQ2NF90IHJkaXN0 X3BlbmRiYXNlOwo+PiArICAgICAgICB1bnNpZ25lZCBsb25nICpwZW5kdGFibGU7Cj4+ICAgICAg ICAgIHVpbnQ4X3QgZmxhZ3M7Cj4+ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19s cGlfbGlzdDsKPj4gICAgICB9IHZnaWM7Cj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t YXJtL2dpYy1pdHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4+IGluZGV4IDFm ODgxYzAuLjNiMmU1YzAgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0 cy5oCj4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4+IEBAIC0xMzksNyAr MTM5LDExIEBAIGludCBnaWN2M19scGlfZHJvcF9ob3N0X2xwaShzdHJ1Y3QgaG9zdF9pdHMgKml0 cywKPj4KPj4gIHN0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0 IGRvbWFpbiAqZCwgdWludDMyX3QgbHBpKQo+PiAgewo+PiAtICAgIHJldHVybiBHSUNfUFJJX0lS UTsKPj4gKyAgICByZXR1cm4gZC0+YXJjaC52Z2ljLnByb3B0YWJsZVtscGkgLSA4MTkyXSAmIDB4 ZmM7Cj4+ICt9Cj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZ2ljdjNfbHBpX2lzX2VuYWJsZWQoc3Ry dWN0IGRvbWFpbiAqZCwgdWludDMyX3QgbHBpKQo+PiArewo+PiArICAgIHJldHVybiBkLT5hcmNo LnZnaWMucHJvcHRhYmxlW2xwaSAtIDgxOTJdICYgTFBJX1BST1BfRU5BQkxFRDsKPj4gIH0KPj4K Pj4gICNlbHNlCj4+IEBAIC0xODUsNiArMTg5LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdpY3Yz X2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgbHBpKQo+PiAgewo+ PiAgICAgIHJldHVybiBHSUNfUFJJX0lSUTsKPj4gIH0KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBn aWN2M19scGlfaXNfZW5hYmxlZChzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBscGkpCj4+ICt7 Cj4+ICsgICAgcmV0dXJuIGZhbHNlOwo+PiArfQo+Pgo+PiAgI2VuZGlmIC8qIENPTkZJR19IQVNf SVRTICovCj4+Cj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oCj4+IGluZGV4IDRlMjliYTYuLjJiMjE2Y2MgMTAwNjQ0 Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oCj4+ICsrKyBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vdmdpYy5oCj4+IEBAIC0yODUsNiArMjg1LDkgQEAgVkdJQ19SRUdfSEVMUEVSUygz MiwgMHgzKTsKPj4KPj4gICN1bmRlZiBWR0lDX1JFR19IRUxQRVJTCj4+Cj4+ICt2b2lkICptYXBf Z3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBndWVzdF9hZGRyLCBpbnQgbnJf cGFnZXMpOwo+PiArdm9pZCB1bm1hcF9ndWVzdF9wYWdlcyh2b2lkICp2YSwgaW50IG5yX3BhZ2Vz KTsKPj4gKwo+PiAgZW51bSBnaWNfc2dpX21vZGU7Cj4+Cj4+ICAvKgo+PiAtLQo+PiAyLjkuMAo+ Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ PiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4+IGh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=