From patchwork Sun Mar 17 13:02:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912905 Return-Path: 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=O+eiftQT; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=fuZgOpo5; 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=opensbi-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 4TyJ7Y2hRKz1yX0 for ; Mon, 18 Mar 2024 00:03:04 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Mf09nAAjy1cycCp/cpWfe0hPo8MhJquO/k5Hj4zLt1A=; b=O+eiftQTiaiqaG RuZQKw+PXXCPrxccSBYmf+TcKmkTyjDsKXv6JFjczA+Smhdy05mRWqql6c6PSC23S2Iz2jUbIzQoK G2Jlce4WUJ9RVfGiYXyrUHw5qkPgEU/CcCaf9qrSfJqArl7bYZ26YXVIM3t7MIUKOtqK3twX1tsqP z1KdFzqVsLFy7ksAmsvUJAIWgRFZZsRiyzpDRm1/B5P6w7bxs3z8hl1WevZ1hNGm8p2dmln1J8i/+ vk+epwOwGH0ytwNT6vNLnru1gmHIvSjwfOXftGOtBKV5JvrrAGWm74L32O3xPCoEGfbUqRAGMZvR6 Zh7fZHt/F5TcIq4ThWCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAA-00000005E3U-0180; Sun, 17 Mar 2024 13:02:54 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqA4-00000005E1p-3gZ9 for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:02:50 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3c1e992f060so2125076b6e.0 for ; Sun, 17 Mar 2024 06:02:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680566; x=1711285366; 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=CZJ3gKxQ97r4pe3sfIjIgQUxHh/PmtqrlxwxtSru6es=; b=fuZgOpo5ojeB/A01DWlJyFVtRKRVON34f+FFGbhIhqa/3cc+r8j84UX9CVkBqtncqP NNv+3xEkG9sPhHTVyP2gAcPv7/c4wAqPzurRMhOFIEKynn4wEh+V/wMwzUu3O1HNtCvH UuETc1u2CjzdkZmvZgGP87U+gM+iLHgIl7F/gQjjuYP3+T783ur/XF3NpnkMwnY6U2ML uRoi+CSe5/JIipmNnXllgwIiwaq7m3Yt0gyQT+d5h9saEVdI5uW8AGQ5PVaSFkkMpRey d+RMUQHz1l0w/32yaDWozHN6dsUfrhCbu0yOp0wnOrVMsHtcHM/H+yYgCdrP6Mu/Xzf/ 0vwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680566; x=1711285366; 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=CZJ3gKxQ97r4pe3sfIjIgQUxHh/PmtqrlxwxtSru6es=; b=gxD/MSKM4dj99ce7UZ5LG3IcpZHeCjlpgfIKAQkat9TfpxrD69R+Pj4ZrZra+n7x3p 6hubdyO1finxmC5BTmXYnxEskot6STRZVNkEfK6GPEqSO6xNDVic10/ayXlmwYCHryiO eB/RBJ+j1MDQqhKoB0ALk7QcCwNGomzlW69ZPhP6DL1hrdJrfmOtTc84T57o5PeMzWAY S3AX6mYJNNrDJiFtfT7A80NS9DIaFs6Zk3czAeayZ0ld13XZzKaX5+tZh4UK29SlRuzG Dru2zh/mDgvzyR8mOs52mrJOyyFMTcMhZ7g5ew22Gd6mf5uCUNJZDzxdW68GfiMGkIxa FOWg== X-Forwarded-Encrypted: i=1; AJvYcCWQo3a32xgvemniGM9rVDirCj3RUy8PKgFaioAsaPiMyqY6LUxy1Ue3eV1ExZFyIO9UB6/D/s5v4NI18j/3fDuz8I4XPrWZ9iOGsDQ= X-Gm-Message-State: AOJu0Yw3cUN5v6br9a2Du4S3BCuBbHPfDBvkpvjVpviGMhX7DFrnkVjC wYpgy8TsdV7idlnegzMkJN2UhZ45hMMJZEokzrWp44AzM5f7fktwC6K/r99rVtA= X-Google-Smtp-Source: AGHT+IHJ+zLwoErmfNIo6Whky+roT1MWnm62KNk3/lTlkOw7704N5WmYSvpJ8rmo2XGXqNAHBY+psQ== X-Received: by 2002:a05:6808:2211:b0:3c3:6571:3775 with SMTP id bd17-20020a056808221100b003c365713775mr10890952oib.19.1710680565816; Sun, 17 Mar 2024 06:02:45 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.02.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:02:45 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 01/10] lib: sbi: Remove epc from struct sbi_trap_info Date: Sun, 17 Mar 2024 18:32:22 +0530 Message-Id: <20240317130231.1705888-2-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060248_948710_CCD0420B X-CRM114-Status: GOOD ( 12.57 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Samuel Holland In the only places this value is used, it duplicates mepc from struct sbi_trap_regs. Signed-off-by: Samuel Holland Reviewed-by: Anup Patel --- include/sbi/sbi_trap.h | 16 ++++++ lib/sbi/sbi_ecall_legacy.c | 4 ---- lib/sbi/sbi [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:22a listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Samuel Holland In the only places this value is used, it duplicates mepc from struct sbi_trap_regs. Signed-off-by: Samuel Holland Reviewed-by: Anup Patel --- include/sbi/sbi_trap.h | 16 ++++++---------- lib/sbi/sbi_ecall_legacy.c | 4 ---- lib/sbi/sbi_expected_trap.S | 4 ---- lib/sbi/sbi_illegal_insn.c | 2 -- lib/sbi/sbi_trap.c | 5 ++--- lib/sbi/sbi_trap_ldst.c | 4 ---- 6 files changed, 8 insertions(+), 27 deletions(-) diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index 2727bdb..3757694 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -87,20 +87,18 @@ /** Last member index in sbi_trap_regs */ #define SBI_TRAP_REGS_last 35 -/** Index of epc member in sbi_trap_info */ -#define SBI_TRAP_INFO_epc 0 /** Index of cause member in sbi_trap_info */ -#define SBI_TRAP_INFO_cause 1 +#define SBI_TRAP_INFO_cause 0 /** Index of tval member in sbi_trap_info */ -#define SBI_TRAP_INFO_tval 2 +#define SBI_TRAP_INFO_tval 1 /** Index of tval2 member in sbi_trap_info */ -#define SBI_TRAP_INFO_tval2 3 +#define SBI_TRAP_INFO_tval2 2 /** Index of tinst member in sbi_trap_info */ -#define SBI_TRAP_INFO_tinst 4 +#define SBI_TRAP_INFO_tinst 3 /** Index of gva member in sbi_trap_info */ -#define SBI_TRAP_INFO_gva 5 +#define SBI_TRAP_INFO_gva 4 /** Last member index in sbi_trap_info */ -#define SBI_TRAP_INFO_last 6 +#define SBI_TRAP_INFO_last 5 /* clang-format on */ @@ -194,8 +192,6 @@ struct sbi_trap_regs { /** Representation of trap details */ struct sbi_trap_info { - /** epc Trap program counter */ - unsigned long epc; /** cause Trap exception cause */ unsigned long cause; /** tval Trap value */ diff --git a/lib/sbi/sbi_ecall_legacy.c b/lib/sbi/sbi_ecall_legacy.c index 14913c9..9a1ae1e 100644 --- a/lib/sbi/sbi_ecall_legacy.c +++ b/lib/sbi/sbi_ecall_legacy.c @@ -74,7 +74,6 @@ static int sbi_ecall_legacy_handler(unsigned long extid, unsigned long funcid, &hmask, &trap)) { ret = sbi_ipi_send_smode(hmask, 0); } else { - trap.epc = regs->mepc; sbi_trap_redirect(regs, &trap); out->skip_regs_update = true; } @@ -86,7 +85,6 @@ static int sbi_ecall_legacy_handler(unsigned long extid, unsigned long funcid, SBI_TLB_FENCE_I, source_hart); ret = sbi_tlb_request(hmask, 0, &tlb_info); } else { - trap.epc = regs->mepc; sbi_trap_redirect(regs, &trap); out->skip_regs_update = true; } @@ -98,7 +96,6 @@ static int sbi_ecall_legacy_handler(unsigned long extid, unsigned long funcid, SBI_TLB_SFENCE_VMA, source_hart); ret = sbi_tlb_request(hmask, 0, &tlb_info); } else { - trap.epc = regs->mepc; sbi_trap_redirect(regs, &trap); out->skip_regs_update = true; } @@ -112,7 +109,6 @@ static int sbi_ecall_legacy_handler(unsigned long extid, unsigned long funcid, source_hart); ret = sbi_tlb_request(hmask, 0, &tlb_info); } else { - trap.epc = regs->mepc; sbi_trap_redirect(regs, &trap); out->skip_regs_update = true; } diff --git a/lib/sbi/sbi_expected_trap.S b/lib/sbi/sbi_expected_trap.S index 1f2d6b9..99dede5 100644 --- a/lib/sbi/sbi_expected_trap.S +++ b/lib/sbi/sbi_expected_trap.S @@ -23,8 +23,6 @@ .global __sbi_expected_trap __sbi_expected_trap: /* Without H-extension so, MTVAL2 and MTINST CSRs and GVA not available */ - csrr a4, CSR_MEPC - REG_S a4, SBI_TRAP_INFO_OFFSET(epc)(a3) csrr a4, CSR_MCAUSE REG_S a4, SBI_TRAP_INFO_OFFSET(cause)(a3) csrr a4, CSR_MTVAL @@ -41,8 +39,6 @@ __sbi_expected_trap: .global __sbi_expected_trap_hext __sbi_expected_trap_hext: /* With H-extension so, MTVAL2 and MTINST CSRs and GVA available */ - csrr a4, CSR_MEPC - REG_S a4, SBI_TRAP_INFO_OFFSET(epc)(a3) csrr a4, CSR_MCAUSE REG_S a4, SBI_TRAP_INFO_OFFSET(cause)(a3) csrr a4, CSR_MTVAL diff --git a/lib/sbi/sbi_illegal_insn.c b/lib/sbi/sbi_illegal_insn.c index 2be4757..dd0b3c1 100644 --- a/lib/sbi/sbi_illegal_insn.c +++ b/lib/sbi/sbi_illegal_insn.c @@ -25,7 +25,6 @@ static int truly_illegal_insn(ulong insn, struct sbi_trap_regs *regs) { struct sbi_trap_info trap; - trap.epc = regs->mepc; trap.cause = CAUSE_ILLEGAL_INSTRUCTION; trap.tval = insn; trap.tval2 = 0; @@ -156,7 +155,6 @@ int sbi_illegal_insn_handler(ulong insn, struct sbi_trap_regs *regs) if (unlikely((insn & 3) != 3)) { insn = sbi_get_insn(regs->mepc, &uptrap); if (uptrap.cause) { - uptrap.epc = regs->mepc; return sbi_trap_redirect(regs, &uptrap); } if ((insn & 3) != 3) diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index c665013..c9db73f 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -140,7 +140,7 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, if (next_virt) { /* Update VS-mode exception info */ csr_write(CSR_VSTVAL, trap->tval); - csr_write(CSR_VSEPC, trap->epc); + csr_write(CSR_VSEPC, regs->mepc); csr_write(CSR_VSCAUSE, trap->cause); /* Set MEPC to VS-mode exception vector base */ @@ -171,7 +171,7 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, } else { /* Update S-mode exception info */ csr_write(CSR_STVAL, trap->tval); - csr_write(CSR_SEPC, trap->epc); + csr_write(CSR_SEPC, regs->mepc); csr_write(CSR_SCAUSE, trap->cause); /* Set MEPC to S-mode exception vector base */ @@ -286,7 +286,6 @@ struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) return regs; } /* Original trap_info */ - trap.epc = regs->mepc; trap.cause = mcause; trap.tval = mtval; trap.tval2 = mtval2; diff --git a/lib/sbi/sbi_trap_ldst.c b/lib/sbi/sbi_trap_ldst.c index d864ad1..5a0537b 100644 --- a/lib/sbi/sbi_trap_ldst.c +++ b/lib/sbi/sbi_trap_ldst.c @@ -70,7 +70,6 @@ static int sbi_trap_emulate_load(struct sbi_trap_regs *regs, */ insn = sbi_get_insn(regs->mepc, &uptrap); if (uptrap.cause) { - uptrap.epc = regs->mepc; return sbi_trap_redirect(regs, &uptrap); } insn_len = INSN_LEN(insn); @@ -193,7 +192,6 @@ static int sbi_trap_emulate_store(struct sbi_trap_regs *regs, */ insn = sbi_get_insn(regs->mepc, &uptrap); if (uptrap.cause) { - uptrap.epc = regs->mepc; return sbi_trap_redirect(regs, &uptrap); } insn_len = INSN_LEN(insn); @@ -277,7 +275,6 @@ static int sbi_misaligned_ld_emulator(int rlen, union sbi_ldst_data *out_val, out_val->data_bytes[i] = sbi_load_u8((void *)(orig_trap->tval + i), &uptrap); if (uptrap.cause) { - uptrap.epc = regs->mepc; uptrap.tinst = sbi_misaligned_tinst_fixup( orig_trap->tinst, uptrap.tinst, i); return sbi_trap_redirect(regs, &uptrap); @@ -304,7 +301,6 @@ static int sbi_misaligned_st_emulator(int wlen, union sbi_ldst_data in_val, sbi_store_u8((void *)(orig_trap->tval + i), in_val.data_bytes[i], &uptrap); if (uptrap.cause) { - uptrap.epc = regs->mepc; uptrap.tinst = sbi_misaligned_tinst_fixup( orig_trap->tinst, uptrap.tinst, i); return sbi_trap_redirect(regs, &uptrap); From patchwork Sun Mar 17 13:02:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912907 Return-Path: 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=wMzx4Lru; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=c5zH76FQ; 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=opensbi-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 4TyJ7Y49TZz23sC for ; Mon, 18 Mar 2024 00:03:04 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CJzRpl6N5sWjnCbMvSKqJQtFX+IYcBx7Hj67rTz9cP0=; b=wMzx4LruFQ9t1r 71JpEy1/OEcBvDPRg6A9QIYpThYNCsWsxpP8sKy0KqN+KFhGjCjI/fO3+6CSC3vVFVIFVENqaPfHL 2luCconn+A0a/77ayQl7lqvMBgSA40m2YN9GMSwP80f6BVXJW/zvaiYNBEK/iRjR5OIBzt2KlI0RX hwLKZVSrDEHPdnrjjNa2iGRsCG8mFXcEeXzcSxto5ZL8qEpqweS4BrTokmfv4A4C3MSzHsKjvCZT5 yfOcjf0BwfhzluoFhF2q2FPTVedCNwcNA7Rp2jmJlvdWlPizaTGrQCJLiew51v6AwPmMNa38XAfzI k/K2Xrg+x7NCJgBPkhng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAC-00000005E4V-1JIT; Sun, 17 Mar 2024 13:02:56 +0000 Received: from mail-oo1-xc32.google.com ([2607:f8b0:4864:20::c32]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqA7-00000005E2a-0dck for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:02:54 +0000 Received: by mail-oo1-xc32.google.com with SMTP id 006d021491bc7-5a4a14c52fcso303598eaf.1 for ; Sun, 17 Mar 2024 06:02:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680569; x=1711285369; 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=iLrSFgY9VXYzINWgHm0nlMeDcnPIpT4eDYoRFB0DZYs=; b=c5zH76FQVWnsu2+RVGeb384J+Xwwld9iMr9WjHkclEfhlGmJMZ+f7jk8jVM7R/hSH9 Nh2yDe+zF+7xX12r5zmOnxKcfu2jGzS0sOsy9BFI0CoxLolbP076VSLwl8RWH+AJnZLm q6MpnV1AImMo/8r9cqOT4V37bh/fGH97WcpTek2dB9+YPU/rRFjQVibI84TVdUR5ufYB S6zZMmAvEkys0+YfLr2P0NkUbLJKZW2swDlok6rJVQ/Xn0m2u1tyJ2zC/dq2ptzBg19w 1jzUs6i5HMN/k/yUDN9O48UiveGnJfixcoxh1UvTN488EhUhLT0MUL4U2YAz1wl5YoC5 GRZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680569; x=1711285369; 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=iLrSFgY9VXYzINWgHm0nlMeDcnPIpT4eDYoRFB0DZYs=; b=e9NwP1XjtZPedZyka9auxWi918G8R8RK9YTVmhZjXkevmvnNnNiy6EZve3SNs0wLVV MN2A4H0FlGFGXe4YW54UDFPl1mIgB0HfTNMnnrq50Hcaefz+uZfSujDIsxNrLXEe5s2h vT3hpHXg8UHvWSnWf/aZjWEcfsVEwEN9kx87c9pjeH+e0sW6aUY16SHLgu/2rjGbvKcc xrfIWvUPMjldF75c0g9pFAPy8/HX75JdPL3Cqb8j3uYvun5IRwOFdZzfFkABeIyNzjr5 5rYvuASZMdeqCq4gxt05JsYoVJwVZ0VGrMi/X5/Kc/96ghtqPo8dVKbBmF9Pc6wxctXr lQ2Q== X-Forwarded-Encrypted: i=1; AJvYcCVghVtiYHSXEqVl+Hlyjm2EtQqUoG7usDIbNns7wGCIQvEyrYxf7vHZVJPwYXGVQX02xSMS/m0qtkauv5xW8QjPUN3e1EWDcnu5QHo= X-Gm-Message-State: AOJu0Yy0Lp8/RHsyQ9ikc70EKIYJUKqycKQMjxW+e52YbFnanhyetbE+ 0EdJ4DE8HDj7QZxJgkaxsDHqRgLqiSknHs86WQIDBGK+aisoaEMxqt3oWKhnwi8= X-Google-Smtp-Source: AGHT+IHwdsVXlJYXj6MvMzd8UzvprMupypopb+Ej1Jd3bgZxvJQN/oU9ICix85LRocY7A+LWClqapA== X-Received: by 2002:a05:6808:118b:b0:3c2:3109:7574 with SMTP id j11-20020a056808118b00b003c231097574mr9139852oil.20.1710680569477; Sun, 17 Mar 2024 06:02:49 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.02.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:02:49 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 02/10] lib: sbi: Remove sbi_trap_exit() and related code Date: Sun, 17 Mar 2024 18:32:23 +0530 Message-Id: <20240317130231.1705888-3-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060251_223628_4E9162B7 X-CRM114-Status: GOOD ( 11.58 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Over the years, no uses of sbi_trap_exit() have been found so remove it and also remove related code from fw_base.S and sbi_scratch.h. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- firmware/fw_base.S | 11 [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:c32 listed in] [list.dnswl.org] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Over the years, no uses of sbi_trap_exit() have been found so remove it and also remove related code from fw_base.S and sbi_scratch.h. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- firmware/fw_base.S | 11 ----------- include/sbi/sbi_scratch.h | 15 +++------------ include/sbi/sbi_trap.h | 2 -- lib/sbi/sbi_trap.c | 19 ------------------- 4 files changed, 3 insertions(+), 44 deletions(-) diff --git a/firmware/fw_base.S b/firmware/fw_base.S index 126b067..c404d8b 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -298,9 +298,6 @@ _scratch_init: /* Store hartid-to-scratch function address in scratch space */ lla a4, _hartid_to_scratch REG_S a4, SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET(tp) - /* Store trap-exit function address in scratch space */ - lla a4, _trap_exit - REG_S a4, SBI_SCRATCH_TRAP_EXIT_OFFSET(tp) /* Clear tmp0 in scratch space */ REG_S zero, SBI_SCRATCH_TMP0_OFFSET(tp) /* Store firmware options in scratch space */ @@ -453,10 +450,6 @@ _start_warm: srli a5, a5, ('H' - 'A') andi a5, a5, 0x1 beq a5, zero, _skip_trap_handler_rv32_hyp - /* Override trap exit for H-extension */ - csrr a5, CSR_MSCRATCH - lla a4, _trap_exit_rv32_hyp - REG_S a4, SBI_SCRATCH_TRAP_EXIT_OFFSET(a5) lla a4, _trap_handler_rv32_hyp _skip_trap_handler_rv32_hyp: #endif @@ -695,7 +688,6 @@ memcmp: .section .entry, "ax", %progbits .align 3 .globl _trap_handler - .globl _trap_exit _trap_handler: TRAP_SAVE_AND_SETUP_SP_T0 @@ -705,7 +697,6 @@ _trap_handler: TRAP_CALL_C_ROUTINE -_trap_exit: TRAP_RESTORE_GENERAL_REGS_EXCEPT_A0_T0 TRAP_RESTORE_MEPC_MSTATUS 0 @@ -718,7 +709,6 @@ _trap_exit: .section .entry, "ax", %progbits .align 3 .globl _trap_handler_rv32_hyp - .globl _trap_exit_rv32_hyp _trap_handler_rv32_hyp: TRAP_SAVE_AND_SETUP_SP_T0 @@ -728,7 +718,6 @@ _trap_handler_rv32_hyp: TRAP_CALL_C_ROUTINE -_trap_exit_rv32_hyp: TRAP_RESTORE_GENERAL_REGS_EXCEPT_A0_T0 TRAP_RESTORE_MEPC_MSTATUS 1 diff --git a/include/sbi/sbi_scratch.h b/include/sbi/sbi_scratch.h index e6a33ba..55b937f 100644 --- a/include/sbi/sbi_scratch.h +++ b/include/sbi/sbi_scratch.h @@ -36,14 +36,12 @@ #define SBI_SCRATCH_PLATFORM_ADDR_OFFSET (9 * __SIZEOF_POINTER__) /** Offset of hartid_to_scratch member in sbi_scratch */ #define SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET (10 * __SIZEOF_POINTER__) -/** Offset of trap_exit member in sbi_scratch */ -#define SBI_SCRATCH_TRAP_EXIT_OFFSET (11 * __SIZEOF_POINTER__) /** Offset of tmp0 member in sbi_scratch */ -#define SBI_SCRATCH_TMP0_OFFSET (12 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_TMP0_OFFSET (11 * __SIZEOF_POINTER__) /** Offset of options member in sbi_scratch */ -#define SBI_SCRATCH_OPTIONS_OFFSET (13 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_OPTIONS_OFFSET (12 * __SIZEOF_POINTER__) /** Offset of extra space in sbi_scratch */ -#define SBI_SCRATCH_EXTRA_SPACE_OFFSET (14 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_EXTRA_SPACE_OFFSET (13 * __SIZEOF_POINTER__) /** Maximum size of sbi_scratch (4KB) */ #define SBI_SCRATCH_SIZE (0x1000) @@ -77,8 +75,6 @@ struct sbi_scratch { unsigned long platform_addr; /** Address of HART ID to sbi_scratch conversion function */ unsigned long hartid_to_scratch; - /** Address of trap exit function */ - unsigned long trap_exit; /** Temporary storage */ unsigned long tmp0; /** Options for OpenSBI library */ @@ -129,11 +125,6 @@ _Static_assert( == SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET, "struct sbi_scratch definition has changed, please redefine " "SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET"); -_Static_assert( - offsetof(struct sbi_scratch, trap_exit) - == SBI_SCRATCH_TRAP_EXIT_OFFSET, - "struct sbi_scratch definition has changed, please redefine " - "SBI_SCRATCH_TRAP_EXIT_OFFSET"); _Static_assert( offsetof(struct sbi_scratch, tmp0) == SBI_SCRATCH_TMP0_OFFSET, diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index 3757694..a6032ab 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -225,8 +225,6 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs); -void __noreturn sbi_trap_exit(const struct sbi_trap_regs *regs); - #endif #endif diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index c9db73f..b059c4b 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -334,22 +334,3 @@ trap_error: sbi_trap_error(msg, rc, mcause, mtval, mtval2, mtinst, regs); return regs; } - -typedef void (*trap_exit_t)(const struct sbi_trap_regs *regs); - -/** - * Exit trap/interrupt handling - * - * This function is called by non-firmware code to abruptly exit - * trap/interrupt handling and resume execution at context pointed - * by given register state. - * - * @param regs pointer to register state - */ -void __noreturn sbi_trap_exit(const struct sbi_trap_regs *regs) -{ - struct sbi_scratch *scratch = sbi_scratch_thishart_ptr(); - - ((trap_exit_t)scratch->trap_exit)(regs); - __builtin_unreachable(); -} From patchwork Sun Mar 17 13:02:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912918 Return-Path: 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=V9zfDmOI; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=KT5Nn/Ub; 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=opensbi-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 4TyKlY6BvJz1yWv for ; Mon, 18 Mar 2024 01:15:51 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mlvx0FhDKGjQvVoLXNJncMuFuqqoqYzlwqj/3Z2AOY0=; b=V9zfDmOIv/nT5B PTNop4qv8BL50yqkLGcRFiRQFtQ1KGmCiOlHccDumTE722f0nblMEdE9c8YIPkv0bHqgk7jLbqA1e tcA0fx4pNkhzkm9NS1+McMbh7PXcjJUTR0/8rApN1IURKuTdSju3O0OrQ5UzLjZ9hPyDHmqvZKngD oWRX0CyaxgHxodEYlGVN4AzIVGArlyeD5f93S4YeNOruoxCEHGi4eSEs92+H+qqlrWWJdYSjv0fEv s4e/fQ7mpGR7Cqhwb/R9LBLIjDwGZSwhoTc6ePCCbmRc9cBGn4suDLJm8WzpXBvZhxcJ85fJiYWKZ HwUCGqrYJ343xurq7EYw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlrIY-00000005NIi-01RV; Sun, 17 Mar 2024 14:15:38 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAE-00000005E4K-0Fqf for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:02:59 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-22187576d54so3009669fac.1 for ; Sun, 17 Mar 2024 06:02:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680575; x=1711285375; 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=tfIUvdptAUZSzpU2HRX1N1Nzd78oRBVZ0H0XSjMWEVw=; b=KT5Nn/UbXlQStbSql+cydpm5NH2fSsEPFkEYODejS9KSmB/qe/thjWPNxuJhBygr39 uJqeCtccUzDn2S5+HoWHdp8EOyh8QaRPFt6K7TkZeS4DqhB/BcFLgTHYmstaWYVKQlIL /bXvKlptS0ijm2+ds5vCsK2gA/tb/1yCfK85HXmR+Q5n6I4MLlqD/Q6i9yolSLunnBaz d09HzeJrJHKgYYGYyyrnBdltdjez5AXgPX+HmjkZWOIUNlPj8L/DM/ulSHx9MP1bn7mc yH1Ejz+7MW+uFz+fjTNjcpXRzaoqdT5owrxblLsSSHoo/yHXnq1ifAvLzr4F6BVn30m6 p2ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680575; x=1711285375; 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=tfIUvdptAUZSzpU2HRX1N1Nzd78oRBVZ0H0XSjMWEVw=; b=GU/saDGXjtxY5ZVP9/JCmfykVDa1eDFbwLaNRl1fA+89/47N4rvpJArDf2zlKKriNq m9ebxn7epTJ+QCrphBsMHDwn2mBC3uHyVNIBokoelwy6mk1ZApI25VE0z8Lnbfx6RNM2 jaLMMZrLfzwpw6lxtoIds7iTIR8FKKmEIQnWaFIQoVIL+9AzvyI7OBJW4rAf1Huc+zQR IK2o56Tn9SDTvqYh9v2unPGZQwVumFWpSZWrmNdXepgsvPrJ9IgqCpUZLClobo/KPv+w U0dzgVMXcMU1k68KJomix2afBleFz2+dzsgyjA6V9bmKOkK0v1vV8QunrGaigRcd4I2P wSgw== X-Forwarded-Encrypted: i=1; AJvYcCUuANlso1QASC4Ghx34NdFGxyFTrDYiro4g2HyBttkPlQpuqqiibNJbYXDxWkvOE3LA9aFrQEmV6r0LphaC0I29W2SNh+AKFe2Ygy4= X-Gm-Message-State: AOJu0Ywkp4FtNjpJkGyLgoqv4iyerBoqKibqWIGuRx1+Yp4ELWfn0r4e 7tPG7xru6hliGn1UljxbZz+kpV+jKXeqoHQX2mqZi3oXzqjloNNSmOOG9Wh+0G8= X-Google-Smtp-Source: AGHT+IGUntaFgal6pfprfSmhqNBwrpZuwnZVkOa3bZO8iv1bKNjBepw74pabURwi+QgRC2OZ3RdkKA== X-Received: by 2002:a05:6870:4723:b0:21f:d2a2:7ff4 with SMTP id b35-20020a056870472300b0021fd2a27ff4mr10642183oaq.17.1710680573244; Sun, 17 Mar 2024 06:02:53 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.02.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:02:52 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 03/10] include: sbi: Add trap_context pointer in struct sbi_scratch Date: Sun, 17 Mar 2024 18:32:24 +0530 Message-Id: <20240317130231.1705888-4-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060258_405529_9EA532DC X-CRM114-Status: UNSURE ( 9.93 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: To track nested traps, the struct sbi_scratch needs a pointer the current trap context so add trap_context pointer in struct sbi_context. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- firmware/fw_base.S | 3 ++- include [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:4860:4864:20:0:0:0:31 listed in] [list.dnswl.org] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org To track nested traps, the struct sbi_scratch needs a pointer the current trap context so add trap_context pointer in struct sbi_context. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- firmware/fw_base.S | 3 ++- include/sbi/sbi_scratch.h | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/firmware/fw_base.S b/firmware/fw_base.S index c404d8b..539fd1d 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -298,7 +298,8 @@ _scratch_init: /* Store hartid-to-scratch function address in scratch space */ lla a4, _hartid_to_scratch REG_S a4, SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET(tp) - /* Clear tmp0 in scratch space */ + /* Clear trap_context and tmp0 in scratch space */ + REG_S zero, SBI_SCRATCH_TRAP_CONTEXT_OFFSET(tp) REG_S zero, SBI_SCRATCH_TMP0_OFFSET(tp) /* Store firmware options in scratch space */ MOV_3R s0, a0, s1, a1, s2, a2 diff --git a/include/sbi/sbi_scratch.h b/include/sbi/sbi_scratch.h index 55b937f..12e6a98 100644 --- a/include/sbi/sbi_scratch.h +++ b/include/sbi/sbi_scratch.h @@ -36,12 +36,14 @@ #define SBI_SCRATCH_PLATFORM_ADDR_OFFSET (9 * __SIZEOF_POINTER__) /** Offset of hartid_to_scratch member in sbi_scratch */ #define SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET (10 * __SIZEOF_POINTER__) +/** Offset of trap_context member in sbi_scratch */ +#define SBI_SCRATCH_TRAP_CONTEXT_OFFSET (11 * __SIZEOF_POINTER__) /** Offset of tmp0 member in sbi_scratch */ -#define SBI_SCRATCH_TMP0_OFFSET (11 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_TMP0_OFFSET (12 * __SIZEOF_POINTER__) /** Offset of options member in sbi_scratch */ -#define SBI_SCRATCH_OPTIONS_OFFSET (12 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_OPTIONS_OFFSET (13 * __SIZEOF_POINTER__) /** Offset of extra space in sbi_scratch */ -#define SBI_SCRATCH_EXTRA_SPACE_OFFSET (13 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_EXTRA_SPACE_OFFSET (14 * __SIZEOF_POINTER__) /** Maximum size of sbi_scratch (4KB) */ #define SBI_SCRATCH_SIZE (0x1000) @@ -75,6 +77,8 @@ struct sbi_scratch { unsigned long platform_addr; /** Address of HART ID to sbi_scratch conversion function */ unsigned long hartid_to_scratch; + /** Address of current trap context */ + unsigned long trap_context; /** Temporary storage */ unsigned long tmp0; /** Options for OpenSBI library */ @@ -125,6 +129,11 @@ _Static_assert( == SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET, "struct sbi_scratch definition has changed, please redefine " "SBI_SCRATCH_HARTID_TO_SCRATCH_OFFSET"); +_Static_assert( + offsetof(struct sbi_scratch, trap_context) + == SBI_SCRATCH_TRAP_CONTEXT_OFFSET, + "struct sbi_scratch definition has changed, please redefine " + "SBI_SCRATCH_TRAP_CONTEXT_OFFSET"); _Static_assert( offsetof(struct sbi_scratch, tmp0) == SBI_SCRATCH_TMP0_OFFSET, From patchwork Sun Mar 17 13:02:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912911 Return-Path: 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=wR0KgoJf; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=desiato.20200630 header.b=KFym+XWc; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=MaLjXMWP; 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=opensbi-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 4TyJ7s4BN4z1yWy for ; Mon, 18 Mar 2024 00:03:21 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zzPj2QIuC/yL4kna7ZMgxRL/yJPbqSDchyMzTblL/64=; b=wR0KgoJfMTHJrC K5CgLciCC6Kon8opXb2IVOpgUSrvtE0FqzJIGyu2eILEU+LMvtt5mm3nZsKfNGWGJq888sfM2HNZR C7rVviQPQGC64XwGgWkF4VV+w29VICCqvVIfz75P2v0vOM7hVIDaBbsDLuJln4NP1dS6Xvg2mpikh E0oEuEcBljbGp4B+mFHe96I7MvXqStyKxPjMfPOYd6E8T7SjpaMfkQH0kpPzZRkH+8MXlVob9wp7P CqjyE4qeFjrye7vL7aj+RZMKnmdf4cI8ovssGxbw/Pw3ZZbIQtjRnagrmW1calbx/Qn7VLLchK1wF AY/HMkocw7jI5r+rk+OQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAR-00000005EE1-3njg; Sun, 17 Mar 2024 13:03:11 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAP-00000005EC4-0tt1 for opensbi@bombadil.infradead.org; Sun, 17 Mar 2024 13:03:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=uDfqr+JO95pHsoQCUZVeWvOOfF1rvVPHG7RklwfYELk=; b=KFym+XWc7MYKGAHeSvff88Z3bu ZPLOeDwb04oQ8m6nK2lRVs5hJb5pwhRt5xe6JLIIKxZmR/0jgNMvwXfk7H7jXjkzq9K/7uKG8nXQ6 hz9Q/OgjpP/iZ9OkHLhGjvzZ/QOKne7EivUUkg7P+TgSqNUZYFzMIlV2McXJDkYZbIhP/TEbl/4CP Co0wYGo6Lak3fcMvHZVdPhdHV2iNrfR8C4ebyBeBpqQoqmMSyJetrxWUbzemZNjphXV3u2IjNndNP 8ViYwnSHs1F61v2VITHxKfYQnEvJivx7iiSA4GQefEDUx8MXt3M1uS9g04NrEPu32SZPxdEIb/HjA NlgJAjHg==; Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by desiato.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAG-0000000C37A-2swr for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:05 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3c36ecdb8cdso1511366b6e.1 for ; Sun, 17 Mar 2024 06:02:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680577; x=1711285377; 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=uDfqr+JO95pHsoQCUZVeWvOOfF1rvVPHG7RklwfYELk=; b=MaLjXMWPLkrzMsz2gS9ffVmbL+YnyOTysMmciG6kp4aNQdIb4/7MUSqIXg//pKggM1 CU3f+wyiO9ImP1s49AZSFgraBvJLdCJFGwTEKLRa6f/f//sGyElCP0GeB2ExL/JLNwUb yDYgQtMkl4Bo/9qUMovJxdQPWFC9vxic3+jqiGvfhHvhKTQqsPGPKTHxgRVl4UKn4WlK TiEOvh1DN1DKydl4kRzNFMXgsxeB7RujTad9kC6OMjD1PbHppqtJ6G4R4M5GD+EFBdY0 IHpj7LQo0fRiFg+ZB5dpVquIvtLEFZvtIdfcyeaLkV/f0nmu/9jKpQyxKSbQI/bXb9T8 qeVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680577; x=1711285377; 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=uDfqr+JO95pHsoQCUZVeWvOOfF1rvVPHG7RklwfYELk=; b=K8rYj0ShfIfHLG29kzPuUP/Pl5+Q6HkMIH59Gy7ro/vRS2QEFw95XoaTVYrGzjfI6r EGzQ6gGg8DDp36RfIgnhXnvB6s2rOqOMcXoeoQzJyA+CDelRZ/gWelCpIcbLsG1i2Nuj EG0vScA5RNjUvLqYN1DdLUhELGjCwWUoIbN5nVq9Wkuxa64O3CuqsASMPNwLiOfi6Sw5 3R20GWToRgPMg8HTv23CP8sC1j1z8DEfvKLnY5QlDXNfMtiFsT6L4A0w1/jiQTeyPxwF msmyRiR9ydfHehxAKFQ6MtpIpZuQEvuQCj08sb9+4/E5Arv8rBfmioezhQrWnb/iN9Fl NwNA== X-Forwarded-Encrypted: i=1; AJvYcCXmXeKQQkmEIkFrSVL/YyMK4Pg1+9LCNrL9CwXXm4Le2rJsLCiqn63P1yOSw/VioWftvKOSrxGl26Q2/7fu1mOyWUWpHuPyZqZKPw8= X-Gm-Message-State: AOJu0YwzoSYHAb7iguwOSWjN55bzz7v2L2afQpSJqoLrOUlDNHr7xpli /In3yQLcn7xbah2hamb3EJeoo2huXNfDgQI7UA6hAVX6KhqSgc4wi3Vc4mdp51c= X-Google-Smtp-Source: AGHT+IEReS9kLxqnE2kpLAZDgFUrcwrW27gmlmFDcwKRNTzyzKsHFRiZimYT+GSwQt/ixD8+GK/oFQ== X-Received: by 2002:a05:6808:6549:b0:3c3:8430:3306 with SMTP id fn9-20020a056808654900b003c384303306mr2533956oib.40.1710680576941; Sun, 17 Mar 2024 06:02:56 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.02.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:02:56 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 04/10] lib: sbi: Introduce trap context Date: Sun, 17 Mar 2024 18:32:25 +0530 Message-Id: <20240317130231.1705888-5-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_130302_028734_2AED9FE6 X-CRM114-Status: GOOD ( 15.41 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "desiato.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Club the struct sbi_trap_regs and struct sbi_trap_info a new struct sbi_trap_context (aka trap context) which must be saved by low-level trap handler before calling sbi_trap_handler(). To track nested traps, the struct sbi_scratch points to the current trap context and the trap context has pointer to pervious context of previous trap. Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:22a listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Club the struct sbi_trap_regs and struct sbi_trap_info a new struct sbi_trap_context (aka trap context) which must be saved by low-level trap handler before calling sbi_trap_handler(). To track nested traps, the struct sbi_scratch points to the current trap context and the trap context has pointer to pervious context of previous trap. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- firmware/fw_base.S | 62 ++++++++++++++++++++++++++++++++++-------- include/sbi/sbi_trap.h | 29 +++++++++++++++++++- lib/sbi/sbi_trap.c | 58 +++++++++++++++++---------------------- 3 files changed, 103 insertions(+), 46 deletions(-) diff --git a/firmware/fw_base.S b/firmware/fw_base.S index 539fd1d..6290322 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -446,14 +446,12 @@ _start_warm: /* Setup trap handler */ lla a4, _trap_handler -#if __riscv_xlen == 32 csrr a5, CSR_MISA srli a5, a5, ('H' - 'A') andi a5, a5, 0x1 - beq a5, zero, _skip_trap_handler_rv32_hyp - lla a4, _trap_handler_rv32_hyp -_skip_trap_handler_rv32_hyp: -#endif + beq a5, zero, _skip_trap_handler_hyp + lla a4, _trap_handler_hyp +_skip_trap_handler_hyp: csrw CSR_MTVEC, a4 /* Initialize SBI runtime */ @@ -564,10 +562,10 @@ memcmp: xor t0, tp, t0 /* Save original SP on exception stack */ - REG_S sp, (SBI_TRAP_REGS_OFFSET(sp) - SBI_TRAP_REGS_SIZE)(t0) + REG_S sp, (SBI_TRAP_REGS_OFFSET(sp) - SBI_TRAP_CONTEXT_SIZE)(t0) - /* Set SP to exception stack and make room for trap registers */ - add sp, t0, -(SBI_TRAP_REGS_SIZE) + /* Set SP to exception stack and make room for trap context */ + add sp, t0, -(SBI_TRAP_CONTEXT_SIZE) /* Restore T0 from scratch space */ REG_L t0, SBI_SCRATCH_TMP0_OFFSET(tp) @@ -627,6 +625,32 @@ memcmp: REG_S t6, SBI_TRAP_REGS_OFFSET(t6)(sp) .endm +.macro TRAP_SAVE_INFO have_mstatush have_h_extension + csrr t0, CSR_MCAUSE + REG_S t0, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(cause))(sp) + csrr t0, CSR_MTVAL + REG_S t0, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(tval))(sp) +.if \have_h_extension + csrr t0, CSR_MTVAL2 + REG_S t0, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(tval2))(sp) + csrr t0, CSR_MTINST + REG_S t0, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(tinst))(sp) + .if \have_mstatush + csrr t0, CSR_MSTATUSH + srli t0, t0, MSTATUSH_GVA_SHIFT + .else + csrr t0, CSR_MSTATUS + srli t0, t0, MSTATUS_GVA_SHIFT + .endif + and t0, t0, 0x1 +.else + REG_S zero, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(tval2))(sp) + REG_S zero, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(tinst))(sp) + li t0, 0 +.endif + REG_S t0, (SBI_TRAP_REGS_SIZE + SBI_TRAP_INFO_OFFSET(gva))(sp) +.endm + .macro TRAP_CALL_C_ROUTINE /* Call C routine */ add a0, sp, zero @@ -696,6 +720,8 @@ _trap_handler: TRAP_SAVE_GENERAL_REGS_EXCEPT_SP_T0 + TRAP_SAVE_INFO 0 0 + TRAP_CALL_C_ROUTINE TRAP_RESTORE_GENERAL_REGS_EXCEPT_A0_T0 @@ -706,27 +732,39 @@ _trap_handler: mret -#if __riscv_xlen == 32 .section .entry, "ax", %progbits .align 3 - .globl _trap_handler_rv32_hyp -_trap_handler_rv32_hyp: + .globl _trap_handler_hyp +_trap_handler_hyp: TRAP_SAVE_AND_SETUP_SP_T0 +#if __riscv_xlen == 32 TRAP_SAVE_MEPC_MSTATUS 1 +#else + TRAP_SAVE_MEPC_MSTATUS 0 +#endif TRAP_SAVE_GENERAL_REGS_EXCEPT_SP_T0 +#if __riscv_xlen == 32 + TRAP_SAVE_INFO 1 1 +#else + TRAP_SAVE_INFO 0 1 +#endif + TRAP_CALL_C_ROUTINE TRAP_RESTORE_GENERAL_REGS_EXCEPT_A0_T0 +#if __riscv_xlen == 32 TRAP_RESTORE_MEPC_MSTATUS 1 +#else + TRAP_RESTORE_MEPC_MSTATUS 0 +#endif TRAP_RESTORE_A0_T0 mret -#endif .section .entry, "ax", %progbits .align 3 diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index a6032ab..f7c170e 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -112,9 +112,15 @@ /** Size (in bytes) of sbi_trap_info */ #define SBI_TRAP_INFO_SIZE SBI_TRAP_INFO_OFFSET(last) +/** Size (in bytes) of sbi_trap_context */ +#define SBI_TRAP_CONTEXT_SIZE (SBI_TRAP_REGS_SIZE + \ + SBI_TRAP_INFO_SIZE + \ + __SIZEOF_POINTER__) + #ifndef __ASSEMBLER__ #include +#include /** Representation of register state at time of trap/interrupt */ struct sbi_trap_regs { @@ -204,6 +210,16 @@ struct sbi_trap_info { unsigned long gva; }; +/** Representation of trap context saved on stack */ +struct sbi_trap_context { + /** Register state */ + struct sbi_trap_regs regs; + /** Trap details */ + struct sbi_trap_info trap; + /** Pointer to previous trap context */ + struct sbi_trap_context *prev_context; +}; + static inline unsigned long sbi_regs_gva(const struct sbi_trap_regs *regs) { /* @@ -223,7 +239,18 @@ static inline unsigned long sbi_regs_gva(const struct sbi_trap_regs *regs) int sbi_trap_redirect(struct sbi_trap_regs *regs, const struct sbi_trap_info *trap); -struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs); +static inline struct sbi_trap_context *sbi_trap_get_context(struct sbi_scratch *scratch) +{ + return (scratch) ? (void *)scratch->trap_context : NULL; +} + +static inline void sbi_trap_set_context(struct sbi_scratch *scratch, + struct sbi_trap_context *tcntx) +{ + scratch->trap_context = (unsigned long)tcntx; +} + +struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx); #endif diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index b059c4b..4dbda06 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -24,18 +24,18 @@ #include static void __noreturn sbi_trap_error(const char *msg, int rc, - ulong mcause, ulong mtval, ulong mtval2, - ulong mtinst, struct sbi_trap_regs *regs) + const struct sbi_trap_info *trap, + const struct sbi_trap_regs *regs) { u32 hartid = current_hartid(); sbi_printf("%s: hart%d: %s (error %d)\n", __func__, hartid, msg, rc); sbi_printf("%s: hart%d: mcause=0x%" PRILX " mtval=0x%" PRILX "\n", - __func__, hartid, mcause, mtval); + __func__, hartid, trap->cause, trap->tval); if (misa_extension('H')) { sbi_printf("%s: hart%d: mtval2=0x%" PRILX " mtinst=0x%" PRILX "\n", - __func__, hartid, mtval2, mtinst); + __func__, hartid, trap->tval2, trap->tinst); } sbi_printf("%s: hart%d: mepc=0x%" PRILX " mstatus=0x%" PRILX "\n", __func__, hartid, regs->mepc, regs->mstatus); @@ -258,20 +258,20 @@ static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause) * 6. Stack pointer (SP) is setup for current HART * 7. Interrupts are disabled in MSTATUS CSR * - * @param regs pointer to register state + * @param tcntx pointer to trap context */ -struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) +struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) { int rc = SBI_ENOTSUPP; const char *msg = "trap handler failed"; - ulong mcause = csr_read(CSR_MCAUSE); - ulong mtval = csr_read(CSR_MTVAL), mtval2 = 0, mtinst = 0; - struct sbi_trap_info trap; + struct sbi_scratch *scratch = sbi_scratch_thishart_ptr(); + const struct sbi_trap_info *trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; + ulong mcause = tcntx->trap.cause; - if (misa_extension('H')) { - mtval2 = csr_read(CSR_MTVAL2); - mtinst = csr_read(CSR_MTINST); - } + /* Update trap context pointer */ + tcntx->prev_context = sbi_trap_get_context(scratch); + sbi_trap_set_context(scratch, tcntx); if (mcause & (1UL << (__riscv_xlen - 1))) { if (sbi_hart_has_extension(sbi_scratch_thishart_ptr(), @@ -279,32 +279,23 @@ struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) rc = sbi_trap_aia_irq(regs, mcause); else rc = sbi_trap_nonaia_irq(regs, mcause); - if (rc) { - msg = "unhandled local interrupt"; - goto trap_error; - } - return regs; + msg = "unhandled local interrupt"; + goto trap_done; } - /* Original trap_info */ - trap.cause = mcause; - trap.tval = mtval; - trap.tval2 = mtval2; - trap.tinst = mtinst; - trap.gva = sbi_regs_gva(regs); switch (mcause) { case CAUSE_ILLEGAL_INSTRUCTION: - rc = sbi_illegal_insn_handler(mtval, regs); + rc = sbi_illegal_insn_handler(tcntx->trap.tval, regs); msg = "illegal instruction handler failed"; break; case CAUSE_MISALIGNED_LOAD: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_MISALIGNED_LOAD); - rc = sbi_misaligned_load_handler(regs, &trap); + rc = sbi_misaligned_load_handler(regs, trap); msg = "misaligned load handler failed"; break; case CAUSE_MISALIGNED_STORE: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_MISALIGNED_STORE); - rc = sbi_misaligned_store_handler(regs, &trap); + rc = sbi_misaligned_store_handler(regs, trap); msg = "misaligned store handler failed"; break; case CAUSE_SUPERVISOR_ECALL: @@ -314,23 +305,24 @@ struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) break; case CAUSE_LOAD_ACCESS: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_LOAD); - rc = sbi_load_access_handler(regs, &trap); + rc = sbi_load_access_handler(regs, trap); msg = "load fault handler failed"; break; case CAUSE_STORE_ACCESS: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_STORE); - rc = sbi_store_access_handler(regs, &trap); + rc = sbi_store_access_handler(regs, trap); msg = "store fault handler failed"; break; default: /* If the trap came from S or U mode, redirect it there */ msg = "trap redirect failed"; - rc = sbi_trap_redirect(regs, &trap); + rc = sbi_trap_redirect(regs, trap); break; } -trap_error: +trap_done: if (rc) - sbi_trap_error(msg, rc, mcause, mtval, mtval2, mtinst, regs); - return regs; + sbi_trap_error(msg, rc, trap, regs); + sbi_trap_set_context(scratch, tcntx->prev_context); + return tcntx; } From patchwork Sun Mar 17 13:02:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912908 Return-Path: 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=RqBNjOiY; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=ltNnC9+i; 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=opensbi-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 4TyJ7k0Dlyz1yWy for ; Mon, 18 Mar 2024 00:03:14 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lOL29h8HRNzPmiVpOI0ANrpFYeyFCphHtnbAxyDhaMg=; b=RqBNjOiYJaERkA C5iW/Zw6YWr6N4bFUS964uaFXAhuvyji9qGi+89SFsZFKlcoV5HU9kAbcpEoyT2XQXNhefav5c/ZA rS40qApXbR2ECeWoTXbl1o8jOwb+AbufyQH2h20RxTUehIEhnXXb5uDvlne8CI9p/7Yj4tuENqM/L FsZEy7AF6VvTnJevmR9GKDPeafv/CaLzMy+YSRzt/eiFF44oNw/V0bRcgMaabLJ+nho0TCtC+FZp/ U1FoXDBpEhpqbee6vxZIu8AUl5hCJHL0OoR/a9x1zt+HMEmLVCqfb/sPchx/0O+vYHESOqv1R84hI Y7qQQlYt+Tv1nCPL1nzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAL-00000005EAG-3VX5; Sun, 17 Mar 2024 13:03:05 +0000 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAI-00000005E87-2Pnu for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:04 +0000 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-3c37e1d013dso945309b6e.2 for ; Sun, 17 Mar 2024 06:03:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680581; x=1711285381; 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=fQinYbmrw22PokYIwVaVE/DUy8Qygd1WFYVyyxbwC7A=; b=ltNnC9+ibXsZx5ybXvqOV1NgjgGtQVc/mkCVv3LOk1zn/9Mj6b/VDqOTh2Qy3o1mqv u4apSVXNmPo4+OZjJQKY76DRmHKPdGXSmir8m0/3lhgJM8YR5+sd05sIYCFMjrrt4m5a hxfS4K6mQoTcIL9gCicK67vrw1/hNklfkD/5ftBSNiwq1Cfjs5Js9VDUNAIfIqmTxeps /mso4R1XUo0KlTGVmBtZJ6gXY/mqFVxb/K2Cvowp+CUBmR3IzL2aKKtRuu9Ww73Pjp0t 99zDSv4r9N636v701AtlSenkAxhwu+BhWYKAqraMgFEprRXY3E9qJ1DCH7J6UbSBEQW+ Mojw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680581; x=1711285381; 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=fQinYbmrw22PokYIwVaVE/DUy8Qygd1WFYVyyxbwC7A=; b=VF2SdLBEwMNJvVl1ktw2cGHW/48JgtGMmcbdogMebk5h8BTGwQVK25UjT536nc6yPk U119hoeRLE/Ynhz4U0dtwivOF0WQY23tu1RDIFZaHyF+EHCGv7Ex66UQUdpjfM8ATn3V uGrH0ari6ixyJDgSTb2eJPnql8FoaXYofb8Pcl1ZHXJy3Qyt515jBGAxbOOukxw8x2wW tv/ZCmVtPRnhUAt89kuXreIOcPIiXKwk2043RYVVs4+kDbK0bdKmaHYWIj3rXyQeZl6z gmwRsNGd3MkzsPCsvqaqHMdg9K1/hFNELwzQx7QeYpyK0vFBDAi9V7x7fJQMgOfIAfn5 lXcQ== X-Forwarded-Encrypted: i=1; AJvYcCUoSb9/jwspdpmLEWO/CfFafbufGq2xL1CecNgpbqycafTFaF5i0Hm5Yl+Cv3NDPGbEK/4+l5ajVg22hP+Atb5eq4hswYya2M7XLV0= X-Gm-Message-State: AOJu0YziJFbghGIn9B3C5hFfbvGKiQUdV9dwYDkfui070SYsGrIRh/ko xyoH50nsymRYcTL90+MwdpUe7OP4xykD8F0HF5xk1sbH+OYYvivFBhBOSMaieE0= X-Google-Smtp-Source: AGHT+IHHHJiWq8awFJBXc5u8rjQSFYi4lOxoZ/vXR6QZveTQTgqN+0fq0NGha62cJbkONM6fLCjlEQ== X-Received: by 2002:a05:6808:2e96:b0:3c3:52a0:ff57 with SMTP id gt22-20020a0568082e9600b003c352a0ff57mr12673944oib.3.1710680580926; Sun, 17 Mar 2024 06:03:00 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.02.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:00 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 05/10] lib: sbi: Simplify parameters of misaligned and access fault handlers Date: Sun, 17 Mar 2024 18:32:26 +0530 Message-Id: <20240317130231.1705888-6-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060302_768035_59B0C948 X-CRM114-Status: GOOD ( 11.78 ) X-Spam-Score: -0.2 (/) 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__The_struct_sbi=5Ftrap=5Fcontext_alread?= =?unknown-8bit?q?y_has_the_information_needed?= =?unknown-8bit?q?_by_misaligned_load/store_and_access_fault_load/store_handl?= =?unknown-8bit?q?ers_so_directly?= =?unknown-8bit?q?_pass_struct_sbi=5Ftrap=5Fcontext_pointer_to_these_function?= =?unknown-8bit?q?s=2E_Signed-off-by=3A_Anup?= =?unknown-8bit?q?_Patel_=3Capatel=40ventanamicro=2Ecom=3E_Reviewed-by=3A_Sam?= =?unknown-8bit?q?uel_Holland_=3Csamuel=2Eholland=40sifive=2Ecom=3E?= =?unknown-8bit?q?_Tested-by=3A_Samuel_Holland_=3Csamuel=2Eholland=40sifive?= =?unknown-8bit?q?=2Ecom=3E_Reviewed-by=3A_Cl=C3=A9ment?= =?unknown-8bit?b?IEzDqWdlciA8Y2xlZ2VyQHIgWy4uLl0g?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-0=2E2_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?IFsyNjA3OmY4YjA6NDg2NDoyMDowOjA6MDoyMzEgbGlzdGVkIGluXQ==?= =?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=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= =?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?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from_author=27s?= =?unknown-8bit?q?_domain?= =?unknown-8bit?q?_-0=2E0_T=5FSCC=5FBODY=5FTEXT=5FLINE___No_description_avail?= =?unknown-8bit?q?able=2E?= X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The struct sbi_trap_context already has the information needed by misaligned load/store and access fault load/store handlers so directly pass struct sbi_trap_context pointer to these functions. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland Reviewed-by: Clément Léger --- include/sbi/sbi_trap_ldst.h | 12 +++---- lib/sbi/sbi_trap.c | 8 ++--- lib/sbi/sbi_trap_ldst.c | 67 ++++++++++++++++++------------------- 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/include/sbi/sbi_trap_ldst.h b/include/sbi/sbi_trap_ldst.h index 9cab4e4..8aee316 100644 --- a/include/sbi/sbi_trap_ldst.h +++ b/include/sbi/sbi_trap_ldst.h @@ -20,16 +20,12 @@ union sbi_ldst_data { ulong data_ulong; }; -int sbi_misaligned_load_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); +int sbi_misaligned_load_handler(struct sbi_trap_context *tcntx); -int sbi_misaligned_store_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); +int sbi_misaligned_store_handler(struct sbi_trap_context *tcntx); -int sbi_load_access_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); +int sbi_load_access_handler(struct sbi_trap_context *tcntx); -int sbi_store_access_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); +int sbi_store_access_handler(struct sbi_trap_context *tcntx); #endif diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 4dbda06..a2afb0a 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -290,12 +290,12 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) break; case CAUSE_MISALIGNED_LOAD: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_MISALIGNED_LOAD); - rc = sbi_misaligned_load_handler(regs, trap); + rc = sbi_misaligned_load_handler(tcntx); msg = "misaligned load handler failed"; break; case CAUSE_MISALIGNED_STORE: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_MISALIGNED_STORE); - rc = sbi_misaligned_store_handler(regs, trap); + rc = sbi_misaligned_store_handler(tcntx); msg = "misaligned store handler failed"; break; case CAUSE_SUPERVISOR_ECALL: @@ -305,12 +305,12 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) break; case CAUSE_LOAD_ACCESS: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_LOAD); - rc = sbi_load_access_handler(regs, trap); + rc = sbi_load_access_handler(tcntx); msg = "load fault handler failed"; break; case CAUSE_STORE_ACCESS: sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ACCESS_STORE); - rc = sbi_store_access_handler(regs, trap); + rc = sbi_store_access_handler(tcntx); msg = "store fault handler failed"; break; default: diff --git a/lib/sbi/sbi_trap_ldst.c b/lib/sbi/sbi_trap_ldst.c index 5a0537b..f9c0241 100644 --- a/lib/sbi/sbi_trap_ldst.c +++ b/lib/sbi/sbi_trap_ldst.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -23,8 +22,7 @@ * @return rlen=success, 0=success w/o regs modification, or negative error */ typedef int (*sbi_trap_ld_emulator)(int rlen, union sbi_ldst_data *out_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); + struct sbi_trap_context *tcntx); /** * Store emulator callback: @@ -32,8 +30,7 @@ typedef int (*sbi_trap_ld_emulator)(int rlen, union sbi_ldst_data *out_val, * @return wlen=success, 0=success w/o regs modification, or negative error */ typedef int (*sbi_trap_st_emulator)(int wlen, union sbi_ldst_data in_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap); + struct sbi_trap_context *tcntx); static ulong sbi_misaligned_tinst_fixup(ulong orig_tinst, ulong new_tinst, ulong addr_offset) @@ -47,10 +44,11 @@ static ulong sbi_misaligned_tinst_fixup(ulong orig_tinst, ulong new_tinst, return orig_tinst | (addr_offset << SH_RS1); } -static int sbi_trap_emulate_load(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap, +static int sbi_trap_emulate_load(struct sbi_trap_context *tcntx, sbi_trap_ld_emulator emu) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; ulong insn, insn_len; union sbi_ldst_data val = { 0 }; struct sbi_trap_info uptrap; @@ -150,8 +148,7 @@ static int sbi_trap_emulate_load(struct sbi_trap_regs *regs, return sbi_trap_redirect(regs, orig_trap); } - rc = emu(len, &val, regs, orig_trap); - + rc = emu(len, &val, tcntx); if (rc <= 0) return rc; @@ -169,10 +166,11 @@ static int sbi_trap_emulate_load(struct sbi_trap_regs *regs, return 0; } -static int sbi_trap_emulate_store(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap, +static int sbi_trap_emulate_store(struct sbi_trap_context *tcntx, sbi_trap_st_emulator emu) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; ulong insn, insn_len; union sbi_ldst_data val; struct sbi_trap_info uptrap; @@ -254,8 +252,7 @@ static int sbi_trap_emulate_store(struct sbi_trap_regs *regs, return sbi_trap_redirect(regs, orig_trap); } - rc = emu(len, val, regs, orig_trap); - + rc = emu(len, val, tcntx); if (rc <= 0) return rc; @@ -265,9 +262,10 @@ static int sbi_trap_emulate_store(struct sbi_trap_regs *regs, } static int sbi_misaligned_ld_emulator(int rlen, union sbi_ldst_data *out_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) + struct sbi_trap_context *tcntx) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; struct sbi_trap_info uptrap; int i; @@ -283,17 +281,16 @@ static int sbi_misaligned_ld_emulator(int rlen, union sbi_ldst_data *out_val, return rlen; } -int sbi_misaligned_load_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) +int sbi_misaligned_load_handler(struct sbi_trap_context *tcntx) { - return sbi_trap_emulate_load(regs, orig_trap, - sbi_misaligned_ld_emulator); + return sbi_trap_emulate_load(tcntx, sbi_misaligned_ld_emulator); } static int sbi_misaligned_st_emulator(int wlen, union sbi_ldst_data in_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) + struct sbi_trap_context *tcntx) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; struct sbi_trap_info uptrap; int i; @@ -309,17 +306,17 @@ static int sbi_misaligned_st_emulator(int wlen, union sbi_ldst_data in_val, return wlen; } -int sbi_misaligned_store_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) +int sbi_misaligned_store_handler(struct sbi_trap_context *tcntx) { - return sbi_trap_emulate_store(regs, orig_trap, - sbi_misaligned_st_emulator); + return sbi_trap_emulate_store(tcntx, sbi_misaligned_st_emulator); } static int sbi_ld_access_emulator(int rlen, union sbi_ldst_data *out_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) + struct sbi_trap_context *tcntx) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; + /* If fault came from M mode, just fail */ if (((regs->mstatus & MSTATUS_MPP) >> MSTATUS_MPP_SHIFT) == PRV_M) return SBI_EINVAL; @@ -332,16 +329,17 @@ static int sbi_ld_access_emulator(int rlen, union sbi_ldst_data *out_val, return rlen; } -int sbi_load_access_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) +int sbi_load_access_handler(struct sbi_trap_context *tcntx) { - return sbi_trap_emulate_load(regs, orig_trap, sbi_ld_access_emulator); + return sbi_trap_emulate_load(tcntx, sbi_ld_access_emulator); } static int sbi_st_access_emulator(int wlen, union sbi_ldst_data in_val, - struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) + struct sbi_trap_context *tcntx) { + const struct sbi_trap_info *orig_trap = &tcntx->trap; + struct sbi_trap_regs *regs = &tcntx->regs; + /* If fault came from M mode, just fail */ if (((regs->mstatus & MSTATUS_MPP) >> MSTATUS_MPP_SHIFT) == PRV_M) return SBI_EINVAL; @@ -354,8 +352,7 @@ static int sbi_st_access_emulator(int wlen, union sbi_ldst_data in_val, return wlen; } -int sbi_store_access_handler(struct sbi_trap_regs *regs, - const struct sbi_trap_info *orig_trap) +int sbi_store_access_handler(struct sbi_trap_context *tcntx) { - return sbi_trap_emulate_store(regs, orig_trap, sbi_st_access_emulator); + return sbi_trap_emulate_store(tcntx, sbi_st_access_emulator); } From patchwork Sun Mar 17 13:02:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912909 Return-Path: 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=CtB2dxib; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=GfEvM2Hu; 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=opensbi-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 4TyJ7p5Dsyz1yWy for ; Mon, 18 Mar 2024 00:03:18 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=m4l4KKsuCw7g0rwWocDnsLM/KN5Zkh6wHXZQQDB9kUk=; b=CtB2dxibeVpZuz D+WCZnkiepOmYIJlytYKhW4FDk16h+R7UWxjgpUdwFMs8oOsIuK/VxjPLI0xMbzZM9sqHgj2uwvnw kZKKz9nqxcSSh2rWQAUz4UKbemyi0oqfX2yscfg/qyatReE9TywgyiYpqCMofiLFNhFaTZ3rMOEpL h6lPFoKiRJB50r9jvhghWXMSnq8BL2NnAVY+SfvE9TEHBm+m4UJI8DJazUbvnnIIhd3OyDGXPQ3hI rdzN8FQjjQd9ljzDxOzrqDHE72NMHQK9FrXepQs0sNTluCA+GrUtNHeUAArByNKr+HeKTYObPZUgA iSXGnJM+2s1jDVwDMOhQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAP-00000005ECG-3VYM; Sun, 17 Mar 2024 13:03:09 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAM-00000005EA2-0rNz for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:07 +0000 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-3c386c46068so131868b6e.2 for ; Sun, 17 Mar 2024 06:03:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680585; x=1711285385; 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=L77riuUvn5VdIbURALFyOPgSkm+TdlqEgtTznMmrU2E=; b=GfEvM2HuHOvqSXXiUfdThX/tu3vLOI5MvC8nBxbw4xVhkSUDZM/qcGxZUH1QNlnMgL rMQDAsy1KV8TrT1t/DZueijHF7JHRZJ/IOMADL6axaGLZGdn6hTJXPsRbLh0igD/GPMD p3UiPMlV4ns/PZuOFmmgpOko5LkBhNotBsUR9jl1hORVrEF+uq0vqNKG7iHUJgmwJEII V/Wa/HN5cZJYHVRucuGr6b8+v4iF9qAw+Wt43QVKSaZmyqKhZ612N8NoP2eUHHDjPmmt pQQnPJgs8zgSB/Bef0QRm8j3X8ud+BJifVw4gVDy+f2NQvT4LfnycDdlqfed35DXnRWV JEwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680585; x=1711285385; 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=L77riuUvn5VdIbURALFyOPgSkm+TdlqEgtTznMmrU2E=; b=QhjjzN7HJittYdp2XCobBkHpZ8iVloY8tncZvnyY9AGvcfafjKeN+vS7qt/gLWbcIC l49zHknbvqUYisn3t098I2XjKzuRP5uMiZLfflfqR0k6xxk8kJ177sQA9vmEOKHvcPyz EXYF0gTQ0+GXiqcxU8kdeNRHoq4d2fnF0/ygSV2ADv8dBpY2s+NYPM5Y36QKACW2ILCr zjbssZPg3vnGDhB6pk98tDFysKo+MPUYeRxJ2AP4ZIJDbKe+t7mB0jQi5Etg10BpAXcf p9aFz0ciPxGCRBXyIt/e3MBZPFzvHNYC23akpmeFBr7p5g3wqyCi1nnXlfWDmP1Mj+Jb 8MAQ== X-Forwarded-Encrypted: i=1; AJvYcCWDIafprz6FO+M0zRFUKwIouhQeedgCoN566fzeXuQ48q6dZ6t8qdN+buTjT1RIu5wew3Qxeke0Y7C50BoR/+H+86TUC61/lGT96N4= X-Gm-Message-State: AOJu0YyTlgvFEbAaujXAZWgApdhu1pGnPs6z38xJJwUvEFTKwJCxtQDh 4hbbXEtaFq+U3UvRUj3dedODIdgnZHE5VDtN8SCFAMdoS+rlwXI+jJW6ECZUM+A= X-Google-Smtp-Source: AGHT+IG1yZIo9bvBg1xmMpMCcNhTrnNvZX3U3Q6LWuL4/M6+eliZ1dZPGqbxbayM4uEn+cnT/qzOrg== X-Received: by 2002:a05:6808:1284:b0:3c2:bedd:7148 with SMTP id a4-20020a056808128400b003c2bedd7148mr12710158oiw.10.1710680584642; Sun, 17 Mar 2024 06:03:04 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.03.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:04 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 06/10] lib: sbi: Simplify parameters of sbi_illegal_insn_handler() Date: Sun, 17 Mar 2024 18:32:27 +0530 Message-Id: <20240317130231.1705888-7-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060306_289992_3A5D3E84 X-CRM114-Status: GOOD ( 11.36 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The struct sbi_trap_context already has the information needed by sbi_illegal_insn_handler() so directly pass struct sbi_trap_context pointer to this function. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- include/sbi/sbi_illegal_insn.h | 4 [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:236 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The struct sbi_trap_context already has the information needed by sbi_illegal_insn_handler() so directly pass struct sbi_trap_context pointer to this function. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- include/sbi/sbi_illegal_insn.h | 4 ++-- lib/sbi/sbi_illegal_insn.c | 7 ++++--- lib/sbi/sbi_trap.c | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/sbi/sbi_illegal_insn.h b/include/sbi/sbi_illegal_insn.h index 0397935..7be72ac 100644 --- a/include/sbi/sbi_illegal_insn.h +++ b/include/sbi/sbi_illegal_insn.h @@ -12,8 +12,8 @@ #include -struct sbi_trap_regs; +struct sbi_trap_context; -int sbi_illegal_insn_handler(ulong insn, struct sbi_trap_regs *regs); +int sbi_illegal_insn_handler(struct sbi_trap_context *tcntx); #endif diff --git a/lib/sbi/sbi_illegal_insn.c b/lib/sbi/sbi_illegal_insn.c index dd0b3c1..ed6f111 100644 --- a/lib/sbi/sbi_illegal_insn.c +++ b/lib/sbi/sbi_illegal_insn.c @@ -136,8 +136,10 @@ static const illegal_insn_func illegal_insn_table[32] = { truly_illegal_insn /* 31 */ }; -int sbi_illegal_insn_handler(ulong insn, struct sbi_trap_regs *regs) +int sbi_illegal_insn_handler(struct sbi_trap_context *tcntx) { + struct sbi_trap_regs *regs = &tcntx->regs; + ulong insn = tcntx->trap.tval; struct sbi_trap_info uptrap; /* @@ -154,9 +156,8 @@ int sbi_illegal_insn_handler(ulong insn, struct sbi_trap_regs *regs) sbi_pmu_ctr_incr_fw(SBI_PMU_FW_ILLEGAL_INSN); if (unlikely((insn & 3) != 3)) { insn = sbi_get_insn(regs->mepc, &uptrap); - if (uptrap.cause) { + if (uptrap.cause) return sbi_trap_redirect(regs, &uptrap); - } if ((insn & 3) != 3) return truly_illegal_insn(insn, regs); } diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index a2afb0a..4e691df 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -285,7 +285,7 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) switch (mcause) { case CAUSE_ILLEGAL_INSTRUCTION: - rc = sbi_illegal_insn_handler(tcntx->trap.tval, regs); + rc = sbi_illegal_insn_handler(tcntx); msg = "illegal instruction handler failed"; break; case CAUSE_MISALIGNED_LOAD: From patchwork Sun Mar 17 13:02:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912910 Return-Path: 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=dOr+W+up; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=h/ckdxy4; 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=opensbi-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 4TyJ7t0zVsz1yX0 for ; Mon, 18 Mar 2024 00:03:22 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Sho0SJVCavOo41mMY84wXj8zuNfBILlQq6v2Is+8BGg=; b=dOr+W+upiWl6nw 1F3GvRBdXsM7b6OD35loVSOeQ0W6r8g+UAs2K/xzKnADzZzdSknYsAEkAdR3jESGTaRgcXgYYOatd wJVgsfPlE8APYF2T0LV0qRY5xVfJFNgdD7XFdfKdH6Q9kjsq6sc0zlUCpGX+stBVoRJ5f12MnK13Q p0zK6n2yf8woPzrkoL40BN84NN1ttd3XAiDM5hka5HSc0xuy/IwjYL0PuXH5uVMAXWbn2JeH3hNfk fjZH/OCB46O19zgRzGpaWqbAdG0OhTbuPfIKpD5UK8nXkPQaCJzQtpHW4OAMzDBRGUELZXF5PBiCr QoYWJEgP4XMKkU+gPVKQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAV-00000005EG2-0SIz; Sun, 17 Mar 2024 13:03:15 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAP-00000005ECI-2Mrn for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:11 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3c36f882372so1958174b6e.2 for ; Sun, 17 Mar 2024 06:03:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680589; x=1711285389; 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=ngY2gAGCEqnGaH05Auk4SahKfqcnbllqyhkXJkgIxss=; b=h/ckdxy4S5stRbhElyMJ1Rd1cTb1U1icQuzU3at5W8SjnWI00P35JtbukSNkVSt3GL WxBd4xWdH8TXzbxeLkLnQcGs2PZNkffgFl83bWjgdb2bY9KmJciwjdzoIktmP9VBPiGp mZaUZBbzD4K9b9M/qAKAbIS8aK+eg80VKw45AU8cegnAgUD+U8ndXA4EKg1zc2zSFGMr FVFbbmmJ6UJ4banQoLiY6MiUdHZbid4M2WeJ/TffYfZnoTb233Lvs4tgpID88ZKrsHRs KXhLF6VqzVHc1JVwrlJVZIKB3ft5m8jJePqjAgyFImKgdO+gk38LyjEoZHIw9wVu6Uz0 g+vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680589; x=1711285389; 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=ngY2gAGCEqnGaH05Auk4SahKfqcnbllqyhkXJkgIxss=; b=DGosEJz1R2uR1F74DJLKsCl9pFyactXcULXBFxNuBhz1AXmbUEuLiTiEoDf7lGTc2z +rcNSPTOLaUopZte3cJo9IoxtsmWd8SrVZ8a+GM4Nx1qrN/k45QQ9EkHcbUkNzZGNhnT Sf398yZtIzEuQijJs1yfBHncLLR2utFs6sftPoNRSUghHSVM09gou3lo5IJqEQJkgWwk sbNKVola+G9320wbKDhgpJiWTe3hWcW07IwN8H8IxHCrfKtIR74VNLZwPcevYvD+OFsN bibvggx/mfMHGkravIg3zxzkdnMm5aBCKH1OpBUtCBKzLk63ZGAfAdnfG78H8BEGeVor T/AA== X-Forwarded-Encrypted: i=1; AJvYcCX5f45B+wfY7WBj9RGjEXUG7HZdm93nLWrwvmI3fWaUQah8zOEOhdf2Gy3O3ZXR+YoysgThE7PGL62f3dh/cr/53/lI1/dHCpz9qfM= X-Gm-Message-State: AOJu0Yzx2ZcAEoEfgdkr9o/T6HCw80RKK41oHGcFd2w4f5cOOSFLsskA PKpJgNJ1CDupaGun601bEw1pzuUlpDd25flFmt0xkQ70lnjL/5VaErBarEsoN78= X-Google-Smtp-Source: AGHT+IFgpbpz8mssk2gYDwrZevApb5jEmVTGaxcfHucyCQeW4HFWbFY11kXuaWDGOW2CSg0iM2LThQ== X-Received: by 2002:a05:6808:159f:b0:3c3:85e4:49a7 with SMTP id t31-20020a056808159f00b003c385e449a7mr1003790oiw.11.1710680588592; Sun, 17 Mar 2024 06:03:08 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.03.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:08 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 07/10] lib: sbi: Remove regs paramter of sbi_irqchip_process() Date: Sun, 17 Mar 2024 18:32:28 +0530 Message-Id: <20240317130231.1705888-8-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060309_866205_FF33F2D1 X-CRM114-Status: GOOD ( 12.22 ) X-Spam-Score: -0.2 (/) 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__The_irqchip_handlers_will_typically_no?= =?unknown-8bit?q?t_need_pointer_to_trap?= =?unknown-8bit?q?_registers_so_remove_regs_parameter_of_sbi=5Firqchip=5Fproc?= =?unknown-8bit?q?ess=28=29=2E_Signed-off-by=3A?= =?unknown-8bit?q?_Anup_Patel_=3Capatel=40ventanamicro=2Ecom=3E_Reviewed-by?= =?unknown-8bit?q?=3A_Samuel_Holland_=3Csamuel=2Eholland=40sifive=2Ecom=3E?= =?unknown-8bit?q?_Tested-by=3A_Samuel_Holland_=3Csamuel=2Eholland=40sifive?= =?unknown-8bit?q?=2Ecom=3E_Reviewed-by=3A_Cl=C3=A9ment?= =?unknown-8bit?b?IEzDqWdlciA8Y2xlZ2VyQHIgWy4uLl0g?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-0=2E2_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?IFsyNjA3OmY4YjA6NDg2NDoyMDowOjA6MDoyMmEgbGlzdGVkIGluXQ==?= =?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=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= =?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?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from_author=27s?= =?unknown-8bit?q?_domain?= =?unknown-8bit?q?_-0=2E0_T=5FSCC=5FBODY=5FTEXT=5FLINE___No_description_avail?= =?unknown-8bit?q?able=2E?= X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The irqchip handlers will typically not need pointer to trap registers so remove regs parameter of sbi_irqchip_process(). Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland Reviewed-by: Clément Léger --- include/sbi/sbi_irqchip.h | 5 ++--- lib/sbi/sbi_irqchip.c | 10 +++++----- lib/sbi/sbi_trap.c | 4 ++-- lib/utils/irqchip/imsic.c | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/include/sbi/sbi_irqchip.h b/include/sbi/sbi_irqchip.h index 6acc6e3..0ed02eb 100644 --- a/include/sbi/sbi_irqchip.h +++ b/include/sbi/sbi_irqchip.h @@ -13,7 +13,6 @@ #include struct sbi_scratch; -struct sbi_trap_regs; /** * Set external interrupt handling function @@ -23,7 +22,7 @@ struct sbi_trap_regs; * * @param fn function pointer for handling external irqs */ -void sbi_irqchip_set_irqfn(int (*fn)(struct sbi_trap_regs *regs)); +void sbi_irqchip_set_irqfn(int (*fn)(void)); /** * Process external interrupts @@ -33,7 +32,7 @@ void sbi_irqchip_set_irqfn(int (*fn)(struct sbi_trap_regs *regs)); * * @param regs pointer for trap registers */ -int sbi_irqchip_process(struct sbi_trap_regs *regs); +int sbi_irqchip_process(void); /** Initialize interrupt controllers */ int sbi_irqchip_init(struct sbi_scratch *scratch, bool cold_boot); diff --git a/lib/sbi/sbi_irqchip.c b/lib/sbi/sbi_irqchip.c index 24128be..0ae604a 100644 --- a/lib/sbi/sbi_irqchip.c +++ b/lib/sbi/sbi_irqchip.c @@ -10,22 +10,22 @@ #include #include -static int default_irqfn(struct sbi_trap_regs *regs) +static int default_irqfn(void) { return SBI_ENODEV; } -static int (*ext_irqfn)(struct sbi_trap_regs *regs) = default_irqfn; +static int (*ext_irqfn)(void) = default_irqfn; -void sbi_irqchip_set_irqfn(int (*fn)(struct sbi_trap_regs *regs)) +void sbi_irqchip_set_irqfn(int (*fn)(void)) { if (fn) ext_irqfn = fn; } -int sbi_irqchip_process(struct sbi_trap_regs *regs) +int sbi_irqchip_process(void) { - return ext_irqfn(regs); + return ext_irqfn(); } int sbi_irqchip_init(struct sbi_scratch *scratch, bool cold_boot) diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 4e691df..72b1788 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -209,7 +209,7 @@ static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause) sbi_ipi_process(); break; case IRQ_M_EXT: - return sbi_irqchip_process(regs); + return sbi_irqchip_process(); default: return SBI_ENOENT; } @@ -232,7 +232,7 @@ static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause) sbi_ipi_process(); break; case IRQ_M_EXT: - rc = sbi_irqchip_process(regs); + rc = sbi_irqchip_process(); if (rc) return rc; break; diff --git a/lib/utils/irqchip/imsic.c b/lib/utils/irqchip/imsic.c index 36ef66c..f2a35c6 100644 --- a/lib/utils/irqchip/imsic.c +++ b/lib/utils/irqchip/imsic.c @@ -140,7 +140,7 @@ int imsic_get_target_file(u32 hartid) return imsic_get_hart_file(scratch); } -static int imsic_external_irqfn(struct sbi_trap_regs *regs) +static int imsic_external_irqfn(void) { ulong mirq; From patchwork Sun Mar 17 13:02:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912912 Return-Path: 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=10WYg3xu; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=Kuxsoh80; 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=opensbi-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 4TyJ7y2t4Qz1yWy for ; Mon, 18 Mar 2024 00:03:26 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tNgq1ZCQ/k4/9OHIiyCslou6oHDbtj8yKLVo4hBpzvM=; b=10WYg3xuS6Veu0 evntVw0u0/9OAIe4BETTo35RV7GLIvMxBSjWupsEVoKm66yJWyjWc3O/z5YIOrNwHVHhHGYDK/MKQ nxz+oioNh/WV6kDk2AetKJ8/BJhRtKueLSfV3b2/EsetKf9TuwuG8xdwECvYl4unDGqc4kQNpjf8v xtnWbZhUCMd6tmmLMrpG/7DYEs/5S6y3CFXewiaHFVXSk27Dxs9X8N20axZfdxx5sg0+diw/e7VZU TFgEirIQ8qUpJQZTdS5VoSS13MutjBhgg65OqFKgnRfGYc1X+lzig50wDmOONEipCfS6KuO9/OGPS pr2pAfJWrzDd8Csb7ugQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAX-00000005EHo-1lYg; Sun, 17 Mar 2024 13:03:17 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAT-00000005EEw-1Q4u for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:15 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3c1e992f060so2125355b6e.0 for ; Sun, 17 Mar 2024 06:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680592; x=1711285392; 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=zPAV/wLJEZ2ZM1AZLTlIJh3IHyVoHGGQPcbjcuiLa3M=; b=Kuxsoh808Umod3PZ61BGgdRJYXcfe5wR1fUyHn+DS+0cBd+TjVLIULjQKnzcybXwxY bI9JVdCPWZxayeF29KjotkyMyTfvkx/YZv95IewUPAssNH/CmDkeeAiMidge70y976YE KHbAO74Uc1deoO1ZS2Y05KjtWMRWbpC/u1g8/+ytK0fCdOY1smacbAj51wM1NJhnbdAy gkELt4udJeuf5u4Q8GG4Yrq9R6F30PENqkE46K9I7S8kxR7cawbEKmoV03XNHpMFmlJf MJMWPBULJOtYH5H5irJVkddHsmecgVMq/uxleIj6dTcPOIOoHlMQOrCHGVai5a3JvrXR II7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680592; x=1711285392; 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=zPAV/wLJEZ2ZM1AZLTlIJh3IHyVoHGGQPcbjcuiLa3M=; b=w/E62e09w1MKrpFMHbUC9nsZG0k+FleXiOTL8KjmlitIVyCaUWY32eRIYYiuzJlFkQ kU7JtBXsgxspc9kspwt76gjmILvK7znV//EXQT5urOdyYFV1r2F4ALne7KcXu4SkR4qt 9woceHLNeJ069TlTjuvS+mrstk5dO/jhpOuSKDlXKVVOCTQj1KFNx1C4+2zD/inkfxdJ 3ahApTYByD3zp7ERbaUkzUAZ8jnoefgMrDVa5FbN6tEsMb4vBEiQ3rnESFI2856mDGT7 G2ZB+ge/c9HDfcSU0PyyxI8/nGo7L03F4vy+rZGvVlEcz6+EPIiVKeBFe3RUVnQDDhUZ dIJw== X-Forwarded-Encrypted: i=1; AJvYcCXtXOheEjOgRrSooSHDcvNhndM5VL+4cmgKg8jNiWB4SbQ6auA1p63dV8aiGC3/mP9PtG1YCopRTBTPGu1hi3HB+uHsaxyMWMsiim4= X-Gm-Message-State: AOJu0YztPVxTTShusaaIFS3/GYFy+Xz4wKIIdUZ22rFzyCAzlUHDZp/Z 7GhKxdAo8eo4ZUBdOwDhavea1p5u+pdLkbaFnfrbYp8MDRD1lc4PKBy0Vl4U7J6dcd6TtIRc9vu hLRs= X-Google-Smtp-Source: AGHT+IHDe4zt1ppZZoGPuRib3AloUueiWqiyTbmCKxuyI8y9dkWfGzGRcUtNY1OK+XS33YdKYaeMbA== X-Received: by 2002:a05:6808:2182:b0:3c2:1439:3638 with SMTP id be2-20020a056808218200b003c214393638mr11469020oib.6.1710680592384; Sun, 17 Mar 2024 06:03:12 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:12 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 08/10] lib: sbi: Remove regs parameter from trap irq handling functions Date: Sun, 17 Mar 2024 18:32:29 +0530 Message-Id: <20240317130231.1705888-9-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060313_827839_05DD479B X-CRM114-Status: UNSURE ( 9.43 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The trap irq handling functions no longer require regs parameter so remove it. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- include/sbi/riscv_encoding.h | 2 + [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:22a listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The trap irq handling functions no longer require regs parameter so remove it. Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland --- include/sbi/riscv_encoding.h | 2 ++ lib/sbi/sbi_trap.c | 13 ++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h index 46bbeed..d914828 100644 --- a/include/sbi/riscv_encoding.h +++ b/include/sbi/riscv_encoding.h @@ -80,6 +80,8 @@ #define HSTATUS_GVA _UL(0x00000040) #define HSTATUS_VSBE _UL(0x00000020) +#define MCAUSE_IRQ_MASK (_UL(1) << (__riscv_xlen - 1)) + #define IRQ_S_SOFT 1 #define IRQ_VS_SOFT 2 #define IRQ_M_SOFT 3 diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 72b1788..2462763 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -198,10 +198,9 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, return 0; } -static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause) +static int sbi_trap_nonaia_irq(unsigned long irq) { - mcause &= ~(1UL << (__riscv_xlen - 1)); - switch (mcause) { + switch (irq) { case IRQ_M_TIMER: sbi_timer_process(); break; @@ -217,7 +216,7 @@ static int sbi_trap_nonaia_irq(struct sbi_trap_regs *regs, ulong mcause) return 0; } -static int sbi_trap_aia_irq(struct sbi_trap_regs *regs, ulong mcause) +static int sbi_trap_aia_irq(void) { int rc; unsigned long mtopi; @@ -273,12 +272,12 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) tcntx->prev_context = sbi_trap_get_context(scratch); sbi_trap_set_context(scratch, tcntx); - if (mcause & (1UL << (__riscv_xlen - 1))) { + if (mcause & MCAUSE_IRQ_MASK) { if (sbi_hart_has_extension(sbi_scratch_thishart_ptr(), SBI_HART_EXT_SMAIA)) - rc = sbi_trap_aia_irq(regs, mcause); + rc = sbi_trap_aia_irq(); else - rc = sbi_trap_nonaia_irq(regs, mcause); + rc = sbi_trap_nonaia_irq(mcause & ~MCAUSE_IRQ_MASK); msg = "unhandled local interrupt"; goto trap_done; } From patchwork Sun Mar 17 13:02:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912913 Return-Path: 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=UapYBDzN; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=YdVIw8Cx; 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=opensbi-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 4TyJ830VWMz1yWy for ; Mon, 18 Mar 2024 00:03:31 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9v23E/7hSckOfXum/p9W4Fj+FKVQuxS/KRXeQt7uNx4=; b=UapYBDzNne00N2 OZ/6v+dwG6tA0bd8Z9tQIbiHWBJvyVT/+w2YYS/VVp8/Nj8J5xpOQQOaA7wpiOJCVIbxWyzH0xhYT +OdeDDO1gdELl3zT8fQxzQ76SX6jZNcowkAaMhgGjA3cBOhsFoiINurJq6FINot8+n2zaltKoMMXU 4gGRPkUUsoEH6y4ClS5ElTRPuAlCrX+fRCevZIrNZ60TDwPlGNQ2Fm7zpngZt13ert/ea52RZDtj8 FsiGHtXy+gEqdVYM6VBtiDyu5MzmJ7OxeoCSUnPLMqwtXEguxv9jslFEmrpIDghjSftZQdxKBXqjW ZqeyvEz6HMW27vYCJQ7w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAb-00000005ELY-42v5; Sun, 17 Mar 2024 13:03:21 +0000 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAX-00000005EHS-3e8t for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:19 +0000 Received: by mail-oi1-x233.google.com with SMTP id 5614622812f47-3c1a2f7e1d2so2259841b6e.1 for ; Sun, 17 Mar 2024 06:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680596; x=1711285396; 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=HWLw7B21FOqTFfhPtAbM+5eAIEDpgI1r58v7mO5MFXc=; b=YdVIw8CxQC2s/3kd6ElV4uMJFYi58iImgVBfOC9JNTqz3zul5rSKOSYfOp838ICKd3 r2ewIFwPdUeshxBBde9daDI+VTwGOHqrP8QIZEN1DPruGogPE+4Wb3TvjBD9RYLCeT/N 84Ln+DLFl509o0D3rsm/n3Ig9fMKjXJ4q8PyKZIEE3Jv5mRpIUJ9Z+j5AlKnvqG8sVyE eGJo6FzthrjU+anaChu65syz10qkKYjDJ7IjiaJSyqglJu76Ofl46I7znI2Qi34wBdQ6 mY4VwcykRZhADT7+bEuUNAlXgOkZ0eBIm9zbZ/IIKdIQO7A/s2stXZjZwHN6eRdfx0dz TwxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680596; x=1711285396; 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=HWLw7B21FOqTFfhPtAbM+5eAIEDpgI1r58v7mO5MFXc=; b=G839W9dw2BkfK2wYBB3V72ar5bMODswTblpYdbQyNaLrFtACu7xBO9jpa6rJcqLSSJ xpRs+pkGCcCzx/LGZQg2la6uuyjRiZsMsWhysbY+wGUi3rPXZYJD21o8RkR6DEtmQl/O sMF8d6yQQf6reuFlf73alNtJtSiX4xTd58Rlhhv5pifsWwXev7vCEHBiPbB6csRVVGb7 N/xNXQnCutsD+X81tFb2P4XxvA7LbfOsqwfh2TBK+A3cUXRwWMctWSvF7rFg2JO25xzX 74+s4FAmvjA+35BvWeTdZOcOzO+z/BdgerjKDlDCP9/UbeV6vtLUGzBuzk9HR3B2ckDY pGzw== X-Forwarded-Encrypted: i=1; AJvYcCVf44pr/1FVuZv9r7bEcia1+YZXFMMEvj7C+PyoB1jaCoP5fTT/Uk3162cuWvxejZbOjtNfLTCsTqgEfydkn/mmoXhD+o+bFwH5ZDM= X-Gm-Message-State: AOJu0Yw+NpXvoFULPyDc8iXi0eF2pYF6G9Z5kppsi5Xs66s2TDeJBnXB xRZRCM13LQTFF7Fv9nJ+4zAGANOA462rSCcTMXHwm6RZSSqz2Jwq5KEvdv8vY7w= X-Google-Smtp-Source: AGHT+IFB/E71jCqh+hbp15gnl9xYjTE0h05TyKYIqy0s7pKK1nVCiDOIrivei1VkoVAFw2u2QMeVow== X-Received: by 2002:a05:6808:17a9:b0:3c3:7535:655b with SMTP id bg41-20020a05680817a900b003c37535655bmr8058397oib.56.1710680596336; Sun, 17 Mar 2024 06:03:16 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:15 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 09/10] lib: sbi: Pass trap context pointer to sbi_ecall_handler() Date: Sun, 17 Mar 2024 18:32:30 +0530 Message-Id: <20240317130231.1705888-10-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060318_049279_8EDE4675 X-CRM114-Status: GOOD ( 11.14 ) X-Spam-Score: -0.2 (/) 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__To_be_consistent_with_other_trap_handl?= =?unknown-8bit?q?ers=2C_pass_trap_context?= =?unknown-8bit?q?_pointer_to_sbi=5Fecall=5Fhandler=28=29=2E_Signed-off-by=3A?= =?unknown-8bit?q?_Anup_Patel_=3Capatel=40ventanamicro=2Ecom=3E?= =?unknown-8bit?q?_Reviewed-by=3A_Samuel_Holland_=3Csamuel=2Eholland=40sifive?= =?unknown-8bit?q?=2Ecom=3E_Tested-by=3A_Samuel?= =?unknown-8bit?q?_Holland_=3Csamuel=2Eholland=40sifive=2Ecom=3E_Reviewed-by?= =?unknown-8bit?q?=3A_Cl=C3=A9ment_L=C3=A9ger_=3Ccleger=40r?= =?unknown-8bit?b?IFsuLi5dIA==?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=28-0=2E2_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_SPF=5FHELO=5FNONE__________SPF=3A_HELO_does_not_publ?= =?unknown-8bit?q?ish_an_SPF_Record?= =?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?IFsyNjA3OmY4YjA6NDg2NDoyMDowOjA6MDoyMzMgbGlzdGVkIGluXQ==?= =?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= =?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?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from_author=27s?= =?unknown-8bit?q?_domain?= =?unknown-8bit?q?_-0=2E0_T=5FSCC=5FBODY=5FTEXT=5FLINE___No_description_avail?= =?unknown-8bit?q?able=2E?= X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, =?utf-8?b?Q2zDqW1lbnQgTMOpZ2Vy?= , Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org To be consistent with other trap handlers, pass trap context pointer to sbi_ecall_handler(). Signed-off-by: Anup Patel Reviewed-by: Samuel Holland Tested-by: Samuel Holland Reviewed-by: Clément Léger --- include/sbi/sbi_ecall.h | 4 ++-- lib/sbi/sbi_ecall.c | 3 ++- lib/sbi/sbi_trap.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/sbi/sbi_ecall.h b/include/sbi/sbi_ecall.h index 0bf42d1..0b35eff 100644 --- a/include/sbi/sbi_ecall.h +++ b/include/sbi/sbi_ecall.h @@ -18,7 +18,7 @@ #define SBI_OPENSBI_IMPID 1 struct sbi_trap_regs; -struct sbi_trap_info; +struct sbi_trap_context; struct sbi_ecall_return { /* Return flag to skip register update */ @@ -87,7 +87,7 @@ int sbi_ecall_register_extension(struct sbi_ecall_extension *ext); void sbi_ecall_unregister_extension(struct sbi_ecall_extension *ext); -int sbi_ecall_handler(struct sbi_trap_regs *regs); +int sbi_ecall_handler(struct sbi_trap_context *tcntx); int sbi_ecall_init(void); diff --git a/lib/sbi/sbi_ecall.c b/lib/sbi/sbi_ecall.c index 631c5dd..d4fc58c 100644 --- a/lib/sbi/sbi_ecall.c +++ b/lib/sbi/sbi_ecall.c @@ -95,9 +95,10 @@ void sbi_ecall_unregister_extension(struct sbi_ecall_extension *ext) sbi_list_del_init(&ext->head); } -int sbi_ecall_handler(struct sbi_trap_regs *regs) +int sbi_ecall_handler(struct sbi_trap_context *tcntx) { int ret = 0; + struct sbi_trap_regs *regs = &tcntx->regs; struct sbi_ecall_extension *ext; unsigned long extension_id = regs->a7; unsigned long func_id = regs->a6; diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 2462763..060cec6 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -299,7 +299,7 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) break; case CAUSE_SUPERVISOR_ECALL: case CAUSE_MACHINE_ECALL: - rc = sbi_ecall_handler(regs); + rc = sbi_ecall_handler(tcntx); msg = "ecall handler failed"; break; case CAUSE_LOAD_ACCESS: From patchwork Sun Mar 17 13:02:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1912914 Return-Path: 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=1uAeMxjv; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=hO4lR9bD; 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=opensbi-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 4TyJ884WRgz1yWy for ; Mon, 18 Mar 2024 00:03:36 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cNyIFg1blaOjZUWLB1L2qCG685AVacefzPDwtA4f7us=; b=1uAeMxjvt8IZhj P9+MB+PcUAtLcqPc1BXU5jSHX8Ef/r1J7Bk9nNzO251N+7zbuEfmrVZx2Dx4CNPpIGBNhnCHKjnyg rhnwM9xTdcNBNA/dVqAz2AtpLqliupqjEtM6pYxVsmFpqNFFjZLYJCUFKhzXTfvDiEIK7VqH2yEJP /iq3jJdnAOMWI/w5T1IeC1sG6TJ4f3AfZ9s850ID/CKBVY76R//xkWr3EdLdKtKw55W9Xbbl3pfGf 6SD18NwNqEhvnFp9bIWwunpbbTgRMaK0F+RptGmXs291FcEKNLEi9uuZJUmd0/RB3WuPQvXZkWhYx RMoKonuYcZ24T0YkNziQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAj-00000005ERO-0Uvj; Sun, 17 Mar 2024 13:03:29 +0000 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rlqAb-00000005EKG-1pnM for opensbi@lists.infradead.org; Sun, 17 Mar 2024 13:03:24 +0000 Received: by mail-oi1-x235.google.com with SMTP id 5614622812f47-3c1a2f7e1d2so2259876b6e.1 for ; Sun, 17 Mar 2024 06:03:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1710680600; x=1711285400; 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=GmRAg6pgI57wScyuj5ceDeshqiQQs1RbNI3jU7TaRhI=; b=hO4lR9bD54T7RJ3l5ozHGvT6Gb6BVzzIlzBobEM281UvzJGKuHYzMLClZbC6w3V3Tr n3cI0v+3oXfRCSBLKzil3W/iU9hh76cGbo6D4dYkWQqfU/zqTWLc7fQlgi9h8f50VYpe vzKGWMlR5Jsu2omQl9KBd8fm82KWZgC1C7mOLoQCfVwBtd1IGIEp+zahe7n9vvxDYaqh UlvcMH67f+Jhrq3W/QHHFqpkARkaXV8QQTtzvgH7P9lTg6Dhy3pUj+1HRKO4ZC8xVgMB 5jKjMDNcs+QOh/4dmjOkuj/Kd3mqKpjvozIF8OymiPOqp92AJZ7XJPsSOSW4GCp+P+/Z +v8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710680600; x=1711285400; 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=GmRAg6pgI57wScyuj5ceDeshqiQQs1RbNI3jU7TaRhI=; b=WLW4XnUo70aWHGym6UX5MI9zNGjZtiwY6w2aZv90wOTqnFE/Aw9EK5EujZwwrHlTKK CrKJVBSOJ2U6OCHcPty0wCPQuKEzM9tFhBIarP2HfrKOakDZ/VJpEBL8AS3EyAFH8M+u 2nPcgDsy7VuNGmSLddpXculJGPwqyZ1Zn4TF1naA26AFIEf2lziWgCfWeUTlWqlwChdu U5PwwemPwarOhVscYv4ihCus0S3/sDCoIFrc6a1V3Dm2biVSf0NgWklLkce0Lm1sY5w9 wPDvkgKk80OncTCyP9noALboZlRXlB+ZZmD38uq04XjW4bJ/TqffZ58wlXf6UM1cNJMA feFg== X-Forwarded-Encrypted: i=1; AJvYcCXoEFwowUjoFYQQjBPap+avSJaR4v1X0pfGJB/AW/Ro3ABaEAFPiwZ1u/lUanqpVkJ1vxncGjI1wBKdJDFML5WM8SRktJPwukf7CbE= X-Gm-Message-State: AOJu0YzWfGAQcBBndiRZ3x+J5SPzraVSejgqVFjw/gfbJSMx3WeEj1BZ u3grIExu5OPThcspaGJQEdAmArHY9wZ/aX4RArTV1coh8G+1N23sC2kecPfW779Z2Du/YZIaSfm jo+U= X-Google-Smtp-Source: AGHT+IErAQh+PJTPAvwHosQaUpkabhfUzWyJAEte0mO6nJur64lRtzARp69bbP5JK6glSPQPLVaajQ== X-Received: by 2002:a05:6808:f93:b0:3c3:84cc:fd6c with SMTP id o19-20020a0568080f9300b003c384ccfd6cmr1935757oiw.3.1710680599675; Sun, 17 Mar 2024 06:03:19 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id cc12-20020a056808324c00b003c37ccb47c1sm613103oib.51.2024.03.17.06.03.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Mar 2024 06:03:19 -0700 (PDT) From: Anup Patel To: Atish Patra Subject: [PATCH v3 10/10] lib: sbi: Extend sbi_trap_error() to dump state in a nested trap Date: Sun, 17 Mar 2024 18:32:31 +0530 Message-Id: <20240317130231.1705888-11-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240317130231.1705888-1-apatel@ventanamicro.com> References: <20240317130231.1705888-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_060321_776924_B12BD095 X-CRM114-Status: UNSURE ( 8.50 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The sbi_trap_error() should dump state of all in-flight traps upon failure in a nested trap so extend it accordingly. Signed-off-by: Anup Patel Tested-by: Samuel Holland --- lib/sbi/sbi_trap.c | 105 ++++++++++++++++++++++++++ 1 file changed, 60 [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:235 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anup Patel , Anup Patel , opensbi@lists.infradead.org, Andrew Jones Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The sbi_trap_error() should dump state of all in-flight traps upon failure in a nested trap so extend it accordingly. Signed-off-by: Anup Patel Tested-by: Samuel Holland --- lib/sbi/sbi_trap.c | 105 ++++++++++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 45 deletions(-) diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 060cec6..175560f 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -23,54 +23,69 @@ #include #include -static void __noreturn sbi_trap_error(const char *msg, int rc, - const struct sbi_trap_info *trap, - const struct sbi_trap_regs *regs) +static void sbi_trap_error_one(const struct sbi_trap_context *tcntx, + const char *prefix, u32 hartid, u32 depth) { - u32 hartid = current_hartid(); + const struct sbi_trap_info *trap = &tcntx->trap; + const struct sbi_trap_regs *regs = &tcntx->regs; - sbi_printf("%s: hart%d: %s (error %d)\n", __func__, hartid, msg, rc); - sbi_printf("%s: hart%d: mcause=0x%" PRILX " mtval=0x%" PRILX "\n", - __func__, hartid, trap->cause, trap->tval); + sbi_printf("\n"); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "mcause", trap->cause, "mtval", trap->tval); if (misa_extension('H')) { - sbi_printf("%s: hart%d: mtval2=0x%" PRILX - " mtinst=0x%" PRILX "\n", - __func__, hartid, trap->tval2, trap->tinst); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "mtval2", trap->tval2, "mtinst", trap->tinst); } - sbi_printf("%s: hart%d: mepc=0x%" PRILX " mstatus=0x%" PRILX "\n", - __func__, hartid, regs->mepc, regs->mstatus); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "ra", regs->ra, "sp", regs->sp); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "gp", regs->gp, "tp", regs->tp); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s0", regs->s0, "s1", regs->s1); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "a0", regs->a0, "a1", regs->a1); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "a2", regs->a2, "a3", regs->a3); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "a4", regs->a4, "a5", regs->a5); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "a6", regs->a6, "a7", regs->a7); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s2", regs->s2, "s3", regs->s3); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s4", regs->s4, "s5", regs->s5); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s6", regs->s6, "s7", regs->s7); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s8", regs->s8, "s9", regs->s9); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "s10", regs->s10, "s11", regs->s11); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "t0", regs->t0, "t1", regs->t1); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "t2", regs->t2, "t3", regs->t3); - sbi_printf("%s: hart%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", __func__, - hartid, "t4", regs->t4, "t5", regs->t5); - sbi_printf("%s: hart%d: %s=0x%" PRILX "\n", __func__, hartid, "t6", - regs->t6); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "mepc", regs->mepc, "mstatus", regs->mstatus); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "ra", regs->ra, "sp", regs->sp); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "gp", regs->gp, "tp", regs->tp); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s0", regs->s0, "s1", regs->s1); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "a0", regs->a0, "a1", regs->a1); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "a2", regs->a2, "a3", regs->a3); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "a4", regs->a4, "a5", regs->a5); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "a6", regs->a6, "a7", regs->a7); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s2", regs->s2, "s3", regs->s3); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s4", regs->s4, "s5", regs->s5); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s6", regs->s6, "s7", regs->s7); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s8", regs->s8, "s9", regs->s9); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "s10", regs->s10, "s11", regs->s11); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "t0", regs->t0, "t1", regs->t1); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "t2", regs->t2, "t3", regs->t3); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX " %s=0x%" PRILX "\n", prefix, + hartid, depth, "t4", regs->t4, "t5", regs->t5); + sbi_printf("%s: hart%d: trap%d: %s=0x%" PRILX "\n", prefix, + hartid, depth, "t6", regs->t6); +} + +static void __noreturn sbi_trap_error(const char *msg, int rc, + const struct sbi_trap_context *tcntx) +{ + u32 depth = 0, hartid = current_hartid(); + const struct sbi_trap_context *tc; + + for (tc = tcntx; tc; tc = tc->prev_context) + depth++; + + sbi_printf("\n"); + sbi_printf("%s: hart%d: trap%d: %s (error %d)\n", __func__, + hartid, depth - 1, msg, rc); + for (tc = tcntx; tc; tc = tc->prev_context) + sbi_trap_error_one(tc, __func__, hartid, --depth); sbi_hart_hang(); } @@ -321,7 +336,7 @@ struct sbi_trap_context *sbi_trap_handler(struct sbi_trap_context *tcntx) trap_done: if (rc) - sbi_trap_error(msg, rc, trap, regs); + sbi_trap_error(msg, rc, tcntx); sbi_trap_set_context(scratch, tcntx->prev_context); return tcntx; }