From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [RFC PATCH 24/49] ARM: new VGIC: Add IRQ sync/flush framework Date: Fri, 9 Feb 2018 14:39:12 +0000 Message-ID: <20180209143937.28866-25-andre.przywara@linaro.org> References: <20180209143937.28866-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 1ek9qX-0000l0-BD for xen-devel@lists.xenproject.org; Fri, 09 Feb 2018 14:40:13 +0000 Received: by mail-wr0-x243.google.com with SMTP id 41so8460945wrc.9 for ; Fri, 09 Feb 2018 06:40:11 -0800 (PST) In-Reply-To: <20180209143937.28866-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 , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SW1wbGVtZW50IHRoZSBmcmFtZXdvcmsgZm9yIHN5bmNpbmcgSVJRcyBiZXR3ZWVuIG91ciBlbXVs YXRpb24gYW5kIHRoZQpsaXN0IHJlZ2lzdGVycywgd2hpY2ggcmVwcmVzZW50IHRoZSBndWVzdCdz IHZpZXcgb2YgSVJRcy4KVGhpcyBpcyBkb25lIGluIGt2bV92Z2ljX2ZsdXNoX2h3c3RhdGUgYW5k IGt2bV92Z2ljX3N5bmNfaHdzdGF0ZSwgd2hpY2gKZ2V0cyBjYWxsZWQgb24gZ3Vlc3QgZW50cnkg YW5kIGV4aXQuClRoZSBjb2RlIHRhbGtpbmcgdG8gdGhlIGFjdHVhbCBHSUN2Mi92MyBoYXJkd2Fy ZSBpcyBhZGRlZCBpbiB0aGUKZm9sbG93aW5nIHBhdGNoZXMuCgpUaGlzIGlzIGJhc2VkIG9uIExp bnV4IGNvbW1pdCAwOTE5ZTg0YzBmYzEsIHdyaXR0ZW4gYnkgTWFyYyBaeW5naWVyLgoKU2lnbmVk LW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGxpbmFyby5vcmc+Ci0tLQog eGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5jIHwgMjQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmggfCAgIDIgKwog MiBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS92Z2ljL3ZnaWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuYwppbmRleCBhNGVmZDFm ZDAzLi5hMWY3NzEzMGQ0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmMKKysr IGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5jCkBAIC0zODAsNiArMzgwLDI1MiBAQCBpbnQgdmdp Y19pbmplY3RfaXJxKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2Y3B1LCB1bnNpZ25l ZCBpbnQgaW50aWQsCiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qKgorICogdmdpY19wcnVuZV9hcF9s aXN0IC0gUmVtb3ZlIG5vbi1yZWxldmFudCBpbnRlcnJ1cHRzIGZyb20gdGhlIGxpc3QKKyAqCisg KiBAdmNwdTogVGhlIFZDUFUgcG9pbnRlcgorICoKKyAqIEdvIG92ZXIgdGhlIGxpc3Qgb2YgImlu dGVyZXN0aW5nIiBpbnRlcnJ1cHRzLCBhbmQgcHJ1bmUgdGhvc2UgdGhhdCB3ZQorICogd29uJ3Qg aGF2ZSB0byBjb25zaWRlciBpbiB0aGUgbmVhciBmdXR1cmUuCisgKi8KK3N0YXRpYyB2b2lkIHZn aWNfcHJ1bmVfYXBfbGlzdChzdHJ1Y3QgdmNwdSAqdmNwdSkKK3sKKyAgICBzdHJ1Y3QgdmdpY19j cHUgKnZnaWNfY3B1ID0gJnZjcHUtPmFyY2gudmdpY19jcHU7CisgICAgc3RydWN0IHZnaWNfaXJx ICppcnEsICp0bXA7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworcmV0cnk6CisgICAgc3Bp bl9sb2NrX2lycXNhdmUoJnZnaWNfY3B1LT5hcF9saXN0X2xvY2ssIGZsYWdzKTsKKworICAgIGxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZSggaXJxLCB0bXAsICZ2Z2ljX2NwdS0+YXBfbGlzdF9oZWFk LCBhcF9saXN0ICkKKyAgICB7CisgICAgICAgIHN0cnVjdCB2Y3B1ICp0YXJnZXRfdmNwdSwgKnZj cHVBLCAqdmNwdUI7CisKKyAgICAgICAgc3Bpbl9sb2NrKCZpcnEtPmlycV9sb2NrKTsKKworICAg ICAgICBCVUdfT04odmNwdSAhPSBpcnEtPnZjcHUpOworCisgICAgICAgIHRhcmdldF92Y3B1ID0g dmdpY190YXJnZXRfb3JhY2xlKGlycSk7CisKKyAgICAgICAgaWYgKCAhdGFyZ2V0X3ZjcHUgKQor ICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogV2UgZG9uJ3QgbmVlZCB0 byBwcm9jZXNzIHRoaXMgaW50ZXJydXB0IGFueQorICAgICAgICAgICAgICogZnVydGhlciwgbW92 ZSBpdCBvZmYgdGhlIGxpc3QuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGxpc3RfZGVs KCZpcnEtPmFwX2xpc3QpOworICAgICAgICAgICAgaXJxLT52Y3B1ID0gTlVMTDsKKyAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZpcnEtPmlycV9sb2NrKTsKKworICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIFRoaXMgdmdpY19wdXRfaXJxIGNhbGwgbWF0Y2hlcyB0aGUKKyAgICAgICAgICAg ICAqIHZnaWNfZ2V0X2lycV9rcmVmIGluIHZnaWNfcXVldWVfaXJxX3VubG9jaywKKyAgICAgICAg ICAgICAqIHdoZXJlIHdlIGFkZGVkIHRoZSBMUEkgdG8gdGhlIGFwX2xpc3QuIEFzCisgICAgICAg ICAgICAgKiB3ZSByZW1vdmUgdGhlIGlycSBmcm9tIHRoZSBsaXN0LCB3ZSBkcm9wCisgICAgICAg ICAgICAgKiBhbHNvIGRyb3AgdGhlIHJlZmNvdW50LgorICAgICAgICAgICAgICovCisgICAgICAg ICAgICB2Z2ljX3B1dF9pcnEodmNwdS0+ZG9tYWluLCBpcnEpOworICAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHRhcmdldF92Y3B1ID09IHZjcHUgKQorICAg ICAgICB7CisgICAgICAgICAgICAvKiBXZSdyZSBvbiB0aGUgcmlnaHQgQ1BVICovCisgICAgICAg ICAgICBzcGluX3VubG9jaygmaXJxLT5pcnFfbG9jayk7CisgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgfQorCisgICAgICAgIC8qIFRoaXMgaW50ZXJydXB0IGxvb2tzIGxpa2UgaXQgaGFz IHRvIGJlIG1pZ3JhdGVkLiAqLworCisgICAgICAgIHNwaW5fdW5sb2NrKCZpcnEtPmlycV9sb2Nr KTsKKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmdpY19jcHUtPmFwX2xpc3RfbG9j aywgZmxhZ3MpOworCisgICAgICAgIC8qCisgICAgICAgICAqIEVuc3VyZSBsb2NraW5nIG9yZGVy IGJ5IGFsd2F5cyBsb2NraW5nIHRoZSBzbWFsbGVzdAorICAgICAgICAgKiBJRCBmaXJzdC4KKyAg ICAgICAgICovCisgICAgICAgIGlmICggdmNwdS0+dmNwdV9pZCA8IHRhcmdldF92Y3B1LT52Y3B1 X2lkICkKKyAgICAgICAgeworICAgICAgICAgICAgdmNwdUEgPSB2Y3B1OworICAgICAgICAgICAg dmNwdUIgPSB0YXJnZXRfdmNwdTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK KyAgICAgICAgICAgIHZjcHVBID0gdGFyZ2V0X3ZjcHU7CisgICAgICAgICAgICB2Y3B1QiA9IHZj cHU7CisgICAgICAgIH0KKworICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdmNwdUEtPmFyY2gu dmdpY19jcHUuYXBfbGlzdF9sb2NrLCBmbGFncyk7CisgICAgICAgIHNwaW5fbG9jaygmdmNwdUIt PmFyY2gudmdpY19jcHUuYXBfbGlzdF9sb2NrKTsKKyAgICAgICAgc3Bpbl9sb2NrKCZpcnEtPmly cV9sb2NrKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBJZiB0aGUgYWZmaW5pdHkgaGFzIGJl ZW4gcHJlc2VydmVkLCBtb3ZlIHRoZQorICAgICAgICAgKiBpbnRlcnJ1cHQgYXJvdW5kLiBPdGhl cndpc2UsIGl0IG1lYW5zIHRoaW5ncyBoYXZlCisgICAgICAgICAqIGNoYW5nZWQgd2hpbGUgdGhl IGludGVycnVwdCB3YXMgdW5sb2NrZWQsIGFuZCB3ZQorICAgICAgICAgKiBuZWVkIHRvIHJlcGxh eSB0aGlzLgorICAgICAgICAgKgorICAgICAgICAgKiBJbiBhbGwgY2FzZXMsIHdlIGNhbm5vdCB0 cnVzdCB0aGUgbGlzdCBub3QgdG8gaGF2ZQorICAgICAgICAgKiBjaGFuZ2VkLCBzbyB3ZSByZXN0 YXJ0IGZyb20gdGhlIGJlZ2lubmluZy4KKyAgICAgICAgICovCisgICAgICAgIGlmICggdGFyZ2V0 X3ZjcHUgPT0gdmdpY190YXJnZXRfb3JhY2xlKGlycSkgKQorICAgICAgICB7CisgICAgICAgICAg ICBzdHJ1Y3QgdmdpY19jcHUgKm5ld19jcHUgPSAmdGFyZ2V0X3ZjcHUtPmFyY2gudmdpY19jcHU7 CisKKyAgICAgICAgICAgIGxpc3RfZGVsKCZpcnEtPmFwX2xpc3QpOworICAgICAgICAgICAgaXJx LT52Y3B1ID0gdGFyZ2V0X3ZjcHU7CisgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZpcnEtPmFw X2xpc3QsICZuZXdfY3B1LT5hcF9saXN0X2hlYWQpOworICAgICAgICB9CisKKyAgICAgICAgc3Bp bl91bmxvY2soJmlycS0+aXJxX2xvY2spOworICAgICAgICBzcGluX3VubG9jaygmdmNwdUItPmFy Y2gudmdpY19jcHUuYXBfbGlzdF9sb2NrKTsKKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmdmNwdUEtPmFyY2gudmdpY19jcHUuYXBfbGlzdF9sb2NrLCBmbGFncyk7CisgICAgICAgIGdv dG8gcmV0cnk7CisgICAgfQorCisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmdpY19jcHUt PmFwX2xpc3RfbG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdmdpY19mb2xk X2xyX3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KQoreworfQorCisvKiBSZXF1aXJlcyB0aGUgaXJx X2xvY2sgdG8gYmUgaGVsZC4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB2Z2ljX3BvcHVsYXRlX2xy KHN0cnVjdCB2Y3B1ICp2Y3B1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHZnaWNfaXJxICppcnEsIGludCBscikKK3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2Nr ZWQoJmlycS0+aXJxX2xvY2spKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHZnaWNfY2xlYXJf bHIoc3RydWN0IHZjcHUgKnZjcHUsIGludCBscikKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lk IHZnaWNfc2V0X3VuZGVyZmxvdyhzdHJ1Y3QgdmNwdSAqdmNwdSkKK3sKK30KKworLyogUmVxdWly ZXMgdGhlIGFwX2xpc3RfbG9jayB0byBiZSBoZWxkLiAqLworc3RhdGljIGludCBjb21wdXRlX2Fw X2xpc3RfZGVwdGgoc3RydWN0IHZjcHUgKnZjcHUpCit7CisgICAgc3RydWN0IHZnaWNfY3B1ICp2 Z2ljX2NwdSA9ICZ2Y3B1LT5hcmNoLnZnaWNfY3B1OworICAgIHN0cnVjdCB2Z2ljX2lycSAqaXJx OworICAgIGludCBjb3VudCA9IDA7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnZnaWNf Y3B1LT5hcF9saXN0X2xvY2spKTsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoaXJxLCAmdmdp Y19jcHUtPmFwX2xpc3RfaGVhZCwgYXBfbGlzdCkKKyAgICB7CisgICAgICAgIHNwaW5fbG9jaygm aXJxLT5pcnFfbG9jayk7CisgICAgICAgIC8qIEdJQ3YyIFNHSXMgY2FuIGNvdW50IGZvciBtb3Jl IHRoYW4gb25lLi4uICovCisgICAgICAgIGlmICggdmdpY19pcnFfaXNfc2dpKGlycS0+aW50aWQp ICYmIGlycS0+c291cmNlICkKKyAgICAgICAgICAgIGNvdW50ICs9IGh3ZWlnaHQ4KGlycS0+c291 cmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgc3Bpbl91 bmxvY2soJmlycS0+aXJxX2xvY2spOworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKKy8q IFJlcXVpcmVzIHRoZSBWQ1BVJ3MgYXBfbGlzdF9sb2NrIHRvIGJlIGhlbGQuICovCitzdGF0aWMg dm9pZCB2Z2ljX2ZsdXNoX2xyX3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KQoreworICAgIHN0cnVj dCB2Z2ljX2NwdSAqdmdpY19jcHUgPSAmdmNwdS0+YXJjaC52Z2ljX2NwdTsKKyAgICBzdHJ1Y3Qg dmdpY19pcnEgKmlycTsKKyAgICBpbnQgY291bnQgPSAwOworCisgICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZ2Z2ljX2NwdS0+YXBfbGlzdF9sb2NrKSk7CisKKyAgICBpZiAoIGNvbXB1dGVfYXBf bGlzdF9kZXB0aCh2Y3B1KSA+IGdpY19nZXRfbnJfbHJzKCkgKQorICAgICAgICB2Z2ljX3NvcnRf YXBfbGlzdCh2Y3B1KTsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIGlycSwgJnZnaWNfY3B1 LT5hcF9saXN0X2hlYWQsIGFwX2xpc3QgKQorICAgIHsKKyAgICAgICAgc3Bpbl9sb2NrKCZpcnEt PmlycV9sb2NrKTsKKworICAgICAgICBpZiAoIHVubGlrZWx5KHZnaWNfdGFyZ2V0X29yYWNsZShp cnEpICE9IHZjcHUpICkKKyAgICAgICAgICAgIGdvdG8gbmV4dDsKKworICAgICAgICAvKgorICAg ICAgICAgKiBJZiB3ZSBnZXQgYW4gU0dJIHdpdGggbXVsdGlwbGUgc291cmNlcywgdHJ5IHRvIGdl dAorICAgICAgICAgKiB0aGVtIGluIGFsbCBhdCBvbmNlLgorICAgICAgICAgKi8KKyAgICAgICAg ZG8KKyAgICAgICAgeworICAgICAgICAgICAgdmdpY19wb3B1bGF0ZV9scih2Y3B1LCBpcnEsIGNv dW50KyspOworICAgICAgICB9IHdoaWxlICggaXJxLT5zb3VyY2UgJiYgY291bnQgPCBnaWNfZ2V0 X25yX2xycygpICk7CisKK25leHQ6CisgICAgICAgIHNwaW5fdW5sb2NrKCZpcnEtPmlycV9sb2Nr KTsKKworICAgICAgICBpZiAoIGNvdW50ID09IGdpY19nZXRfbnJfbHJzKCkgKQorICAgICAgICB7 CisgICAgICAgICAgICBpZiAoICFsaXN0X2lzX2xhc3QoJmlycS0+YXBfbGlzdCwgJnZnaWNfY3B1 LT5hcF9saXN0X2hlYWQpICkKKyAgICAgICAgICAgICAgICB2Z2ljX3NldF91bmRlcmZsb3codmNw dSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZjcHUtPmFy Y2gudmdpY19jcHUudXNlZF9scnMgPSBjb3VudDsKKworICAgIC8qIE51a2UgcmVtYWluaW5nIExS cyAqLworICAgIGZvciAoIDsgY291bnQgPCBnaWNfZ2V0X25yX2xycygpOyBjb3VudCsrKQorICAg ICAgICB2Z2ljX2NsZWFyX2xyKHZjcHUsIGNvdW50KTsKK30KKworLyoKKyAqIGdpY19jbGVhcl9s cnMoKSAtIFVwZGF0ZSB0aGUgVkdJQyBzdGF0ZSBmcm9tIGhhcmR3YXJlIGFmdGVyIGEgZ3Vlc3Qn cyBydW4uCisgKiBAdmNwdTogdGhlIFZDUFUuCisgKgorICogU3luYyBiYWNrIHRoZSBoYXJkd2Fy ZSBWR0lDIHN0YXRlIGFmdGVyIHRoZSBndWVzdCBoYXMgcnVuLCBpbnRvIG91cgorICogVkdJQyBl bXVsYXRpb24gc3RydWN0dXJlcywgSXQgcmVhZHMgdGhlIExScyBhbmQgdXBkYXRlcyB0aGUgcmVz cGVjdGl2ZQorICogc3RydWN0IHZnaWNfaXJxLCB0YWtpbmcgbGV2ZWwvZWRnZSBpbnRvIGFjY291 bnQuCisgKiBUaGlzIGlzIHRoZSBoaWdoIGxldmVsIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGNhcmUg b2YgdGhlIGNvbmRpdGlvbnMsCisgKiBhbHNvIGJhaWxzIG91dCBlYXJseSBpZiB0aGVyZSB3ZXJl IG5vIGludGVycnVwdHMgcXVldWVkLgorICogV2FzOiBrdm1fdmdpY19zeW5jX2h3c3RhdGUoKQor ICovCit2b2lkIGdpY19jbGVhcl9scnMoc3RydWN0IHZjcHUgKnZjcHUpCit7CisgICAgc3RydWN0 IHZnaWNfY3B1ICp2Z2ljX2NwdSA9ICZ2Y3B1LT5hcmNoLnZnaWNfY3B1OworCisgICAgLyogQW4g ZW1wdHkgYXBfbGlzdF9oZWFkIGltcGxpZXMgdXNlZF9scnMgPT0gMCAqLworICAgIGlmICggbGlz dF9lbXB0eSgmdmNwdS0+YXJjaC52Z2ljX2NwdS5hcF9saXN0X2hlYWQpICkKKyAgICAgICAgcmV0 dXJuOworCisgICAgaWYgKCB2Z2ljX2NwdS0+dXNlZF9scnMgKQorICAgICAgICB2Z2ljX2ZvbGRf bHJfc3RhdGUodmNwdSk7CisgICAgdmdpY19wcnVuZV9hcF9saXN0KHZjcHUpOworfQorCisvKgor ICogZ2ljX2luamVjdCgpIC0gZmx1c2ggdGhlIGVtdWxhdGlvbiBzdGF0ZSBpbnRvIHRoZSBoYXJk d2FyZSBvbiBndWVzdCBlbnRyeQorICoKKyAqIEJlZm9yZSB3ZSBlbnRlciBhIGd1ZXN0LCB3ZSBo YXZlIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBHSUMgc3RhdGUgb2YgYQorICogVkNQVSBpbnRv IHRoZSBHSUMgdmlydHVhbGl6YXRpb24gaGFyZHdhcmUgcmVnaXN0ZXJzLCBuYW1lbHkgdGhlIExS cy4KKyAqIFRoaXMgaXMgdGhlIGhpZ2ggbGV2ZWwgZnVuY3Rpb24gd2hpY2ggdGFrZXMgY2FyZSBh Ym91dCB0aGUgY29uZGl0aW9ucworICogYW5kIHRoZSBsb2NraW5nLCBhbHNvIGJhaWxzIG91dCBl YXJseSBpZiB0aGVyZSBhcmUgbm8gaW50ZXJydXB0cyBxdWV1ZWQuCisgKiBXYXM6IGt2bV92Z2lj X2ZsdXNoX2h3c3RhdGUoKQorICovCit2b2lkIGdpY19pbmplY3Qodm9pZCkKK3sKKyAgICAvKgor ICAgICAqIElmIHRoZXJlIGFyZSBubyB2aXJ0dWFsIGludGVycnVwdHMgYWN0aXZlIG9yIHBlbmRp bmcgZm9yIHRoaXMKKyAgICAgKiBWQ1BVLCB0aGVuIHRoZXJlIGlzIG5vIHdvcmsgdG8gZG8gYW5k IHdlIGNhbiBiYWlsIG91dCB3aXRob3V0CisgICAgICogdGFraW5nIGFueSBsb2NrLiAgVGhlcmUg aXMgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIHNvbWVvbmUgaW5qZWN0aW5nCisgICAgICogaW50ZXJy dXB0cyB0byB0aGUgVkNQVSwgYnV0IGl0IGlzIGEgYmVuaWduIHJhY2UgYXMgdGhlIFZDUFUgd2ls bAorICAgICAqIGVpdGhlciBvYnNlcnZlIHRoZSBuZXcgaW50ZXJydXB0IGJlZm9yZSBvciBhZnRl ciBkb2luZyB0aGlzIGNoZWNrLAorICAgICAqIGFuZCBpbnRyb2R1Y2luZyBhZGRpdGlvbmFsIHN5 bmNocm9uaXphdGlvbiBtZWNoYW5pc20gZG9lc24ndCBjaGFuZ2UKKyAgICAgKiB0aGlzLgorICAg ICAqLworICAgIGlmICggbGlzdF9lbXB0eSgmY3VycmVudC0+YXJjaC52Z2ljX2NwdS5hcF9saXN0 X2hlYWQpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5h YmxlZCgpKTsKKworICAgIHNwaW5fbG9jaygmY3VycmVudC0+YXJjaC52Z2ljX2NwdS5hcF9saXN0 X2xvY2spOworICAgIHZnaWNfZmx1c2hfbHJfc3RhdGUoY3VycmVudCk7CisgICAgc3Bpbl91bmxv Y2soJmN1cnJlbnQtPmFyY2gudmdpY19jcHUuYXBfbGlzdF9sb2NrKTsKK30KIC8qCiAgKiBMb2Nh bCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy92 Z2ljLmggYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmgKaW5kZXggNTEyNzczOWYwZi4uNDdmYzU4 YjgxZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oCisrKyBiL3hlbi9hcmNo L2FybS92Z2ljL3ZnaWMuaApAQCAtMTcsNiArMTcsOCBAQAogI2lmbmRlZiBfX1hFTl9BUk1fVkdJ Q19ORVdfSF9fCiAjZGVmaW5lIF9fWEVOX0FSTV9WR0lDX05FV19IX18KIAorI2RlZmluZSB2Z2lj X2lycV9pc19zZ2koaW50aWQpICgoaW50aWQpIDwgVkdJQ19OUl9TR0lTKQorCiBzdGF0aWMgaW5s aW5lIGJvb2wgaXJxX2lzX3BlbmRpbmcoc3RydWN0IHZnaWNfaXJxICppcnEpCiB7CiAgICAgaWYg KCBpcnEtPmNvbmZpZyA9PSBWR0lDX0NPTkZJR19FREdFICkKLS0gCjIuMTQuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=