From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 19/45] ARM: new VGIC: Add IRQ sync/flush framework Date: Thu, 15 Mar 2018 20:30:24 +0000 Message-ID: <20180315203050.19791-20-andre.przywara@linaro.org> References: <20180315203050.19791-1-andre.przywara@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewZX7-0003Uj-AE for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 20:31:29 +0000 Received: by mail-wr0-x241.google.com with SMTP id z73so5352505wrb.0 for ; Thu, 15 Mar 2018 13:31:27 -0700 (PDT) In-Reply-To: <20180315203050.19791-1-andre.przywara@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SW1wbGVtZW50IHRoZSBmcmFtZXdvcmsgZm9yIHN5bmNpbmcgSVJRcyBiZXR3ZWVuIG91ciBlbXVs YXRpb24gYW5kIHRoZQpsaXN0IHJlZ2lzdGVycywgd2hpY2ggcmVwcmVzZW50IHRoZSBndWVzdCdz IHZpZXcgb2YgSVJRcy4KVGhpcyBpcyBkb25lIGluIHZnaWNfc3luY19mcm9tX2xycygpIGFuZCB2 Z2ljX3N5bmNfdG9fbHJzKCksIHdoaWNoCmdldCBjYWxsZWQgb24gZ3Vlc3QgZW50cnkgYW5kIGV4 aXQsIHJlc3BlY3RpdmVseS4KVGhlIGNvZGUgdGFsa2luZyB0byB0aGUgYWN0dWFsIEdJQ3YyL3Yz IGhhcmR3YXJlIGlzIGFkZGVkIGluIHRoZQpmb2xsb3dpbmcgcGF0Y2hlcy4KClRoaXMgaXMgYmFz ZWQgb24gTGludXggY29tbWl0IDA5MTllODRjMGZjMSwgd3JpdHRlbiBieSBNYXJjIFp5bmdpZXIu CgpTaWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAbGluYXJvLm9y Zz4KLS0tCkNoYW5nZWxvZyB2MSAuLi4gdjI6Ci0gbWFrZSBmdW5jdGlvbnMgdm9pZAotIGRvIHVu ZGVyZmxvdyBzZXR0aW5nIGRpcmVjdGx5IChubyB2Mi92MyBpbmRpcmVjdGlvbikKLSBmaXggbXVs dGlwbGUgU0dJcyBpbmplY3Rpb25zIChhcyB0aGUgbGF0ZSBMaW51eCBidWdmaXgpCgogeGVuL2Fy Y2gvYXJtL3ZnaWMvdmdpYy5jIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmggfCAgIDIgKwogMiBmaWxl cyBjaGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92 Z2ljL3ZnaWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuYwppbmRleCA3MzA2YTgwZGQzLi5l ODJkNDk4NzY2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmMKKysrIGIveGVu L2FyY2gvYXJtL3ZnaWMvdmdpYy5jCkBAIC0zOTksNiArMzk5LDIzOCBAQCB2b2lkIHZnaWNfaW5q ZWN0X2lycShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50 IGludGlkLAogICAgIHJldHVybjsKIH0KIAorLyoqCisgKiB2Z2ljX3BydW5lX2FwX2xpc3QoKSAt IFJlbW92ZSBub24tcmVsZXZhbnQgaW50ZXJydXB0cyBmcm9tIHRoZSBhcF9saXN0CisgKgorICog QHZjcHU6ICAgICAgIFRoZSBWQ1BVIG9mIHdoaWNoIHRoZSBhcF9saXN0IHNob3VsZCBiZSBwcnVu ZWQuCisgKgorICogR28gb3ZlciB0aGUgbGlzdCBvZiBpbnRlcnJ1cHRzIG9uIGEgVkNQVSdzIGFw X2xpc3QsIGFuZCBwcnVuZSB0aG9zZSB0aGF0CisgKiB3ZSB3b24ndCBoYXZlIHRvIGNvbnNpZGVy IGluIHRoZSBuZWFyIGZ1dHVyZS4KKyAqIFRoaXMgcmVtb3ZlcyBpbnRlcnJ1cHRzIHRoYXQgaGF2 ZSBiZWVuIHN1Y2Nlc3NmdWxseSBoYW5kbGVkIGJ5IHRoZSBndWVzdCwKKyAqIG9yIHRoYXQgaGF2 ZSBvdGhlcndpc2UgYmVjYW1lIG9ic29sZXRlIChub3QgcGVuZGluZyBhbnltb3JlKS4KKyAqIEFs c28gdGhpcyBtb3ZlcyBpbnRlcnJ1cHRzIGJldHdlZW4gVkNQVXMsIGlmIHRoZWlyIGFmZmluaXR5 IGhhcyBjaGFuZ2VkLgorICovCitzdGF0aWMgdm9pZCB2Z2ljX3BydW5lX2FwX2xpc3Qoc3RydWN0 IHZjcHUgKnZjcHUpCit7CisgICAgc3RydWN0IHZnaWNfY3B1ICp2Z2ljX2NwdSA9ICZ2Y3B1LT5h cmNoLnZnaWM7CisgICAgc3RydWN0IHZnaWNfaXJxICppcnEsICp0bXA7CisgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKKworcmV0cnk6CisgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnZnaWNfY3B1LT5h cF9saXN0X2xvY2ssIGZsYWdzKTsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSggaXJx LCB0bXAsICZ2Z2ljX2NwdS0+YXBfbGlzdF9oZWFkLCBhcF9saXN0ICkKKyAgICB7CisgICAgICAg IHN0cnVjdCB2Y3B1ICp0YXJnZXRfdmNwdSwgKnZjcHVBLCAqdmNwdUI7CisKKyAgICAgICAgc3Bp bl9sb2NrKCZpcnEtPmlycV9sb2NrKTsKKworICAgICAgICBCVUdfT04odmNwdSAhPSBpcnEtPnZj cHUpOworCisgICAgICAgIHRhcmdldF92Y3B1ID0gdmdpY190YXJnZXRfb3JhY2xlKGlycSk7CisK KyAgICAgICAgaWYgKCAhdGFyZ2V0X3ZjcHUgKQorICAgICAgICB7CisgICAgICAgICAgICAvKgor ICAgICAgICAgICAgICogV2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIHRoaXMgaW50ZXJydXB0IGFu eQorICAgICAgICAgICAgICogZnVydGhlciwgbW92ZSBpdCBvZmYgdGhlIGxpc3QuCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIGxpc3RfZGVsKCZpcnEtPmFwX2xpc3QpOworICAgICAgICAg ICAgaXJxLT52Y3B1ID0gTlVMTDsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpcnEtPmlycV9s b2NrKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgdmdpY19wdXRfaXJx IGNhbGwgbWF0Y2hlcyB0aGUKKyAgICAgICAgICAgICAqIHZnaWNfZ2V0X2lycV9rcmVmIGluIHZn aWNfcXVldWVfaXJxX3VubG9jaywKKyAgICAgICAgICAgICAqIHdoZXJlIHdlIGFkZGVkIHRoZSBM UEkgdG8gdGhlIGFwX2xpc3QuIEFzCisgICAgICAgICAgICAgKiB3ZSByZW1vdmUgdGhlIGlycSBm cm9tIHRoZSBsaXN0LCB3ZSBkcm9wCisgICAgICAgICAgICAgKiBhbHNvIGRyb3AgdGhlIHJlZmNv dW50LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB2Z2ljX3B1dF9pcnEodmNwdS0+ZG9t YWluLCBpcnEpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBp ZiAoIHRhcmdldF92Y3B1ID09IHZjcHUgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBXZSdy ZSBvbiB0aGUgcmlnaHQgQ1BVICovCisgICAgICAgICAgICBzcGluX3VubG9jaygmaXJxLT5pcnFf bG9jayk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFRo aXMgaW50ZXJydXB0IGxvb2tzIGxpa2UgaXQgaGFzIHRvIGJlIG1pZ3JhdGVkLiAqLworCisgICAg ICAgIHNwaW5fdW5sb2NrKCZpcnEtPmlycV9sb2NrKTsKKyAgICAgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmdmdpY19jcHUtPmFwX2xpc3RfbG9jaywgZmxhZ3MpOworCisgICAgICAgIC8qCisg ICAgICAgICAqIEVuc3VyZSBsb2NraW5nIG9yZGVyIGJ5IGFsd2F5cyBsb2NraW5nIHRoZSBzbWFs bGVzdAorICAgICAgICAgKiBJRCBmaXJzdC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggdmNw dS0+dmNwdV9pZCA8IHRhcmdldF92Y3B1LT52Y3B1X2lkICkKKyAgICAgICAgeworICAgICAgICAg ICAgdmNwdUEgPSB2Y3B1OworICAgICAgICAgICAgdmNwdUIgPSB0YXJnZXRfdmNwdTsKKyAgICAg ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHZjcHVBID0gdGFyZ2V0 X3ZjcHU7CisgICAgICAgICAgICB2Y3B1QiA9IHZjcHU7CisgICAgICAgIH0KKworICAgICAgICBz cGluX2xvY2tfaXJxc2F2ZSgmdmNwdUEtPmFyY2gudmdpYy5hcF9saXN0X2xvY2ssIGZsYWdzKTsK KyAgICAgICAgc3Bpbl9sb2NrKCZ2Y3B1Qi0+YXJjaC52Z2ljLmFwX2xpc3RfbG9jayk7CisgICAg ICAgIHNwaW5fbG9jaygmaXJxLT5pcnFfbG9jayk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICog SWYgdGhlIGFmZmluaXR5IGhhcyBiZWVuIHByZXNlcnZlZCwgbW92ZSB0aGUKKyAgICAgICAgICog aW50ZXJydXB0IGFyb3VuZC4gT3RoZXJ3aXNlLCBpdCBtZWFucyB0aGluZ3MgaGF2ZQorICAgICAg ICAgKiBjaGFuZ2VkIHdoaWxlIHRoZSBpbnRlcnJ1cHQgd2FzIHVubG9ja2VkLCBhbmQgd2UKKyAg ICAgICAgICogbmVlZCB0byByZXBsYXkgdGhpcy4KKyAgICAgICAgICoKKyAgICAgICAgICogSW4g YWxsIGNhc2VzLCB3ZSBjYW5ub3QgdHJ1c3QgdGhlIGxpc3Qgbm90IHRvIGhhdmUKKyAgICAgICAg ICogY2hhbmdlZCwgc28gd2UgcmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcuCisgICAgICAgICAq LworICAgICAgICBpZiAoIHRhcmdldF92Y3B1ID09IHZnaWNfdGFyZ2V0X29yYWNsZShpcnEpICkK KyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHZnaWNfY3B1ICpuZXdfY3B1ID0gJnRhcmdl dF92Y3B1LT5hcmNoLnZnaWM7CisKKyAgICAgICAgICAgIGxpc3RfZGVsKCZpcnEtPmFwX2xpc3Qp OworICAgICAgICAgICAgaXJxLT52Y3B1ID0gdGFyZ2V0X3ZjcHU7CisgICAgICAgICAgICBsaXN0 X2FkZF90YWlsKCZpcnEtPmFwX2xpc3QsICZuZXdfY3B1LT5hcF9saXN0X2hlYWQpOworICAgICAg ICB9CisKKyAgICAgICAgc3Bpbl91bmxvY2soJmlycS0+aXJxX2xvY2spOworICAgICAgICBzcGlu X3VubG9jaygmdmNwdUItPmFyY2gudmdpYy5hcF9saXN0X2xvY2spOworICAgICAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ2Y3B1QS0+YXJjaC52Z2ljLmFwX2xpc3RfbG9jaywgZmxhZ3MpOwor ICAgICAgICBnb3RvIHJldHJ5OworICAgIH0KKworICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnZnaWNfY3B1LT5hcF9saXN0X2xvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgdmdpY19m b2xkX2xyX3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KQoreworfQorCisvKiBSZXF1aXJlcyB0aGUg aXJxX2xvY2sgdG8gYmUgaGVsZC4gKi8KK3N0YXRpYyB2b2lkIHZnaWNfcG9wdWxhdGVfbHIoc3Ry dWN0IHZjcHUgKnZjcHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2Z2lj X2lycSAqaXJxLCBpbnQgbHIpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZpcnEtPmly cV9sb2NrKSk7Cit9CisKK3N0YXRpYyB2b2lkIHZnaWNfc2V0X3VuZGVyZmxvdyhzdHJ1Y3QgdmNw dSAqdmNwdSkKK3sKKyAgICBBU1NFUlQodmNwdSA9PSBjdXJyZW50KTsKKworICAgIGdpY19od19v cHMtPnVwZGF0ZV9oY3Jfc3RhdHVzKEdJQ0hfSENSX1VJRSwgMSk7Cit9CisKKy8qIFJlcXVpcmVz IHRoZSBhcF9saXN0X2xvY2sgdG8gYmUgaGVsZC4gKi8KK3N0YXRpYyBpbnQgY29tcHV0ZV9hcF9s aXN0X2RlcHRoKHN0cnVjdCB2Y3B1ICp2Y3B1KQoreworICAgIHN0cnVjdCB2Z2ljX2NwdSAqdmdp Y19jcHUgPSAmdmNwdS0+YXJjaC52Z2ljOworICAgIHN0cnVjdCB2Z2ljX2lycSAqaXJxOworICAg IGludCBjb3VudCA9IDA7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnZnaWNfY3B1LT5h cF9saXN0X2xvY2spKTsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoaXJxLCAmdmdpY19jcHUt PmFwX2xpc3RfaGVhZCwgYXBfbGlzdCkKKyAgICB7CisgICAgICAgIHNwaW5fbG9jaygmaXJxLT5p cnFfbG9jayk7CisgICAgICAgIC8qIEdJQ3YyIFNHSXMgY2FuIGNvdW50IGZvciBtb3JlIHRoYW4g b25lLi4uICovCisgICAgICAgIGlmICggdmdpY19pcnFfaXNfc2dpKGlycS0+aW50aWQpICYmIGly cS0+c291cmNlICkKKyAgICAgICAgICAgIGNvdW50ICs9IGh3ZWlnaHQ4KGlycS0+c291cmNlKTsK KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgc3Bpbl91bmxvY2so JmlycS0+aXJxX2xvY2spOworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKKy8qIFJlcXVp cmVzIHRoZSBWQ1BVJ3MgYXBfbGlzdF9sb2NrIHRvIGJlIGhlbGQuICovCitzdGF0aWMgdm9pZCB2 Z2ljX2ZsdXNoX2xyX3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KQoreworICAgIHN0cnVjdCB2Z2lj X2NwdSAqdmdpY19jcHUgPSAmdmNwdS0+YXJjaC52Z2ljOworICAgIHN0cnVjdCB2Z2ljX2lycSAq aXJxOworICAgIGludCBjb3VudCA9IDA7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnZn aWNfY3B1LT5hcF9saXN0X2xvY2spKTsKKworICAgIGlmICggY29tcHV0ZV9hcF9saXN0X2RlcHRo KHZjcHUpID4gZ2ljX2dldF9ucl9scnMoKSApCisgICAgICAgIHZnaWNfc29ydF9hcF9saXN0KHZj cHUpOworCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggaXJxLCAmdmdpY19jcHUtPmFwX2xpc3Rf aGVhZCwgYXBfbGlzdCApCisgICAgeworICAgICAgICBzcGluX2xvY2soJmlycS0+aXJxX2xvY2sp OworCisgICAgICAgIGlmICggbGlrZWx5KHZnaWNfdGFyZ2V0X29yYWNsZShpcnEpID09IHZjcHUp ICkKKyAgICAgICAgICAgIHZnaWNfcG9wdWxhdGVfbHIodmNwdSwgaXJxLCBjb3VudCsrKTsKKwor ICAgICAgICBzcGluX3VubG9jaygmaXJxLT5pcnFfbG9jayk7CisKKyAgICAgICAgaWYgKCBjb3Vu dCA9PSBnaWNfZ2V0X25yX2xycygpICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhbGlz dF9pc19sYXN0KCZpcnEtPmFwX2xpc3QsICZ2Z2ljX2NwdS0+YXBfbGlzdF9oZWFkKSApCisgICAg ICAgICAgICAgICAgdmdpY19zZXRfdW5kZXJmbG93KHZjcHUpOworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2Y3B1LT5hcmNoLnZnaWMudXNlZF9scnMgPSBjb3Vu dDsKK30KKworLyoqCisgKiB2Z2ljX3N5bmNfZnJvbV9scnMoKSAtIFVwZGF0ZSBWR0lDIHN0YXRl IGZyb20gaGFyZHdhcmUgYWZ0ZXIgYSBndWVzdCdzIHJ1bi4KKyAqIEB2Y3B1OiB0aGUgVkNQVSBm b3Igd2hpY2ggdG8gdHJhbnNmZXIgZnJvbSB0aGUgTFJzIHRvIHRoZSBJUlEgbGlzdC4KKyAqCisg KiBTeW5jIGJhY2sgdGhlIGhhcmR3YXJlIFZHSUMgc3RhdGUgYWZ0ZXIgdGhlIGd1ZXN0IGhhcyBy dW4sIGludG8gb3VyCisgKiBWR0lDIGVtdWxhdGlvbiBzdHJ1Y3R1cmVzLCBJdCByZWFkcyB0aGUg TFJzIGFuZCB1cGRhdGVzIHRoZSByZXNwZWN0aXZlCisgKiBzdHJ1Y3QgdmdpY19pcnEsIHRha2lu ZyBsZXZlbC9lZGdlIGludG8gYWNjb3VudC4KKyAqIFRoaXMgaXMgdGhlIGhpZ2ggbGV2ZWwgZnVu Y3Rpb24gd2hpY2ggdGFrZXMgY2FyZSBvZiB0aGUgY29uZGl0aW9ucywKKyAqIGFsc28gYmFpbHMg b3V0IGVhcmx5IGlmIHRoZXJlIHdlcmUgbm8gaW50ZXJydXB0cyBxdWV1ZWQuCisgKiBXYXM6IGt2 bV92Z2ljX3N5bmNfaHdzdGF0ZSgpCisgKi8KK3ZvaWQgdmdpY19zeW5jX2Zyb21fbHJzKHN0cnVj dCB2Y3B1ICp2Y3B1KQoreworICAgIC8qIEFuIGVtcHR5IGFwX2xpc3RfaGVhZCBpbXBsaWVzIHVz ZWRfbHJzID09IDAgKi8KKyAgICBpZiAoIGxpc3RfZW1wdHkoJnZjcHUtPmFyY2gudmdpYy5hcF9s aXN0X2hlYWQpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmdpY19mb2xkX2xyX3N0YXRlKHZj cHUpOworCisgICAgdmdpY19wcnVuZV9hcF9saXN0KHZjcHUpOworfQorCisvKioKKyAqIHZnaWNf c3luY190b19scnMoKSAtIGZsdXNoIGVtdWxhdGlvbiBzdGF0ZSBpbnRvIHRoZSBoYXJkd2FyZSBv biBndWVzdCBlbnRyeQorICoKKyAqIEJlZm9yZSB3ZSBlbnRlciBhIGd1ZXN0LCB3ZSBoYXZlIHRv IHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBHSUMgc3RhdGUgb2YgYQorICogVkNQVSBpbnRvIHRoZSBH SUMgdmlydHVhbGl6YXRpb24gaGFyZHdhcmUgcmVnaXN0ZXJzLCBuYW1lbHkgdGhlIExScy4KKyAq IFRoaXMgaXMgdGhlIGhpZ2ggbGV2ZWwgZnVuY3Rpb24gd2hpY2ggdGFrZXMgY2FyZSBhYm91dCB0 aGUgY29uZGl0aW9ucworICogYW5kIHRoZSBsb2NraW5nLCBhbHNvIGJhaWxzIG91dCBlYXJseSBp ZiB0aGVyZSBhcmUgbm8gaW50ZXJydXB0cyBxdWV1ZWQuCisgKiBXYXM6IGt2bV92Z2ljX2ZsdXNo X2h3c3RhdGUoKQorICovCit2b2lkIHZnaWNfc3luY190b19scnModm9pZCkKK3sKKyAgICAvKgor ICAgICAqIElmIHRoZXJlIGFyZSBubyB2aXJ0dWFsIGludGVycnVwdHMgYWN0aXZlIG9yIHBlbmRp bmcgZm9yIHRoaXMKKyAgICAgKiBWQ1BVLCB0aGVuIHRoZXJlIGlzIG5vIHdvcmsgdG8gZG8gYW5k IHdlIGNhbiBiYWlsIG91dCB3aXRob3V0CisgICAgICogdGFraW5nIGFueSBsb2NrLiAgVGhlcmUg aXMgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIHNvbWVvbmUgaW5qZWN0aW5nCisgICAgICogaW50ZXJy dXB0cyB0byB0aGUgVkNQVSwgYnV0IGl0IGlzIGEgYmVuaWduIHJhY2UgYXMgdGhlIFZDUFUgd2ls bAorICAgICAqIGVpdGhlciBvYnNlcnZlIHRoZSBuZXcgaW50ZXJydXB0IGJlZm9yZSBvciBhZnRl ciBkb2luZyB0aGlzIGNoZWNrLAorICAgICAqIGFuZCBpbnRyb2R1Y2luZyBhZGRpdGlvbmFsIHN5 bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZG9lc24ndCBjaGFuZ2UKKyAgICAgKiB0aGlzLgorICAg ICAqLworICAgIGlmICggbGlzdF9lbXB0eSgmY3VycmVudC0+YXJjaC52Z2ljLmFwX2xpc3RfaGVh ZCkgKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIWxvY2FsX2lycV9pc19lbmFibGVk KCkpOworCisgICAgc3Bpbl9sb2NrKCZjdXJyZW50LT5hcmNoLnZnaWMuYXBfbGlzdF9sb2NrKTsK KyAgICB2Z2ljX2ZsdXNoX2xyX3N0YXRlKGN1cnJlbnQpOworICAgIHNwaW5fdW5sb2NrKCZjdXJy ZW50LT5hcmNoLnZnaWMuYXBfbGlzdF9sb2NrKTsKK30KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6 CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmggYi94ZW4v YXJjaC9hcm0vdmdpYy92Z2ljLmgKaW5kZXggZjllMmVlYjJkNi4uZjUzMGNmYTA3OCAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oCisrKyBiL3hlbi9hcmNoL2FybS92Z2ljL3Zn aWMuaApAQCAtMTcsNiArMTcsOCBAQAogI2lmbmRlZiBfX1hFTl9BUk1fVkdJQ19WR0lDX0hfXwog I2RlZmluZSBfX1hFTl9BUk1fVkdJQ19WR0lDX0hfXwogCisjZGVmaW5lIHZnaWNfaXJxX2lzX3Nn aShpbnRpZCkgKChpbnRpZCkgPCBWR0lDX05SX1NHSVMpCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBp cnFfaXNfcGVuZGluZyhzdHJ1Y3QgdmdpY19pcnEgKmlycSkKIHsKICAgICBpZiAoIGlycS0+Y29u ZmlnID09IFZHSUNfQ09ORklHX0VER0UgKQotLSAKMi4xNC4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==