From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 08/27] ARM: GICv3 ITS: introduce host LPI array Date: Thu, 16 Mar 2017 11:20:11 +0000 Message-ID: <20170316112030.20419-9-andre.przywara@arm.com> References: <20170316112030.20419-1-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 1coTQr-0007eX-BT for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:19:01 +0000 In-Reply-To: <20170316112030.20419-1-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org VGhlIG51bWJlciBvZiBMUElzIG9uIGEgaG9zdCBjYW4gYmUgcG90ZW50aWFsbHkgaHVnZSAobWls bGlvbnMpLAphbHRob3VnaCBpbiBwcmFjdGlzZSB3aWxsIGJlIG1vc3RseSByZWFzb25hYmxlLiBT byBwcmVtYXR1cmVseSBhbGxvY2F0aW5nCmFuIGFycmF5IG9mIHN0cnVjdCBpcnFfZGVzYydzIGZv ciBlYWNoIExQSSBpcyBub3QgYW4gb3B0aW9uLgpIb3dldmVyIFhlbiBpdHNlbGYgZG9lcyBub3Qg Y2FyZSBhYm91dCBMUElzLCBhcyBldmVyeSBMUEkgd2lsbCBiZSBpbmplY3RlZAppbnRvIGEgZ3Vl c3QgKERvbTAgZm9yIG5vdykuCkNyZWF0ZSBhIGRlbnNlIGRhdGEgc3RydWN0dXJlICg4IEJ5dGVz KSBmb3IgZWFjaCBMUEkgd2hpY2ggaG9sZHMganVzdAplbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0 ZXJtaW5lIHRoZSB2aXJ0dWFsIElSUSBudW1iZXIgYW5kIHRoZSBWQ1BVIGludG8Kd2hpY2ggdGhl IExQSSBuZWVkcyB0byBiZSBpbmplY3RlZC4KQWxzbyB0byBub3QgYXJ0aWZpY2lhbGx5IGxpbWl0 IHRoZSBudW1iZXIgb2YgTFBJcywgd2UgY3JlYXRlIGEgMi1sZXZlbAp0YWJsZSBmb3IgaG9sZGlu ZyB0aG9zZSBzdHJ1Y3R1cmVzLgpUaGlzIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25zIHRvIGlu aXRpYWxpemUgdGhlc2UgdGFibGVzIGFuZCB0bwpjcmVhdGUsIGxvb2t1cCBhbmQgZGVzdHJveSBl bnRyaWVzIGZvciBhIGdpdmVuIExQSS4KQnkgdXNpbmcgdGhlIG5hdHVyYWxseSBhdG9taWMgYWNj ZXNzIGd1YXJhbnRlZSB0aGUgbmF0aXZlIHVpbnQ2NF90IGRhdGEKdHlwZSBnaXZlcyB1cywgd2Ug YWxsb2NhdGUgYW5kIGFjY2VzcyBMUEkgaW5mb3JtYXRpb24gaW4gYSB3YXkgdGhhdCBkb2VzCm5v dCByZXF1aXJlIGEgbG9jay4KClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5w cnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMgICAgICAgIHwg IDkwICsrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMgICAgICAg IHwgMTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1 ZGUvYXNtLWFybS9naWMuaCAgICAgICAgfCAgIDUgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2lj X3YzX2l0cy5oIHwgIDExICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jIGIv eGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwppbmRleCA2MGIxNWI1Li5lZDE0ZDk1IDEwMDY0NAot LS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCisrKyBiL3hlbi9hcmNoL2FybS9naWMtdjMt aXRzLmMKQEAgLTE0OCw2ICsxNDgsMjAgQEAgc3RhdGljIGludCBpdHNfc2VuZF9jbWRfc3luYyhz dHJ1Y3QgaG9zdF9pdHMgKml0cywgdW5zaWduZWQgaW50IGNwdSkKICAgICByZXR1cm4gaXRzX3Nl bmRfY29tbWFuZChpdHMsIGNtZCk7CiB9CiAKK3N0YXRpYyBpbnQgaXRzX3NlbmRfY21kX21hcHRp KHN0cnVjdCBob3N0X2l0cyAqaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgZGV2aWNlaWQsIHVpbnQzMl90IGV2ZW50aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBwaW50aWQsIHVpbnQxNl90IGljaWQpCit7CisgICAgdWludDY0X3Qg Y21kWzRdOworCisgICAgY21kWzBdID0gR0lUU19DTURfTUFQVEkgfCAoKHVpbnQ2NF90KWRldmlj ZWlkIDw8IDMyKTsKKyAgICBjbWRbMV0gPSBldmVudGlkIHwgKCh1aW50NjRfdClwaW50aWQgPDwg MzIpOworICAgIGNtZFsyXSA9IGljaWQ7CisgICAgY21kWzNdID0gMHgwMDsKKworICAgIHJldHVy biBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKK30KKwogc3RhdGljIGludCBpdHNfc2VuZF9j bWRfbWFwYyhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdWludDMyX3QgY29sbGVjdGlvbl9pZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNwdSkKIHsKQEAgLTE4MCw2 ICsxOTQsMTkgQEAgc3RhdGljIGludCBpdHNfc2VuZF9jbWRfbWFwZChzdHJ1Y3QgaG9zdF9pdHMg Kml0cywgdWludDMyX3QgZGV2aWNlaWQsCiAgICAgcmV0dXJuIGl0c19zZW5kX2NvbW1hbmQoaXRz LCBjbWQpOwogfQogCitzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9pbnYoc3RydWN0IGhvc3RfaXRz ICppdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGV2aWNlaWQsIHVp bnQzMl90IGV2ZW50aWQpCit7CisgICAgdWludDY0X3QgY21kWzRdOworCisgICAgY21kWzBdID0g R0lUU19DTURfSU5WIHwgKCh1aW50NjRfdClkZXZpY2VpZCA8PCAzMik7CisgICAgY21kWzFdID0g ZXZlbnRpZDsKKyAgICBjbWRbMl0gPSAweDAwOworICAgIGNtZFszXSA9IDB4MDA7CisKKyAgICBy ZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNtZCk7Cit9CisKIC8qIFNldCB1cCB0aGUgKDE6 MSkgY29sbGVjdGlvbiBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gaG9zdCBDUFUuICovCiBpbnQgZ2lj djNfaXRzX3NldHVwX2NvbGxlY3Rpb24odW5zaWduZWQgaW50IGNwdSkKIHsKQEAgLTQ2Miw3ICs0 ODksNyBAQCBpbnQgZ2ljdjNfaXRzX2luaXQodm9pZCkKIAogc3RhdGljIGludCByZW1vdmVfbWFw cGVkX2d1ZXN0X2RldmljZShzdHJ1Y3QgaXRzX2RldmljZXMgKmRldikKIHsKLSAgICBpbnQgcmV0 OworICAgIGludCByZXQsIGk7CiAKICAgICBpZiAoIGRldi0+aHdfaXRzICkKICAgICB7CkBAIC00 NzEsMTEgKzQ5OCwxOSBAQCBzdGF0aWMgaW50IHJlbW92ZV9tYXBwZWRfZ3Vlc3RfZGV2aWNlKHN0 cnVjdCBpdHNfZGV2aWNlcyAqZGV2KQogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAK KyAgICAvKgorICAgICAqIFRoZSBvbmx5IGVycm9yIHRoZSBmdW5jdGlvbiBiZWxvdyB3b3VsZCBy ZXR1cm4gaXMgLUVOT0VOVCwgaW4gd2hpY2gKKyAgICAgKiBjYXNlIHRoZXJlIGlzIG5vdGhpbmcg dG8gZnJlZSBoZXJlLiBTbyB3ZSBqdXN0IGlnbm9yZSBpdC4KKyAgICAgKi8KKyAgICBmb3IgKCBp ID0gMDsgaSA8IERJVl9ST1VORF9VUChkZXYtPmV2ZW50aWRzLCBMUElfQkxPQ0spOyBpKysgKQor ICAgICAgICBnaWN2M19mcmVlX2hvc3RfbHBpX2Jsb2NrKGRldi0+aHdfaXRzLCBkZXYtPmhvc3Rf bHBpc1tpXSk7CisKICAgICByZXQgPSBnaWN2M19pdHNfd2FpdF9jb21tYW5kcyhkZXYtPmh3X2l0 cyk7CiAgICAgaWYgKCByZXQgKQogICAgICAgICByZXR1cm4gcmV0OwogCiAgICAgeGZyZWUoZGV2 LT5pdHRfYWRkcik7CisgICAgeGZyZWUoZGV2LT5ob3N0X2xwaXMpOwogICAgIHhmcmVlKGRldik7 CiAKICAgICByZXR1cm4gMDsKQEAgLTUxMyw2ICs1NDgsMzYgQEAgc3RhdGljIGludCBjb21wYXJl X2l0c19ndWVzdF9kZXZpY2VzKHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2LAogfQogCiAvKgorICog T24gdGhlIGhvc3QgSVRTIEBpdHMsIG1hcCBAbnJfZXZlbnRzIGNvbnNlY3V0aXZlIExQSXMuCisg KiBUaGUgbWFwcGluZyBjb25uZWN0cyBhIGRldmljZSBAZGV2aWQgYW5kIGV2ZW50IEBldmVudGlk IHBhaXIgdG8gTFBJIEBscGksCisgKiBpbmNyZWFzaW5nIGJvdGggQGV2ZW50aWQgYW5kIEBscGkg dG8gY292ZXIgdGhlIG51bWJlciBvZiByZXF1ZXN0ZWQgTFBJcy4KKyAqLworaW50IGdpY3YzX2l0 c19tYXBfaG9zdF9ldmVudHMoc3RydWN0IGhvc3RfaXRzICppdHMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBkZXZpZCwgdWludDMyX3QgZXZlbnRpZCwgdWludDMyX3Qg bHBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfZXZlbnRzKQor eworICAgIHVpbnQzMl90IGk7CisgICAgaW50IHJldDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwg bnJfZXZlbnRzOyBpKysgKQorICAgIHsKKyAgICAgICAgLyogRm9yIG5vdyB3ZSBtYXAgZXZlcnkg aG9zdCBMUEkgdG8gaG9zdCBDUFUgMCAqLworICAgICAgICByZXQgPSBpdHNfc2VuZF9jbWRfbWFw dGkoaXRzLCBkZXZpZCwgZXZlbnRpZCArIGksIGxwaSArIGksIDApOworICAgICAgICBpZiAoIHJl dCApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICByZXQgPSBpdHNfc2VuZF9jbWRf aW52KGl0cywgZGV2aWQsIGV2ZW50aWQgKyBpKTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAg ICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSBpdHNfc2VuZF9jbWRfc3luYyhp dHMsIDApOworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVy biBnaWN2M19pdHNfd2FpdF9jb21tYW5kcyhpdHMpOworfQorCisvKgogICogTWFwIGEgaGFyZHdh cmUgZGV2aWNlLCBpZGVudGlmaWVkIGJ5IGEgY2VydGFpbiBob3N0IElUUyBhbmQgaXRzIGRldmlj ZSBJRAogICogdG8gZG9tYWluIGQsIGEgZ3Vlc3QgSVRTIChpZGVudGlmaWVkIGJ5IGl0cyBkb29y YmVsbCBhZGRyZXNzKSBhbmQgZGV2aWNlIElELgogICogQWxzbyBwcm92aWRlIHRoZSBudW1iZXIg b2YgZXZlbnRzIChNU0lzKSBuZWVkZWQgZm9yIHRoYXQgZGV2aWNlLgpAQCAtNTI4LDcgKzU5Myw3 IEBAIGludCBnaWN2M19pdHNfbWFwX2d1ZXN0X2RldmljZShzdHJ1Y3QgZG9tYWluICpkLAogICAg IHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzOwogICAgIHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2ID0g TlVMTCwgKnRlbXA7CiAgICAgc3RydWN0IHJiX25vZGUgKipuZXcgPSAmZC0+YXJjaC52Z2ljLml0 c19kZXZpY2VzLnJiX25vZGUsICpwYXJlbnQgPSBOVUxMOwotICAgIGludCByZXQgPSAtRU5PRU5U OworICAgIGludCByZXQgPSAtRU5PRU5ULCBpOwogCiAgICAgaHdfaXRzID0gZ2ljdjNfaXRzX2Zp bmRfYnlfZG9vcmJlbGwoaG9zdF9kb29yYmVsbCk7CiAgICAgaWYgKCAhaHdfaXRzICkKQEAgLTU3 NCw2ICs2MzksMTEgQEAgaW50IGdpY3YzX2l0c19tYXBfZ3Vlc3RfZGV2aWNlKHN0cnVjdCBkb21h aW4gKmQsCiAgICAgaWYgKCAhZGV2ICkKICAgICAgICAgZ290byBvdXRfdW5sb2NrOwogCisgICAg ZGV2LT5ob3N0X2xwaXMgPSB4emFsbG9jX2FycmF5KHVpbnQzMl90LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBESVZfUk9VTkRfVVAobnJfZXZlbnRzLCBMUElfQkxPQ0spKTsK KyAgICBpZiAoICFkZXYtPmhvc3RfbHBpcyApCisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKwog ICAgIHJldCA9IGl0c19zZW5kX2NtZF9tYXBkKGh3X2l0cywgaG9zdF9kZXZpZCwgZmxzKG5yX2V2 ZW50cyAtIDEpIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0X3RvX21hZGRy KGl0dF9hZGRyKSwgdHJ1ZSk7CiAgICAgaWYgKCByZXQgKQpAQCAtNTkxLDEwICs2NjEsMjYgQEAg aW50IGdpY3YzX2l0c19tYXBfZ3Vlc3RfZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsCiAKICAgICBz cGluX3VubG9jaygmZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzX2xvY2spOwogCisgICAgLyoKKyAg ICAgKiBNYXAgYWxsIGhvc3QgTFBJcyB3aXRoaW4gdGhpcyBkZXZpY2UgYWxyZWFkeS4gV2UgY2Fu J3QgYWZmb3JkIHRvIHF1ZXVlCisgICAgICogYW55IGhvc3QgSVRTIGNvbW1hbmRzIGxhdGVyIG9u IGR1cmluZyB0aGUgZ3Vlc3QncyBydW50aW1lLgorICAgICAqLworICAgIGZvciAoIGkgPSAwOyBp IDwgRElWX1JPVU5EX1VQKG5yX2V2ZW50cywgTFBJX0JMT0NLKTsgaSsrICkKKyAgICB7CisgICAg ICAgIHJldCA9IGdpY3YzX2FsbG9jYXRlX2hvc3RfbHBpX2Jsb2NrKGh3X2l0cywgZCwgaG9zdF9k ZXZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAqIExQ SV9CTE9DSyk7CisgICAgICAgIGlmICggcmV0IDwgMCApCisgICAgICAgICAgICBnb3RvIG91dDsK KworICAgICAgICBkZXYtPmhvc3RfbHBpc1tpXSA9IHJldDsKKyAgICB9CisKICAgICByZXR1cm4g MDsKIAogb3V0X3VubG9jazoKICAgICBzcGluX3VubG9jaygmZC0+YXJjaC52Z2ljLml0c19kZXZp Y2VzX2xvY2spOworCitvdXQ6CiAgICAgaWYgKCBkZXYgKQogICAgICAgICB4ZnJlZShkZXYtPmhv c3RfbHBpcyk7CiAgICAgeGZyZWUoaXR0X2FkZHIpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2dpYy12My1scGkuYyBiL3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMKaW5kZXggNTFkNzQyNS4u NTlkM2JhNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYworKysgYi94ZW4v YXJjaC9hcm0vZ2ljLXYzLWxwaS5jCkBAIC0yMCwyNCArMjAsNDQgQEAKIAogI2luY2x1ZGUgPHhl bi9saWIuaD4KICNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNp bmNsdWRlIDxhc20vYXRvbWljLmg+CisjaW5jbHVkZSA8YXNtL2RvbWFpbi5oPgogI2luY2x1ZGUg PGFzbS9naWMuaD4KICNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KICNpbmNsdWRlIDxhc20v Z2ljX3YzX2l0cy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+ CiAKKy8qIExQSXMgb24gdGhlIGhvc3QgYWx3YXlzIGdvIHRvIGEgZ3Vlc3QsIHNvIG5vIHN0cnVj dCBpcnFfZGVzYyBmb3IgdGhlbS4gKi8KK3VuaW9uIGhvc3RfbHBpIHsKKyAgICB1aW50NjRfdCBk YXRhOworICAgIHN0cnVjdCB7CisgICAgICAgIHVpbnQzMl90IHZpcnRfbHBpOworICAgICAgICB1 aW50MTZfdCBkb21faWQ7CisgICAgICAgIHVpbnQxNl90IHZjcHVfaWQ7CisgICAgfTsKK307CisK ICNkZWZpbmUgTFBJX1BST1BUQUJMRV9ORUVEU19GTFVTSElORyAgICAoMVUgPDwgMCkKIC8qIEds b2JhbCBzdGF0ZSAqLwogc3RhdGljIHN0cnVjdCB7CiAgICAgLyogVGhlIGdsb2JhbCBMUEkgcHJv cGVydHkgdGFibGUsIHNoYXJlZCBieSBhbGwgcmVkaXN0cmlidXRvcnMuICovCiAgICAgdWludDhf dCAqbHBpX3Byb3BlcnR5OwogICAgIC8qCisgICAgICogQSB0d28tbGV2ZWwgdGFibGUgdG8gbG9v a3VwIExQSXMgZmlyaW5nIG9uIHRoZSBob3N0IGFuZCBsb29rIHVwIHRoZQorICAgICAqIGRvbWFp biBhbmQgdmlydHVhbCBMUEkgbnVtYmVyIHRvIGluamVjdC4KKyAgICAgKi8KKyAgICB1bmlvbiBo b3N0X2xwaSAqKmhvc3RfbHBpczsKKyAgICAvKgogICAgICAqIE51bWJlciBvZiBwaHlzaWNhbCBM UElzIHRoZSBob3N0IHN1cHBvcnRzLiBUaGlzIGlzIGEgcHJvcGVydHkgb2YKICAgICAgKiB0aGUg R0lDIGhhcmR3YXJlLiBXZSBkZXBhcnQgZnJvbSB0aGUgaGFiaXQgb2YgbmFtaW5nIHRoZXNlIHRo aW5ncwogICAgICAqICJwaHlzaWNhbCIgaW4gWGVuLCBhcyB0aGUgR0lDdjMvNCBzcGVjIHVzZXMg dGhlIHRlcm0gInBoeXNpY2FsIExQSSIKICAgICAgKiBpbiBhIGRpZmZlcmVudCBjb250ZXh0IHRv IGRpZmZlcmVudGlhdGUgdGhlbSBmcm9tICJ2aXJ0dWFsIExQSXMiLgogICAgICAqLwogICAgIHVu c2lnbmVkIGxvbmcgaW50IG5yX2hvc3RfbHBpczsKKyAgICAvKiBQcm90ZWN0cyBhbGxvY2F0aW9u IGFuZCBkZWFsbG9jYXRpb24gb2YgaG9zdCBMUElzLCBidXQgbm90IHRoZSBhY2Nlc3MgKi8KKyAg ICBzcGlubG9ja190IGhvc3RfbHBpc19sb2NrOwogICAgIHVuc2lnbmVkIGludCBmbGFnczsKIH0g bHBpX2RhdGE7CiAKQEAgLTUwLDYgKzcwLDE5IEBAIHN0cnVjdCBscGlfcmVkaXN0X2RhdGEgewog c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBscGlfcmVkaXN0X2RhdGEsIGxwaV9yZWRpc3Qp OwogCiAjZGVmaW5lIE1BWF9QSFlTX0xQSVMgICAobHBpX2RhdGEubnJfaG9zdF9scGlzIC0gTFBJ X09GRlNFVCkKKyNkZWZpbmUgSE9TVF9MUElTX1BFUl9QQUdFICAgICAgKFBBR0VfU0laRSAvIHNp emVvZih1bmlvbiBob3N0X2xwaSkpCisKK3N0YXRpYyB1bmlvbiBob3N0X2xwaSAqZ2ljX2dldF9o b3N0X2xwaSh1aW50MzJfdCBwbHBpKQoreworICAgIGlmICggIWlzX2xwaShwbHBpKSB8fCBwbHBp ID49IE1BWF9QSFlTX0xQSVMgKyBMUElfT0ZGU0VUICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisK KyAgICBwbHBpIC09IExQSV9PRkZTRVQ7CisgICAgaWYgKCAhbHBpX2RhdGEuaG9zdF9scGlzW3Bs cGkgLyBIT1NUX0xQSVNfUEVSX1BBR0VdICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBy ZXR1cm4gJmxwaV9kYXRhLmhvc3RfbHBpc1twbHBpIC8gSE9TVF9MUElTX1BFUl9QQUdFXVtwbHBp ICUgSE9TVF9MUElTX1BFUl9QQUdFXTsKK30KIAogLyogU3RvcmVzIHRoaXMgcmVkaXN0cmlidXRv cidzIHBoeXNpY2FsIGFkZHJlc3MgYW5kIElEIGluIGEgcGVyLUNQVSB2YXJpYWJsZSAqLwogdm9p ZCBnaWN2M19zZXRfcmVkaXN0X2FkZHJlc3MocGFkZHJfdCBhZGRyZXNzLCB1bnNpZ25lZCBpbnQg cmVkaXN0X2lkKQpAQCAtMjA0LDE1ICsyMzcsMTcwIEBAIGludCBnaWN2M19scGlfaW5pdF9yZGlz dCh2b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKQogc3RhdGljIHVuc2lnbmVkIGludCBtYXhfbHBp X2JpdHMgPSBDT05GSUdfTUFYX1BIWVNfTFBJX0JJVFM7CiBpbnRlZ2VyX3BhcmFtKCJtYXhfbHBp X2JpdHMiLCBtYXhfbHBpX2JpdHMpOwogCisvKgorICogQWxsb2NhdGUgdGhlIDJuZCBsZXZlbCBh cnJheSBmb3IgaG9zdCBMUElzLiBUaGlzIG9uZSBob2xkcyBwb2ludGVycworICogdG8gdGhlIHBh Z2Ugd2l0aCB0aGUgYWN0dWFsICJ1bmlvbiBob3N0X2xwaSIgZW50cmllcy4gT3VyIExQSSBsaW1p dAorICogYXZvaWRzIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UuCisgKi8KIGludCBnaWN2M19scGlf aW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IGh3X2xwaV9iaXRzKQogeworICAgIGludCBucl9s cGlfcHRyczsKKworICAgIC8qIFdlIHJlbHkgb24gdGhlIGRhdGEgc3RydWN0dXJlIGJlaW5nIGF0 b21pY2FsbHkgYWNjZXNzaWJsZS4gKi8KKyAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHVuaW9uIGhv c3RfbHBpKSA+IHNpemVvZih1bnNpZ25lZCBsb25nKSk7CisKICAgICBscGlfZGF0YS5ucl9ob3N0 X2xwaXMgPSBCSVRfVUxMKG1pbihod19scGlfYml0cywgbWF4X2xwaV9iaXRzKSk7CiAKKyAgICBz cGluX2xvY2tfaW5pdCgmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOworCisgICAgbnJfbHBpX3B0 cnMgPSBNQVhfUEhZU19MUElTIC8gKFBBR0VfU0laRSAvIHNpemVvZih1bmlvbiBob3N0X2xwaSkp OworICAgIGxwaV9kYXRhLmhvc3RfbHBpcyA9IHh6YWxsb2NfYXJyYXkodW5pb24gaG9zdF9scGkg KiwgbnJfbHBpX3B0cnMpOworICAgIGlmICggIWxwaV9kYXRhLmhvc3RfbHBpcyApCisgICAgICAg IHJldHVybiAtRU5PTUVNOworCiAgICAgcHJpbnRrKCJHSUN2MzogdXNpbmcgYXQgbW9zdCAlbGQg TFBJcyBvbiB0aGUgaG9zdC5cbiIsIE1BWF9QSFlTX0xQSVMpOwogCiAgICAgcmV0dXJuIDA7CiB9 CiAKKy8qIE11c3QgYmUgY2FsbGVkIHdpdGggaG9zdF9scGlzX2xvY2sgaGVsZC4gKi8KK3N0YXRp YyBpbnQgZmluZF91bnVzZWRfaG9zdF9scGkoaW50IHN0YXJ0LCB1aW50MzJfdCAqaW5kZXgpCit7 CisgICAgaW50IGNodW5rOworICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CisKKyAgICBmb3IgKCBj aHVuayA9IHN0YXJ0OyBjaHVuayA8IE1BWF9QSFlTX0xQSVMgLyBIT1NUX0xQSVNfUEVSX1BBR0U7 IGNodW5rKysgKQorICAgIHsKKyAgICAgICAgLyogSWYgd2UgaGl0IGFuIHVuYWxsb2NhdGVkIGNo dW5rLCB1c2UgZW50cnkgMCBpbiB0aGF0IG9uZS4gKi8KKyAgICAgICAgaWYgKCAhbHBpX2RhdGEu aG9zdF9scGlzW2NodW5rXSApCisgICAgICAgIHsKKyAgICAgICAgICAgICppbmRleCA9IDA7Cisg ICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgICAgIH0KKworICAgICAgICAvKiBGaW5kIGFu IHVuYWxsb2NhdGVkIGVudHJ5IGluIHRoaXMgY2h1bmsuICovCisgICAgICAgIGZvciAoIDsgaSA8 IEhPU1RfTFBJU19QRVJfUEFHRTsgaSArPSBMUElfQkxPQ0sgKQorICAgICAgICB7CisgICAgICAg ICAgICBpZiAoIGxwaV9kYXRhLmhvc3RfbHBpc1tjaHVua11baV0uZG9tX2lkID09IElOVkFMSURf RE9NSUQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICppbmRleCA9IGk7CisgICAg ICAgICAgICAgICAgcmV0dXJuIGNodW5rOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg ICAgIGkgPSAwOworICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLyoKKyAqIEFsbG9jYXRl IGEgYmxvY2sgb2YgMzIgTFBJcyBvbiB0aGUgZ2l2ZW4gaG9zdCBJVFMgZm9yIGRldmljZSAiZGV2 aWQiLAorICogc3RhcnRpbmcgd2l0aCAiZXZlbnRpZCIuIFB1dCB0aGVtIGludG8gdGhlIHJlc3Bl Y3RpdmUgSVRUIGJ5IGlzc3VpbmcgYQorICogTUFQVEkgY29tbWFuZCBmb3IgZWFjaCBvZiB0aGVt LgorICovCitpbnQgZ2ljdjNfYWxsb2NhdGVfaG9zdF9scGlfYmxvY2soc3RydWN0IGhvc3RfaXRz ICppdHMsIHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgaG9zdF9kZXZpZCwgdWludDMyX3QgZXZlbnRpZCkKK3sKKyAgICBzdGF0aWMg dWludDMyX3QgbmV4dF9scGkgPSAwOworICAgIHVpbnQzMl90IGxwaSwgbHBpX2lkeCA9IG5leHRf bHBpICUgSE9TVF9MUElTX1BFUl9QQUdFOworICAgIGludCBjaHVuazsKKyAgICBpbnQgaTsKKwor ICAgIHNwaW5fbG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOworICAgIGNodW5rID0gZmlu ZF91bnVzZWRfaG9zdF9scGkobmV4dF9scGkgLyBIT1NUX0xQSVNfUEVSX1BBR0UsICZscGlfaWR4 KTsKKworICAgIGlmICggY2h1bmsgPT0gLSAxICkgICAgICAgICAgLyogcmVzY2FuIGZvciBhIGhv bGUgZnJvbSB0aGUgYmVnaW5uaW5nICovCisgICAgeworICAgICAgICBscGlfaWR4ID0gMDsKKyAg ICAgICAgY2h1bmsgPSBmaW5kX3VudXNlZF9ob3N0X2xwaSgwLCAmbHBpX2lkeCk7CisgICAgICAg IGlmICggY2h1bmsgPT0gLTEgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygm bHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOworICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBJZiB3ZSBoaXQgYW4gdW5hbGxvY2F0ZWQgY2h1bmss IHdlIGluaXRpYWxpemUgaXQgYW5kIHVzZSBlbnRyeSAwLiAqLworICAgIGlmICggIWxwaV9kYXRh Lmhvc3RfbHBpc1tjaHVua10gKQorICAgIHsKKyAgICAgICAgdW5pb24gaG9zdF9scGkgKm5ld19j aHVuazsKKworICAgICAgICBuZXdfY2h1bmsgPSBhbGxvY194ZW5oZWFwX3BhZ2VzKDAsIDApOwor ICAgICAgICBpZiAoICFuZXdfY2h1bmsgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3Vu bG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOworICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07CisgICAgICAgIH0KKworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEhPU1RfTFBJU19QRVJf UEFHRTsgaSArPSBMUElfQkxPQ0sgKQorICAgICAgICAgICAgbmV3X2NodW5rW2ldLmRvbV9pZCA9 IElOVkFMSURfRE9NSUQ7CisKKyAgICAgICAgbHBpX2RhdGEuaG9zdF9scGlzW2NodW5rXSA9IG5l d19jaHVuazsKKyAgICAgICAgbHBpX2lkeCA9IDA7CisgICAgfQorCisgICAgbHBpID0gY2h1bmsg KiBIT1NUX0xQSVNfUEVSX1BBR0UgKyBscGlfaWR4OworCisgICAgZm9yICggaSA9IDA7IGkgPCBM UElfQkxPQ0s7IGkrKyApCisgICAgeworICAgICAgICB1bmlvbiBob3N0X2xwaSBobHBpOworCisg ICAgICAgIC8qCisgICAgICAgICAqIE1hcmsgdGhpcyBob3N0IExQSSBhcyBiZWxvbmdpbmcgdG8g dGhlIGRvbWFpbiwgYnV0IGRvbid0IGFzc2lnbgorICAgICAgICAgKiBhbnkgdmlydHVhbCBMUEkg b3IgYSBWQ1BVIHlldC4KKyAgICAgICAgICovCisgICAgICAgIGhscGkudmlydF9scGkgPSBJTlZB TElEX0xQSTsKKyAgICAgICAgaGxwaS5kb21faWQgPSBkLT5kb21haW5faWQ7CisgICAgICAgIGhs cGkudmNwdV9pZCA9IElOVkFMSURfRE9NSUQ7CisgICAgICAgIHdyaXRlX3U2NF9hdG9taWMoJmxw aV9kYXRhLmhvc3RfbHBpc1tjaHVua11bbHBpX2lkeCArIGldLmRhdGEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgaGxwaS5kYXRhKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBFbmFibGUg dGhpcyBob3N0IExQSSwgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIGR1cmluZyB0aGUKKyAg ICAgICAgICogZ3Vlc3QncyBydW50aW1lLgorICAgICAgICAgKi8KKyAgICAgICAgbHBpX2RhdGEu bHBpX3Byb3BlcnR5W2xwaSArIGldIHw9IExQSV9QUk9QX0VOQUJMRUQ7CisgICAgfQorCisgICAg LyoKKyAgICAgKiBXZSBoYXZlIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgdGhlIGhvc3QgTFBJ IGVudHJpZXMsIHNvIGl0J3Mgc2FmZQorICAgICAqIHRvIGRyb3AgdGhlIGxvY2sgbm93LiBBY2Nl c3MgdG8gdGhlIHN0cnVjdHVyZXMgY2FuIGJlIGRvbmUgY29uY3VycmVudGx5CisgICAgICogYXMg aXQgaW52b2x2ZXMgb25seSBhbiBhdG9taWMgdWludDY0X3QgYWNjZXNzLgorICAgICAqLworICAg IHNwaW5fdW5sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNfbG9jayk7CisKKyAgICBpZiAoIGxwaV9k YXRhLmZsYWdzICYgTFBJX1BST1BUQUJMRV9ORUVEU19GTFVTSElORyApCisgICAgICAgIGNsZWFu X2FuZF9pbnZhbGlkYXRlX2RjYWNoZV92YV9yYW5nZSgmbHBpX2RhdGEubHBpX3Byb3BlcnR5W2xw aV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUElfQkxP Q0spOworCisgICAgZ2ljdjNfaXRzX21hcF9ob3N0X2V2ZW50cyhpdHMsIGhvc3RfZGV2aWQsIGV2 ZW50aWQsIGxwaSArIExQSV9PRkZTRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM UElfQkxPQ0spOworCisgICAgbmV4dF9scGkgPSBscGkgKyBMUElfQkxPQ0s7CisgICAgcmV0dXJu IGxwaSArIExQSV9PRkZTRVQ7Cit9CisKK2ludCBnaWN2M19mcmVlX2hvc3RfbHBpX2Jsb2NrKHN0 cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdCBscGkpCit7CisgICAgdW5pb24gaG9zdF9scGkg KmhscGksIGVtcHR5X2xwaSA9IHsgLmRvbV9pZCA9IElOVkFMSURfRE9NSUQgfTsKKyAgICBpbnQg aTsKKworICAgIGhscGkgPSBnaWNfZ2V0X2hvc3RfbHBpKGxwaSk7CisgICAgaWYgKCAhaGxwaSAp CisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgc3Bpbl9sb2NrKCZscGlfZGF0YS5ob3N0 X2xwaXNfbG9jayk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKKyAg ICAgICAgd3JpdGVfdTY0X2F0b21pYygmaGxwaVtpXS5kYXRhLCBlbXB0eV9scGkuZGF0YSk7CisK KyAgICAvKiBUT0RPOiBDYWxsIGEgZnVuY3Rpb24gaW4gZ2ljLXYzLWl0cy5jIHRvIHNlbmQgRElT Q0FSRHMgKi8KKworICAgIHNwaW5fdW5sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNfbG9jayk7CisK KyAgICByZXR1cm4gMDsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmggYi94ZW4vaW5jbHVkZS9hc20t YXJtL2dpYy5oCmluZGV4IDEyYmQxNTUuLjc4MjU1NzUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vZ2ljLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaApAQCAtMjIwLDcg KzIyMCwxMiBAQCBlbnVtIGdpY192ZXJzaW9uIHsKICAgICBHSUNfVjMsCiB9OwogCisjZGVmaW5l IElOVkFMSURfTFBJICAgICAwCiAjZGVmaW5lIExQSV9PRkZTRVQgICAgICA4MTkyCitzdGF0aWMg aW5saW5lIGJvb2wgaXNfbHBpKHVuc2lnbmVkIGludCBpcnEpCit7CisgICAgcmV0dXJuIGlycSA+ PSBMUElfT0ZGU0VUOworfQogCiBleHRlcm4gZW51bSBnaWNfdmVyc2lvbiBnaWNfaHdfdmVyc2lv bih2b2lkKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgg Yi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAppbmRleCAzNDIxZWEwLi4yMzg3OTcy IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAorKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaApAQCAtMTA2LDYgKzEwNiwxMSBAQAogI2RlZmlu ZSBIT1NUX0lUU19GTFVTSF9DTURfUVVFVUUgICAgICAgICgxVSA8PCAwKQogI2RlZmluZSBIT1NU X0lUU19VU0VTX1BUQSAgICAgICAgICAgICAgICgxVSA8PCAxKQogCisjZGVmaW5lIElOVkFMSURf RE9NSUQgKCh1aW50MTZfdCl+MCkKKworLyogV2UgYWxsb2NhdGUgTFBJcyBvbiB0aGUgaG9zdHMg aW4gY2h1bmtzIG9mIDMyIHRvIHJlZHVjZSBoYW5kbGluZyBvdmVyaGVhZC4gKi8KKyNkZWZpbmUg TFBJX0JMT0NLICAgICAgICAgICAgICAgICAgICAgICAzMgorCiAvKiBkYXRhIHN0cnVjdHVyZSBm b3IgZWFjaCBoYXJkd2FyZSBJVFMgKi8KIHN0cnVjdCBob3N0X2l0cyB7CiAgICAgc3RydWN0IGxp c3RfaGVhZCBlbnRyeTsKQEAgLTE1MSw2ICsxNTYsMTIgQEAgaW50IGdpY3YzX2l0c19tYXBfZ3Vl c3RfZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFkZHJfdCBob3N0X2Rvb3JiZWxsLCB1aW50MzJfdCBob3N0X2RldmlkLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgZ3Vlc3RfZG9vcmJlbGwsIHVpbnQzMl90IGd1 ZXN0X2RldmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5yX2V2 ZW50cywgYm9vbCB2YWxpZCk7CitpbnQgZ2ljdjNfaXRzX21hcF9ob3N0X2V2ZW50cyhzdHJ1Y3Qg aG9zdF9pdHMgKml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGhv c3RfZGV2aWQsIHVpbnQzMl90IGV2ZW50aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBscGksIHVpbnQzMl90IG5yZXZlbnRzKTsKK2ludCBnaWN2M19hbGxvY2F0ZV9o b3N0X2xwaV9ibG9jayhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgc3RydWN0IGRvbWFpbiAqZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBob3N0X2RldmlkLCB1aW50 MzJfdCBldmVudGlkKTsKK2ludCBnaWN2M19mcmVlX2hvc3RfbHBpX2Jsb2NrKHN0cnVjdCBob3N0 X2l0cyAqaXRzLCB1aW50MzJfdCBscGkpOwogCiAjZWxzZQogCi0tIAoyLjkuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=