From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 16/45] ARM: new VGIC: Implement virtual IRQ injection Date: Thu, 15 Mar 2018 20:30:21 +0000 Message-ID: <20180315203050.19791-17-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 1ewZX3-0003MM-Hc for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 20:31:25 +0000 Received: by mail-wr0-x242.google.com with SMTP id k3so9605427wrg.6 for ; Thu, 15 Mar 2018 13:31:23 -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 UHJvdmlkZSBhIHZnaWNfcXVldWVfaXJxX3VubG9jaygpIGZ1bmN0aW9uIHdoaWNoIGRlY2lkZXMg d2hldGhlciBhCmdpdmVuIElSUSBuZWVkcyB0byBiZSBxdWV1ZWQgdG8gYSBWQ1BVJ3MgYXBfbGlz dC4KVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGFuIElSUSBiZWNvbWVzIHBlbmRpbmcg b3IgZW5hYmxlZCwKZWl0aGVyIGFzIGEgcmVzdWx0IG9mIGEgaGFyZHdhcmUgSVJRIGluamVjdGlv biwgZnJvbSBkZXZpY2VzIGVtdWxhdGVkIGJ5ClhlbiAobGlrZSB0aGUgYXJjaGl0ZWN0ZWQgdGlt ZXIpIG9yIGZyb20gTU1JTyBhY2Nlc3NlcyB0byB0aGUgZGlzdHJpYnV0b3IKZW11bGF0aW9uLgpB bHNvIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIHRvIGFsbG93IHRvIGluamVjdCBh biBJUlEgdG8gYSBndWVzdC4KU2luY2UgdGhpcyBpcyB0aGUgZmlyc3QgY29kZSB0aGF0IHN0YXJ0 cyB1c2luZyBvdXIgbG9ja2luZyBtZWNoYW5pc20sCndlIGFkZCBzb21lIChob3BlZnVsbHkpIGNs ZWFyIGRvY3VtZW50YXRpb24gb2Ygb3VyIGxvY2tpbmcgc3RyYXRlZ3kgYW5kCnJlcXVpcmVtZW50 cyBhbG9uZyB3aXRoIHRoaXMgcGF0Y2guCgpUaGlzIGlzIGJhc2VkIG9uIExpbnV4IGNvbW1pdCA4 MWVlYjk1ZGRiYWIsIHdyaXR0ZW4gYnkgQ2hyaXN0b2ZmZXIgRGFsbC4KClNpZ25lZC1vZmYtYnk6 IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBsaW5hcm8ub3JnPgotLS0KQ2hhbmdlbG9n IHYxIC4uLiB2MjoKLSByZXdvcmsgdmFsaWRhdGVfaW5qZWN0aW9uKCkKLSBhZGQgY29tbWVudHMK LSBtYWtlIHZnaWNfaW5qZWN0X2lycSBhIHZvaWQgZnVuY3Rpb24KLSBmaXggY29tbWVudAoKIHhl bi9hcmNoL2FybS92Z2ljL3ZnaWMuYyB8IDIyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oIHwgIDEwICsrKwog MiBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS92Z2ljL3ZnaWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuYwppbmRleCBkOWQyODVj MzYxLi4yMGQ0OGFjNmY1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmMKKysr IGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5jCkBAIC0xNywxMCArMTcsMzYgQEAKIAogI2luY2x1 ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9idWcuaD4KKyNpbmNsdWRlIDxhc20vZXZl bnQuaD4KICNpbmNsdWRlIDxhc20vbmV3X3ZnaWMuaD4KIAogI2luY2x1ZGUgInZnaWMuaCIKIAor LyoKKyAqIExvY2tpbmcgb3JkZXIgaXMgYWx3YXlzOgorICogICB2Z2ljLT5sb2NrCisgKiAgICAg dmdpY19jcHUtPmFwX2xpc3RfbG9jaworICogICAgICAgdmdpYy0+bHBpX2xpc3RfbG9jaworICog ICAgICAgICBkZXNjLT5sb2NrCisgKiAgICAgICAgICAgdmdpY19pcnEtPmlycV9sb2NrCisgKgor ICogSWYgeW91IG5lZWQgdG8gdGFrZSBtdWx0aXBsZSBsb2NrcywgYWx3YXlzIHRha2UgdGhlIHVw cGVyIGxvY2sgZmlyc3QsCisgKiB0aGVuIHRoZSBsb3dlciBvbmVzLCBlLmcuIGZpcnN0IHRha2Ug dGhlIGFwX2xpc3RfbG9jaywgdGhlbiB0aGUgaXJxX2xvY2suCisgKiBJZiB5b3UgYXJlIGFscmVh ZHkgaG9sZGluZyBhIGxvY2sgYW5kIG5lZWQgdG8gdGFrZSBhIGhpZ2hlciBvbmUsIHlvdQorICog aGF2ZSB0byBkcm9wIHRoZSBsb3dlciByYW5raW5nIGxvY2sgZmlyc3QgYW5kIHJlLWFjcXVpcmUg aXQgYWZ0ZXIgaGF2aW5nCisgKiB0YWtlbiB0aGUgdXBwZXIgb25lLgorICoKKyAqIFdoZW4gdGFr aW5nIG1vcmUgdGhhbiBvbmUgYXBfbGlzdF9sb2NrIGF0IHRoZSBzYW1lIHRpbWUsIGFsd2F5cyB0 YWtlIHRoZQorICogbG93ZXN0IG51bWJlcmVkIFZDUFUncyBhcF9saXN0X2xvY2sgZmlyc3QsIHNv OgorICogICB2Y3B1WC0+dmNwdV9pZCA8IHZjcHVZLT52Y3B1X2lkOgorICogICAgIHNwaW5fbG9j ayh2Y3B1WC0+YXJjaC52Z2ljLmFwX2xpc3RfbG9jayk7CisgKiAgICAgc3Bpbl9sb2NrKHZjcHVZ LT5hcmNoLnZnaWMuYXBfbGlzdF9sb2NrKTsKKyAqCisgKiBTaW5jZSB0aGUgVkdJQyBtdXN0IHN1 cHBvcnQgaW5qZWN0aW5nIHZpcnR1YWwgaW50ZXJydXB0cyBmcm9tIElTUnMsIHdlIGhhdmUKKyAq IHRvIHVzZSB0aGUgc3Bpbl9sb2NrX2lycXNhdmUvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSB2ZXJz aW9ucyBvZiBvdXRlcgorICogc3BpbmxvY2tzIGZvciBhbnkgbG9jayB0aGF0IG1heSBiZSB0YWtl biB3aGlsZSBpbmplY3RpbmcgYW4gaW50ZXJydXB0LgorICovCisKIC8qCiAgKiBJdGVyYXRlIG92 ZXIgdGhlIFZNJ3MgbGlzdCBvZiBtYXBwZWQgTFBJcyB0byBmaW5kIHRoZSBvbmUgd2l0aCBhCiAg KiBtYXRjaGluZyBpbnRlcnJ1cHQgSUQgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgSVJR IHN0cnVjdHVyZS4KQEAgLTExNCw2ICsxNDAsMjA2IEBAIHZvaWQgdmdpY19wdXRfaXJxKHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCB2Z2ljX2lycSAqaXJxKQogICAgIHhmcmVlKGlycSk7CiB9CiAK Ky8qKgorICogdmdpY190YXJnZXRfb3JhY2xlKCkgLSBjb21wdXRlIHRoZSB0YXJnZXQgdmNwdSBm b3IgYW4gaXJxCisgKiBAaXJxOiAgICBUaGUgaXJxIHRvIHJvdXRlLiBNdXN0IGJlIGFscmVhZHkg bG9ja2VkLgorICoKKyAqIEJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBpbnRlcnJ1 cHQgKGVuYWJsZWQsIHBlbmRpbmcsCisgKiBhY3RpdmUsIHZjcHUgYW5kIHRhcmdldF92Y3B1KSwg Y29tcHV0ZSB0aGUgbmV4dCB2Y3B1IHRoaXMgc2hvdWxkIGJlCisgKiBnaXZlbiB0by4gUmV0dXJu IE5VTEwgaWYgdGhpcyBzaG91bGRuJ3QgYmUgaW5qZWN0ZWQgYXQgYWxsLgorICoKKyAqIFJlcXVp cmVzIHRoZSBJUlEgbG9jayB0byBiZSBoZWxkLgorICoKKyAqIFJldHVybnM6IFRoZSBwb2ludGVy IHRvIHRoZSB2aXJ0dWFsIENQVSB0aGlzIGludGVycnVwdCBzaG91bGQgYmUgaW5qZWN0ZWQKKyAq ICAgICAgICAgIHRvLiBXaWxsIGJlIE5VTEwgaWYgdGhpcyBJUlEgZG9lcyBub3QgbmVlZCB0byBi ZSBpbmplY3RlZC4KKyAqLworc3RhdGljIHN0cnVjdCB2Y3B1ICp2Z2ljX3RhcmdldF9vcmFjbGUo c3RydWN0IHZnaWNfaXJxICppcnEpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZpcnEt PmlycV9sb2NrKSk7CisKKyAgICAvKiBJZiB0aGUgaW50ZXJydXB0IGlzIGFjdGl2ZSwgaXQgbXVz dCBzdGF5IG9uIHRoZSBjdXJyZW50IHZjcHUgKi8KKyAgICBpZiAoIGlycS0+YWN0aXZlICkKKyAg ICAgICAgcmV0dXJuIGlycS0+dmNwdSA/IDogaXJxLT50YXJnZXRfdmNwdTsKKworICAgIC8qCisg ICAgICogSWYgdGhlIElSUSBpcyBub3QgYWN0aXZlIGJ1dCBlbmFibGVkIGFuZCBwZW5kaW5nLCB3 ZSBzaG91bGQgZGlyZWN0CisgICAgICogaXQgdG8gaXRzIGNvbmZpZ3VyZWQgdGFyZ2V0IFZDUFUu CisgICAgICogSWYgdGhlIGRpc3RyaWJ1dG9yIGlzIGRpc2FibGVkLCBwZW5kaW5nIGludGVycnVw dHMgc2hvdWxkbid0IGJlCisgICAgICogZm9yd2FyZGVkLgorICAgICAqLworICAgIGlmICggaXJx LT5lbmFibGVkICYmIGlycV9pc19wZW5kaW5nKGlycSkgKQorICAgIHsKKyAgICAgICAgaWYgKCB1 bmxpa2VseShpcnEtPnRhcmdldF92Y3B1ICYmCisgICAgICAgICAgICAgICAgICAgICAgIWlycS0+ dGFyZ2V0X3ZjcHUtPmRvbWFpbi0+YXJjaC52Z2ljLmVuYWJsZWQpICkKKyAgICAgICAgICAgIHJl dHVybiBOVUxMOworCisgICAgICAgIHJldHVybiBpcnEtPnRhcmdldF92Y3B1OworICAgIH0KKwor ICAgIC8qCisgICAgICogSWYgbmVpdGhlciBhY3RpdmUgbm9yIHBlbmRpbmcgYW5kIGVuYWJsZWQs IHRoZW4gdGhpcyBJUlEgc2hvdWxkIG5vdAorICAgICAqIGJlIHF1ZXVlZCB0byBhbnkgVkNQVS4K KyAgICAgKi8KKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIE9ubHkgdmFsaWQgaW5qZWN0 aW9uIGlmIGNoYW5naW5nIGxldmVsIGZvciBsZXZlbC10cmlnZ2VyZWQgSVJRcyBvciBmb3IgYQor ICogcmlzaW5nIGVkZ2UuCisgKi8KK3N0YXRpYyBib29sIHZnaWNfdmFsaWRhdGVfaW5qZWN0aW9u KHN0cnVjdCB2Z2ljX2lycSAqaXJxLCBib29sIGxldmVsKQoreworICAgIC8qIEZvciBlZGdlIGlu dGVycnVwdHMgd2Ugb25seSBjYXJlIGFib3V0IGEgcmlzaW5nIGVkZ2UuICovCisgICAgaWYgKCBp cnEtPmNvbmZpZyA9PSBWR0lDX0NPTkZJR19FREdFICkKKyAgICAgICAgcmV0dXJuIGxldmVsOwor CisgICAgLyogRm9yIGxldmVsIGludGVycnVwdHMgd2UgaGF2ZSB0byBhY3Qgd2hlbiB0aGUgbGlu ZSBsZXZlbCBjaGFuZ2VzLiAqLworICAgIHJldHVybiBpcnEtPmxpbmVfbGV2ZWwgIT0gbGV2ZWw7 Cit9CisKKy8qKgorICogdmdpY19xdWV1ZV9pcnFfdW5sb2NrKCkgLSBRdWV1ZSBhbiBJUlEgdG8g YSBWQ1BVLCB0byBiZSBpbmplY3RlZCB0byBhIGd1ZXN0LgorICogQGQ6ICAgICAgICBUaGUgZG9t YWluIHRoZSB2aXJ0dWFsIElSUSBiZWxvbmdzIHRvLgorICogQGlycTogICAgICBBIHBvaW50ZXIg dG8gdGhlIHZnaWNfaXJxIG9mIHRoZSB2aXJ0dWFsIElSUSwgd2l0aCB0aGUgbG9jayBoZWxkLgor ICogQGZsYWdzOiAgICBUaGUgZmxhZ3MgdXNlZCB3aGVuIGhhdmluZyBncmFiYmVkIHRoZSBJUlEg bG9jay4KKyAqCisgKiBDaGVjayB3aGV0aGVyIGFuIElSUSBuZWVkcyB0byAoYW5kIGNhbikgYmUg cXVldWVkIHRvIGEgVkNQVSdzIGFwIGxpc3QuCisgKiBEbyB0aGUgcXVldWluZyBpZiBuZWNlc3Nh cnksIHRha2luZyB0aGUgcmlnaHQgbG9ja3MgaW4gdGhlIHJpZ2h0IG9yZGVyLgorICoKKyAqIE5l ZWRzIHRvIGJlIGVudGVyZWQgd2l0aCB0aGUgSVJRIGxvY2sgYWxyZWFkeSBoZWxkLCBidXQgd2ls bCByZXR1cm4KKyAqIHdpdGggYWxsIGxvY2tzIGRyb3BwZWQuCisgKi8KK3ZvaWQgdmdpY19xdWV1 ZV9pcnFfdW5sb2NrKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKyAgICBzdHJ1 Y3QgdmNwdSAqdmNwdTsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaXJxLT5pcnFfbG9j aykpOworCityZXRyeToKKyAgICB2Y3B1ID0gdmdpY190YXJnZXRfb3JhY2xlKGlycSk7CisgICAg aWYgKCBpcnEtPnZjcHUgfHwgIXZjcHUgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICog SWYgdGhpcyBJUlEgaXMgYWxyZWFkeSBvbiBhIFZDUFUncyBhcF9saXN0LCB0aGVuIGl0CisgICAg ICAgICAqIGNhbm5vdCBiZSBtb3ZlZCBvciBtb2RpZmllZCBhbmQgdGhlcmUgaXMgbm8gbW9yZSB3 b3JrIGZvcgorICAgICAgICAgKiB1cyB0byBkby4KKyAgICAgICAgICoKKyAgICAgICAgICogT3Ro ZXJ3aXNlLCBpZiB0aGUgaXJxIGlzIG5vdCBwZW5kaW5nIGFuZCBlbmFibGVkLCBpdCBkb2VzCisg ICAgICAgICAqIG5vdCBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gYW4gYXBfbGlzdCBhbmQgdGhl cmUgaXMgYWxzbworICAgICAgICAgKiBubyBtb3JlIHdvcmsgZm9yIHVzIHRvIGRvLgorICAgICAg ICAgKi8KKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxLT5pcnFfbG9jaywgZmxh Z3MpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFdlIGhhdmUgdG8ga2ljayB0aGUgVkNQVSBo ZXJlLCBiZWNhdXNlIHdlIGNvdWxkIGJlCisgICAgICAgICAqIHF1ZXVlaW5nIGFuIGVkZ2UtdHJp Z2dlcmVkIGludGVycnVwdCBmb3Igd2hpY2ggd2UKKyAgICAgICAgICogZ2V0IG5vIEVPSSBtYWlu dGVuYW5jZSBpbnRlcnJ1cHQuIEluIHRoYXQgY2FzZSwKKyAgICAgICAgICogd2hpbGUgdGhlIElS USBpcyBhbHJlYWR5IG9uIHRoZSBWQ1BVJ3MgQVAgbGlzdCwgdGhlCisgICAgICAgICAqIFZDUFUg Y291bGQgaGF2ZSBFT0knZWQgdGhlIG9yaWdpbmFsIGludGVycnVwdCBhbmQKKyAgICAgICAgICog d29uJ3Qgc2VlIHRoaXMgb25lIHVudGlsIGl0IGV4aXRzIGZvciBzb21lIG90aGVyCisgICAgICAg ICAqIHJlYXNvbi4KKyAgICAgICAgICovCisgICAgICAgIGlmICggdmNwdSApCisgICAgICAgICAg ICB2Y3B1X2tpY2sodmNwdSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisg ICAgICogV2UgbXVzdCB1bmxvY2sgdGhlIGlycSBsb2NrIHRvIHRha2UgdGhlIGFwX2xpc3RfbG9j ayB3aGVyZQorICAgICAqIHdlIGFyZSBnb2luZyB0byBpbnNlcnQgdGhpcyBuZXcgcGVuZGluZyBp bnRlcnJ1cHQuCisgICAgICovCisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxLT5pcnFf bG9jaywgZmxhZ3MpOworCisgICAgLyogc29tZW9uZSBjYW4gZG8gc3R1ZmYgaGVyZSwgd2hpY2gg d2UgcmUtY2hlY2sgYmVsb3cgKi8KKworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ2Y3B1LT5hcmNo LnZnaWMuYXBfbGlzdF9sb2NrLCBmbGFncyk7CisgICAgc3Bpbl9sb2NrKCZpcnEtPmlycV9sb2Nr KTsKKworICAgIC8qCisgICAgICogRGlkIHNvbWV0aGluZyBjaGFuZ2UgYmVoaW5kIG91ciBiYWNr cz8KKyAgICAgKgorICAgICAqIFRoZXJlIGFyZSB0d28gY2FzZXM6CisgICAgICogMSkgVGhlIGly cSBsb3N0IGl0cyBwZW5kaW5nIHN0YXRlIG9yIHdhcyBkaXNhYmxlZCBiZWhpbmQgb3VyCisgICAg ICogICAgYmFja3MgYW5kL29yIGl0IHdhcyBxdWV1ZWQgdG8gYW5vdGhlciBWQ1BVJ3MgYXBfbGlz dC4KKyAgICAgKiAyKSBTb21lb25lIGNoYW5nZWQgdGhlIGFmZmluaXR5IG9uIHRoaXMgaXJxIGJl aGluZCBvdXIKKyAgICAgKiAgICBiYWNrcyBhbmQgd2UgYXJlIG5vdyBob2xkaW5nIHRoZSB3cm9u ZyBhcF9saXN0X2xvY2suCisgICAgICoKKyAgICAgKiBJbiBib3RoIGNhc2VzLCBkcm9wIHRoZSBs b2NrcyBhbmQgcmV0cnkuCisgICAgICovCisKKyAgICBpZiAoIHVubGlrZWx5KGlycS0+dmNwdSB8 fCB2Y3B1ICE9IHZnaWNfdGFyZ2V0X29yYWNsZShpcnEpKSApCisgICAgeworICAgICAgICBzcGlu X3VubG9jaygmaXJxLT5pcnFfbG9jayk7CisgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnZjcHUtPmFyY2gudmdpYy5hcF9saXN0X2xvY2ssIGZsYWdzKTsKKworICAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmaXJxLT5pcnFfbG9jaywgZmxhZ3MpOworICAgICAgICBnb3RvIHJldHJ5Owor ICAgIH0KKworICAgIC8qCisgICAgICogR3JhYiBhIHJlZmVyZW5jZSB0byB0aGUgaXJxIHRvIHJl ZmxlY3QgdGhlIGZhY3QgdGhhdCBpdCBpcworICAgICAqIG5vdyBpbiB0aGUgYXBfbGlzdC4KKyAg ICAgKi8KKyAgICB2Z2ljX2dldF9pcnFfa3JlZihpcnEpOworICAgIGxpc3RfYWRkX3RhaWwoJmly cS0+YXBfbGlzdCwgJnZjcHUtPmFyY2gudmdpYy5hcF9saXN0X2hlYWQpOworICAgIGlycS0+dmNw dSA9IHZjcHU7CisKKyAgICBzcGluX3VubG9jaygmaXJxLT5pcnFfbG9jayk7CisgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdmNwdS0+YXJjaC52Z2ljLmFwX2xpc3RfbG9jaywgZmxhZ3MpOwor CisgICAgdmNwdV9raWNrKHZjcHUpOworCisgICAgcmV0dXJuOworfQorCisvKioKKyAqIHZnaWNf aW5qZWN0X2lycSgpIC0gSW5qZWN0IGFuIElSUSBmcm9tIGEgZGV2aWNlIHRvIHRoZSB2Z2ljCisg KiBAZDogICAgICAgVGhlIGRvbWFpbiBwb2ludGVyCisgKiBAdmNwdTogICAgVGhlIHZDUFUgZm9y IHByaXZhdGUgSVJRcyAoUFBJcywgU0dJcykuIElnbm9yZWQgZm9yIFNQSXMgYW5kIExQSXMuCisg KiBAaW50aWQ6ICAgVGhlIElOVElEIHRvIGluamVjdCBhIG5ldyBzdGF0ZSB0by4KKyAqIEBsZXZl bDogICBFZGdlLXRyaWdnZXJlZDogIHRydWU6ICB0byB0cmlnZ2VyIHRoZSBpbnRlcnJ1cHQKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlOiB0byBpZ25vcmUgdGhlIGNhbGwKKyAq ICAgICAgICAgICBMZXZlbC1zZW5zaXRpdmUgIHRydWU6ICByYWlzZSB0aGUgaW5wdXQgc2lnbmFs CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZTogbG93ZXIgdGhlIGlucHV0IHNp Z25hbAorICoKKyAqIEluamVjdHMgYW4gaW5zdGFuY2Ugb2YgdGhlIGdpdmVuIHZpcnR1YWwgSVJR IGludG8gYSBkb21haW4uCisgKiBUaGUgVkdJQyBpcyBub3QgY29uY2VybmVkIHdpdGggZGV2aWNl cyBiZWluZyBhY3RpdmUtTE9XIG9yIGFjdGl2ZS1ISUdIIGZvcgorICogbGV2ZWwtc2Vuc2l0aXZl IGludGVycnVwdHMuICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBsZXZlbCBwYXJhbWV0ZXIgYXMgMQor ICogYmVpbmcgSElHSCBhbmQgMCBiZWluZyBMT1cgYW5kIGFsbCBkZXZpY2VzIGJlaW5nIGFjdGl2 ZS1ISUdILgorICovCit2b2lkIHZnaWNfaW5qZWN0X2lycShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3QgdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGludGlkLAorICAgICAgICAgICAgICAgICAgICAg Ym9vbCBsZXZlbCkKK3sKKyAgICBzdHJ1Y3QgdmdpY19pcnEgKmlycTsKKyAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworCisgICAgaXJxID0gdmdpY19nZXRfaXJxKGQsIHZjcHUsIGludGlkKTsKKyAg ICBpZiAoICFpcnEgKQorICAgICAgICByZXR1cm47CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgm aXJxLT5pcnFfbG9jaywgZmxhZ3MpOworCisgICAgaWYgKCAhdmdpY192YWxpZGF0ZV9pbmplY3Rp b24oaXJxLCBsZXZlbCkgKQorICAgIHsKKyAgICAgICAgLyogTm90aGluZyB0byBzZWUgaGVyZSwg bW92ZSBhbG9uZy4uLiAqLworICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpcnEtPmly cV9sb2NrLCBmbGFncyk7CisgICAgICAgIHZnaWNfcHV0X2lycShkLCBpcnEpOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgaWYgKCBpcnEtPmNvbmZpZyA9PSBWR0lDX0NPTkZJR19MRVZF TCApCisgICAgICAgIGlycS0+bGluZV9sZXZlbCA9IGxldmVsOworICAgIGVsc2UKKyAgICAgICAg aXJxLT5wZW5kaW5nX2xhdGNoID0gdHJ1ZTsKKworICAgIHZnaWNfcXVldWVfaXJxX3VubG9jayhk LCBpcnEsIGZsYWdzKTsKKyAgICB2Z2ljX3B1dF9pcnEoZCwgaXJxKTsKKworICAgIHJldHVybjsK K30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS92Z2ljL3ZnaWMuaCBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuaAppbmRleCBh M2JlZmQzODZiLi5mOWUyZWViMmQ2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2lj LmgKKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oCkBAIC0xNyw5ICsxNywxOSBAQAogI2lm bmRlZiBfX1hFTl9BUk1fVkdJQ19WR0lDX0hfXwogI2RlZmluZSBfX1hFTl9BUk1fVkdJQ19WR0lD X0hfXwogCitzdGF0aWMgaW5saW5lIGJvb2wgaXJxX2lzX3BlbmRpbmcoc3RydWN0IHZnaWNfaXJx ICppcnEpCit7CisgICAgaWYgKCBpcnEtPmNvbmZpZyA9PSBWR0lDX0NPTkZJR19FREdFICkKKyAg ICAgICAgcmV0dXJuIGlycS0+cGVuZGluZ19sYXRjaDsKKyAgICBlbHNlCisgICAgICAgIHJldHVy biBpcnEtPnBlbmRpbmdfbGF0Y2ggfHwgaXJxLT5saW5lX2xldmVsOworfQorCiBzdHJ1Y3Qgdmdp Y19pcnEgKnZnaWNfZ2V0X2lycShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdmNwdSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBpbnRpZCk7CiB2b2lkIHZnaWNfcHV0 X2lycShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSk7Cit2b2lkIHZnaWNf cXVldWVfaXJxX3VubG9jayhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmdpY19pcnEgKmlycSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogCiBzdGF0 aWMgaW5saW5lIHZvaWQgdmdpY19nZXRfaXJxX2tyZWYoc3RydWN0IHZnaWNfaXJxICppcnEpCiB7 Ci0tIAoyLjE0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs