From patchwork Tue Nov 29 14:34:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13058651 X-Patchwork-Delegate: palmer@dabbelt.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 594D3C4321E for ; Tue, 29 Nov 2022 14:35:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qQFqjVaqAxcbu0kghOLIZI0zdQp6Vykohtyc/NJHkik=; b=2RFxTwkX43612K jr2cpspko3enV0RcuWzQpZL0L/o2E8Iasy1P52oJoNUE31ooGJYvZ4RiCg+g9NboM5D9L+euJHDJ6 o1okED+/4jRuboZ8OFLSiCeTD97Gebr6vFXrWv5ZDxC707F5dlX3l5G+qGuBjU6cAlldoGwZphYNx QQmxkIfg0B6FH6dtn0X3Tmkbnjk6HlujIh6Hwh2wEuK/fkXt7/nl4gS+jukQK+vl9mcIefHYw7Vnz WET9RvaNR2Qc5BfZ8VKJSuS1Vj3M7sxmg3jWdTl5qW7+vVsR62Ck4JWgquQ2ZWp9ngfVrOyX6Ypfe Pf1COhUbBzwgriJxrjRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hR-009Ijt-Ex; Tue, 29 Nov 2022 14:35:05 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hG-009IYG-I1 for linux-riscv@lists.infradead.org; Tue, 29 Nov 2022 14:34:56 +0000 Received: by mail-ej1-x635.google.com with SMTP id vv4so34283802ejc.2 for ; Tue, 29 Nov 2022 06:34:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kkYads0KyCAx7dq1DsAoYcFYNgj4q/cQ9WxNrjTX+/o=; b=Q/ou0J12CnQQa/L/nFgVJJ4C4VhO+TaeDjShA1G25EunnuU/JZeNbDdsVOvcvN0Hb4 TM8xV+AEiDrTQdOP4nE1eCSF/OdoL3fMyxocWT4uqfMdXsQUIsjQmdP+HBHLZCaJ29LQ +TekwVAZYZYSOVSPgFrTe9l68jnq3pUWKtKNSAdhXuRwwG/QSBkWP7vZtIaeemQhOYar D+BmKezVNopXodt/qEhDHiME8zMjxE5JRqT76ImuHtgHKPMa8KauOvut+B039EPBEP0A 6xwQ5zXAYC/Vk1rEy2S7uSeoWg0+IbE7Y+72oW0Qw2fMGPRy6Cjd27RzR5HP/tsok4Tf QTAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kkYads0KyCAx7dq1DsAoYcFYNgj4q/cQ9WxNrjTX+/o=; b=jaA79fbh5e83BDjVrmILMtNBJsCN2kO53LRmTue8+Bynzl7UyKsxRuk4Tl4LIlSGME C5CuTyLZeXGVIaOtzAVwJcF7QBUMfOtbl5rYWbloWszoh2AErid9OoMgwCDn/Vx6c16I DNPe+U1owP6kG4miOkFBR0a0Ucs8Wpb5Sq6++NecLFv78zgnQ8U58yi0SKGFL6uayqHy GIpE1SN9AVKCB1/jTTnZ1yQPBGXQKYT8hndkmKQCxBKia66xevoBvAKr3xB+CXu3CgQ2 Y+qOS7oHYjsnTTWXKHqFek0AXSFjXHiIdwtbpqSTdHaTitSC+NwapIGcN+9WG9GLcs45 Wxag== X-Gm-Message-State: ANoB5plflVBtzVLaAqJNZXE3VhvwTq8xCv8IJ9L5r+sy0dowrdQV8gMd 7/4+QKbdNXvbLrNZrvfW8SQs9oKWZuWq4Q== X-Google-Smtp-Source: AA0mqf64qQmS6IkLgqU4DA2psg2hpGwjCT4Fr1ezpJs9yGKAeXMXVLYJjZM1OXsqvtFLu6/NWNW1kA== X-Received: by 2002:a17:907:9a8d:b0:7bf:49d9:45a8 with SMTP id km13-20020a1709079a8d00b007bf49d945a8mr10011380ejc.130.1669732490489; Tue, 29 Nov 2022 06:34:50 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-748-2a9a-a2a6-1362.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:748:2a9a:a2a6:1362]) by smtp.gmail.com with ESMTPSA id a20-20020a17090680d400b00782539a02absm4795179ejx.194.2022.11.29.06.34.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Nov 2022 06:34:50 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org Cc: Palmer Dabbelt , Paul Walmsley , Albert Ou , Conor Dooley , Heiko Stuebner , Anup Patel , Atish Patra Subject: [PATCH v3 1/3] RISC-V: Improve use of isa2hwcap[] Date: Tue, 29 Nov 2022 15:34:45 +0100 Message-Id: <20221129143447.49714-2-ajones@ventanamicro.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221129143447.49714-1-ajones@ventanamicro.com> References: <20221129143447.49714-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221129_063454_686437_0E63EF72 X-CRM114-Status: GOOD ( 11.38 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Improve isa2hwcap[] by removing it from static storage, as riscv_fill_hwcap() is only called once, and by reducing its size from 256 bytes to 26. The latter improvement is possible because isa2hwcap[] will never be indexed with capital letters and we can precompute the offsets from 'a'. No functional change intended. Signed-off-by: Andrew Jones Reviewed-by: Conor Dooley Reviewed-by: Heiko Stuebner --- arch/riscv/kernel/cpufeature.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 694267d1fe81..4677320d7e31 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -74,15 +74,15 @@ void __init riscv_fill_hwcap(void) const char *isa; char print_str[NUM_ALPHA_EXTS + 1]; int i, j, rc; - static unsigned long isa2hwcap[256] = {0}; + unsigned long isa2hwcap[26] = {0}; unsigned long hartid; - isa2hwcap['i'] = isa2hwcap['I'] = COMPAT_HWCAP_ISA_I; - isa2hwcap['m'] = isa2hwcap['M'] = COMPAT_HWCAP_ISA_M; - isa2hwcap['a'] = isa2hwcap['A'] = COMPAT_HWCAP_ISA_A; - isa2hwcap['f'] = isa2hwcap['F'] = COMPAT_HWCAP_ISA_F; - isa2hwcap['d'] = isa2hwcap['D'] = COMPAT_HWCAP_ISA_D; - isa2hwcap['c'] = isa2hwcap['C'] = COMPAT_HWCAP_ISA_C; + isa2hwcap['i' - 'a'] = COMPAT_HWCAP_ISA_I; + isa2hwcap['m' - 'a'] = COMPAT_HWCAP_ISA_M; + isa2hwcap['a' - 'a'] = COMPAT_HWCAP_ISA_A; + isa2hwcap['f' - 'a'] = COMPAT_HWCAP_ISA_F; + isa2hwcap['d' - 'a'] = COMPAT_HWCAP_ISA_D; + isa2hwcap['c' - 'a'] = COMPAT_HWCAP_ISA_C; elf_hwcap = 0; @@ -196,8 +196,10 @@ void __init riscv_fill_hwcap(void) if (unlikely(ext_err)) continue; if (!ext_long) { - this_hwcap |= isa2hwcap[(unsigned char)(*ext)]; - set_bit(*ext - 'a', this_isa); + int nr = *ext - 'a'; + + this_hwcap |= isa2hwcap[nr]; + set_bit(nr, this_isa); } else { SET_ISA_EXT_MAP("sscofpmf", RISCV_ISA_EXT_SSCOFPMF); SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT); From patchwork Tue Nov 29 14:34:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13058650 X-Patchwork-Delegate: palmer@dabbelt.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EAEBBC4321E for ; Tue, 29 Nov 2022 14:35:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FRHrc2MpnfGDTUFrhC3VGh2fvDhfdtI2LuklsVyRvhw=; b=ovPcvOw9+BJx2e MG2jJDaYDLcXF5OvQgHLp+qKimtkcEr3b6KxQB+5aiiEVVvWVj6Al/hV1AqarTcIIGDYvrEVRcUhD Y52EdFQECC2YDhlXXTuygfXfzI5FNEHms8OHb1/MX3uWkew6fZSEbMn5lOYIzHlC3pBdekLxBd5pP pCk9IyYnTiVHUccrj9S0r688JkkXSGUJDMUHQAzJZe7EDrHHaJoDIPGYMwqNHKxcaIrr6zikqAnPg /qb3Tziqkhk7/AlN7ZPXbj+7DBrdjjgszH7AMk7z3XdPOjrCkqNM8VHU8JbhNCwtf9vfQ+t3aEcX3 fu/yc8vgc5GgBUYqVjzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hO-009Iix-L2; Tue, 29 Nov 2022 14:35:02 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hF-009IZK-HF for linux-riscv@lists.infradead.org; Tue, 29 Nov 2022 14:34:56 +0000 Received: by mail-ej1-x62f.google.com with SMTP id ho10so34286906ejc.1 for ; Tue, 29 Nov 2022 06:34:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BysgsltvZHQEbka4m+WGk/CR1Jp5prfGKuxP5ujDIrg=; b=dyfGBebhUYn3USFzHyJFj/EjOgmg/tmg+H7Kabzn5e9oZXBoUnMh6fe1Didry/KAWp sJjKOmp9RPcAZab9z4HQqEtmNxzeHsZZkfCLBAqksVAPw6+UrWVOrMGzJSetJiNXJ0gZ l9lE0Yz1cW9I/+OD8Z8NBwWOBhepApCStPId/r8JQCtdyQuJSsYsK6//5070snYXsEj0 tykkN0Vvpd8qx1HAqrbrdT7QKZFJATc3nOMZOH9+Tz1pd4dww70xv2+v+AJM5u5XVwe1 C/ejJnwduH00sx+blwNK8dry4qY9ZFxHV3L5TqqJ+ka9sMpMMHAAn5DyGzqY4aRllnEJ zPXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BysgsltvZHQEbka4m+WGk/CR1Jp5prfGKuxP5ujDIrg=; b=G5UWGUmgwNx6QN2lT6e3W2ek1uZiGtrjc5YItnRzDp6Qn7SkZWr1h++z7CanP5TLxk nIXjE/qBbU3a8yFjBaWoT/dWpXEogInaM/YyjkKfXm8xf0gorCep0RH6wJ/CSl8BB//f mMbRLykYk+qpPoDYGp9WWLez+uyzgL36irlCkSsgaUQ7vgsbCMXI3PrhcRTlJ7gBgSmN jRXcrTRlSnohLEuCal25SmItF6Zdntwl7AQtCU89NshbLci4lTiafsSwT5Dec6T1PHka /UVVHS5Wy0cm0SnGbEie9GX4KMzqvn3KMTZPlHnhe1+IDNtPueZm5/rxl1yAifm+5zDc 7nIg== X-Gm-Message-State: ANoB5pmZnUKSf0yF2+HNCV6MNaIvcwTDoNNNjkWjaWkWfVT/nYNksPJk Anyen1NzkkcTl9IY4bQNv1LPC64SuVMRMQ== X-Google-Smtp-Source: AA0mqf6BTjR/HmsBVW0WCaxeLVy0SHaP0B40I2OOj/YtTnJKraTHIcxq8zfcJYZ2sHE999SjU/jN1Q== X-Received: by 2002:a17:906:e0d2:b0:7ad:b45c:dbe1 with SMTP id gl18-20020a170906e0d200b007adb45cdbe1mr49026857ejb.726.1669732491824; Tue, 29 Nov 2022 06:34:51 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-748-2a9a-a2a6-1362.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:748:2a9a:a2a6:1362]) by smtp.gmail.com with ESMTPSA id f9-20020a17090631c900b00782e3cf7277sm6154875ejf.120.2022.11.29.06.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Nov 2022 06:34:51 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org Cc: Palmer Dabbelt , Paul Walmsley , Albert Ou , Conor Dooley , Heiko Stuebner , Anup Patel , Atish Patra Subject: [PATCH v3 2/3] RISC-V: Introduce riscv_isa_extension_check Date: Tue, 29 Nov 2022 15:34:46 +0100 Message-Id: <20221129143447.49714-3-ajones@ventanamicro.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221129143447.49714-1-ajones@ventanamicro.com> References: <20221129143447.49714-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221129_063453_625077_88C3CA83 X-CRM114-Status: GOOD ( 14.68 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Currently any isa extension found in the isa string is set in the isa bitmap. An isa extension set in the bitmap indicates that the extension is present and may be used (a.k.a is enabled). However, when an extension cannot be used due to missing dependencies or errata it should not be added to the bitmap. Introduce a function where additional checks may be placed in order to determine if an extension should be enabled or not. Note, the checks may simply indicate an issue with the DT, but, since extensions may be used in early boot, it's not always possible to simply produce an error at the point the issue is determined. It's best to keep the extension disabled and produce an error. No functional change intended, as the function is only introduced and always returns true. A later patch will provide checks for an isa extension. Signed-off-by: Andrew Jones Reviewed-by: Conor Dooley Reviewed-by: Heiko Stuebner --- arch/riscv/kernel/cpufeature.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 4677320d7e31..220be7222129 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -68,6 +68,11 @@ bool __riscv_isa_extension_available(const unsigned long *isa_bitmap, int bit) } EXPORT_SYMBOL_GPL(__riscv_isa_extension_available); +static bool riscv_isa_extension_check(int id) +{ + return true; +} + void __init riscv_fill_hwcap(void) { struct device_node *node; @@ -189,7 +194,8 @@ void __init riscv_fill_hwcap(void) #define SET_ISA_EXT_MAP(name, bit) \ do { \ if ((ext_end - ext == sizeof(name) - 1) && \ - !memcmp(ext, name, sizeof(name) - 1)) \ + !memcmp(ext, name, sizeof(name) - 1) && \ + riscv_isa_extension_check(bit)) \ set_bit(bit, this_isa); \ } while (false) \ @@ -198,8 +204,10 @@ void __init riscv_fill_hwcap(void) if (!ext_long) { int nr = *ext - 'a'; - this_hwcap |= isa2hwcap[nr]; - set_bit(nr, this_isa); + if (riscv_isa_extension_check(nr)) { + this_hwcap |= isa2hwcap[nr]; + set_bit(nr, this_isa); + } } else { SET_ISA_EXT_MAP("sscofpmf", RISCV_ISA_EXT_SSCOFPMF); SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT); From patchwork Tue Nov 29 14:34:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13058652 X-Patchwork-Delegate: palmer@dabbelt.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F2933C4321E for ; Tue, 29 Nov 2022 14:35:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=eTQXIIrpDxFPtwOzTzZIVpdto2Zd5wJmNVEum7TeMa0=; b=y/fBJNdJ8k4PLZ azU/lTCRkFT9Y62CXlP/uJjlgc8R/d/IYuV02lAJqBQQOW60BE9fkB66aoUOoXYHQ1atRCW73yQJr Bu7wwTA+jBSyXXYs3FqGO2H4Kpm2FpYetzSK8nPY19c3PwiuSR+tyD+SA0cOy+MYNZmyqPRGLLzBk b3hm4RPPsRa5+BSjoOXNrQDPOLV+8/MkO2NFqtiAdC9+4QbHK0KWynvrDlCHVbwzfaC30PrEQ6W6L Xr7qlHhU2aam5qA1d+ll32dTYRQz/0i26jQpo3hj1sqauQhsmWMvRbzBRsu384ldEk0hpzyHNw1TF xW4nqthuTaXueCIGRF0w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hU-009IlH-2d; Tue, 29 Nov 2022 14:35:08 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p01hJ-009IaL-1L for linux-riscv@lists.infradead.org; Tue, 29 Nov 2022 14:34:59 +0000 Received: by mail-ed1-x52a.google.com with SMTP id v8so20073452edi.3 for ; Tue, 29 Nov 2022 06:34:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dRUPuFnySQ9LnVjWmtvi+D+64eD/OXASdUGKw7rxo5E=; b=WkNWFkyjiVxfZMMiRwugqlsqs1hqJ+504jWdF/8S7UNAXF2g6DWxM/Kmi+bX7k7mdy 56o44pRXLApNvZp7NHgcu55lG0COL5o3PvE4UM2NzBL27Eo8HKn1LN84niTLd/1cyWwN vowf+1lUow1J4XbYivxq4MutNo82qw8nbanWHAQEbwT8iquyVOUxQ317Bj7EkkPCg23+ CkKywPsQfaesSrtKYMvNj92oCMqhzln00zFfBI9O4qSgNvUdmRM4JVPbesFKcvGcweAm mQgbfCL6K2szMdlIo/kniJMcQssSjFV6d2oHQ4E/oAbpZnTMBC6OSqb79x+5yKKIzfRx dCrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dRUPuFnySQ9LnVjWmtvi+D+64eD/OXASdUGKw7rxo5E=; b=TaWk20/Cbe2fuO1D4RRLevryieuLLCiRUCcNj30UwURlAqdgDNq0GpqlvoRrY5VJ92 S/ueCJij0iriQpYnA55BU32vDECMpCcY/U+Dm7AEIjUC11urYSScH20Q0y7ZQ3n08ra2 +3JA1opmwGXlr/JYTL/IftGYFgTlPi5rbJiQq3QOcKoSwPPGhSoyQjcCTHr3mqWn6O0a 58cVaE524uj4mggYTB0wV/TIf3iRWo0Ts2HkqzqwugeA+uG1Zl8m1OoxEIm9Sg88dqmm UF0B1Npn6nbRRQ39Z/zMsK02m9Pc+2s+yhYGbrmUZG0lYLf1S/MWjRy+RX0iA4/jHYio WFmA== X-Gm-Message-State: ANoB5pmo1ZuvxskzH17N+LOQxIvHG//2ymktvXsM3UfRftYSRKup0dFa QIi7Av8asA4ONqJ3pVaDG20RifNJpTOVPw== X-Google-Smtp-Source: AA0mqf4cD3u3nRGn1WgwCggv33MyEMrO4vESGMcbH1Z2mncs+TrL0NLUzwYcaBGbErL8FdzSZ1e1aQ== X-Received: by 2002:aa7:d518:0:b0:46a:727f:b659 with SMTP id y24-20020aa7d518000000b0046a727fb659mr26663903edq.420.1669732493070; Tue, 29 Nov 2022 06:34:53 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-748-2a9a-a2a6-1362.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:748:2a9a:a2a6:1362]) by smtp.gmail.com with ESMTPSA id k16-20020a17090632d000b007b2a3cad2cfsm6199500ejk.132.2022.11.29.06.34.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Nov 2022 06:34:52 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org Cc: Palmer Dabbelt , Paul Walmsley , Albert Ou , Conor Dooley , Heiko Stuebner , Anup Patel , Atish Patra Subject: [PATCH v3 3/3] RISC-V: Ensure Zicbom has a valid block size Date: Tue, 29 Nov 2022 15:34:47 +0100 Message-Id: <20221129143447.49714-4-ajones@ventanamicro.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221129143447.49714-1-ajones@ventanamicro.com> References: <20221129143447.49714-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221129_063457_140238_783298C8 X-CRM114-Status: GOOD ( 13.98 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org When a DT puts zicbom in the isa string, but does not provide a block size, ALT_CMO_OP() will attempt to do cache operations on address zero since the start address will be ANDed with zero. We can't simply BUG() in riscv_init_cbom_blocksize() when we fail to find a block size because the failure will happen before logging works, leaving users to scratch their heads as to why the boot hung. Instead, ensure Zicbom is disabled and output an error which will hopefully alert people that the DT needs to be fixed. While at it, add a check that the block size is a power-of-2 too. Signed-off-by: Andrew Jones Reviewed-by: Conor Dooley Reviewed-by: Heiko Stuebner --- arch/riscv/kernel/cpufeature.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 220be7222129..93e45560af30 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -70,6 +71,18 @@ EXPORT_SYMBOL_GPL(__riscv_isa_extension_available); static bool riscv_isa_extension_check(int id) { + switch (id) { + case RISCV_ISA_EXT_ZICBOM: + if (!riscv_cbom_block_size) { + pr_err("Zicbom detected in ISA string, but no cbom-block-size found\n"); + return false; + } else if (!is_power_of_2(riscv_cbom_block_size)) { + pr_err("cbom-block-size present, but is not a power-of-2\n"); + return false; + } + return true; + } + return true; }