From patchwork Fri Oct 21 10:59:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13014621 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 1CD9AC433FE for ; Fri, 21 Oct 2022 10:59:27 +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=BGe3QY0ML5Wt4pwC5506WQFjtuGTATouo7WAYvlOdBE=; b=Z+m/8U3HS5v8Qv 8hVQRSWs4UC/LuMPyf7Siqt0nTa0oBCcPYUrYEe5SPUF1i4rNprNAZ77AkxWiIurPRDMX30703FcI zJQfB8yUmdk61I+m6eoVXK/obvfCY2MOHuifdxfCxxvBiU+YIcSdq3KNO0M2owLFe+vKkAJik5S9V p0faZaHhdenS1whHID7QLt04/dWE6e7pKjqyvM3Ag5Ukxbqt3tBPP2f/JXOXZMMeghZAn5zMJMIjm n42O4MkIsb7ceoTjNOm8AKknTLCHdJ9jNlWYxUavOM/ebkkpSJvu61un+S79bm7W7lVKj4Yr08qNr jHEvpjFi6+BIVkok7jwg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpkD-007FhF-EK; Fri, 21 Oct 2022 10:59:17 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpk8-007Fe3-Dv for linux-riscv@lists.infradead.org; Fri, 21 Oct 2022 10:59:13 +0000 Received: by mail-ed1-x529.google.com with SMTP id b12so4357043edd.6 for ; Fri, 21 Oct 2022 03:59:09 -0700 (PDT) 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=Uw0lFK3SmkKeOhZumK+n9dghOgfaQ3QYXbrLz8+oImM=; b=fH2UwcrPp/jQQ+TQk3GgvW3MTFSeytJOzbl3BQ5tFqUFqhX8huqCH05FDABT0l7r7A Pu8xDA1SOqg0wz5WsuHlR4Vi0QFxr7cYwpGBLontbkYc9vGGRS73FvA1DhSx91WPJgjF Si6NXWh0XWfd7XLXkCzCH900bkywU8ghJ3tQ40ssS3hIR02Jt4L9W9uZGHSLkGhfl95R wvEalQ6yYMqCXWv52yWoGFl2aB95oAtrmSFnwWblikhFGkfQFkEIXVTEGB3dvrkfn9WG ct2eKCjGiEzsibv5dF6FQx4Dlo6gD+db6TDvJGWwYpszMIKoXFY+WcSVOryaQ7wVkZgJ aovg== 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=Uw0lFK3SmkKeOhZumK+n9dghOgfaQ3QYXbrLz8+oImM=; b=vMLIxkDt8CV56TrRvkb1bPcZN7Puz4U3V4RFt+kQ81KRYgKRhrkVvmSHXP54E0WtFe 65v4TCjQAjZvlWmMqWwybdCx1WoMQY96LdYlVRHWRliChy2FiRNzHPOC13Kf6AH5PLE/ v/HAxjclzzt1k3Mf/ZlU7LEvg/qt+lmSvwvwAx5EWcbc/Ws1NUPZCx+LC3JCr8lZm5IJ ZNNSOQB2DTh6TA/MiBeRRMgk1XpsQXAeszMHRr3IM3aKhLXwlD8zl3WPFkRHjKsiFEaA tdwczdI/lWAg8btzgINN9nn5qE4SZ4AXlzfaN0Gvw/tvBpogFpn5tyHe3aTZH2KebENL n35g== X-Gm-Message-State: ACrzQf0aJ61IG7W9wE69kJhRxuT35245nfmNk8eqHN4P940hv9uUv33h 4pDrzRE50ghrvC5u2i1FR9g4jsc03ck2ww== X-Google-Smtp-Source: AMsMyM7NszRPoMr6grqxqLKCUN66UKnLDHXr9ohB8441E4tbb0B9vcToV/zc/dHbW0iuarBNOafeyw== X-Received: by 2002:a05:6402:27c7:b0:45d:45f0:e6c4 with SMTP id c7-20020a05640227c700b0045d45f0e6c4mr16434835ede.325.1666349948584; Fri, 21 Oct 2022 03:59:08 -0700 (PDT) Received: from localhost (cst2-173-61.cust.vodafone.cz. [31.30.173.61]) by smtp.gmail.com with ESMTPSA id c7-20020aa7d607000000b0045d74aa401fsm9389360edr.60.2022.10.21.03.59.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Oct 2022 03:59:08 -0700 (PDT) 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 1/3] RISC-V: Improve use of isa2hwcap[] Date: Fri, 21 Oct 2022 12:59:03 +0200 Message-Id: <20221021105905.206385-2-ajones@ventanamicro.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221021105905.206385-1-ajones@ventanamicro.com> References: <20221021105905.206385-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221021_035912_482534_A262D3BF X-CRM114-Status: GOOD ( 10.85 ) 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 --- 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 Fri Oct 21 10:59:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13014623 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 8576AC43217 for ; Fri, 21 Oct 2022 10:59:27 +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=PLmbcUu+1YtgbPXVdV5bjbUw7a1Vh5BZoKPhXFa4OuU=; b=oQPk2vXPBFxYog EnVQG8AHaiW4A6EF8eQLymNkhQj975wsD7OfNSKQlgE7NQcLyeedZaA7n1psW3E4cR5AQXjmiyJmJ 4IJ/+ciPEnJ+EDK9x8YUr30YFMgM08/kE94NmvC68puZE5E1WvtfoKbk8wIDhzf1nQQ/V5GHmA9mk 3YiVB8Ag8BzKBJ+R5WThnR7/Xzz5RnvXqMEe2w3XI0Qzw1Kn/xvrg56QPg4+9mkCQrIvl6P9ynj3q SZZ9WewTywcTsKKfW0h2z2rDkNE4/7VSnrJ1pklEiJ/ENLUJhGkb5ibfWGZSJMk0+GsjDzUR5Oneh wbiPjsc25xejhfWfbRVg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpkF-007Fi7-26; Fri, 21 Oct 2022 10:59:19 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpk9-007FeG-0D for linux-riscv@lists.infradead.org; Fri, 21 Oct 2022 10:59:14 +0000 Received: by mail-ed1-x535.google.com with SMTP id u21so4341273edi.9 for ; Fri, 21 Oct 2022 03:59:11 -0700 (PDT) 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=kUBRhR1TzMPRlwt058tHxt9tC26aKYFVoa5R0ObwQMU=; b=Gfk3arAiX79Ol3wlq1f93vZWqnXXT35WvvdQl5VbIiB8fbqoEUMTngXW8Ped4H1s/i PVBIulwsp8hC/5JWeI+OzwRFrW7BD5ed+4tp0cYbu3C5VSdOC05hrrIILNn5IkpvWZqC w+9juzakCsDXIBr7QpDbEQgn6QcLvlQoMxwYVWl8HO48e8EaYS/88GuKbu9oli3DMOuQ xwMWf58SKccF7E6XG2llcpQxsUwz00JEi/wDAfry+1o37fZFJdD085LWmD+6iu543aLU jpNRwBZEo5Py9kzAMqxQm3y+3vArPq5iX5PuLon0MqVPNGmhUS/RNktw8tDBB5IGzvNz wG2Q== 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=kUBRhR1TzMPRlwt058tHxt9tC26aKYFVoa5R0ObwQMU=; b=RZ08eJNYvxpVdyOfBHz8RvQAuKqf6ddc27Vk3k889zrIGGENqb/fC622bEVBtnk4As wXyD3KoteweiLDyyr6o7QWwP36sJoUFMGjxEVM8/ZNahPFwD0n3F13hm4azoZVXWOq3T K7Tp9UAjEV2ihirianMJeW6p1FYHI/dKeL96o87R+4mtOzsnjId+AMc90tsA4XerV6JM tCKa8IhjZ080zAUnFNThlvdboTDP6oPvwIWtfVcLiX5CgDTkymku5E/0aVBwfy1oLU1f l1uGx8HC8ToglX2VBEB57QPUq/smLrX2RObRcGgba5yKeOdFKgGBmHoi49nVqXPxAKUa TwRg== X-Gm-Message-State: ACrzQf3QbK2LLHhdRpxPw9pFEFEWB+TBEAQgh5luUQ3vaNNAHMYkKG5G BYwqEQI7XtMCJwdX/xYVYc4y6BEdbwJ+nQ== X-Google-Smtp-Source: AMsMyM59Nk7hwS/jQsQwY9kaHEK2nipyhvYpXwSCCN0PSvOl7KE2rQXbYaMApC7wEmdNkedIOp9nGQ== X-Received: by 2002:a17:907:60c7:b0:78e:1cc:57de with SMTP id hv7-20020a17090760c700b0078e01cc57demr14963085ejc.33.1666349950001; Fri, 21 Oct 2022 03:59:10 -0700 (PDT) Received: from localhost (cst2-173-61.cust.vodafone.cz. [31.30.173.61]) by smtp.gmail.com with ESMTPSA id r2-20020a1709061ba200b0078d76ee7543sm11398542ejg.222.2022.10.21.03.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Oct 2022 03:59:09 -0700 (PDT) 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 2/3] RISC-V: Introduce riscv_isa_extension_check Date: Fri, 21 Oct 2022 12:59:04 +0200 Message-Id: <20221021105905.206385-3-ajones@ventanamicro.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221021105905.206385-1-ajones@ventanamicro.com> References: <20221021105905.206385-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221021_035913_064769_5AD9FE28 X-CRM114-Status: GOOD ( 14.07 ) 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 --- 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 Fri Oct 21 10:59:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 13014624 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 663D2C433FE for ; Fri, 21 Oct 2022 10:59:29 +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=i3YNjbkkJf3Qo1QWhQR9xgaKqX7yYVem+rp/62ieeWQ=; b=Lgp0rMK5wEcSlH X8SmdaaMCP68IzrBc2+84EaHuSiKUbtqoBhriLmpdelmrFr129dzo4v493ihtPcwTnO/9et7a8+Qy lbfJ5fiG24HLzGMBVrfEhQiC6+urqBUvgfSVo5jgIo0wbeyXDTxQSm1LV8Dh8+QVCMWSVfzuzVG69 0A9GBJGJjYpjyVa39sUsjWqHUC/oFojsxbRD0A/sgw5Xv7ORJfM8+klKCTpv6yP4fJpjSKNWoxkEW vCllLlUh+RPNNkUokwrVKXS50HiOaQ66dLDHVqyvNO9vWMt/HG5V82zPdFXcrN72wFSnGH410r+wm D/DvztjXtjX34Xk1WtXg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpkG-007Fis-OH; Fri, 21 Oct 2022 10:59:20 +0000 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olpkB-007FfC-Hn for linux-riscv@lists.infradead.org; Fri, 21 Oct 2022 10:59:17 +0000 Received: by mail-ed1-x52f.google.com with SMTP id m15so4298322edb.13 for ; Fri, 21 Oct 2022 03:59:13 -0700 (PDT) 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=NJckaPIA4KIfeFQ276qeV/1yYx4y02q/Q43EmtzUIdo=; b=ib3PRNMNqzsA7hzNk1kFKpxB1uKmX1o0DroHhFW1n6inZ3rYPmPzRPgpj5RYUqdWTe ZW3Xy385vWOFRifw9+F2wunP42fp6dqVC03KoTwhtI900PSLTR3f63JWlOOl/isRCoAG 6nHJt5Q1l0eg8t+9Y808xpLfrnsRcoirtWndsV3u/2flJhDvyxXC5q3D4TXvWVdmo4sF sSg2sujI25c5FAFUMKw6TJG/FUKF+kbfp9jmTSEShSHE75g18ztdQe9c5Dawrws5kOHY Uw0POz+fmqsTJgSrGzOgcQTtVfBHBAJ6atcxcX7hD3hxUur2I7DIqGCfZNSk6kKeK5wd Q/Ng== 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=NJckaPIA4KIfeFQ276qeV/1yYx4y02q/Q43EmtzUIdo=; b=xxL1zBSPPQYSXXZK3YQb3THpJvABOr+FeA6kn7fRLyJWM8UmJzlose0g8ok8KKMqxP Kf+7KLuV7hG8yWJ9XYReNnysSbX702bJSorpOT2Jd8zbK1NPb1ENjwVZ3pMzniGC0zaz EM9oQW0gIz7qSUSmtRNRSn4JVWD2sur1hRZ1CuLVBJ9y1xAkbZtSN4UfQmD6+G1PyekB RTGhWZD5joNS4N/mwGBs3prfQ5JWn278iIhm+eOXcz5xIsv9lvkYJeWt55HM5lzbmS9+ FVWL9CS+p6X/4KowDn192azrWU97gHIbXu3HYERiCT/zB+4z0HE7asBC4IzOwT57D6Gv 4rTg== X-Gm-Message-State: ACrzQf0ZbsVBeEymmjF42MhzA+cMI8YFEJRnatALCrpcWL/sGC8v3UUr VZhKVRGxDpw7Kd4s27nMIr4Syy0eqaIyRQ== X-Google-Smtp-Source: AMsMyM4XThC2BwkQmY7bVEsXuAd1yaDOE2AxtlSy/R9Bd8JJtGBKzCBSmklMlbzKjfy9C/LngpNgHQ== X-Received: by 2002:a17:907:2702:b0:78e:e94:2ac4 with SMTP id w2-20020a170907270200b0078e0e942ac4mr14847940ejk.679.1666349951675; Fri, 21 Oct 2022 03:59:11 -0700 (PDT) Received: from localhost (cst2-173-61.cust.vodafone.cz. [31.30.173.61]) by smtp.gmail.com with ESMTPSA id r2-20020a1709061ba200b0078d76ee7543sm11398573ejg.222.2022.10.21.03.59.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Oct 2022 03:59:11 -0700 (PDT) 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 3/3] RISC-V: Ensure Zicbom has a valid block size Date: Fri, 21 Oct 2022 12:59:05 +0200 Message-Id: <20221021105905.206385-4-ajones@ventanamicro.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221021105905.206385-1-ajones@ventanamicro.com> References: <20221021105905.206385-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221021_035915_647021_0FDA7F2E X-CRM114-Status: GOOD ( 12.66 ) 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 --- arch/riscv/kernel/cpufeature.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 220be7222129..a4430a77df53 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,20 @@ 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) { + if (IS_ENABLED(CONFIG_RISCV_ISA_ZICBOM)) + pr_err("cbom-block-size not found, cannot use Zicbom\n"); + return false; + } else if (!is_power_of_2(riscv_cbom_block_size)) { + if (IS_ENABLED(CONFIG_RISCV_ISA_ZICBOM)) + pr_err("cbom-block-size is not a power-of-2, cannot use Zicbom\n"); + return false; + } + return true; + } + return true; }