Message ID | 20250210213549.1867704-9-cleger@rivosinc.com |
---|---|
State | Superseded |
Headers | show
Return-Path: <kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=zLSBEUsx; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=dbu+XeA9; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4YsJ6D2mqmz20JV for <incoming@patchwork.ozlabs.org>; Tue, 11 Feb 2025 08:45:40 +1100 (AEDT) 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=7YipELAsfgruIWbIZQgUyMJDpJWHgv6kH0m1eg8/0pk=; b=zLSBEUsxI/U/u6 66GZPKcM9mXRSxNaczOdfe5eSjh06xdRZ2kkZ6XlVhZnkmaRFVCfmFo/H2QeSDZOXZc96Bh1jHcn0 ZxDB6bE0Qzcm8+NrxBuX4R+H+6EpArWg5Piny8tkqVBXo5w142TyD7Mg/l/ohHbXuJDTgRg0srKPe Cgxmu72Temwrljq8061XAYvtneQLNAMmGxzwE1dKnkXaRiljixCP/Dn+8IbDbfKeouNCthNalxcEe 3dZazdI9YrWGP9l6rcuDpTvUUIAplyKyFHMU1OriM2gOHWFX2+W03Yxri0M5X3eLKk+KBJK4+QliF NalEfGm339vN0W/0BnbQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thbb2-00000001YQS-2YIa; Mon, 10 Feb 2025 21:45:40 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thbRv-00000001VQ8-3qwV for kvm-riscv@lists.infradead.org; Mon, 10 Feb 2025 21:36:17 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-38dd14c99c3so1525795f8f.3 for <kvm-riscv@lists.infradead.org>; Mon, 10 Feb 2025 13:36:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739223374; x=1739828174; 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=NTEMNxwWUDdJDHTSWR5BaYosnBDapUg7Ev6g031TeV8=; b=dbu+XeA9MAYnScbolaP3CtUclJ44e2xkxUSdbinjC8eghPDi+x33nOQXL2LNQc7twz +vGh8fE3H+jxLRV0G4K+HhrXeGs2p4WOO+IiochBPUldmKcrJrrtlP9PqFZlDCjcdaZG ryaFDprPzu7K1gfamAElAuCMZuP2t4IWqgVepxExxvlgd9aHsQm6fHzI5tDZML82iCty IbGzQXbeGwrhArmeMjVyin03Db3y3EeeZM0z+zEV4bH3PTTTQK1hk/y+a9y6y4mBIFWb 2pMKOQZp5CdA+r92dZX1SwYO4Ad7e7N1WCiP3EBHbGI2IMifDW15LnhDPrt/Z0cI4OiS 0lxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739223374; x=1739828174; 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=NTEMNxwWUDdJDHTSWR5BaYosnBDapUg7Ev6g031TeV8=; b=cuqoBlDZc593Te7EVy2iTsW0g0iIHFrKiaDs75OHSmo/ZyqoQdYJU3oSjS1hzIiTOG 1CPLuieQjANEJySIUERfb6FT4VrBt7UBiHT/rlTlPXZTL1oZXIXqrXAq45503CSoPSJb UieHaz7561zBscls77Pb9ZPrpRPbrH254hRfXdyv+x8qTakRHD4iATYU6t+PYnGr1tqM cacr7dhOfARdD1hU8iiZNXumlkA8eMnegfYb2d5tPgpp6noCAtbc6+SqEKYkM/bRTZg/ 75cT3n9CvI6Rr2vBq4DJihBsPPERhNMM0pnPher3erSIYeLh5GhmVGdjsw4XM0yyYf+e DLkw== X-Forwarded-Encrypted: i=1; AJvYcCUBkwwvElvVBS2OFMw31LSGKGOmOOjvKb6ZQEO4kzrd8OCEcvVLqY2xL/Rdja/LiTnT17DGmgujFvE=@lists.infradead.org X-Gm-Message-State: AOJu0Yx0bzVcuwF/DDIyR3WPbLXUupPSlsjL9GOqOWOIokW6SICU87XA cUJzevZY21RQCHBn6jIZB4id3gVCjJPX+5d8qo0z4z0OKiigWSBKg3KG9CKnrRhrFCWbrZC6Ne7 wugs= X-Gm-Gg: ASbGnctAdT8mJWnAXhSvN0GnvJBmnk5D95e8WOOBO+qttNj3RHgCFuCHt1fwCZEwDZw MLHWzKybvNfBnbIFH2RlgOshA4og2Ty8Covuzmqc/Si2/y4a/JOcZKzD6hVsEDKYq5B9+hmmtAj GfmfjciWTIOqZcOHmV8gU1euS5SfJ56V8gp3mupcnK7Z+515rlqCcG0LmZJsB8RRDceL7fVjBg+ qpkP4m/pf8GC+S1u3yC4TQlY8XYmYdXpI8Qp4mbsqRGt4Qq+9hE2aG5tVgLYmUHr6KmciKPwX0Y cE913654/+c9a2+L X-Google-Smtp-Source: AGHT+IFeyF81bBn0bup3UjkgQ031iOdpi9/jVXiALJpdAtVQDgUVud0mvsDq+oa8j9/bPhnXjupeow== X-Received: by 2002:a5d:5552:0:b0:38d:c2d7:b5a1 with SMTP id ffacd0b85a97d-38dc8dddd9amr9308427f8f.19.1739223374260; Mon, 10 Feb 2025 13:36:14 -0800 (PST) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4394376118esm47541515e9.40.2025.02.10.13.36.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 13:36:13 -0800 (PST) From: =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= <cleger@rivosinc.com> To: Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, Anup Patel <anup@brainfault.org>, Atish Patra <atishp@atishpatra.org>, Shuah Khan <shuah@kernel.org>, Jonathan Corbet <corbet@lwn.net>, 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?= <cleger@rivosinc.com>, Samuel Holland <samuel.holland@sifive.com> Subject: [PATCH v2 08/15] riscv: misaligned: enable IRQs while handling misaligned accesses Date: Mon, 10 Feb 2025 22:35:41 +0100 Message-ID: <20250210213549.1867704-9-cleger@rivosinc.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250210213549.1867704-1-cleger@rivosinc.com> References: <20250210213549.1867704-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250210_133615_957615_3FECA463 X-CRM114-Status: GOOD ( 10.59 ) X-Spam-Score: -1.9 (-) X-Spam-Report: =?unknown-8bit?q?Spam_detection_software=2C_running_on_the_sy?= =?unknown-8bit?q?stem_=22bombadil=2Einfradead=2Eorg=22=2C?= =?unknown-8bit?q?_has_NOT_identified_this_incoming_email_as_spam=2E__The_ori?= =?unknown-8bit?q?ginal?= =?unknown-8bit?q?_message_has_been_attached_to_this_so_you_can_view_it_or_la?= =?unknown-8bit?q?bel?= =?unknown-8bit?q?_similar_future_email=2E__If_you_have_any_questions=2C_see?= =?unknown-8bit?q?_the_administrator_of_that_system_for_details=2E?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_preview=3A__We_can_safely_reenable_IRQs_if_they_we?= =?unknown-8bit?q?re_enabled_in_the_previous?= =?unknown-8bit?q?_context=2E_This_allows_to_access_user_memory_that_could_po?= =?unknown-8bit?q?tentially_trigger?= =?unknown-8bit?q?_a_page_fault=2E_Signed-off-by=3A_Cl=C3=A9ment_L=C3=A9ger_?= =?unknown-8bit?q?=3Ccleger=40rivosinc=2Ecom=3E_---_arch/riscv/kernel/traps?= =?unknown-8bit?q?=2Ec?= =?unknown-8bit?q?_=7C_8_++++++++_1_file_changed=2C_8_insertions=28+=29_?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-1=2E9_points=2C_5=2E0_re?= =?unknown-8bit?q?quired=29?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_pts_rule_name______________description?= =?unknown-8bit?q?_----_----------------------_------------------------------?= =?unknown-8bit?q?--------------------?= =?unknown-8bit?q?_-0=2E0_RCVD=5FIN=5FDNSWL=5FNONE_____RBL=3A_Sender_listed_a?= =?unknown-8bit?q?t_https=3A//www=2Ednswl=2Eorg/=2C_no?= =?unknown-8bit?q?_trust?= =?unknown-8bit?b?IFsyYTAwOjE0NTA6NDg2NDoyMDowOjA6MDo0MmYgbGlzdGVkIGluXQ==?= =?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?= =?unknown-8bit?q?_0=2E0_SPF=5FHELO=5FNONE__________SPF=3A_HELO_does_not_publ?= =?unknown-8bit?q?ish_an_SPF_Record?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?= =?unknown-8bit?q?alid_DKIM_or_DK_signature?= =?unknown-8bit?q?_0=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?= =?unknown-8bit?q?gnature=2C_not_necessarily_valid?= =?unknown-8bit?q?_-1=2E9_BAYES=5F00_______________BODY=3A_Bayes_spam_probabi?= =?unknown-8bit?q?lity_is_0_to_1=25?= =?unknown-8bit?q?_=5Bscore=3A_0=2E0000=5D?= X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: <kvm-riscv.lists.infradead.org> List-Unsubscribe: <http://lists.infradead.org/mailman/options/kvm-riscv>, <mailto:kvm-riscv-request@lists.infradead.org?subject=unsubscribe> List-Archive: <http://lists.infradead.org/pipermail/kvm-riscv/> List-Post: <mailto:kvm-riscv@lists.infradead.org> List-Help: <mailto:kvm-riscv-request@lists.infradead.org?subject=help> List-Subscribe: <http://lists.infradead.org/mailman/listinfo/kvm-riscv>, <mailto:kvm-riscv-request@lists.infradead.org?subject=subscribe> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kvm-riscv" <kvm-riscv-bounces@lists.infradead.org> Errors-To: kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org |
Series |
riscv: add SBI FWFT misaligned exception delegation support
|
expand
|
diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c index 55d9f3450398..3eecc2addc41 100644 --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c @@ -206,6 +206,11 @@ enum misaligned_access_type { static void do_trap_misaligned(struct pt_regs *regs, enum misaligned_access_type type) { irqentry_state_t state = irqentry_enter(regs); + bool enable_irqs = !regs_irqs_disabled(regs); + + /* Enable interrupts if they were enabled in the interrupted context. */ + if (enable_irqs) + local_irq_enable(); if (type == MISALIGNED_LOAD) { if (handle_misaligned_load(regs)) @@ -217,6 +222,9 @@ static void do_trap_misaligned(struct pt_regs *regs, enum misaligned_access_type "Oops - store (or AMO) address misaligned"); } + if (enable_irqs) + local_irq_disable(); + irqentry_exit(regs, state); }
We can safely reenable IRQs if they were enabled in the previous context. This allows to access user memory that could potentially trigger a page fault. Signed-off-by: Clément Léger <cleger@rivosinc.com> --- arch/riscv/kernel/traps.c | 8 ++++++++ 1 file changed, 8 insertions(+)