From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v3 07/26] ARM: GICv3 ITS: introduce host LPI array Date: Fri, 31 Mar 2017 19:05:06 +0100 Message-ID: <20170331180525.30038-8-andre.przywara@arm.com> References: <20170331180525.30038-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 1cu0tg-0005Ls-3o for xen-devel@lists.xenproject.org; Fri, 31 Mar 2017 18:03:40 +0000 In-Reply-To: <20170331180525.30038-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: Julien Grall , Stefano Stabellini 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 IDg5ICsrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyAgICAgICAg fCAxOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL2dpYy5oICAgICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192 M19pdHMuaCB8ICAgNSArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oICAgICAgICB8ICAgNSAr CiA1IGZpbGVzIGNoYW5nZWQsIDI5NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXYz LWl0cy5jCmluZGV4IDI5NWY3ZGMuLmZhMjg0ZTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9n aWMtdjMtaXRzLmMKKysrIGIveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwpAQCAtMTUxLDYgKzE1 MSwyMCBAQCBzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9zeW5jKHN0cnVjdCBob3N0X2l0cyAqaXRz LCB1bnNpZ25lZCBpbnQgY3B1KQogICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21k KTsKIH0KIAorc3RhdGljIGludCBpdHNfc2VuZF9jbWRfbWFwdGkoc3RydWN0IGhvc3RfaXRzICpp dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXZpY2VpZCwgdWlu dDMyX3QgZXZlbnRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBp bnRpZCwgdWludDE2X3QgaWNpZCkKK3sKKyAgICB1aW50NjRfdCBjbWRbNF07CisKKyAgICBjbWRb MF0gPSBHSVRTX0NNRF9NQVBUSSB8ICgodWludDY0X3QpZGV2aWNlaWQgPDwgMzIpOworICAgIGNt ZFsxXSA9IGV2ZW50aWQgfCAoKHVpbnQ2NF90KXBpbnRpZCA8PCAzMik7CisgICAgY21kWzJdID0g aWNpZDsKKyAgICBjbWRbM10gPSAweDAwOworCisgICAgcmV0dXJuIGl0c19zZW5kX2NvbW1hbmQo aXRzLCBjbWQpOworfQorCiBzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9tYXBjKHN0cnVjdCBob3N0 X2l0cyAqaXRzLCB1aW50MzJfdCBjb2xsZWN0aW9uX2lkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQogewpAQCAtMTg1LDYgKzE5OSwxOSBAQCBzdGF0aWMg aW50IGl0c19zZW5kX2NtZF9tYXBkKHN0cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdCBkZXZp Y2VpZCwKICAgICByZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNtZCk7CiB9CiAKK3N0YXRp YyBpbnQgaXRzX3NlbmRfY21kX2ludihzdHJ1Y3QgaG9zdF9pdHMgKml0cywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXZpY2VpZCwgdWludDMyX3QgZXZlbnRpZCkKK3sK KyAgICB1aW50NjRfdCBjbWRbNF07CisKKyAgICBjbWRbMF0gPSBHSVRTX0NNRF9JTlYgfCAoKHVp bnQ2NF90KWRldmljZWlkIDw8IDMyKTsKKyAgICBjbWRbMV0gPSBldmVudGlkOworICAgIGNtZFsy XSA9IDB4MDA7CisgICAgY21kWzNdID0gMHgwMDsKKworICAgIHJldHVybiBpdHNfc2VuZF9jb21t YW5kKGl0cywgY21kKTsKK30KKwogLyogU2V0IHVwIHRoZSAoMToxKSBjb2xsZWN0aW9uIG1hcHBp bmcgZm9yIHRoZSBnaXZlbiBob3N0IENQVS4gKi8KIGludCBnaWN2M19pdHNfc2V0dXBfY29sbGVj dGlvbih1bnNpZ25lZCBpbnQgY3B1KQogewpAQCAtNDY5LDcgKzQ5Niw3IEBAIGludCBnaWN2M19p dHNfaW5pdCh2b2lkKQogCiBzdGF0aWMgaW50IHJlbW92ZV9tYXBwZWRfZ3Vlc3RfZGV2aWNlKHN0 cnVjdCBpdHNfZGV2aWNlcyAqZGV2KQogewotICAgIGludCByZXQ7CisgICAgaW50IHJldCwgaTsK IAogICAgIGlmICggZGV2LT5od19pdHMgKQogICAgIHsKQEAgLTQ3OSwxMiArNTA2LDE2IEBAIHN0 YXRpYyBpbnQgcmVtb3ZlX21hcHBlZF9ndWVzdF9kZXZpY2Uoc3RydWN0IGl0c19kZXZpY2VzICpk ZXYpCiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIAorICAgIGZvciAoIGkgPSAwOyBp IDwgRElWX1JPVU5EX1VQKGRldi0+ZXZlbnRpZHMsIExQSV9CTE9DSyk7IGkrKyApCisgICAgICAg IGdpY3YzX2ZyZWVfaG9zdF9scGlfYmxvY2soZGV2LT5ob3N0X2xwaV9ibG9ja3NbaV0pOworCiAg ICAgcmV0ID0gZ2ljdjNfaXRzX3dhaXRfY29tbWFuZHMoZGV2LT5od19pdHMpOwogICAgIGlmICgg cmV0ICkKICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIHhmcmVlKGRldi0+aXR0X2FkZHIpOwog ICAgIHhmcmVlKGRldi0+cGVuZF9pcnFzKTsKKyAgICB4ZnJlZShkZXYtPmhvc3RfbHBpX2Jsb2Nr cyk7CiAgICAgeGZyZWUoZGV2KTsKIAogICAgIHJldHVybiAwOwpAQCAtNTIyLDYgKzU1MywzNyBA QCBzdGF0aWMgaW50IGNvbXBhcmVfaXRzX2d1ZXN0X2RldmljZXMoc3RydWN0IGl0c19kZXZpY2Vz ICpkZXYsCiB9CiAKIC8qCisgKiBPbiB0aGUgaG9zdCBJVFMgQGl0cywgbWFwIEBucl9ldmVudHMg Y29uc2VjdXRpdmUgTFBJcy4KKyAqIFRoZSBtYXBwaW5nIGNvbm5lY3RzIGEgZGV2aWNlIEBkZXZp ZCBhbmQgZXZlbnQgQGV2ZW50aWQgcGFpciB0byBMUEkgQGxwaSwKKyAqIGluY3JlYXNpbmcgYm90 aCBAZXZlbnRpZCBhbmQgQGxwaSB0byBjb3ZlciB0aGUgbnVtYmVyIG9mIHJlcXVlc3RlZCBMUElz LgorICovCitzdGF0aWMgaW50IGdpY3YzX2l0c19tYXBfaG9zdF9ldmVudHMoc3RydWN0IGhvc3Rf aXRzICppdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZGV2aWQsIHVpbnQzMl90IGV2ZW50aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgbHBpLCB1aW50MzJfdCBucl9ldmVudHMpCit7CisgICAgdWludDMyX3Qg aTsKKyAgICBpbnQgcmV0OworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9ldmVudHM7IGkrKyAp CisgICAgeworICAgICAgICAvKiBGb3Igbm93IHdlIG1hcCBldmVyeSBob3N0IExQSSB0byBob3N0 IENQVSAwICovCisgICAgICAgIHJldCA9IGl0c19zZW5kX2NtZF9tYXB0aShpdHMsIGRldmlkLCBl dmVudGlkICsgaSwgbHBpICsgaSwgMCk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAg IHJldHVybiByZXQ7CisKKyAgICAgICAgcmV0ID0gaXRzX3NlbmRfY21kX2ludihpdHMsIGRldmlk LCBldmVudGlkICsgaSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIHJldHVybiBy ZXQ7CisgICAgfQorCisgICAgcmV0ID0gaXRzX3NlbmRfY21kX3N5bmMoaXRzLCAwKTsKKyAgICBp ZiAoIHJldCApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gZ2ljdjNfaXRzX3dh aXRfY29tbWFuZHMoaXRzKTsKK30KKworLyoKICAqIE1hcCBhIGhhcmR3YXJlIGRldmljZSwgaWRl bnRpZmllZCBieSBhIGNlcnRhaW4gaG9zdCBJVFMgYW5kIGl0cyBkZXZpY2UgSUQKICAqIHRvIGRv bWFpbiBkLCBhIGd1ZXN0IElUUyAoaWRlbnRpZmllZCBieSBpdHMgZG9vcmJlbGwgYWRkcmVzcykg YW5kIGRldmljZSBJRC4KICAqIEFsc28gcHJvdmlkZSB0aGUgbnVtYmVyIG9mIGV2ZW50cyAoTVNJ cykgbmVlZGVkIGZvciB0aGF0IGRldmljZS4KQEAgLTUzNyw3ICs1OTksNyBAQCBpbnQgZ2ljdjNf aXRzX21hcF9ndWVzdF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwKICAgICBzdHJ1Y3QgaG9zdF9p dHMgKmh3X2l0czsKICAgICBzdHJ1Y3QgaXRzX2RldmljZXMgKmRldiA9IE5VTEw7CiAgICAgc3Ry dWN0IHJiX25vZGUgKipuZXcgPSAmZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzLnJiX25vZGUsICpw YXJlbnQgPSBOVUxMOwotICAgIGludCByZXQgPSAtRU5PRU5UOworICAgIGludCByZXQgPSAtRU5P RU5ULCBpOwogCiAgICAgaHdfaXRzID0gZ2ljdjNfaXRzX2ZpbmRfYnlfZG9vcmJlbGwoaG9zdF9k b29yYmVsbCk7CiAgICAgaWYgKCAhaHdfaXRzICkKQEAgLTU5NSw2ICs2NTcsMTEgQEAgaW50IGdp Y3YzX2l0c19tYXBfZ3Vlc3RfZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsCiAgICAgaWYgKCAhZGV2 LT5wZW5kX2lycXMgKQogICAgICAgICBnb3RvIG91dF91bmxvY2s7CiAKKyAgICBkZXYtPmhvc3Rf bHBpX2Jsb2NrcyA9IHh6YWxsb2NfYXJyYXkodWludDMyX3QsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERJVl9ST1VORF9VUChucl9ldmVudHMsIExQSV9CTE9DSykp OworICAgIGlmICggIWRldi0+aG9zdF9scGlfYmxvY2tzICkKKyAgICAgICAgZ290byBvdXRfdW5s b2NrOworCiAgICAgcmV0ID0gaXRzX3NlbmRfY21kX21hcGQoaHdfaXRzLCBob3N0X2RldmlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZscyhST1VORFVQKG5yX2V2ZW50cywgTFBJX0JM T0NLKSAtIDEpIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0X3RvX21hZGRy KGl0dF9hZGRyKSwgdHJ1ZSk7CkBAIC02MTMsMTAgKzY4MCwyOCBAQCBpbnQgZ2ljdjNfaXRzX21h cF9ndWVzdF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fdW5sb2NrKCZkLT5h cmNoLnZnaWMuaXRzX2RldmljZXNfbG9jayk7CiAKKyAgICAvKgorICAgICAqIE1hcCBhbGwgaG9z dCBMUElzIHdpdGhpbiB0aGlzIGRldmljZSBhbHJlYWR5LiBXZSBjYW4ndCBhZmZvcmQgdG8gcXVl dWUKKyAgICAgKiBhbnkgaG9zdCBJVFMgY29tbWFuZHMgbGF0ZXIgb24gZHVyaW5nIHRoZSBndWVz dCdzIHJ1bnRpbWUuCisgICAgICovCisgICAgZm9yICggaSA9IDA7IGkgPCBESVZfUk9VTkRfVVAo bnJfZXZlbnRzLCBMUElfQkxPQ0spOyBpKysgKQorICAgIHsKKyAgICAgICAgcmV0ID0gZ2ljdjNf YWxsb2NhdGVfaG9zdF9scGlfYmxvY2soZCwgJmRldi0+aG9zdF9scGlfYmxvY2tzW2ldKTsKKyAg ICAgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgIHJl dCA9IGdpY3YzX2l0c19tYXBfaG9zdF9ldmVudHMoaHdfaXRzLCBob3N0X2RldmlkLCBpICogTFBJ X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+aG9z dF9scGlfYmxvY2tzW2ldLCBMUElfQkxPQ0spOworICAgICAgICBpZiAoIHJldCA8IDAgKQorICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CiAKIG91dF91bmxvY2s6 CiAgICAgc3Bpbl91bmxvY2soJmQtPmFyY2gudmdpYy5pdHNfZGV2aWNlc19sb2NrKTsKKworb3V0 OgogICAgIGlmICggZGV2ICkKICAgICB7CiAgICAgICAgIHhmcmVlKGRldi0+cGVuZF9pcnFzKTsK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMgYi94ZW4vYXJjaC9hcm0vZ2lj LXYzLWxwaS5jCmluZGV4IGQ4NWQ2M2QuLmQ2NDJjYzUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS9naWMtdjMtbHBpLmMKKysrIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwpAQCAtMjAsMjUg KzIwLDU1IEBACiAKICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+Cisj aW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NpemVzLmg+CisjaW5jbHVkZSA8 YXNtL2F0b21pYy5oPgorI2luY2x1ZGUgPGFzbS9kb21haW4uaD4KICNpbmNsdWRlIDxhc20vZ2lj Lmg+CiAjaW5jbHVkZSA8YXNtL2dpY192M19kZWZzLmg+CiAjaW5jbHVkZSA8YXNtL2dpY192M19p dHMuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgogCisvKgor ICogVGhlcmUgY291bGQgYmUgYSBsb3Qgb2YgTFBJcyBvbiB0aGUgaG9zdCBzaWRlLCBhbmQgdGhl eSBhbHdheXMgZ28gdG8KKyAqIGEgZ3Vlc3QuIFNvIGhhdmluZyBhIHN0cnVjdCBpcnFfZGVzYyBm b3IgZWFjaCBvZiB0aGVtIHdvdWxkIGJlIHdhc3RlZnVsCisgKiBhbmQgdXNlbGVzcy4KKyAqIElu c3RlYWQganVzdCBzdG9yZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZmluZCB0aGUgcmlnaHQgVkNQ VSB0byBpbmplY3QKKyAqIHRob3NlIExQSXMgaW50bywgd2hpY2gganVzdCByZXF1aXJlcyB0aGUg dmlydHVhbCBMUEkgbnVtYmVyLgorICogVG8gYXZvaWQgYSBnbG9iYWwgbG9jayBvbiB0aGlzIGRh dGEgc3RydWN0dXJlLCB0aGlzIGlzIHVzaW5nIGEgbG9ja2xlc3MKKyAqIGFwcHJvYWNoIHJlbHlp bmcgb24gdGhlIGFyY2hpdGVjdHVyYWwgYXRvbWljdHkgb2YgbmF0aXZlIGRhdGEgdHlwZXM6Cisg KiBXZSByZWFkIG9yIHdyaXRlIHRoZSAiZGF0YSIgdmlldyBvZiB0aGlzIHVuaW9uIGF0b21pY2Fs bHksIHRoZW4gY2FuCisgKiBhY2Nlc3MgdGhlIGJyb2tlbi1kb3duIGZpZWxkcyBpbiBvdXIgbG9j YWwgY29weS4KKyAqLwordW5pb24gaG9zdF9scGkgeworICAgIHVpbnQ2NF90IGRhdGE7CisgICAg c3RydWN0IHsKKyAgICAgICAgdWludDMyX3QgdmlydF9scGk7CisgICAgICAgIHVpbnQxNl90IGRv bV9pZDsKKyAgICAgICAgdWludDE2X3QgdmNwdV9pZDsKKyAgICB9OworfTsKKwogI2RlZmluZSBM UElfUFJPUFRBQkxFX05FRURTX0ZMVVNISU5HICAgICgxVSA8PCAwKQogLyogR2xvYmFsIHN0YXRl ICovCiBzdGF0aWMgc3RydWN0IHsKICAgICAvKiBUaGUgZ2xvYmFsIExQSSBwcm9wZXJ0eSB0YWJs ZSwgc2hhcmVkIGJ5IGFsbCByZWRpc3RyaWJ1dG9ycy4gKi8KICAgICB1aW50OF90ICpscGlfcHJv cGVydHk7CiAgICAgLyoKKyAgICAgKiBBIHR3by1sZXZlbCB0YWJsZSB0byBsb29rdXAgTFBJcyBm aXJpbmcgb24gdGhlIGhvc3QgYW5kIGxvb2sgdXAgdGhlCisgICAgICogVkNQVSBhbmQgdmlydHVh bCBMUEkgbnVtYmVyIHRvIGluamVjdCBpbnRvLgorICAgICAqLworICAgIHVuaW9uIGhvc3RfbHBp ICoqaG9zdF9scGlzOworICAgIC8qCiAgICAgICogTnVtYmVyIG9mIHBoeXNpY2FsIExQSXMgdGhl IGhvc3Qgc3VwcG9ydHMuIFRoaXMgaXMgYSBwcm9wZXJ0eSBvZgogICAgICAqIHRoZSBHSUMgaGFy ZHdhcmUuIFdlIGRlcGFydCBmcm9tIHRoZSBoYWJpdCBvZiBuYW1pbmcgdGhlc2UgdGhpbmdzCiAg ICAgICogInBoeXNpY2FsIiBpbiBYZW4sIGFzIHRoZSBHSUN2My80IHNwZWMgdXNlcyB0aGUgdGVy bSAicGh5c2ljYWwgTFBJIgogICAgICAqIGluIGEgZGlmZmVyZW50IGNvbnRleHQgdG8gZGlmZmVy ZW50aWF0ZSB0aGVtIGZyb20gInZpcnR1YWwgTFBJcyIuCiAgICAgICovCiAgICAgdW5zaWduZWQg bG9uZyBpbnQgbnJfaG9zdF9scGlzOworICAgIC8qIFByb3RlY3RzIGFsbG9jYXRpb24gYW5kIGRl YWxsb2NhdGlvbiBvZiBob3N0IExQSXMsIGJ1dCBub3QgdGhlIGFjY2VzcyAqLworICAgIHNwaW5s b2NrX3QgaG9zdF9scGlzX2xvY2s7CiAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogfSBscGlfZGF0 YTsKIApAQCAtNTEsNiArODEsMTkgQEAgc3RydWN0IGxwaV9yZWRpc3RfZGF0YSB7CiBzdGF0aWMg REVGSU5FX1BFUl9DUFUoc3RydWN0IGxwaV9yZWRpc3RfZGF0YSwgbHBpX3JlZGlzdCk7CiAKICNk ZWZpbmUgTUFYX1BIWVNfTFBJUyAgIChscGlfZGF0YS5ucl9ob3N0X2xwaXMgLSBMUElfT0ZGU0VU KQorI2RlZmluZSBIT1NUX0xQSVNfUEVSX1BBR0UgICAgICAoUEFHRV9TSVpFIC8gc2l6ZW9mKHVu aW9uIGhvc3RfbHBpKSkKKworc3RhdGljIHVuaW9uIGhvc3RfbHBpICpnaWNfZ2V0X2hvc3RfbHBp KHVpbnQzMl90IHBscGkpCit7CisgICAgaWYgKCAhaXNfbHBpKHBscGkpIHx8IHBscGkgPj0gTUFY X1BIWVNfTFBJUyArIExQSV9PRkZTRVQgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBs cGkgLT0gTFBJX09GRlNFVDsKKyAgICBpZiAoICFscGlfZGF0YS5ob3N0X2xwaXNbcGxwaSAvIEhP U1RfTFBJU19QRVJfUEFHRV0gKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiAm bHBpX2RhdGEuaG9zdF9scGlzW3BscGkgLyBIT1NUX0xQSVNfUEVSX1BBR0VdW3BscGkgJSBIT1NU X0xQSVNfUEVSX1BBR0VdOworfQogCiAvKiBTdG9yZXMgdGhpcyByZWRpc3RyaWJ1dG9yJ3MgcGh5 c2ljYWwgYWRkcmVzcyBhbmQgSUQgaW4gYSBwZXItQ1BVIHZhcmlhYmxlICovCiB2b2lkIGdpY3Yz X3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90IGFkZHJlc3MsIHVuc2lnbmVkIGludCByZWRpc3Rf aWQpCkBAIC0yMTIsMTUgKzI1NSwxNjggQEAgaW50IGdpY3YzX2xwaV9pbml0X3JkaXN0KHZvaWQg X19pb21lbSAqIHJkaXN0X2Jhc2UpCiBzdGF0aWMgdW5zaWduZWQgaW50IG1heF9scGlfYml0cyA9 IDIwOwogaW50ZWdlcl9wYXJhbSgibWF4X2xwaV9iaXRzIiwgbWF4X2xwaV9iaXRzKTsKIAorLyoK KyAqIEFsbG9jYXRlIHRoZSAybmQgbGV2ZWwgYXJyYXkgZm9yIGhvc3QgTFBJcy4gVGhpcyBvbmUg aG9sZHMgcG9pbnRlcnMKKyAqIHRvIHRoZSBwYWdlIHdpdGggdGhlIGFjdHVhbCAidW5pb24gaG9z dF9scGkiIGVudHJpZXMuIE91ciBMUEkgbGltaXQKKyAqIGF2b2lkcyBleGNlc3NpdmUgbWVtb3J5 IHVzYWdlLgorICovCiBpbnQgZ2ljdjNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBo d19scGlfYml0cykKIHsKKyAgICBpbnQgbnJfbHBpX3B0cnM7CisKKyAgICAvKiBXZSByZWx5IG9u IHRoZSBkYXRhIHN0cnVjdHVyZSBiZWluZyBhdG9taWNhbGx5IGFjY2Vzc2libGUuICovCisgICAg QlVJTERfQlVHX09OKHNpemVvZih1bmlvbiBob3N0X2xwaSkgPiBzaXplb2YodW5zaWduZWQgbG9u ZykpOworCiAgICAgbHBpX2RhdGEubnJfaG9zdF9scGlzID0gQklUX1VMTChtaW4oaHdfbHBpX2Jp dHMsIG1heF9scGlfYml0cykpOwogCisgICAgc3Bpbl9sb2NrX2luaXQoJmxwaV9kYXRhLmhvc3Rf bHBpc19sb2NrKTsKKworICAgIG5yX2xwaV9wdHJzID0gTUFYX1BIWVNfTFBJUyAvIChQQUdFX1NJ WkUgLyBzaXplb2YodW5pb24gaG9zdF9scGkpKTsKKyAgICBscGlfZGF0YS5ob3N0X2xwaXMgPSB4 emFsbG9jX2FycmF5KHVuaW9uIGhvc3RfbHBpICosIG5yX2xwaV9wdHJzKTsKKyAgICBpZiAoICFs cGlfZGF0YS5ob3N0X2xwaXMgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwogICAgIHByaW50 aygiR0lDdjM6IHVzaW5nIGF0IG1vc3QgJWx1IExQSXMgb24gdGhlIGhvc3QuXG4iLCBNQVhfUEhZ U19MUElTKTsKIAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGZpbmRfdW51c2VkX2hv c3RfbHBpKHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCAqaW5kZXgpCit7CisgICAgdW5zaWduZWQg aW50IGNodW5rOworICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CisKKyAgICBBU1NFUlQoc3Bpbl9p c19sb2NrZWQoJmxwaV9kYXRhLmhvc3RfbHBpc19sb2NrKSk7CisKKyAgICBmb3IgKCBjaHVuayA9 IHN0YXJ0OyBjaHVuayA8IE1BWF9QSFlTX0xQSVMgLyBIT1NUX0xQSVNfUEVSX1BBR0U7IGNodW5r KysgKQorICAgIHsKKyAgICAgICAgLyogSWYgd2UgaGl0IGFuIHVuYWxsb2NhdGVkIGNodW5rLCB1 c2UgZW50cnkgMCBpbiB0aGF0IG9uZS4gKi8KKyAgICAgICAgaWYgKCAhbHBpX2RhdGEuaG9zdF9s cGlzW2NodW5rXSApCisgICAgICAgIHsKKyAgICAgICAgICAgICppbmRleCA9IDA7CisgICAgICAg ICAgICByZXR1cm4gY2h1bms7CisgICAgICAgIH0KKworICAgICAgICAvKiBGaW5kIGFuIHVuYWxs b2NhdGVkIGVudHJ5IGluIHRoaXMgY2h1bmsuICovCisgICAgICAgIGZvciAoIDsgaSA8IEhPU1Rf TFBJU19QRVJfUEFHRTsgaSArPSBMUElfQkxPQ0sgKQorICAgICAgICB7CisgICAgICAgICAgICBp ZiAoIGxwaV9kYXRhLmhvc3RfbHBpc1tjaHVua11baV0uZG9tX2lkID09IERPTUlEX0lOVkFMSUQg KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICppbmRleCA9IGk7CisgICAgICAgICAg ICAgICAgcmV0dXJuIGNodW5rOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGkg PSAwOworICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLyoKKyAqIEFsbG9jYXRlIGEgYmxv Y2sgb2YgMzIgTFBJcyBvbiB0aGUgZ2l2ZW4gaG9zdCBJVFMgZm9yIGRldmljZSAiZGV2aWQiLAor ICogc3RhcnRpbmcgd2l0aCAiZXZlbnRpZCIuIFB1dCB0aGVtIGludG8gdGhlIHJlc3BlY3RpdmUg SVRUIGJ5IGlzc3VpbmcgYQorICogTUFQVEkgY29tbWFuZCBmb3IgZWFjaCBvZiB0aGVtLgorICov CitpbnQgZ2ljdjNfYWxsb2NhdGVfaG9zdF9scGlfYmxvY2soc3RydWN0IGRvbWFpbiAqZCwgdWlu dDMyX3QgKmZpcnN0X2xwaSkKK3sKKyAgICBzdGF0aWMgdWludDMyX3QgbmV4dF9scGkgPSAwOwor ICAgIHVpbnQzMl90IGxwaSwgbHBpX2lkeCA9IG5leHRfbHBpICUgSE9TVF9MUElTX1BFUl9QQUdF OworICAgIGludCBjaHVuazsKKyAgICBpbnQgaTsKKworICAgIHNwaW5fbG9jaygmbHBpX2RhdGEu aG9zdF9scGlzX2xvY2spOworICAgIGNodW5rID0gZmluZF91bnVzZWRfaG9zdF9scGkobmV4dF9s cGkgLyBIT1NUX0xQSVNfUEVSX1BBR0UsICZscGlfaWR4KTsKKworICAgIGlmICggY2h1bmsgPT0g LSAxICkgICAgICAgICAgLyogcmVzY2FuIGZvciBhIGhvbGUgZnJvbSB0aGUgYmVnaW5uaW5nICov CisgICAgeworICAgICAgICBscGlfaWR4ID0gMDsKKyAgICAgICAgY2h1bmsgPSBmaW5kX3VudXNl ZF9ob3N0X2xwaSgwLCAmbHBpX2lkeCk7CisgICAgICAgIGlmICggY2h1bmsgPT0gLTEgKQorICAg ICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2sp OworICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv KiBJZiB3ZSBoaXQgYW4gdW5hbGxvY2F0ZWQgY2h1bmssIHdlIGluaXRpYWxpemUgaXQgYW5kIHVz ZSBlbnRyeSAwLiAqLworICAgIGlmICggIWxwaV9kYXRhLmhvc3RfbHBpc1tjaHVua10gKQorICAg IHsKKyAgICAgICAgdW5pb24gaG9zdF9scGkgKm5ld19jaHVuazsKKworICAgICAgICAvKiBUT0RP OiBOVU1BIGxvY2FsaXR5IGZvciBxdWlja2VyIElSUSBwYXRoPyAqLworICAgICAgICBuZXdfY2h1 bmsgPSB4bWFsbG9jX2J5dGVzKFBBR0VfU0laRSk7CisgICAgICAgIGlmICggIW5ld19jaHVuayAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNf bG9jayk7CisgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgfQorCisgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgSE9TVF9MUElTX1BFUl9QQUdFOyBpICs9IExQSV9CTE9DSyApCisg ICAgICAgICAgICBuZXdfY2h1bmtbaV0uZG9tX2lkID0gRE9NSURfSU5WQUxJRDsKKworICAgICAg ICBscGlfZGF0YS5ob3N0X2xwaXNbY2h1bmtdID0gbmV3X2NodW5rOworICAgICAgICBscGlfaWR4 ID0gMDsKKyAgICB9CisKKyAgICBscGkgPSBjaHVuayAqIEhPU1RfTFBJU19QRVJfUEFHRSArIGxw aV9pZHg7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKKyAgICB7Cisg ICAgICAgIHVuaW9uIGhvc3RfbHBpIGhscGk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogTWFy ayB0aGlzIGhvc3QgTFBJIGFzIGJlbG9uZ2luZyB0byB0aGUgZG9tYWluLCBidXQgZG9uJ3QgYXNz aWduCisgICAgICAgICAqIGFueSB2aXJ0dWFsIExQSSBvciBhIFZDUFUgeWV0LgorICAgICAgICAg Ki8KKyAgICAgICAgaGxwaS52aXJ0X2xwaSA9IElOVkFMSURfTFBJOworICAgICAgICBobHBpLmRv bV9pZCA9IGQtPmRvbWFpbl9pZDsKKyAgICAgICAgaGxwaS52Y3B1X2lkID0gfjA7CisgICAgICAg IHdyaXRlX3U2NF9hdG9taWMoJmxwaV9kYXRhLmhvc3RfbHBpc1tjaHVua11bbHBpX2lkeCArIGld LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgaGxwaS5kYXRhKTsKKworICAgICAgICAv KgorICAgICAgICAgKiBFbmFibGUgdGhpcyBob3N0IExQSSwgc28gd2UgZG9uJ3QgaGF2ZSB0byBk byB0aGlzIGR1cmluZyB0aGUKKyAgICAgICAgICogZ3Vlc3QncyBydW50aW1lLgorICAgICAgICAg Ki8KKyAgICAgICAgbHBpX2RhdGEubHBpX3Byb3BlcnR5W2xwaSArIGldIHw9IExQSV9QUk9QX0VO QUJMRUQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXZSBoYXZlIGFsbG9jYXRlZCBhbmQgaW5p dGlhbGl6ZWQgdGhlIGhvc3QgTFBJIGVudHJpZXMsIHNvIGl0J3Mgc2FmZQorICAgICAqIHRvIGRy b3AgdGhlIGxvY2sgbm93LiBBY2Nlc3MgdG8gdGhlIHN0cnVjdHVyZXMgY2FuIGJlIGRvbmUgY29u Y3VycmVudGx5CisgICAgICogYXMgaXQgaW52b2x2ZXMgb25seSBhbiBhdG9taWMgdWludDY0X3Qg YWNjZXNzLgorICAgICAqLworICAgIHNwaW5fdW5sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNfbG9j ayk7CisKKyAgICBpZiAoIGxwaV9kYXRhLmZsYWdzICYgTFBJX1BST1BUQUJMRV9ORUVEU19GTFVT SElORyApCisgICAgICAgIGNsZWFuX2FuZF9pbnZhbGlkYXRlX2RjYWNoZV92YV9yYW5nZSgmbHBp X2RhdGEubHBpX3Byb3BlcnR5W2xwaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMUElfQkxPQ0spOworCisgICAgbmV4dF9scGkgPSBscGkgKyBMUElfQkxP Q0s7CisgICAgKmZpcnN0X2xwaSA9IGxwaSArIExQSV9PRkZTRVQ7CisKKyAgICByZXR1cm4gMDsK K30KKwordm9pZCBnaWN2M19mcmVlX2hvc3RfbHBpX2Jsb2NrKHVpbnQzMl90IGZpcnN0X2xwaSkK K3sKKyAgICB1bmlvbiBob3N0X2xwaSAqaGxwaSwgZW1wdHlfbHBpID0geyAuZG9tX2lkID0gRE9N SURfSU5WQUxJRCB9OworICAgIGludCBpOworCisgICAgaGxwaSA9IGdpY19nZXRfaG9zdF9scGko Zmlyc3RfbHBpKTsKKyAgICBpZiAoICFobHBpICkKKyAgICAgICAgcmV0dXJuOyAgICAgICAgIC8q IE5vdGhpbmcgdG8gZnJlZSBoZXJlLiAqLworCisgICAgc3Bpbl9sb2NrKCZscGlfZGF0YS5ob3N0 X2xwaXNfbG9jayk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKKyAg ICAgICAgd3JpdGVfdTY0X2F0b21pYygmaGxwaVtpXS5kYXRhLCBlbXB0eV9scGkuZGF0YSk7CisK KyAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOworCisgICAgcmV0dXJu OworfQorCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgKaW5k ZXggODM2YTEwMy4uZDA0YmQwNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWMu aAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oCkBAIC0yMjAsNiArMjIwLDggQEAgZW51 bSBnaWNfdmVyc2lvbiB7CiAgICAgR0lDX1YzLAogfTsKIAorI2RlZmluZSBJTlZBTElEX0xQSSAg ICAgMAorCiBleHRlcm4gZW51bSBnaWNfdmVyc2lvbiBnaWNfaHdfdmVyc2lvbih2b2lkKTsKIAog LyogUHJvZ3JhbSB0aGUgSVJRIHR5cGUgaW50byB0aGUgR0lDICovCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3Yz X2l0cy5oCmluZGV4IDRhZGU1ZjYuLjdiNDc1OTYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vZ2ljX3YzX2l0cy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5o CkBAIC0xMDYsNiArMTA2LDkgQEAKICNkZWZpbmUgSE9TVF9JVFNfRkxVU0hfQ01EX1FVRVVFICAg ICAgICAoMVUgPDwgMCkKICNkZWZpbmUgSE9TVF9JVFNfVVNFU19QVEEgICAgICAgICAgICAgICAo MVUgPDwgMSkKIAorLyogV2UgYWxsb2NhdGUgTFBJcyBvbiB0aGUgaG9zdHMgaW4gY2h1bmtzIG9m IDMyIHRvIHJlZHVjZSBoYW5kbGluZyBvdmVyaGVhZC4gKi8KKyNkZWZpbmUgTFBJX0JMT0NLICAg ICAgICAgICAgICAgICAgICAgICAzMgorCiAvKiBkYXRhIHN0cnVjdHVyZSBmb3IgZWFjaCBoYXJk d2FyZSBJVFMgKi8KIHN0cnVjdCBob3N0X2l0cyB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBlbnRy eTsKQEAgLTE1Myw2ICsxNTYsOCBAQCBpbnQgZ2ljdjNfaXRzX21hcF9ndWVzdF9kZXZpY2Uoc3Ry dWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IGd1 ZXN0X2Rvb3JiZWxsLCB1aW50MzJfdCBndWVzdF9kZXZpZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBucl9ldmVudHMsIGJvb2wgdmFsaWQpOwogdm9pZCBnaWN2M19p dHNfdW5tYXBfYWxsX2RldmljZXMoc3RydWN0IGRvbWFpbiAqZCk7CitpbnQgZ2ljdjNfYWxsb2Nh dGVfaG9zdF9scGlfYmxvY2soc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgKmZpcnN0X2xwaSk7 Cit2b2lkIGdpY3YzX2ZyZWVfaG9zdF9scGlfYmxvY2sodWludDMyX3QgZmlyc3RfbHBpKTsKIAog I2Vsc2UKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaCBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vaXJxLmgKaW5kZXggMTM1MjhjMC4uZDE2YWZmYyAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS9pcnEuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oCkBA IC00Miw2ICs0MiwxMSBAQCBzdHJ1Y3QgaXJxX2Rlc2MgKl9faXJxX3RvX2Rlc2MoaW50IGlycSk7 CiAKIHZvaWQgZG9fSVJRKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQg aXJxLCBpbnQgaXNfZmlxKTsKIAorc3RhdGljIGlubGluZSBib29sIGlzX2xwaSh1bnNpZ25lZCBp bnQgaXJxKQoreworICAgIHJldHVybiBpcnEgPj0gTFBJX09GRlNFVDsKK30KKwogI2RlZmluZSBk b21haW5fcGlycV90b19pcnEoZCwgcGlycSkgKHBpcnEpCiAKIGJvb2xfdCBpc19hc3NpZ25hYmxl X2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKLS0gCjIuOS4wCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==