From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 20/45] ARM: new VGIC: Add GICv2 world switch backend Date: Thu, 15 Mar 2018 20:30:25 +0000 Message-ID: <20180315203050.19791-21-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 1ewZX8-0003X1-KN for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 20:31:30 +0000 Received: by mail-wm0-x242.google.com with SMTP id t6so12991560wmt.5 for ; Thu, 15 Mar 2018 13:31:29 -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 UHJvY2Vzc2luZyBtYWludGVuYW5jZSBpbnRlcnJ1cHRzIGFuZCBhY2Nlc3NpbmcgdGhlIGxpc3Qg cmVnaXN0ZXJzCmFyZSBkZXBlbmRlbnQgb24gdGhlIGhvc3QncyBHSUMgdmVyc2lvbi4KSW50cm9k dWNlIHZnaWMtdjIuYyB0byBjb250YWluIEdJQ3YyIHNwZWNpZmljIGZ1bmN0aW9ucy4KSW1wbGVt ZW50IHRoZSBHSUN2MiBzcGVjaWZpYyBjb2RlIGZvciBzeW5jaW5nIHRoZSBlbXVsYXRpb24gc3Rh dGUKaW50byB0aGUgVkdJQyByZWdpc3RlcnMuClRoaXMgYWxzbyBhZGRzIHRoZSBob29rIHRvIGxl dCBYZW4gc2V0dXAgdGhlIGhvc3QgR0lDIGFkZHJlc3Nlcy4KClRoaXMgaXMgYmFzZWQgb24gTGlu dXggY29tbWl0IDE0MGIwODZkZDE5Nywgd3JpdHRlbiBieSBNYXJjIFp5bmdpZXIuCgpTaWduZWQt b2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAbGluYXJvLm9yZz4KLS0tCkNo YW5nZWxvZyB2MSAuLi4gdjI6Ci0gcmVtb3ZlIHYyIHNwZWNpZmljIHVuZGVyZmxvdyBmdW5jdGlv biAobm93IGdlbmVyaWMpCi0gcmUtYWRkIExpbnV4IGNvZGUgdG8gcHJvcGVybHkgaGFuZGxlIGFj a2VkIGxldmVsIElSUXMKCiB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLXYyLmMgfCAyMjkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS92Z2lj L3ZnaWMuYyAgICB8ICAgNiArKwogeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oICAgIHwgICA5ICsr CiAzIGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy12Mi5jCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Zn aWMvdmdpYy12Mi5jIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy12Mi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJjNWM3ODk1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi94 ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLXYyLmMKQEAgLTAsMCArMSwyMjkgQEAKKy8qCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTUsIDIwMTYgQVJNIEx0ZC4KKyAqIEltcG9ydGVkIGZyb20gTGludXggKCJu ZXciIEtWTSBWR0lDKSBhbmQgaGVhdmlseSBhZGFwdGVkIHRvIFhlbi4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxhc20vbmV3X3ZnaWMuaD4KKyNpbmNsdWRlIDxh c20vYnVnLmg+CisjaW5jbHVkZSA8YXNtL2dpYy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zaXplcy5oPgorCisjaW5jbHVkZSAi dmdpYy5oIgorCitzdGF0aWMgc3RydWN0IHsKKyAgICBib29sIGVuYWJsZWQ7CisgICAgcGFkZHJf dCBkYmFzZTsgICAgICAgICAgLyogRGlzdHJpYnV0b3IgaW50ZXJmYWNlIGFkZHJlc3MgKi8KKyAg ICBwYWRkcl90IGNiYXNlOyAgICAgICAgICAvKiBDUFUgaW50ZXJmYWNlIGFkZHJlc3MgJiBzaXpl ICovCisgICAgcGFkZHJfdCBjc2l6ZTsKKyAgICBwYWRkcl90IHZiYXNlOyAgICAgICAgICAvKiBW aXJ0dWFsIENQVSBpbnRlcmZhY2UgYWRkcmVzcyAqLworCisgICAgLyogT2Zmc2V0IHRvIGFkZCB0 byBnZXQgYW4gOGtCIGNvbnRpZ3VvdXMgcmVnaW9uIGlmIEdJQyBpcyBhbGlhc2VkICovCisgICAg dWludDMyX3QgYWxpYXNlZF9vZmZzZXQ7Cit9IGdpY192Ml9od19kYXRhOworCit2b2lkIHZnaWNf djJfc2V0dXBfaHcocGFkZHJfdCBkYmFzZSwgcGFkZHJfdCBjYmFzZSwgcGFkZHJfdCBjc2l6ZSwK KyAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IHZiYXNlLCB1aW50MzJfdCBhbGlhc2VkX29m ZnNldCkKK3sKKyAgICBnaWNfdjJfaHdfZGF0YS5lbmFibGVkID0gdHJ1ZTsKKyAgICBnaWNfdjJf aHdfZGF0YS5kYmFzZSA9IGRiYXNlOworICAgIGdpY192Ml9od19kYXRhLmNiYXNlID0gY2Jhc2U7 CisgICAgZ2ljX3YyX2h3X2RhdGEuY3NpemUgPSBjc2l6ZTsKKyAgICBnaWNfdjJfaHdfZGF0YS52 YmFzZSA9IHZiYXNlOworICAgIGdpY192Ml9od19kYXRhLmFsaWFzZWRfb2Zmc2V0ID0gYWxpYXNl ZF9vZmZzZXQ7Cit9CisKKy8qCisgKiB0cmFuc2ZlciB0aGUgY29udGVudCBvZiB0aGUgTFJzIGJh Y2sgaW50byB0aGUgY29ycmVzcG9uZGluZyBhcF9saXN0OgorICogLSBhY3RpdmUgYml0IGlzIHRy YW5zZmVycmVkIGFzIGlzCisgKiAtIHBlbmRpbmcgYml0IGlzCisgKiAgIC0gdHJhbnNmZXJyZWQg YXMgaXMgaW4gY2FzZSBvZiBlZGdlIHNlbnNpdGl2ZSBJUlFzCisgKiAgIC0gc2V0IHRvIHRoZSBs aW5lLWxldmVsIChyZXNhbXBsZSB0aW1lKSBmb3IgbGV2ZWwgc2Vuc2l0aXZlIElSUXMKKyAqLwor dm9pZCB2Z2ljX3YyX2ZvbGRfbHJfc3RhdGUoc3RydWN0IHZjcHUgKnZjcHUpCit7CisgICAgc3Ry dWN0IHZnaWNfY3B1ICp2Z2ljX2NwdSA9ICZ2Y3B1LT5hcmNoLnZnaWM7CisgICAgdW5zaWduZWQg aW50IHVzZWRfbHJzID0gdmNwdS0+YXJjaC52Z2ljLnVzZWRfbHJzOworICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7CisgICAgdW5zaWduZWQgaW50IGxyOworCisgICAgaWYgKCAhdXNlZF9scnMgKSAg ICAvKiBObyBMUnMgdXNlZCwgc28gbm90aGluZyB0byBzeW5jIGJhY2sgaGVyZS4gKi8KKyAgICAg ICAgcmV0dXJuOworCisgICAgZ2ljX2h3X29wcy0+dXBkYXRlX2hjcl9zdGF0dXMoR0lDSF9IQ1Jf VUlFLCAwKTsKKworICAgIGZvciAoIGxyID0gMDsgbHIgPCB1c2VkX2xyczsgbHIrKyApCisgICAg eworICAgICAgICBzdHJ1Y3QgZ2ljX2xyIGxyX3ZhbDsKKyAgICAgICAgdWludDMyX3QgaW50aWQ7 CisgICAgICAgIHN0cnVjdCB2Z2ljX2lycSAqaXJxOworCisgICAgICAgIGdpY19od19vcHMtPnJl YWRfbHIobHIsICZscl92YWwpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86IFBvc3Np YmxlIG9wdGltaXphdGlvbiB0byBhdm9pZCByZWFkaW5nIExSczoKKyAgICAgICAgICogUmVhZCB0 aGUgRUxSU1IgdG8gZmluZCBvdXQgd2hpY2ggb2Ygb3VyIExScyBoYXZlIGJlZW4gY2xlYXJlZAor ICAgICAgICAgKiBieSB0aGUgZ3Vlc3QuIFdlIGp1c3QgbmVlZCB0byBrbm93IHRoZSBJUlEgbnVt YmVyIGZvciB0aG9zZSwgd2hpY2gKKyAgICAgICAgICogd2UgY291bGQgc2F2ZSBpbiBhbiBhcnJh eSB3aGVuIHBvcHVsYXRpbmcgdGhlIExScy4KKyAgICAgICAgICogVGhpcyB0cmFkZXMgb25lIE1N SU8gYWNjZXNzIChFTFJTUikgZm9yIHBvc3NpYmx5IG1vcmUgdGhhbiBvbmUgKExScyksCisgICAg ICAgICAqIGJ1dCByZXF1aXJlcyBzb21lIG1vcmUgY29kZSB0byBzYXZlIHRoZSBJUlEgbnVtYmVy IGFuZCB0byBoYW5kbGUKKyAgICAgICAgICogdGhvc2UgZmluaXNoZWQgSVJRcyBhY2NvcmRpbmcg dG8gdGhlIGFsZ29yaXRobSBiZWxvdy4KKyAgICAgICAgICogV2UgbmVlZCBzb21lIG51bWJlcnMg dG8ganVzdGlmeSB0aGlzOiBjaGFuY2VzIGFyZSB0aGF0IHdlIGRvbid0CisgICAgICAgICAqIGhh dmUgbWFueSBMUnMgaW4gdXNlIG1vc3Qgb2YgdGhlIHRpbWUsIHNvIHdlIG1pZ2h0IG5vdCBzYXZl IG11Y2guCisgICAgICAgICAqLworICAgICAgICBnaWNfaHdfb3BzLT5jbGVhcl9scihscik7CisK KyAgICAgICAgaW50aWQgPSBscl92YWwudmlycTsKKyAgICAgICAgaXJxID0gdmdpY19nZXRfaXJx KHZjcHUtPmRvbWFpbiwgdmNwdSwgaW50aWQpOworCisgICAgICAgIHNwaW5fbG9ja19pcnFzYXZl KCZpcnEtPmlycV9sb2NrLCBmbGFncyk7CisKKyAgICAgICAgLyogQWx3YXlzIHByZXNlcnZlIHRo ZSBhY3RpdmUgYml0ICovCisgICAgICAgIGlycS0+YWN0aXZlID0gbHJfdmFsLmFjdGl2ZTsKKwor ICAgICAgICAvKiBFZGdlIGlzIHRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgcHJlc2VydmUgdGhlIHBl bmRpbmcgYml0ICovCisgICAgICAgIGlmICggaXJxLT5jb25maWcgPT0gVkdJQ19DT05GSUdfRURH RSAmJiBscl92YWwucGVuZGluZyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlycS0+cGVuZGlu Z19sYXRjaCA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICggdmdpY19pcnFfaXNfc2dpKGludGlk KSApCisgICAgICAgICAgICAgICAgaXJxLT5zb3VyY2UgfD0gKDFVIDw8IGxyX3ZhbC52aXJ0LnNv dXJjZSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBDbGVhciBzb2Z0IHBlbmRpbmcgc3RhdGUg d2hlbiBsZXZlbCBpcnFzIGhhdmUgYmVlbiBhY2tlZC4gKi8KKyAgICAgICAgaWYgKCBpcnEtPmNv bmZpZyA9PSBWR0lDX0NPTkZJR19MRVZFTCAmJiAhbHJfdmFsLnBlbmRpbmcgKQorICAgICAgICAg ICAgICAgIGlycS0+cGVuZGluZ19sYXRjaCA9IGZhbHNlOworCisJLyoKKwkgKiBMZXZlbC10cmln Z2VyZWQgbWFwcGVkIElSUXMgYXJlIHNwZWNpYWwgYmVjYXVzZSB3ZSBvbmx5CisJICogb2JzZXJ2 ZSByaXNpbmcgZWRnZXMgYXMgaW5wdXQgdG8gdGhlIFZHSUMuCisJICoKKwkgKiBJZiB0aGUgZ3Vl c3QgbmV2ZXIgYWNrZWQgdGhlIGludGVycnVwdCB3ZSBoYXZlIHRvIHNhbXBsZQorCSAqIHRoZSBw aHlzaWNhbCBsaW5lIGFuZCBzZXQgdGhlIGxpbmUgbGV2ZWwsIGJlY2F1c2UgdGhlCisJICogZGV2 aWNlIHN0YXRlIGNvdWxkIGhhdmUgY2hhbmdlZCBvciB3ZSBzaW1wbHkgbmVlZCB0bworCSAqIHBy b2Nlc3MgdGhlIHN0aWxsIHBlbmRpbmcgaW50ZXJydXB0IGxhdGVyLgorCSAqCisJICogSWYgdGhp cyBjYXVzZXMgdXMgdG8gbG93ZXIgdGhlIGxldmVsLCB3ZSBoYXZlIHRvIGFsc28gY2xlYXIKKwkg KiB0aGUgcGh5c2ljYWwgYWN0aXZlIHN0YXRlLCBzaW5jZSB3ZSB3aWxsIG90aGVyd2lzZSBuZXZl ciBiZQorCSAqIHRvbGQgd2hlbiB0aGUgaW50ZXJydXB0IGJlY29tZXMgYXNzZXJ0ZWQgYWdhaW4u CisJICovCisgICAgICAgIGlmICggdmdpY19pcnFfaXNfbWFwcGVkX2xldmVsKGlycSkgJiYgbHJf dmFsLnBlbmRpbmcgKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgaXJxX2Rlc2MgKmly cWQ7CisKKyAgICAgICAgICAgIEFTU0VSVChpcnEtPmh3aW50aWQgPj0gVkdJQ19OUl9QUklWQVRF X0lSUVMpOworCisgICAgICAgICAgICBpcnFkID0gaXJxX3RvX2Rlc2MoaXJxLT5od2ludGlkKTsK KyAgICAgICAgICAgIGlycS0+bGluZV9sZXZlbCA9IGdpY19yZWFkX3BlbmRpbmdfc3RhdGUoaXJx ZCk7CisKKyAgICAgICAgICAgIGlmICggIWlycS0+bGluZV9sZXZlbCApCisgICAgICAgICAgICAg ICAgZ2ljX3NldF9hY3RpdmVfc3RhdGUoaXJxZCwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxLT5pcnFfbG9jaywgZmxhZ3MpOworICAgICAg ICB2Z2ljX3B1dF9pcnEodmNwdS0+ZG9tYWluLCBpcnEpOworICAgIH0KKworICAgIGdpY19od19v cHMtPnVwZGF0ZV9oY3Jfc3RhdHVzKEdJQ0hfSENSX0VOLCAwKTsKKyAgICB2Z2ljX2NwdS0+dXNl ZF9scnMgPSAwOworfQorCisvKioKKyAqIHZnaWNfdjJfcG9wdWxhdGVfbHIoKSAtIFBvcHVsYXRl cyBhbiBMUiB3aXRoIHRoZSBzdGF0ZSBvZiBhIGdpdmVuIElSUS4KKyAqIEB2Y3B1OiBUaGUgVkNQ VSB3aGljaCB0aGUgZ2l2ZW4gQGlycSBiZWxvbmdzIHRvLgorICogQGlycTogIFRoZSBJUlEgdG8g Y29udmVydCBpbnRvIGFuIExSLiBUaGUgaXJxX2xvY2sgbXVzdCBiZSBoZWxkIGFscmVhZHkuCisg KiBAbHI6ICAgVGhlIExSIG51bWJlciB0byB0cmFuc2ZlciB0aGUgc3RhdGUgaW50by4KKyAqCisg KiBUaGlzIG1vdmVzIGEgdmlydHVhbCBJUlEsIHJlcHJlc2VudGVkIGJ5IGl0cyB2Z2ljX2lycSwg aW50byBhIGxpc3QgcmVnaXN0ZXIuCisgKiBBcGFydCBmcm9tIHRyYW5zbGF0aW5nIHRoZSBsb2dp Y2FsIHN0YXRlIGludG8gdGhlIExSIGJpdGZpZWxkcywgaXQgYWxzbworICogY2hhbmdlcyBzb21l IHN0YXRlIGluIHRoZSB2Z2ljX2lycS4KKyAqIEZvciBhbiBlZGdlIHNlbnNpdGl2ZSBJUlEgdGhl IHBlbmRpbmcgc3RhdGUgaXMgY2xlYXJlZCBpbiBzdHJ1Y3QgdmdpY19pcnEsCisgKiBmb3IgYSBs ZXZlbCBzZW5zaXRpdmUgSVJRIHRoZSBwZW5kaW5nIHN0YXRlIHZhbHVlIGlzIHVuY2hhbmdlZCwg YXMgaXQgaXMKKyAqIGRpY3RhdGVkIGRpcmVjdGx5IGJ5IHRoZSBpbnB1dCBsaW5lIGxldmVsLgor ICoKKyAqIElmIEBpcnEgZGVzY3JpYmVzIGFuIFNHSSB3aXRoIG11bHRpcGxlIHNvdXJjZXMsIHdl IGNob29zZSB0aGUKKyAqIGxvd2VzdC1udW1iZXJlZCBzb3VyY2UgVkNQVSBhbmQgY2xlYXIgdGhh dCBiaXQgaW4gdGhlIHNvdXJjZSBiaXRtYXAuCisgKgorICogVGhlIGlycV9sb2NrIG11c3QgYmUg aGVsZCBieSB0aGUgY2FsbGVyLgorICovCit2b2lkIHZnaWNfdjJfcG9wdWxhdGVfbHIoc3RydWN0 IHZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLCBpbnQgbHIpCit7CisgICAgc3RydWN0 IGdpY19sciBscl92YWwgPSB7MH07CisKKyAgICBscl92YWwudmlycSA9IGlycS0+aW50aWQ7CisK KyAgICBpZiAoIGlycV9pc19wZW5kaW5nKGlycSkgKQorICAgIHsKKyAgICAgICAgbHJfdmFsLnBl bmRpbmcgPSB0cnVlOworCisgICAgICAgIGlmICggaXJxLT5jb25maWcgPT0gVkdJQ19DT05GSUdf RURHRSApCisgICAgICAgICAgICBpcnEtPnBlbmRpbmdfbGF0Y2ggPSBmYWxzZTsKKworICAgICAg ICBpZiAoIHZnaWNfaXJxX2lzX3NnaShpcnEtPmludGlkKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHUzMiBzcmMgPSBmZnMoaXJxLT5zb3VyY2UpOworCisgICAgICAgICAgICBCVUdfT04oIXNy Yyk7CisgICAgICAgICAgICBscl92YWwudmlydC5zb3VyY2UgPSAoc3JjIC0gMSk7CisgICAgICAg ICAgICBpcnEtPnNvdXJjZSAmPSB+KDEgPDwgKHNyYyAtIDEpKTsKKyAgICAgICAgICAgIGlmICgg aXJxLT5zb3VyY2UgKQorICAgICAgICAgICAgICAgIGlycS0+cGVuZGluZ19sYXRjaCA9IHRydWU7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICBscl92YWwuYWN0aXZlID0gaXJxLT5hY3RpdmU7CisK KyAgICBpZiAoIGlycS0+aHcgKQorICAgIHsKKyAgICAgICAgbHJfdmFsLmh3X3N0YXR1cyA9IDE7 CisgICAgICAgIGxyX3ZhbC5ody5waXJxID0gaXJxLT5od2ludGlkOworICAgICAgICAvKgorICAg ICAgICAgKiBOZXZlciBzZXQgcGVuZGluZythY3RpdmUgb24gYSBIVyBpbnRlcnJ1cHQsIGFzIHRo ZQorICAgICAgICAgKiBwZW5kaW5nIHN0YXRlIGlzIGtlcHQgYXQgdGhlIHBoeXNpY2FsIGRpc3Ry aWJ1dG9yCisgICAgICAgICAqIGxldmVsLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBpcnEt PmFjdGl2ZSAmJiBpcnFfaXNfcGVuZGluZyhpcnEpICkKKyAgICAgICAgICAgIGxyX3ZhbC5wZW5k aW5nID0gZmFsc2U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICggaXJxLT5j b25maWcgPT0gVkdJQ19DT05GSUdfTEVWRUwgKQorICAgICAgICAgICAgbHJfdmFsLnZpcnQuZW9p ID0gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIExldmVsLXRyaWdnZXJlZCBtYXBwZWQgSVJR cyBhcmUgc3BlY2lhbCBiZWNhdXNlIHdlIG9ubHkgb2JzZXJ2ZQorICAgICAqIHJpc2luZyBlZGdl cyBhcyBpbnB1dCB0byB0aGUgVkdJQy4gIFdlIHRoZXJlZm9yZSBsb3dlciB0aGUgbGluZQorICAg ICAqIGxldmVsIGhlcmUsIHNvIHRoYXQgd2UgY2FuIHRha2UgbmV3IHZpcnR1YWwgSVJRcy4gIFNl ZQorICAgICAqIHZnaWNfdjJfZm9sZF9scl9zdGF0ZSBmb3IgbW9yZSBpbmZvLgorICAgICAqLwor ICAgIGlmICggdmdpY19pcnFfaXNfbWFwcGVkX2xldmVsKGlycSkgJiYgbHJfdmFsLnBlbmRpbmcg KQorICAgICAgICBpcnEtPmxpbmVfbGV2ZWwgPSBmYWxzZTsKKworICAgIC8qIFRoZSBHSUN2MiBM UiBvbmx5IGhvbGRzIGZpdmUgYml0cyBvZiBwcmlvcml0eS4gKi8KKyAgICBscl92YWwucHJpb3Jp dHkgPSBpcnEtPnByaW9yaXR5ID4+IDM7CisKKyAgICBnaWNfaHdfb3BzLT53cml0ZV9scihsciwg JmxyX3ZhbCk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMt bW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljL3Zn aWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuYwppbmRleCBlODJkNDk4NzY2Li4wMzVjOGM4 Zjc0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmMKKysrIGIveGVuL2FyY2gv YXJtL3ZnaWMvdmdpYy5jCkBAIC01MTAsNiArNTEwLDcgQEAgcmV0cnk6CiAKIHN0YXRpYyB2b2lk IHZnaWNfZm9sZF9scl9zdGF0ZShzdHJ1Y3QgdmNwdSAqdmNwdSkKIHsKKyAgICB2Z2ljX3YyX2Zv bGRfbHJfc3RhdGUodmNwdSk7CiB9CiAKIC8qIFJlcXVpcmVzIHRoZSBpcnFfbG9jayB0byBiZSBo ZWxkLiAqLwpAQCAtNTE3LDYgKzUxOCw4IEBAIHN0YXRpYyB2b2lkIHZnaWNfcG9wdWxhdGVfbHIo c3RydWN0IHZjcHUgKnZjcHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 Z2ljX2lycSAqaXJxLCBpbnQgbHIpCiB7CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZpcnEt PmlycV9sb2NrKSk7CisKKyAgICB2Z2ljX3YyX3BvcHVsYXRlX2xyKHZjcHUsIGlycSwgbHIpOwog fQogCiBzdGF0aWMgdm9pZCB2Z2ljX3NldF91bmRlcmZsb3coc3RydWN0IHZjcHUgKnZjcHUpCkBA IC02MzAsNyArNjMzLDEwIEBAIHZvaWQgdmdpY19zeW5jX3RvX2xycyh2b2lkKQogICAgIHNwaW5f bG9jaygmY3VycmVudC0+YXJjaC52Z2ljLmFwX2xpc3RfbG9jayk7CiAgICAgdmdpY19mbHVzaF9s cl9zdGF0ZShjdXJyZW50KTsKICAgICBzcGluX3VubG9jaygmY3VycmVudC0+YXJjaC52Z2ljLmFw X2xpc3RfbG9jayk7CisKKyAgICBnaWNfaHdfb3BzLT51cGRhdGVfaGNyX3N0YXR1cyhHSUNIX0hD Ul9FTiwgMSk7CiB9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmggYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2lj LmgKaW5kZXggZjUzMGNmYTA3OC4uNDFjYzBjNWI1NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt L3ZnaWMvdmdpYy5oCisrKyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMuaApAQCAtMjcsNiArMjcs MTEgQEAgc3RhdGljIGlubGluZSBib29sIGlycV9pc19wZW5kaW5nKHN0cnVjdCB2Z2ljX2lycSAq aXJxKQogICAgICAgICByZXR1cm4gaXJxLT5wZW5kaW5nX2xhdGNoIHx8IGlycS0+bGluZV9sZXZl bDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHZnaWNfaXJxX2lzX21hcHBlZF9sZXZlbChzdHJ1 Y3QgdmdpY19pcnEgKmlycSkKK3sKKyAgICByZXR1cm4gaXJxLT5jb25maWcgPT0gVkdJQ19DT05G SUdfTEVWRUwgJiYgaXJxLT5odzsKK30KKwogc3RydWN0IHZnaWNfaXJxICp2Z2ljX2dldF9pcnEo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnZjcHUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1MzIgaW50aWQpOwogdm9pZCB2Z2ljX3B1dF9pcnEoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IHZnaWNfaXJxICppcnEpOwpAQCAtNDEsNiArNDYsMTAgQEAgc3RhdGljIGlubGlu ZSB2b2lkIHZnaWNfZ2V0X2lycV9rcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKQogICAgIGF0b21p Y19pbmMoJmlycS0+cmVmY291bnQpOwogfQogCit2b2lkIHZnaWNfdjJfZm9sZF9scl9zdGF0ZShz dHJ1Y3QgdmNwdSAqdmNwdSk7Cit2b2lkIHZnaWNfdjJfcG9wdWxhdGVfbHIoc3RydWN0IHZjcHUg KnZjcHUsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLCBpbnQgbHIpOwordm9pZCB2Z2ljX3YyX3NldF91 bmRlcmZsb3coc3RydWN0IHZjcHUgKnZjcHUpOworCiAjZW5kaWYKIAogLyoKLS0gCjIuMTQuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=