| Message ID | 20250317170625.1142870-12-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=pcOPMxTD;
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=FIMICZKJ;
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 4ZGhPh4tHsz1yG1
for <incoming@patchwork.ozlabs.org>; Tue, 18 Mar 2025 04:13:12 +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=pcOPMxTDESDDYE
90eIL3gkU8SYae99uax4zBfoxW7V3RhN4lSv11o0YxO2KiAMpzGgr4JPFIoOPOUHTPaq754XpW2Fo
KPnfaZvQXV8XoVP2Hoq2+IZWq5FbWZcWfaKdkT1sZs3RPE/5pcbOX6Pv5ZFhK3bfpDy/WghWiT9Vp
RkNOM43H+tscUyinB3yUrc6r+xoUNy1zILifyIUv3zzzJzd+yET2IJKM0Jzm5cjZpFuIsbN8zkFhA
Z22XDcXESEREgcoO7JA5PuX3bx4tc6L3zdX0Gbj6aAuuR3E3chD8hLyDArra6oqEXej34TBEJBrrx
vIepRH0FjuGggGfJtRTA==;
Received: from localhost ([::1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux))
id 1tuE1Z-00000003VCt-2G1W;
Mon, 17 Mar 2025 17:13:13 +0000
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c])
by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux))
id 1tuDwq-00000003TW1-1xjA
for kvm-riscv@lists.infradead.org;
Mon, 17 Mar 2025 17:08:22 +0000
Received: by mail-wm1-x32c.google.com with SMTP id
5b1f17b1804b1-4393dc02b78so15080135e9.3
for <kvm-riscv@lists.infradead.org>;
Mon, 17 Mar 2025 10:08:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1742231299;
x=1742836099; 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=FIMICZKJ8UUIIQ5NAmeV84+1xIiECkOb9RPCS+u+UB0GQ7UzVdyWFdMsaTlGQ6SXds
942oKskxCKT8UUTsKZv6a0QTp75Z5k+YeKFaubKBc6ZP4gXjv+fu/cwcejRwt+RGLUhD
tZNfwvylWtatjNvongD3B0Kw8G3HwBocB9+Qu3dRO25OOXWrR7zHq+4fTdKAXeJ5d4Dp
hWm4M5FI24c/vJCUGtuvVToBoz64ABHJUKz9Ndh2hxPgfXrM0KZIDCcV8bAV0T9d7fKN
uknyeihFhbdWZBN1WP+G13sEh62tejn/QWAIpqUVZosXKunS7FNUeWaEUVHFTbhLBhJJ
TrFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1742231299; x=1742836099;
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=igWy4aDLdgRe3dKd5xNoQ6N+OMzKXRC4J3WhD27yavcZy+f9iPaVJw020pPZA1AAgm
W6oAUWzIsJghyyylsRrEbPGmrDqbYaylJnVzmDh0VSTkk9UVv0EUedUUBMHcz11MRB5C
Hfrk8jHzaHzn3uy5UFEPH7nFgCUFCjuudTbll/30AMkU8d46C/JWvZ9Xpho+KMn2aSmi
9l7Zdhez5jfRtpdElwQqgiR/sNId4atyqs2IIorVWyCEynpWoKzKJx5nzhR/yre9BY1t
sa0oCWA2NGydBetgDB1rivayyFKhV5uzbO+9j5FKy29UoL8SUOnVdMbtjRSLkT3V8+Rc
512Q==
X-Forwarded-Encrypted: i=1;
AJvYcCXR+YFHFKKaRWXJ0kku8NLxcp7XfrhEniAw3yobPfvkEUQ8DagL5wFfo9IU6Zvi0C05oEZXhn5zYVs=@lists.infradead.org
X-Gm-Message-State: AOJu0YxUEtyLxDxQysXNPoVxkWnrTqYJtdZslFn5WM3DMNwDfbT0kGWq
kOHvydM6Wb+RhgVg5wMTucV6tr4TMzu+YkzMLNdq8Lvz9d7xqDFT91F5dC9ApCE=
X-Gm-Gg: ASbGncvKq3s4fePw/JGAQCmqYm+Zcn7gRM4xLndJvfOZMpK0rKkxMakBypt6WRyFMO4
7VWKXIX4NsZATQ2p/tvjv08Z0fSu0E2ULhJBGdi6nYunu77oPLLKrkOeEOowcW9yciVIDMaHMDL
DzP3E9bNlH3yYfz2RxaB/Jaz0TX1X4CfEFtE/0VL/7LctGU5DCsolzzAcg6X1GD8C/+4aSvj4nB
B1ftxIIxDVUtrzSR5gNet+fefX6X1jXuMPnBWZTHV+CuTWMrpjHo183z84t9n1HzMHC3mkKAFC8
8zRBNVNRG17hydoz/dC0fGO0grXgQhQnvwGowsHNY7uh9A==
X-Google-Smtp-Source:
AGHT+IF/jPZgtuKO9F2UOB0NNJAFXUmhCJVLus67Lul9R3bvXGZReu7Tw2V0Z3eVtQhps9kA5NlJfg==
X-Received: by 2002:a05:600c:4451:b0:43c:fa24:8721 with SMTP id
5b1f17b1804b1-43d1ec8a44cmr134590325e9.17.1742231299101;
Mon, 17 Mar 2025 10:08:19 -0700 (PDT)
Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-43d23cddb2asm96014505e9.39.2025.03.17.10.08.18
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Mon, 17 Mar 2025 10:08:18 -0700 (PDT)
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>,
Andrew Jones <ajones@ventanamicro.com>
Subject: [PATCH v4 11/18] riscv: misaligned: enable IRQs while handling
misaligned accesses
Date: Mon, 17 Mar 2025 18:06:17 +0100
Message-ID: <20250317170625.1142870-12-cleger@rivosinc.com>
X-Mailer: git-send-email 2.47.2
In-Reply-To: <20250317170625.1142870-1-cleger@rivosinc.com>
References: <20250317170625.1142870-1-cleger@rivosinc.com>
MIME-Version: 1.0
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20250317_100820_499688_B01A771F
X-CRM114-Status: GOOD ( 10.03 )
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?IFsyYTAwOjE0NTA6NDg2NDoyMDowOjA6MDozMmMgbGlzdGVkIGluXQ==?=
=?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?=
=?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?=
=?unknown-8bit?q?record?=
=?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=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?=
=?unknown-8bit?q?gnature=2C_not_necessarily_valid?=
=?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?=
=?unknown-8bit?q?alid_DKIM_or_DK_signature?=
=?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(+)