From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9EB0DC64E8A for ; Mon, 30 Nov 2020 12:29:42 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0E794206D8 for ; Mon, 30 Nov 2020 12:29:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rCBgLPlQ"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZxqS7iQD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0E794206D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:To:From: Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=F2SaWqKtY5tqx2saVAp0Jzl1lEfQ7WPfqnWl7S21Mdo=; b=rCBgLPlQgk7q6LaTZ67/ZtYMD OW3AR+CWlO96xeTEiHK0F635VA0E9tK96fI0dXiv8bnSvnXsG3Ku3wpSpymm+EpyTgwnaGofsmpEC OCgA1dq//vYcEuArtywBSNiE45xd5YjGVh4qIIfE2An5sPS4j/B1XiyGmQZf5Z7Hl48V3JBq58aAa +DIihJPE4GpjdoZMH74y2mO+DdGyqobMzDLQGJySMG790xFud2GiQGmnwBqxND2nc9s/nissIZpcW lZ9Bx/5nL+NNgV3MlxdeJw2BQd2NIUZ47ufeVMujL0qrtaFGy8yD3DQ6ejAC27ksC8miqDvYMk+cZ OILqd+jJw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kjiHp-0007be-NE; Mon, 30 Nov 2020 12:28:09 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kjiHk-0007aM-C6 for linux-arm-kernel@lists.infradead.org; Mon, 30 Nov 2020 12:28:08 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3D7DD206D8; Mon, 30 Nov 2020 12:28:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606739283; bh=Y5BosvE/KDFgBM53wfMpjt70Flneb068MrFi0W6DPow=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=ZxqS7iQDuVxoNaCdYiEp+wwnnWR2iYokX+r+EMIN9Uyn3yapeN0vGALd7sbLEir9e 63vs3ZlpLhhOuPPsJc9GH3JF/o2f8JV22Zgk6e2JQXKf/Z1TX6biBrGKQFXl2A/kL2 wI76HfWP4QbGAGfDxnFF+nbIUObesu87O5ghpXWg= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94) (envelope-from ) id 1kjiHg-00EgcD-Np; Mon, 30 Nov 2020 12:28:01 +0000 MIME-Version: 1.0 Date: Mon, 30 Nov 2020 12:28:00 +0000 From: Marc Zyngier To: Shameer Kolothum Subject: Re: [PATCH] irqchip/gic-v3: Check SRE bit for GICv2 legacy support In-Reply-To: <20201130102639.7504-1-shameerali.kolothum.thodi@huawei.com> References: <20201130102639.7504-1-shameerali.kolothum.thodi@huawei.com> User-Agent: Roundcube Webmail/1.4.9 Message-ID: X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: shameerali.kolothum.thodi@huawei.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, eric.auger@redhat.com, linuxarm@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201130_072804_593661_E3AED7A9 X-CRM114-Status: GOOD ( 35.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: eric.auger@redhat.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxarm@huawei.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgU2hhbWVlciwKCk9uIDIwMjAtMTEtMzAgMTA6MjYsIFNoYW1lZXIgS29sb3RodW0gd3JvdGU6 Cj4gQXQgcHJlc2VudCwgdGhlIHN1cHBvcnQgZm9yIEdJQ3YyIGJhY2t3YXJkIGNvbXBhdGliaWxp dHkgb24gR0lDdjMvdjQKPiBoYXJkd2FyZSBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIHdoZXRoZXIg RFQvQUNQSSBwcm92aWRlcyBhIG1lbW9yeQo+IG1hcHBlZCBwaHlzIGJhc2UgYWRkcmVzcyBmb3Ig R0lDIHZpcnR1YWwgQ1BVIGludGVyZmFjZSByZWdpc3RlcihHSUNWKS4KPiBUaGlzIGNyZWF0ZXMg YSBwcm9ibGVtIHRoYXTCoGEgUWVtdSBndWVzdCBib290IHdpdGggZGVmYXVsdCBHSUMoR0lDdjIp CgpUaGF0J2QgYmUgdHJ1ZSBvZiAqYW55KiBndWVzdCB1c2luZyBHSUN2Miwgbm90IGp1c3Qgd2hl biB1c2luZyBRRU1VIGFzCnRoZSBWTU0sIHJpZ2h0PwoKPiBoYW5ncyB3aGVuIGZpcm13YXJlIGZh bHNlbHkgcmVwb3J0cyB0aGlzIGFkZHJlc3Mgb24gc3lzdGVtcyB0aGF0IGRvbid0Cj4gaGF2ZcKg c3VwcG9ydCBmb3IgbGVnYWN5wqBtb2RlLsKgCgpBbmQgSSBndWVzcyBpdCBpc24ndCBqdXN0IHRo ZSBndWVzdCB0aGF0IGhhbmdzLCBidXQgdGhlIHdob2xlIHN5c3RlbSBjYW4KZ28gc291dGggKGl0 IHdvdWxkIGJlIHRvdGFsbHkgbGVnaXRpbWF0ZSBmb3IgdGhlIEhXIHRvIGRlbGl2ZXIgYSAKU0Vy cm9yKS4KCj4gQXMgcGVyIEdJQ3YzL3Y0IHNwZWMsIGluIGFuIGltcGxlbWVudGF0aW9uIHRoYXQg ZG9lcyBub3Qgc3VwcG9ydCBsZWdhY3kKPiBvcGVyYXRpb24sIGFmZmluaXR5IHJvdXRpbmcgYW5k IHN5c3RlbSByZWdpc3RlciBhY2Nlc3MgYXJlIHBlcm1hbmVudGx5Cj4gZW5hYmxlZC4gVGhpcyBt ZWFucyB0aGF0IHRoZSBhc3NvY2lhdGVkIGNvbnRyb2wgYml0cyBhcmUgUkFPL1dJLiBIZW5jZQo+ IHVzZSB0aGXCoElDQ19TUkVfRUwxLlNSRSBiaXQgdG8gZGVjaWRlIHdoZXRoZXIgaGFyZHdhcmXC oHN1cHBvcnRzIEdJQ3YyCj4gbW9kZSBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgZmlybXdhcmXC oGJhc2VkIGNoZWNrLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNoYW1lZXIgS29sb3RodW0gPHNoYW1l ZXJhbGkua29sb3RodW0udGhvZGlAaHVhd2VpLmNvbT4KPiAtLS0KPiBPbiBIaXNpbGljb24gRDA2 LCBVRUZJIHNldHMgdGhlIEdJQyBNQURUIEdJQ0MgZ2ljdl9iYXNlX2FkZHJlc3MgYnV0IHRoZQo+ IEdJQyBpbXBsZW1lbnRhdGlvbsKgb24gdGhlc2UgYm9hcmRzIGRvZXNuJ3QgaGF2ZSB0aGUgR0lD djIgbGVnYWN5IAo+IHN1cHBvcnQuCj4gVGhpcyByZXN1bHRzIGluLCBHdWVzdCBib290IGhhbmcg d2hlbiBRZW11IHVzZXMgdGhlIGRlZmF1bHQgR0lDIG9wdGlvbi4KCldoYXQgYSBib3JlLiBJcyB0 aGlzIGdsb3Jpb3VzIGZpcm13YXJlIHJlYWxseSBvdXQgaW4gdGhlIHdpbGQ/Cgo+IFdpdGggdGhp cyBwYXRjaCwgdGhlIFFlbXUgR3Vlc3Qgd2l0aCBHSUN2MiBub3cgZ3JhY2VmdWxseSBleGl0cywK PiDCoCJxZW11LXN5c3RlbS1hYXJjaDY0OiBob3N0IGRvZXMgbm90IHN1cHBvcnQgaW4ta2VybmVs IEdJQ3YyIGVtdWxhdGlvbiIKPiAKPiBOb3QgdmVyecKgc3VyZSB0aGVyZSBpcyBhIGJldHRlciB3 YXkgdG8gZGV0ZWN0IHRoaXMgb3RoZXIgdGhhbiBjaGVja2luZwo+IHRoZSBTUkUgYml0IGFzIGRv bmUgaW4gdGhpcyBwYXRjaChPZiBjb3Vyc2UswqB3ZSB3aWxsIGJlIGZpeGluZyB0aGUgVUVGSQo+ IGdvaW5nIGZvcndhcmQpLgoKSSBkb24ndCB0aGluayB0aGVyZSBpcyBhbnkgb3RoZXIgcmVsaWFi bGUgd2F5LCBidXQgc2VlIGJlbG93LgoKPiAKPiBUaGFua3MsCj4gU2hhbWVlcgo+IAo+IC0tLQo+ ICBkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My5jIHwgMzMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My5jIAo+ IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMuYwo+IGluZGV4IDE2ZmVjYzBmZWJlOC4uMTVm YTFlZWE0NWU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLmMKPiAr KysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My5jCj4gQEAgLTE4MzUsNiArMTgzNSwyNyBA QCBzdGF0aWMgdm9pZCBfX2luaXQKPiBnaWNfcG9wdWxhdGVfcHBpX3BhcnRpdGlvbnMoc3RydWN0 IGRldmljZV9ub2RlICpnaWNfbm9kZSkKPiAgCW9mX25vZGVfcHV0KHBhcnRzX25vZGUpOwo+ICB9 Cj4gCj4gKy8qIFNSRSBiaXQgYmVpbmcgUkFPL1dJIGltcGxpZXMgbm8gR0lDdjIgbGVnYWN5IG1v ZGUgc3VwcG9ydCAqLwo+ICtzdGF0aWMgYm9vbCBfX2luaXQgZ2ljX2dpY3YyX2NvbXBhdGlibGUo dm9pZCkKPiArewo+ICsJdTMyIG9yZywgdmFsOwo+ICsKPiArCW9yZyA9IGdpY19yZWFkX3NyZSgp Owo+ICsJaWYgKCEob3JnICYgSUNDX1NSRV9FTDFfU1JFKSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiAr Cj4gKwl2YWwgPSBvcmcgJiB+SUNDX1NSRV9FTDFfU1JFOwo+ICsJZ2ljX3dyaXRlX3NyZSh2YWwp Owo+ICsKPiArCXZhbCA9IGdpY19yZWFkX3NyZSgpOwo+ICsJZ2ljX3dyaXRlX3NyZShvcmcpOwo+ ICsKPiArCWlmICh2YWwgJiBJQ0NfU1JFX0VMMV9TUkUpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsK PiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBfX2luaXQgZ2ljX29mX3Nl dHVwX2t2bV9pbmZvKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKPiAgewo+ICAJaW50IHJldDsK PiBAQCAtMTg1MSwxMCArMTg3MiwxMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQKPiBnaWNfb2Zfc2V0 dXBfa3ZtX2luZm8oc3RydWN0IGRldmljZV9ub2RlICpub2RlKQo+ICAJCQkJICZnaWN2X2lkeCkp Cj4gIAkJZ2ljdl9pZHggPSAxOwo+IAo+IC0JZ2ljdl9pZHggKz0gMzsJLyogQWxzbyBza2lwIEdJ Q0QsIEdJQ0MsIEdJQ0ggKi8KPiAtCXJldCA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2Uobm9kZSwg Z2ljdl9pZHgsICZyKTsKPiAtCWlmICghcmV0KQo+IC0JCWdpY192M19rdm1faW5mby52Y3B1ID0g cjsKPiArCWlmIChnaWNfZ2ljdjJfY29tcGF0aWJsZSgpKSB7Cj4gKwkJZ2ljdl9pZHggKz0gMzsJ LyogQWxzbyBza2lwIEdJQ0QsIEdJQ0MsIEdJQ0ggKi8KPiArCQlyZXQgPSBvZl9hZGRyZXNzX3Rv X3Jlc291cmNlKG5vZGUsIGdpY3ZfaWR4LCAmcik7Cj4gKwkJaWYgKCFyZXQpCj4gKwkJCWdpY192 M19rdm1faW5mby52Y3B1ID0gcjsKPiArCX0KPiAKPiAgCWdpY192M19rdm1faW5mby5oYXNfdjQg PSBnaWNfZGF0YS5yZGlzdHMuaGFzX3ZscGlzOwo+ICAJZ2ljX3YzX2t2bV9pbmZvLmhhc192NF8x ID0gZ2ljX2RhdGEucmRpc3RzLmhhc19ydnBlaWQ7Cj4gQEAgLTIxNjQsNyArMjE4Nyw3IEBAIHN0 YXRpYyB2b2lkIF9faW5pdCBnaWNfYWNwaV9zZXR1cF9rdm1faW5mbyh2b2lkKQo+IAo+ICAJZ2lj X3YzX2t2bV9pbmZvLm1haW50X2lycSA9IGlycTsKPiAKPiAtCWlmIChhY3BpX2RhdGEudmNwdV9i YXNlKSB7Cj4gKwlpZiAoZ2ljX2dpY3YyX2NvbXBhdGlibGUoKSAmJiBhY3BpX2RhdGEudmNwdV9i YXNlKSB7Cj4gIAkJc3RydWN0IHJlc291cmNlICp2Y3B1ID0gJmdpY192M19rdm1faW5mby52Y3B1 Owo+IAo+ICAJCXZjcHUtPmZsYWdzID0gSU9SRVNPVVJDRV9NRU07CgpUaGUgcHJvYmxlbSBpcyB0 aGF0IHRoaXMgZ2ljX2dpY3YyX2NvbXBhdGlibGUoKSBjb21lcyBpbiB3YXkgdG9vIGxhdGUsCmFu ZCB5b3UgYXJlIGRpc2FibGluZyBTUkUgd2hpbGUgd2UgYWxyZWFkeSBoYXZlIGNvbmZpZ3VyZWQg dG9ucyBvZiAKc3R1ZmYuClRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIGJyZWFraW5nIHRoaW5n cyB1bmV4cGVjdGVkbHkuCgpIb3cgYWJvdXQgdGhpcyBpbnN0ZWFkPyBDb21wbGV0ZWx5IHVudGVz dGVkLCBvZiBjb3Vyc2UuCgpUaGFua3MsCgogICAgICAgICBNLgoKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYyAKYi9hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJl LmMKaW5kZXggZGNjMTY1YjNmYzA0Li5jNDJmMzkxNTRhZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt NjQva2VybmVsL2NwdWZlYXR1cmUuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJl LmMKQEAgLTEyMDAsNyArMTIwMCw3IEBAIHN0YXRpYyBib29sIGhhc191c2VhYmxlX2dpY3YzX2Nw dWlmKGNvbnN0IHN0cnVjdCAKYXJtNjRfY3B1X2NhcGFiaWxpdGllcyAqZW50cnksCiAgCWlmICgh aGFzX2NwdWlkX2ZlYXR1cmUoZW50cnksIHNjb3BlKSkKICAJCXJldHVybiBmYWxzZTsKCi0JaGFz X3NyZSA9IGdpY19lbmFibGVfc3JlKCk7CisJaGFzX3NyZSA9IGdpY19lbmFibGVfc3JlKE5VTEwp OwogIAlpZiAoIWhhc19zcmUpCiAgCQlwcl93YXJuX29uY2UoIiVzIHByZXNlbnQgYnV0IGRpc2Fi bGVkIGJ5IGhpZ2hlciBleGNlcHRpb24gbGV2ZWxcbiIsCiAgCQkJICAgICBlbnRyeS0+ZGVzYyk7 CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9zbXAuYyBiL2FyY2gvYXJtNjQva2VybmVs L3NtcC5jCmluZGV4IDA5Yzk2ZjU3ODE4Yy4uMjBhNzEwMjYxMmRhIDEwMDY0NAotLS0gYS9hcmNo L2FybTY0L2tlcm5lbC9zbXAuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zbXAuYwpAQCAtMTgy LDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIGluaXRfZ2ljX3ByaW9yaXR5X21hc2tpbmcodm9pZCkK ICB7CiAgCXUzMiBjcHVmbGFnczsKCi0JaWYgKFdBUk5fT04oIWdpY19lbmFibGVfc3JlKCkpKQor CWlmIChXQVJOX09OKCFnaWNfZW5hYmxlX3NyZShOVUxMKSkpCiAgCQlyZXR1cm47CgogIAljcHVm bGFncyA9IHJlYWRfc3lzcmVnKGRhaWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2ly cS1naWMtdjMuYyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLmMKaW5kZXggMTZmZWNjMGZl YmU4Li5kYjVjZTNkZDAxYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYz LmMKKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMuYwpAQCAtMTAzLDYgKzEwMyw4IEBA IEVYUE9SVF9TWU1CT0woZ2ljX25vbnNlY3VyZV9wcmlvcml0aWVzKTsKICAvKiBwcGlfbm1pX3Jl ZnNbbl0gPT0gbnVtYmVyIG9mIGNwdXMgaGF2aW5nIHBwaVtuICsgMTZdIHNldCBhcyBOTUkgKi8K ICBzdGF0aWMgcmVmY291bnRfdCAqcHBpX25taV9yZWZzOwoKK3N0YXRpYyBib29sIGhhc192Ml9j b21wYXQ7CisKICBzdGF0aWMgc3RydWN0IGdpY19rdm1faW5mbyBnaWNfdjNfa3ZtX2luZm87CiAg c3RhdGljIERFRklORV9QRVJfQ1BVKGJvb2wsIGhhc19yc3MpOwoKQEAgLTkxNSw3ICs5MTcsNyBA QCBzdGF0aWMgdm9pZCBnaWNfY3B1X3N5c19yZWdfaW5pdCh2b2lkKQogIAkgKgogIAkgKiBLaW5k bHkgaW5mb3JtIHRoZSBsdXNlci4KICAJICovCi0JaWYgKCFnaWNfZW5hYmxlX3NyZSgpKQorCWlm ICghZ2ljX2VuYWJsZV9zcmUoJmhhc192Ml9jb21wYXQpKQogIAkJcHJfZXJyKCJHSUM6IHVuYWJs ZSB0byBzZXQgU1JFIChkaXNhYmxlZCBhdCBFTDIpLCBwYW5pYyBhaGVhZFxuIik7CgogIAlwcmli aXRzID0gZ2ljX2dldF9wcmliaXRzKCk7CkBAIC0xODUzLDcgKzE4NTUsNyBAQCBzdGF0aWMgdm9p ZCBfX2luaXQgZ2ljX29mX3NldHVwX2t2bV9pbmZvKHN0cnVjdCAKZGV2aWNlX25vZGUgKm5vZGUp CgogIAlnaWN2X2lkeCArPSAzOwkvKiBBbHNvIHNraXAgR0lDRCwgR0lDQywgR0lDSCAqLwogIAly ZXQgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5vZGUsIGdpY3ZfaWR4LCAmcik7Ci0JaWYgKCFy ZXQpCisJaWYgKGhhc192Ml9jb21wYXQgJiYgIXJldCkKICAJCWdpY192M19rdm1faW5mby52Y3B1 ID0gcjsKCiAgCWdpY192M19rdm1faW5mby5oYXNfdjQgPSBnaWNfZGF0YS5yZGlzdHMuaGFzX3Zs cGlzOwpAQCAtMjE2NCw3ICsyMTY2LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY19hY3BpX3Nl dHVwX2t2bV9pbmZvKHZvaWQpCgogIAlnaWNfdjNfa3ZtX2luZm8ubWFpbnRfaXJxID0gaXJxOwoK LQlpZiAoYWNwaV9kYXRhLnZjcHVfYmFzZSkgeworCWlmIChoYXNfdjJfY29tcGF0ICYmIGFjcGlf ZGF0YS52Y3B1X2Jhc2UpIHsKICAJCXN0cnVjdCByZXNvdXJjZSAqdmNwdSA9ICZnaWNfdjNfa3Zt X2luZm8udmNwdTsKCiAgCQl2Y3B1LT5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9pcnFjaGlwL2FybS1naWMtdjMuaCAKYi9pbmNsdWRlL2xpbnV4L2ly cWNoaXAvYXJtLWdpYy12My5oCmluZGV4IGY2ZDA5MmZkYjkzZC4uYmRjMzkwNTI5MzY3IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lycWNoaXAvYXJtLWdpYy12My5oCisrKyBiL2luY2x1ZGUv bGludXgvaXJxY2hpcC9hcm0tZ2ljLXYzLmgKQEAgLTY5MywxMSArNjkzLDIyIEBAIGludCBpdHNf aW5pdChzdHJ1Y3QgZndub2RlX2hhbmRsZSAqaGFuZGxlLCBzdHJ1Y3QgCnJkaXN0cyAqcmRpc3Rz LAogIAkgICAgIHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4pOwogIGludCBtYmlfaW5pdChzdHJ1 Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLCBzdHJ1Y3QgaXJxX2RvbWFpbiAqcGFyZW50KTsKCi1z dGF0aWMgaW5saW5lIGJvb2wgZ2ljX2VuYWJsZV9zcmUodm9pZCkKK3N0YXRpYyBpbmxpbmUgYm9v bCBnaWNfZW5hYmxlX3NyZShib29sICpoYXNfdjIpCiAgewogIAl1MzIgdmFsOwoKICAJdmFsID0g Z2ljX3JlYWRfc3JlKCk7CisJaWYgKGhhc192MikgeworCQlpZiAoISh2YWwgJiBJQ0NfU1JFX0VM MV9TUkUpKSB7CisJCQkqaGFzX3YyID0gdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJCXZhbCAmPSB+SUND X1NSRV9FTDFfU1JFOworCQkJZ2ljX3dyaXRlX3NyZSh2YWwpOworCQkJdmFsID0gZ2ljX3JlYWRf c3JlKCk7CisJCQkqaGFzX3YyID0gISh2YWwgJiBJQ0NfU1JFX0VMMV9TUkUpOworCQl9CisJfQor CiAgCWlmICh2YWwgJiBJQ0NfU1JFX0VMMV9TUkUpCiAgCQlyZXR1cm4gdHJ1ZTsKCi0tIApKYXp6 IGlzIG5vdCBkZWFkLiBJdCBqdXN0IHNtZWxscyBmdW5ueS4uLgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EE13C64E8A for ; Mon, 30 Nov 2020 12:28:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CDA33207BC for ; Mon, 30 Nov 2020 12:28:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZxqS7iQD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725955AbgK3M2p (ORCPT ); Mon, 30 Nov 2020 07:28:45 -0500 Received: from mail.kernel.org ([198.145.29.99]:40868 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgK3M2o (ORCPT ); Mon, 30 Nov 2020 07:28:44 -0500 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3D7DD206D8; Mon, 30 Nov 2020 12:28:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606739283; bh=Y5BosvE/KDFgBM53wfMpjt70Flneb068MrFi0W6DPow=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=ZxqS7iQDuVxoNaCdYiEp+wwnnWR2iYokX+r+EMIN9Uyn3yapeN0vGALd7sbLEir9e 63vs3ZlpLhhOuPPsJc9GH3JF/o2f8JV22Zgk6e2JQXKf/Z1TX6biBrGKQFXl2A/kL2 wI76HfWP4QbGAGfDxnFF+nbIUObesu87O5ghpXWg= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94) (envelope-from ) id 1kjiHg-00EgcD-Np; Mon, 30 Nov 2020 12:28:01 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Mon, 30 Nov 2020 12:28:00 +0000 From: Marc Zyngier To: Shameer Kolothum Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, eric.auger@redhat.com, linuxarm@huawei.com Subject: Re: [PATCH] irqchip/gic-v3: Check SRE bit for GICv2 legacy support In-Reply-To: <20201130102639.7504-1-shameerali.kolothum.thodi@huawei.com> References: <20201130102639.7504-1-shameerali.kolothum.thodi@huawei.com> User-Agent: Roundcube Webmail/1.4.9 Message-ID: X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: shameerali.kolothum.thodi@huawei.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, eric.auger@redhat.com, linuxarm@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Shameer, On 2020-11-30 10:26, Shameer Kolothum wrote: > At present, the support for GICv2 backward compatibility on GICv3/v4 > hardware is determined based on whether DT/ACPI provides a memory > mapped phys base address for GIC virtual CPU interface register(GICV). > This creates a problem that a Qemu guest boot with default GIC(GICv2) That'd be true of *any* guest using GICv2, not just when using QEMU as the VMM, right? > hangs when firmware falsely reports this address on systems that don't > have support for legacy mode.  And I guess it isn't just the guest that hangs, but the whole system can go south (it would be totally legitimate for the HW to deliver a SError). > As per GICv3/v4 spec, in an implementation that does not support legacy > operation, affinity routing and system register access are permanently > enabled. This means that the associated control bits are RAO/WI. Hence > use the ICC_SRE_EL1.SRE bit to decide whether hardware supports GICv2 > mode in addition to the above firmware based check. > > Signed-off-by: Shameer Kolothum > --- > On Hisilicon D06, UEFI sets the GIC MADT GICC gicv_base_address but the > GIC implementation on these boards doesn't have the GICv2 legacy > support. > This results in, Guest boot hang when Qemu uses the default GIC option. What a bore. Is this glorious firmware really out in the wild? > With this patch, the Qemu Guest with GICv2 now gracefully exits, >  "qemu-system-aarch64: host does not support in-kernel GICv2 emulation" > > Not very sure there is a better way to detect this other than checking > the SRE bit as done in this patch(Of course, we will be fixing the UEFI > going forward). I don't think there is any other reliable way, but see below. > > Thanks, > Shameer > > --- > drivers/irqchip/irq-gic-v3.c | 33 ++++++++++++++++++++++++++++----- > 1 file changed, 28 insertions(+), 5 deletions(-) > > diff --git a/drivers/irqchip/irq-gic-v3.c > b/drivers/irqchip/irq-gic-v3.c > index 16fecc0febe8..15fa1eea45e4 100644 > --- a/drivers/irqchip/irq-gic-v3.c > +++ b/drivers/irqchip/irq-gic-v3.c > @@ -1835,6 +1835,27 @@ static void __init > gic_populate_ppi_partitions(struct device_node *gic_node) > of_node_put(parts_node); > } > > +/* SRE bit being RAO/WI implies no GICv2 legacy mode support */ > +static bool __init gic_gicv2_compatible(void) > +{ > + u32 org, val; > + > + org = gic_read_sre(); > + if (!(org & ICC_SRE_EL1_SRE)) > + return true; > + > + val = org & ~ICC_SRE_EL1_SRE; > + gic_write_sre(val); > + > + val = gic_read_sre(); > + gic_write_sre(org); > + > + if (val & ICC_SRE_EL1_SRE) > + return false; > + > + return true; > +} > + > static void __init gic_of_setup_kvm_info(struct device_node *node) > { > int ret; > @@ -1851,10 +1872,12 @@ static void __init > gic_of_setup_kvm_info(struct device_node *node) > &gicv_idx)) > gicv_idx = 1; > > - gicv_idx += 3; /* Also skip GICD, GICC, GICH */ > - ret = of_address_to_resource(node, gicv_idx, &r); > - if (!ret) > - gic_v3_kvm_info.vcpu = r; > + if (gic_gicv2_compatible()) { > + gicv_idx += 3; /* Also skip GICD, GICC, GICH */ > + ret = of_address_to_resource(node, gicv_idx, &r); > + if (!ret) > + gic_v3_kvm_info.vcpu = r; > + } > > gic_v3_kvm_info.has_v4 = gic_data.rdists.has_vlpis; > gic_v3_kvm_info.has_v4_1 = gic_data.rdists.has_rvpeid; > @@ -2164,7 +2187,7 @@ static void __init gic_acpi_setup_kvm_info(void) > > gic_v3_kvm_info.maint_irq = irq; > > - if (acpi_data.vcpu_base) { > + if (gic_gicv2_compatible() && acpi_data.vcpu_base) { > struct resource *vcpu = &gic_v3_kvm_info.vcpu; > > vcpu->flags = IORESOURCE_MEM; The problem is that this gic_gicv2_compatible() comes in way too late, and you are disabling SRE while we already have configured tons of stuff. This has the potential for breaking things unexpectedly. How about this instead? Completely untested, of course. Thanks, M. diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index dcc165b3fc04..c42f39154af9 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -1200,7 +1200,7 @@ static bool has_useable_gicv3_cpuif(const struct arm64_cpu_capabilities *entry, if (!has_cpuid_feature(entry, scope)) return false; - has_sre = gic_enable_sre(); + has_sre = gic_enable_sre(NULL); if (!has_sre) pr_warn_once("%s present but disabled by higher exception level\n", entry->desc); diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 09c96f57818c..20a7102612da 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -182,7 +182,7 @@ static void init_gic_priority_masking(void) { u32 cpuflags; - if (WARN_ON(!gic_enable_sre())) + if (WARN_ON(!gic_enable_sre(NULL))) return; cpuflags = read_sysreg(daif); diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 16fecc0febe8..db5ce3dd01c7 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -103,6 +103,8 @@ EXPORT_SYMBOL(gic_nonsecure_priorities); /* ppi_nmi_refs[n] == number of cpus having ppi[n + 16] set as NMI */ static refcount_t *ppi_nmi_refs; +static bool has_v2_compat; + static struct gic_kvm_info gic_v3_kvm_info; static DEFINE_PER_CPU(bool, has_rss); @@ -915,7 +917,7 @@ static void gic_cpu_sys_reg_init(void) * * Kindly inform the luser. */ - if (!gic_enable_sre()) + if (!gic_enable_sre(&has_v2_compat)) pr_err("GIC: unable to set SRE (disabled at EL2), panic ahead\n"); pribits = gic_get_pribits(); @@ -1853,7 +1855,7 @@ static void __init gic_of_setup_kvm_info(struct device_node *node) gicv_idx += 3; /* Also skip GICD, GICC, GICH */ ret = of_address_to_resource(node, gicv_idx, &r); - if (!ret) + if (has_v2_compat && !ret) gic_v3_kvm_info.vcpu = r; gic_v3_kvm_info.has_v4 = gic_data.rdists.has_vlpis; @@ -2164,7 +2166,7 @@ static void __init gic_acpi_setup_kvm_info(void) gic_v3_kvm_info.maint_irq = irq; - if (acpi_data.vcpu_base) { + if (has_v2_compat && acpi_data.vcpu_base) { struct resource *vcpu = &gic_v3_kvm_info.vcpu; vcpu->flags = IORESOURCE_MEM; diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index f6d092fdb93d..bdc390529367 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h @@ -693,11 +693,22 @@ int its_init(struct fwnode_handle *handle, struct rdists *rdists, struct irq_domain *domain); int mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent); -static inline bool gic_enable_sre(void) +static inline bool gic_enable_sre(bool *has_v2) { u32 val; val = gic_read_sre(); + if (has_v2) { + if (!(val & ICC_SRE_EL1_SRE)) { + *has_v2 = true; + } else { + val &= ~ICC_SRE_EL1_SRE; + gic_write_sre(val); + val = gic_read_sre(); + *has_v2 = !(val & ICC_SRE_EL1_SRE); + } + } + if (val & ICC_SRE_EL1_SRE) return true; -- Jazz is not dead. It just smells funny...