From patchwork Mon Mar 10 15:12:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= X-Patchwork-Id: 14010352 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 C7D85C282DE for ; Mon, 10 Mar 2025 15:47:40 +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=B7mz16FRi3NIf6PZAo0VyhqIxgQ9Mm7RQ4uNkvxUGK8=; b=pQGbEBlwEgNwJB X03IuDjQc1prRnN9g2xZkdrETsXsO5on9RdcrwWubDsY761bEOt2IWo3VuSpUAKgQzshGgPOvdLO6 vUfcQZQ/wuwtJYPbDQl2egoLpSF+KMFv/e5f+Btr9CD2WAokd4Qnj3VKTnF/gZu1tDyNdT+Kd1vrG EF7QL7qPfI+LpylhrmcPF8aswhtRWRI0CaNtEOc4BDGkTt+INGIqy/ucLzQlogzUkGzQ5w9e5pLi5 GF7aRNNs9sa0nO0mqB9FPtnSV2WHBH8w9YPaLtnHumvLmqQ4t+emoc/aMSdN9GcQM5++igQ3eBvKn xow2bj7dln8JLma3EqNA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trfLr-00000003Fu3-36Ex; Mon, 10 Mar 2025 15:47:35 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1treoa-000000037VU-2SoX for linux-riscv@lists.infradead.org; Mon, 10 Mar 2025 15:13:13 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2232aead377so13780795ad.0 for ; Mon, 10 Mar 2025 08:13:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1741619592; x=1742224392; darn=lists.infradead.org; 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=x8ehbEB4G2M6rMKgF63InF+3qW6jpnoI0lm2nt0Msdk=; b=WRJ0bn5o7dB8+ETWYOTd5YzUgD/f8JPkT3cgJeFguST1W5X6kPDFd0AqxTSz/SmbNF m1U/+TL1QPNM03w5Hgr6fkVJFGIEgdXwrKxVpmFGzcoGTb37E2hgEsy6QVrEoI+4rZxM l+TQKNTkBnhOS1SyPGDoc80tSC6gPqU4aJobl2rigCw/GHPfZXeuqg68XHgmfe+qrRfF 0E3TrKSelBzkVoNNwjYKZsjr4W1psnIlAolzrLEODI2Yu7QEmE40g1iii71BifRdteKE Qsty3a7JCQt5uRNwd8YnyU5Yo2RVeRchnKILFhjapEVpcw96qSimJ0nZXYl0f+OMvcJo obTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741619592; x=1742224392; 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=x8ehbEB4G2M6rMKgF63InF+3qW6jpnoI0lm2nt0Msdk=; b=B+KjwJxAVPRBenVVf6JHIWRdNB9V1R7usgxydCUED80VB6Gy8nndm+wMFQz5Of4c1j BA5/4snI0drK6ec5wbDYal9YUbpkTwvehkTfttLQPeZEtQL6CCgZsRHb50NVer4C6rIh Wdv4431C6k3CTNyOIE89hnIFqD5ZpOtL4LlM9Ro6S1NapBPgHo8p4QaHxV7PM1TATJPk u2EQFOFLfM2m+s2PgGHSm+/p85X37yNjDA+Lw+qGyRuqfeFlY6QOyWjEcPDi50GjgT36 90CGxUgpcw9L1ibBeKOQXzndvTJVEoIVHhNPuE4l9Wxm/3vhDlldMhHGzvC691gzsaXx XFjw== X-Forwarded-Encrypted: i=1; AJvYcCUEJ7y7OvYqzxTbuffJwkWRUnS/2cLOdPxKlKCenh5g/zgW2oUO7EAih2XdguoMJaWP5VFWeg06w2PJFA==@lists.infradead.org X-Gm-Message-State: AOJu0YwPXzRJ9o2I9uFQ+A4B9b/SAF+MYoqCq4ZcGdwrIrmrAo2jsp/u 6FgYcZP3f4E+WWWQAUq3i1x+jNvrb0iYqM37TcD6ZnbYiXr/uCWMH5T0/GHOTEE= X-Gm-Gg: ASbGncvKKK4bml9gc7ZYZfpxEezVPMLGRR3DIYf/3uXT/1H2T9nVpSdvK9qvLpH7P0l y1S7jyhxuOQT8EG05Jsiv065j7IypOvBf2OlIE9jZ85EHYlcsz9oFo0qT4P9U7PFAewSWLi/O+h G1v5z3cj/vzJJ1U/xaj6ae6mNiI5YGFDfrkQDdC2XbNkhivR6B9y4aAWC+EFWJbneAGK7RIj3rh Tva/uYzdQh7ojyCf2uTImRgogErLVTTZ4TO0cO1+01qkoY0vg8y7/CQQeVj7c5g0Q2vj2zCu7DH u5JTXB663MRAPXjTX7twokaYb8xM31Lgp+qOiSdZECC0SQ== X-Google-Smtp-Source: AGHT+IHx06QKyqqktCp5VtJUo5IN0vcBDSsl9L3/ywFUKF9aCYPEgmbUbCQl4AVArEAbrJmDgZ6oCQ== X-Received: by 2002:a17:903:2405:b0:224:24d5:f20a with SMTP id d9443c01a7336-22428bfdba7mr268684275ad.48.1741619592004; Mon, 10 Mar 2025 08:13:12 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-224109e99dfsm79230515ad.91.2025.03.10.08.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 08:13:11 -0700 (PDT) From: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= To: Paul Walmsley , Palmer Dabbelt , Anup Patel , Atish Patra , Shuah Khan , Jonathan Corbet , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Cc: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , Samuel Holland Subject: [PATCH v3 03/17] riscv: sbi: add SBI FWFT extension calls Date: Mon, 10 Mar 2025 16:12:10 +0100 Message-ID: <20250310151229.2365992-4-cleger@rivosinc.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250310151229.2365992-1-cleger@rivosinc.com> References: <20250310151229.2365992-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250310_081312_627255_0F539532 X-CRM114-Status: GOOD ( 13.59 ) 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 Add FWFT extension calls. This will be ratified in SBI V3.0 hence, it is provided as a separate commit that can be left out if needed. Signed-off-by: Clément Léger --- arch/riscv/kernel/sbi.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index 256910db1307..af8e2199e32d 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -299,9 +299,19 @@ static int __sbi_rfence_v02(int fid, const struct cpumask *cpu_mask, return 0; } +static bool sbi_fwft_supported; + int sbi_fwft_get(u32 feature, unsigned long *value) { - return -EOPNOTSUPP; + struct sbiret ret; + + if (!sbi_fwft_supported) + return -EOPNOTSUPP; + + ret = sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_GET, + feature, 0, 0, 0, 0, 0); + + return sbi_err_map_linux_errno(ret.error); } /** @@ -314,7 +324,15 @@ int sbi_fwft_get(u32 feature, unsigned long *value) */ int sbi_fwft_set(u32 feature, unsigned long value, unsigned long flags) { - return -EOPNOTSUPP; + struct sbiret ret; + + if (!sbi_fwft_supported) + return -EOPNOTSUPP; + + ret = sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_SET, + feature, value, flags, 0, 0, 0); + + return sbi_err_map_linux_errno(ret.error); } struct fwft_set_req { @@ -389,6 +407,9 @@ static int sbi_fwft_feature_local_set(u32 feature, unsigned long value, int sbi_fwft_all_cpus_set(u32 feature, unsigned long value, unsigned long flags, bool revert_on_fail) { + if (!sbi_fwft_supported) + return -EOPNOTSUPP; + if (feature & SBI_FWFT_GLOBAL_FEATURE_BIT) return sbi_fwft_set(feature, value, flags); @@ -719,6 +740,11 @@ void __init sbi_init(void) pr_info("SBI DBCN extension detected\n"); sbi_debug_console_available = true; } + if ((sbi_spec_version >= sbi_mk_version(2, 0)) && + (sbi_probe_extension(SBI_EXT_FWFT) > 0)) { + pr_info("SBI FWFT extension detected\n"); + sbi_fwft_supported = true; + } } else { __sbi_set_timer = __sbi_set_timer_v01; __sbi_send_ipi = __sbi_send_ipi_v01;