From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [RFC PATCH v2 12/26] ARM: vGICv3: handle virtual LPI pending and property tables Date: Thu, 5 Jan 2017 14:17:27 -0800 (PST) Message-ID: References: <20161222182446.18791-1-andre.przywara@arm.com> <20161222182446.18791-13-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 1cPGLn-0003lF-Bz for xen-devel@lists.xenproject.org; Thu, 05 Jan 2017 22:17:35 +0000 In-Reply-To: <20161222182446.18791-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 Cc: xen-devel@lists.xenproject.org, Julien Grall , Stefano Stabellini , Vijay Kilari List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyMiBEZWMgMjAxNiwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gQWxsb3cgYSBndWVz dCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUgbWVtb3J5IHJlZ2lvbnMK PiBpdCBoYXMgcmVzZXJ2ZWQgZm9yIHRoZSBHSUN2MyBwZW5kaW5nIGFuZCBwcm9wZXJ0eSB0YWJs ZXMuCj4gV2Ugc2FuaXRpc2UgdGhlIHZhcmlvdXMgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIHJl ZGlzdHJpYnV0b3IKPiByZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdlcyBpbnRvIFhlbidzIGFk ZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5Cj4gYWNjZXNzLgoKTWFueSBjb21tZW50cyBzdGlsbCB1 bmFkZHJlc3NlZAoKCj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3 YXJhQGFybS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAgfCAyMDIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICB4ZW4vYXJjaC9h cm0vdmdpYy5jICAgICAgICAgIHwgICA0ICsKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aCB8ICAgOCArLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAgIHwgICA0ICsKPiAgNCBm aWxlcyBjaGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12My5j Cj4gaW5kZXggMGZmZGU3NC4uYjk4MWQ0ZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdp Yy12My5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+IEBAIC0yMCwxMiArMjAsMTQg QEAKPiAgCj4gICNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+Cj4gICNpbmNsdWRlIDx4ZW4vY29uZmln Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KPiAgI2luY2x1ZGUgPHhlbi9saWIu aD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4gICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgo+ ICAjaW5jbHVkZSA8eGVuL2lycS5oPgo+ICAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gICNpbmNs dWRlIDx4ZW4vc2l6ZXMuaD4KPiArI2luY2x1ZGUgPHhlbi92bWFwLmg+Cj4gICNpbmNsdWRlIDxh c20vY3VycmVudC5oPgo+ICAjaW5jbHVkZSA8YXNtL21taW8uaD4KPiAgI2luY2x1ZGUgPGFzbS9n aWNfdjNfZGVmcy5oPgo+IEBAIC0yMjksMTIgKzIzMSwxNCBAQCBzdGF0aWMgaW50IF9fdmdpY192 M19yZGlzdHJfcmRfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywK PiAgICAgICAgICBnb3RvIHJlYWRfcmVzZXJ2ZWQ7Cj4gIAo+ICAgICAgY2FzZSBWUkVHNjQoR0lD Ul9QUk9QQkFTRVIpOgo+IC0gICAgICAgIC8qIExQSSdzIG5vdCBpbXBsZW1lbnRlZCAqLwo+IC0g ICAgICAgIGdvdG8gcmVhZF9hc196ZXJvXzY0Owo+ICsgICAgICAgIGlmICggIXZnaWNfcmVnNjRf Y2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7Cj4gKyAgICAgICAgKnIgPSB2Z2lj X3JlZzY0X2V4dHJhY3Qodi0+ZG9tYWluLT5hcmNoLnZnaWMucmRpc3RfcHJvcGJhc2UsIGluZm8p Owo+ICsgICAgICAgIHJldHVybiAxOwo+ICAKPiAgICAgIGNhc2UgVlJFRzY0KEdJQ1JfUEVOREJB U0VSKToKPiAtICAgICAgICAvKiBMUEkncyBub3QgaW1wbGVtZW50ZWQgKi8KPiAtICAgICAgICBn b3RvIHJlYWRfYXNfemVyb182NDsKPiArICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2Fj Y2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsgICAgICAgICpyID0gdmdpY19yZWc2NF9l eHRyYWN0KHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZSwgaW5mbyk7Cj4gKyAgICAgICAgcmV0 dXJuIDE7Cj4gIAo+ICAgICAgY2FzZSAweDAwODA6Cj4gICAgICAgICAgZ290byByZWFkX3Jlc2Vy dmVkOwo+IEBAIC0zMDIsMTEgKzMwNiw2IEBAIGJhZF93aWR0aDoKPiAgICAgIGRvbWFpbl9jcmFz aF9zeW5jaHJvbm91cygpOwo+ICAgICAgcmV0dXJuIDA7Cj4gIAo+IC1yZWFkX2FzX3plcm9fNjQ6 Cj4gLSAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dp ZHRoOwo+IC0gICAgKnIgPSAwOwo+IC0gICAgcmV0dXJuIDE7Cj4gLQo+ICByZWFkX2FzX3plcm9f MzI6Cj4gICAgICBpZiAoIGRhYnQuc2l6ZSAhPSBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsK PiAgICAgICpyID0gMDsKPiBAQCAtMzMxLDYgKzMzMCwxNDMgQEAgcmVhZF91bmtub3duOgo+ICAg ICAgcmV0dXJuIDE7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1aW50NjRfdCB2Z2ljX3Nhbml0aXNlX2Zp ZWxkKHVpbnQ2NF90IHJlZywgdWludDY0X3QgZmllbGRfbWFzaywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkX3NoaWZ0LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAoKnNhbml0aXNlX2ZuKSh1aW50NjRfdCkpCj4g K3sKPiArICAgIHVpbnQ2NF90IGZpZWxkID0gKHJlZyAmIGZpZWxkX21hc2spID4+IGZpZWxkX3No aWZ0Owo+ICsKPiArICAgIGZpZWxkID0gc2FuaXRpc2VfZm4oZmllbGQpIDw8IGZpZWxkX3NoaWZ0 Owo+ICsgICAgcmV0dXJuIChyZWcgJiB+ZmllbGRfbWFzaykgfCBmaWVsZDsKPiArfQo+ICsKPiAr LyogV2Ugd2FudCB0byBhdm9pZCBvdXRlciBzaGFyZWFibGUuICovCj4gK3N0YXRpYyB1aW50NjRf dCB2Z2ljX3Nhbml0aXNlX3NoYXJlYWJpbGl0eSh1aW50NjRfdCBmaWVsZCkKPiArewo+ICsgICAg c3dpdGNoIChmaWVsZCkgewo+ICsgICAgY2FzZSBHSUNfQkFTRVJfT3V0ZXJTaGFyZWFibGU6Cj4g KyAgICAgICAgcmV0dXJuIEdJQ19CQVNFUl9Jbm5lclNoYXJlYWJsZTsKPiArICAgIGRlZmF1bHQ6 Cj4gKyAgICAgICAgcmV0dXJuIGZpZWxkOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvKiBBdm9pZCBh bnkgaW5uZXIgbm9uLWNhY2hlYWJsZSBtYXBwaW5nLiAqLwo+ICtzdGF0aWMgdWludDY0X3Qgdmdp Y19zYW5pdGlzZV9pbm5lcl9jYWNoZWFiaWxpdHkodWludDY0X3QgZmllbGQpCj4gK3sKPiArICAg IHN3aXRjaCAoZmllbGQpIHsKPiArICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25DbkI6Cj4gKyAg ICBjYXNlIEdJQ19CQVNFUl9DQUNIRV9uQzoKPiArICAgICAgICByZXR1cm4gR0lDX0JBU0VSX0NB Q0hFX1JhV2I7Cj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIHJldHVybiBmaWVsZDsKPiArICAg IH0KPiArfQo+ICsKPiArLyogTm9uLWNhY2hlYWJsZSBvciBzYW1lLWFzLWlubmVyIGFyZSBPSy4g Ki8KPiArc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2Vfb3V0ZXJfY2FjaGVhYmlsaXR5KHVp bnQ2NF90IGZpZWxkKQo+ICt7Cj4gKyAgICBzd2l0Y2ggKGZpZWxkKSB7Cj4gKyAgICBjYXNlIEdJ Q19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lcjoKPiArICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25D Ogo+ICsgICAgICAgIHJldHVybiBmaWVsZDsKPiArICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgcmV0 dXJuIEdJQ19CQVNFUl9DQUNIRV9uQzsKPiArICAgIH0KPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2 NF90IHNhbml0aXplX3Byb3BiYXNlcih1aW50NjRfdCByZWcpCj4gK3sKPiArICAgIHJlZyA9IHZn aWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BST1BCQVNFUl9TSEFSRUFCSUxJVFlfTUFTSywK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklM SVRZX1NISUZULAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2ljX3Nhbml0aXNl X3NoYXJlYWJpbGl0eSk7Cj4gKyAgICByZWcgPSB2Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lD Ul9QUk9QQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX01BU0ssCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdJQ1JfUFJPUEJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9pbm5lcl9jYWNoZWFi aWxpdHkpOwo+ICsgICAgcmVnID0gdmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUFJPUEJB U0VSX09VVEVSX0NBQ0hFQUJJTElUWV9NQVNLLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHSUNSX1BST1BCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2Vfb3V0ZXJfY2FjaGVhYmlsaXR5KTsK PiArCj4gKyAgICByZWcgJj0gflBST1BCQVNFUl9SRVMwX01BU0s7Cj4gKyAgICByZWcgJj0gfkdF Tk1BU0soNTEsIDQ4KTsKPiArICAgIHJldHVybiByZWc7Cj4gK30KPiArCj4gK3N0YXRpYyB1aW50 NjRfdCBzYW5pdGl6ZV9wZW5kYmFzZXIodWludDY0X3QgcmVnKQo+ICt7Cj4gKyAgICByZWcgPSB2 Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX01BU0ss Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJ TElUWV9TSElGVCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlz ZV9zaGFyZWFiaWxpdHkpOwo+ICsgICAgcmVnID0gdmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJ Q1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9NQVNLLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHSUNSX1BFTkRCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVh YmlsaXR5KTsKPiArICAgIHJlZyA9IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BFTkRC QVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfTUFTSywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZULAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX291dGVyX2NhY2hlYWJpbGl0eSk7 Cj4gKwo+ICsgICAgcmVnICY9IH5QRU5EQkFTRVJfUkVTMF9NQVNLOwo+ICsgICAgcmVnICY9IH5H RU5NQVNLKDUxLCA0OCk7Cj4gKyAgICByZXR1cm4gcmVnOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBB bGxvdyBtYXBwaW5nIHNvbWUgcGFydHMgb2YgZ3Vlc3QgbWVtb3J5IGludG8gWGVuJ3MgVkEgc3Bh Y2UgdG8gaGF2ZSBlYXN5Cj4gKyAqIGFjY2VzcyB0byBpdC4gVGhpcyBpcyB0byBhbGxvdyBJVFMg Y29uZmlndXJhdGlvbiBkYXRhIHRvIGJlIGhlbGQgaW4KPiArICogZ3Vlc3QgbWVtb3J5IGFuZCBh dm9pZCB1c2luZyBYZW4gbWVtb3J5IGZvciB0aGF0Lgo+ICsgKi8KPiArdm9pZCAqbWFwX2d1ZXN0 X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3Vlc3RfYWRkciwgaW50IG5yX3BhZ2Vz KQo+ICt7Cj4gKyAgICBtZm5fdCBvbmVwYWdlOwo+ICsgICAgbWZuX3QgKnBhZ2VzOwo+ICsgICAg aW50IGk7Cj4gKyAgICB2b2lkICpwdHI7Cj4gKwo+ICsgICAgLyogVE9ETzogZnJlZSBwcmV2aW91 cyBtYXBwaW5nLCBjaGFuZ2UgcHJvdG90eXBlPyB1c2UgZ2V0LXB1dC1wdXQ/ICovCj4gKwo+ICsg ICAgZ3Vlc3RfYWRkciAmPSBQQUdFX01BU0s7Cj4gKwo+ICsgICAgaWYgKCBucl9wYWdlcyA9PSAx ICkKPiArICAgIHsKPiArICAgICAgICBwYWdlcyA9ICZvbmVwYWdlOwo+ICsgICAgfSBlbHNlCj4g KyAgICB7Cj4gKyAgICAgICAgcGFnZXMgPSB4bWFsbG9jX2FycmF5KG1mbl90LCBucl9wYWdlcyk7 Cj4gKyAgICAgICAgaWYgKCAhcGFnZXMgKQo+ICsgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiAr ICAgIH0KPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX3BhZ2VzOyBpKysgKQo+ICsgICAg ewo+ICsgICAgICAgIGdldF9wYWdlX2Zyb21fZ2ZuKGQsIChndWVzdF9hZGRyID4+IFBBR0VfU0hJ RlQpICsgaSwgTlVMTCwgUDJNX0FMTE9DKTsKPiArICAgICAgICBwYWdlc1tpXSA9IF9tZm4oKGd1 ZXN0X2FkZHIgKyBpICogUEFHRV9TSVpFKSA+PiBQQUdFX1NISUZUKTsKPiArICAgIH0KPiArCj4g KyAgICBwdHIgPSB2bWFwKHBhZ2VzLCBucl9wYWdlcyk7Cj4gKwo+ICsgICAgaWYgKCBucl9wYWdl cyA+IDEgKQo+ICsgICAgICAgIHhmcmVlKHBhZ2VzKTsKPiArCj4gKyAgICByZXR1cm4gcHRyOwo+ ICt9Cj4gKwo+ICt2b2lkIHVubWFwX2d1ZXN0X3BhZ2VzKHZvaWQgKnZhLCBpbnQgbnJfcGFnZXMp Cj4gK3sKPiArICAgIHBhZGRyX3QgcGE7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGk7Cj4gKwo+ICsg ICAgaWYgKCAhdmEgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICB2YSA9ICh2b2lkICop KCh1aW50cHRyX3QpdmEgJiBQQUdFX01BU0spOwo+ICsgICAgcGEgPSB2aXJ0X3RvX21hZGRyKHZh KTsKPiArCj4gKyAgICB2dW5tYXAodmEpOwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBucl9wYWdl czsgaSsrICkKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZSgocGEgPj4gUEFHRV9TSElG VCkgKyBpKSk7Cj4gKwo+ICsgICAgcmV0dXJuOwo+ICt9Cj4gKwo+ICBpbnQgdmdpY19scGlfZ2V0 X3ByaW9yaXR5KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkpCj4gIHsKPiAgICAgIGlm ICggdmxwaSA+PSBkLT5hcmNoLnZnaWMubnJfbHBpcyApCj4gQEAgLTMzOSwxMSArNDc1LDIwIEBA IGludCB2Z2ljX2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3Qgdmxw aSkKPiAgICAgIHJldHVybiBkLT5hcmNoLnZnaWMucHJvcHRhYmxlW3ZscGkgLSA4MTkyXSAmIDB4 ZmM7Cj4gIH0KPiAgCj4gK2Jvb2wgdmdpY19scGlfaXNfZW5hYmxlZChzdHJ1Y3QgZG9tYWluICpk LCB1aW50MzJfdCB2bHBpKQo+ICt7Cj4gKyAgICBpZiAoIHZscGkgPj0gZC0+YXJjaC52Z2ljLm5y X2xwaXMgKQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiArCj4gKyAgICByZXR1cm4gZC0+YXJj aC52Z2ljLnByb3B0YWJsZVt2bHBpIC0gODE5Ml0gJiBMUElfUFJPUF9FTkFCTEVEOwo+ICt9Cj4g Kwo+ICBzdGF0aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb193cml0ZShzdHJ1Y3QgdmNw dSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IGdpY3JfcmVnLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90IHIpCj4gIHsKPiAgICAgIHN0cnVjdCBoc3Jf ZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKPiArICAgIHVpbnQ2NF90IHJlZzsKPiAgCj4gICAgICBz d2l0Y2ggKCBnaWNyX3JlZyApCj4gICAgICB7Cj4gQEAgLTM4NCwxMyArNTI5LDQyIEBAIHN0YXRp YyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywKPiAgICAgIGNhc2UgMHgwMDUwOgo+ICAgICAgICAgIGdvdG8gd3JpdGVf cmVzZXJ2ZWQ7Cj4gIAo+IC0gICAgY2FzZSBWUkVHNjQoR0lDUl9QUk9QQkFTRVIpOgo+IC0gICAg ICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KPiAtICAgICAgICBnb3RvIHdyaXRlX2ln bm9yZV82NDsKPiArICAgIGNhc2UgVlJFRzY0KEdJQ1JfUFJPUEJBU0VSKTogewo+ICsgICAgICAg IGludCBucl9wYWdlczsKPiArCj4gKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUgPCBEQUJU X1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKPiArICAgICAgICBpZiAoIHYtPmFyY2gudmdpYy5mbGFn cyAmIFZHSUNfVjNfTFBJU19FTkFCTEVEICkKPiArICAgICAgICAgICAgcmV0dXJuIDE7Cj4gIAo+ ICsgICAgICAgIHJlZyA9IHYtPmRvbWFpbi0+YXJjaC52Z2ljLnJkaXN0X3Byb3BiYXNlOwo+ICsg ICAgICAgIGlmICggdi0+ZG9tYWluLT5hcmNoLnZnaWMucHJvcHRhYmxlICkKPiArICAgICAgICB7 Cj4gKyAgICAgICAgICAgIG5yX3BhZ2VzID0gQklUKChyZWcgJiAweDFmKSArIDEpIC0gODE5MjsK PiArICAgICAgICAgICAgbnJfcGFnZXMgPSBESVZfUk9VTkRfVVAobnJfcGFnZXMsIFBBR0VfU0la RSk7Cj4gKyAgICAgICAgICAgIHVubWFwX2d1ZXN0X3BhZ2VzKHYtPmRvbWFpbi0+YXJjaC52Z2lj LnByb3B0YWJsZSwgbnJfcGFnZXMpOwo+ICsgICAgICAgIH0KPiArICAgICAgICB2Z2ljX3JlZzY0 X3VwZGF0ZSgmcmVnLCByLCBpbmZvKTsKPiArICAgICAgICByZWcgPSBzYW5pdGl6ZV9wcm9wYmFz ZXIocmVnKTsKPiArICAgICAgICB2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9wcm9wYmFzZSA9 IHJlZzsKPiArCj4gKyAgICAgICAgdi0+ZG9tYWluLT5hcmNoLnZnaWMubnJfbHBpcyA9IEJJVCgo cmVnICYgMHgxZikgKyAxKSAtIDgxOTI7Cj4gKyAgICAgICAgbnJfcGFnZXMgPSBESVZfUk9VTkRf VVAodi0+ZG9tYWluLT5hcmNoLnZnaWMubnJfbHBpcywgUEFHRV9TSVpFKTsKPiArICAgICAgICB2 LT5kb21haW4tPmFyY2gudmdpYy5wcm9wdGFibGUgPSBtYXBfZ3Vlc3RfcGFnZXModi0+ZG9tYWlu LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWcgJiBHRU5NQVNLKDQ3LCAxMiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3BhZ2VzKTsKPiArICAgICAgICByZXR1 cm4gMTsKPiArICAgIH0KPiAgICAgIGNhc2UgVlJFRzY0KEdJQ1JfUEVOREJBU0VSKToKPiAtICAg ICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCj4gLSAgICAgICAgZ290byB3cml0ZV9p Z25vcmVfNjQ7Cj4gKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUgPCBEQUJUX1dPUkQgKSBn b3RvIGJhZF93aWR0aDsKPiArCXJlZyA9IHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZTsKPiAr CXZnaWNfcmVnNjRfdXBkYXRlKCZyZWcsIHIsIGluZm8pOwo+ICsJcmVnID0gc2FuaXRpemVfcGVu ZGJhc2VyKHJlZyk7Cj4gKwl2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2UgPSByZWc7Cj4gKwo+ ICsgICAgICAgIHVubWFwX2d1ZXN0X3BhZ2VzKHYtPmFyY2gudmdpYy5wZW5kdGFibGUsIDE2KTsK PiArCXYtPmFyY2gudmdpYy5wZW5kdGFibGUgPSBtYXBfZ3Vlc3RfcGFnZXModi0+ZG9tYWluLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnICYg R0VOTUFTSyg0NywgMTIpLCAxNik7Cj4gKwlyZXR1cm4gMTsKPiAgCj4gICAgICBjYXNlIDB4MDA4 MDoKPiAgICAgICAgICBnb3RvIHdyaXRlX3Jlc2VydmVkOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vdmdpYy5jIGIveGVuL2FyY2gvYXJtL3ZnaWMuYwo+IGluZGV4IGYxNWViM2UuLjJhMzNh MGUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMuYwo+ICsrKyBiL3hlbi9hcmNoL2Fy bS92Z2ljLmMKPiBAQCAtNDk3LDYgKzQ5NywxMCBAQCBzdHJ1Y3QgcGVuZGluZ19pcnEgKmxwaV90 b19wZW5kaW5nKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgbHBpLAo+ICAgICAgICAgIGVt cHR5LT5waXJxLmlycSA9IGxwaTsKPiAgICAgIH0KPiAgCj4gKyAgICAvKiBVcGRhdGUgdGhlIGVu YWJsZWQgc3RhdHVzICovCj4gKyAgICBpZiAoIHZnaWNfbHBpX2lzX2VuYWJsZWQodi0+ZG9tYWlu LCBscGkpICkKPiArICAgICAgICBzZXRfYml0KEdJQ19JUlFfR1VFU1RfRU5BQkxFRCwgJmVtcHR5 LT5waXJxLnN0YXR1cyk7Cj4gKwo+ICAgICAgc3Bpbl91bmxvY2soJnYtPmFyY2gudmdpYy5wZW5k aW5nX2xwaV9saXN0X2xvY2spOwo+ICAKPiAgICAgIHJldHVybiAmZW1wdHktPnBpcnE7Cj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20t YXJtL2RvbWFpbi5oCj4gaW5kZXggMDJhZTJjZC4uNTQzZDA1OCAxMDA2NDQKPiAtLS0gYS94ZW4v aW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21h aW4uaAo+IEBAIC0xMDksNiArMTA5LDkgQEAgc3RydWN0IGFyY2hfZG9tYWluCj4gICAgICAgICAg fSAqcmRpc3RfcmVnaW9uczsKPiAgICAgICAgICBpbnQgbnJfcmVnaW9uczsgICAgICAgICAgICAg ICAgICAgICAvKiBOdW1iZXIgb2YgcmRpc3QgcmVnaW9ucyAqLwo+ICAgICAgICAgIHVpbnQzMl90 IHJkaXN0X3N0cmlkZTsgICAgICAgICAgICAgIC8qIFJlLURpc3RyaWJ1dG9yIHN0cmlkZSAqLwo+ ICsgICAgICAgIGludCBucl9scGlzOwo+ICsgICAgICAgIHVpbnQ2NF90IHJkaXN0X3Byb3BiYXNl Owo+ICsgICAgICAgIHVpbnQ4X3QgKnByb3B0YWJsZTsKPiAgICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGl0c19kZXZpY2VzOyAgICAgICAvKiBkZXZpY2VzIG1hcHBlZCB0byBhbiBJVFMgKi8KPiAg ICAgICAgICBzcGlubG9ja190IGl0c19kZXZpY2VzX2xvY2s7ICAgICAgICAvKiBwcm90ZWN0cyB0 aGUgaXRzX2RldmljZXMgbGlzdCAqLwo+ICAjZW5kaWYKPiBAQCAtMjU0LDcgKzI1NywxMCBAQCBz dHJ1Y3QgYXJjaF92Y3B1Cj4gIAo+ICAgICAgICAgIC8qIEdJQ3YzOiByZWRpc3RyaWJ1dG9yIGJh c2UgYW5kIGZsYWdzIGZvciB0aGlzIHZDUFUgKi8KPiAgICAgICAgICBwYWRkcl90IHJkaXN0X2Jh c2U7Cj4gLSNkZWZpbmUgVkdJQ19WM19SRElTVF9MQVNUICAoMSA8PCAwKSAgICAgICAgLyogbGFz dCB2Q1BVIG9mIHRoZSByZGlzdCAqLwo+ICsjZGVmaW5lIFZHSUNfVjNfUkRJU1RfTEFTVCAgICAg ICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUgb2YgdGhlIHJkaXN0ICovCj4gKyNkZWZpbmUg VkdJQ19WM19MUElTX0VOQUJMRUQgICAgKDEgPDwgMSkKPiArICAgICAgICB1aW50NjRfdCByZGlz dF9wZW5kYmFzZTsKPiArICAgICAgICB1bnNpZ25lZCBsb25nICpwZW5kdGFibGU7Cj4gICAgICAg ICAgdWludDhfdCBmbGFnczsKPiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbHBp X2xpc3Q7Cj4gICAgICAgICAgc3BpbmxvY2tfdCBwZW5kaW5nX2xwaV9saXN0X2xvY2s7ICAgLyog cHJvdGVjdHMgdGhlIHBlbmRpbmdfbHBpX2xpc3QgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS92Z2ljLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaAo+IGluZGV4IGE1 MDMzMjEuLjFjMTU3ZDMgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgK PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaAo+IEBAIC0yODUsNiArMjg1LDkgQEAg VkdJQ19SRUdfSEVMUEVSUygzMiwgMHgzKTsKPiAgCj4gICN1bmRlZiBWR0lDX1JFR19IRUxQRVJT Cj4gIAo+ICt2b2lkICptYXBfZ3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBn dWVzdF9hZGRyLCBpbnQgbnJfcGFnZXMpOwo+ICt2b2lkIHVubWFwX2d1ZXN0X3BhZ2VzKHZvaWQg KnZhLCBpbnQgbnJfcGFnZXMpOwo+ICsKPiAgZW51bSBnaWNfc2dpX21vZGU7Cj4gIAo+ICAvKgo+ IEBAIC0zMTIsNiArMzE1LDcgQEAgZXh0ZXJuIHN0cnVjdCB2Z2ljX2lycV9yYW5rICp2Z2ljX3Jh bmtfaXJxKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgaXJxKTsKPiAgZXh0ZXJuIGJvb2wg dmdpY19lbXVsYXRlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCB1bmlvbiBoc3IgaHNyKTsK PiAgZXh0ZXJuIHZvaWQgdmdpY19kaXNhYmxlX2lycXMoc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90 IHIsIGludCBuKTsKPiAgZXh0ZXJuIHZvaWQgdmdpY19lbmFibGVfaXJxcyhzdHJ1Y3QgdmNwdSAq diwgdWludDMyX3QgciwgaW50IG4pOwo+ICtleHRlcm4gYm9vbCB2Z2ljX2xwaV9pc19lbmFibGVk KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkpOwo+ICBleHRlcm4gaW50IHZnaWNfbHBp X2dldF9wcmlvcml0eShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKTsKPiAgZXh0ZXJu IHZvaWQgcmVnaXN0ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHZn aWNfb3BzICpvcHMpOwo+ICBpbnQgdmdpY192Ml9pbml0KHN0cnVjdCBkb21haW4gKmQsIGludCAq bW1pb19jb3VudCk7Cj4gLS0gCj4gMi45LjAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=