From: deller@kernel.org
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
Helge Deller <deller@gmx.de>
Subject: [PATCH 07/13] target/hppa: Implement do_transaction_failed handler for I/O errors
Date: Wed, 7 Feb 2024 19:20:17 +0100 [thread overview]
Message-ID: <20240207182023.36316-8-deller@kernel.org> (raw)
In-Reply-To: <20240207182023.36316-1-deller@kernel.org>
From: Helge Deller <deller@gmx.de>
Add the do_transaction_failed() handler to tigger a HPMC to the CPU
in case of I/O transaction errors.
This is a preparation commit.
We still lack implementation for some registers, so do not yet enable sending
HPMCs. Having this hunk here now nevertheless helps for the further
development, so that it can easily be enabled later on.
Signed-off-by: Helge Deller <deller@gmx.de>
---
target/hppa/cpu.c | 1 +
target/hppa/cpu.h | 5 +++++
target/hppa/mem_helper.c | 19 +++++++++++++++++++
3 files changed, 25 insertions(+)
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index 5f87c1b12a..afe73d4474 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -191,6 +191,7 @@ static const TCGCPUOps hppa_tcg_ops = {
.cpu_exec_interrupt = hppa_cpu_exec_interrupt,
.do_interrupt = hppa_cpu_do_interrupt,
.do_unaligned_access = hppa_cpu_do_unaligned_access,
+ .do_transaction_failed = hppa_cpu_do_transaction_failed,
#endif /* !CONFIG_USER_ONLY */
};
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
index 06b65f2258..5a4b56c975 100644
--- a/target/hppa/cpu.h
+++ b/target/hppa/cpu.h
@@ -383,6 +383,11 @@ bool hppa_cpu_exec_interrupt(CPUState *cpu, int int_req);
int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
int type, hwaddr *pphys, int *pprot,
HPPATLBEntry **tlb_entry);
+void hppa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
+ vaddr addr, unsigned size,
+ MMUAccessType access_type,
+ int mmu_idx, MemTxAttrs attrs,
+ MemTxResult response, uintptr_t retaddr);
extern const MemoryRegionOps hppa_io_eir_ops;
extern const VMStateDescription vmstate_hppa_cpu;
void hppa_cpu_alarm_timer(void *);
diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c
index 629a9d90ef..676c0b3003 100644
--- a/target/hppa/mem_helper.c
+++ b/target/hppa/mem_helper.c
@@ -353,6 +353,25 @@ raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr,
cpu_loop_exit_restore(cs, retaddr);
}
+void hppa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
+ vaddr addr, unsigned size,
+ MMUAccessType access_type,
+ int mmu_idx, MemTxAttrs attrs,
+ MemTxResult response, uintptr_t retaddr)
+{
+ CPUHPPAState *env = cpu_env(cs);
+
+ qemu_log_mask(LOG_GUEST_ERROR, "HPMC at " TARGET_FMT_lx ":" TARGET_FMT_lx
+ " while accessing I/O at %#08" HWADDR_PRIx "\n",
+ env->iasq_f, env->iaoq_f, physaddr);
+
+ /* FIXME: Enable HPMC exceptions when firmware has clean device probing */
+ if (0) {
+ raise_exception_with_ior(env, EXCP_HPMC, retaddr, addr,
+ MMU_IDX_MMU_DISABLED(mmu_idx));
+ }
+}
+
bool hppa_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
MMUAccessType type, int mmu_idx,
bool probe, uintptr_t retaddr)
--
2.43.0
next prev parent reply other threads:[~2024-02-07 18:22 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-07 18:20 [PATCH 00/13] target/hppa: Enhancements and fixes deller
2024-02-07 18:20 ` [PATCH 01/13] disas/hppa: Add disassembly for qemu specific instructions deller
2024-02-08 20:12 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 02/13] target/hppa: Add "diag 0x101" for console output support deller
2024-02-08 20:15 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 03/13] target/hppa: Fix PSW_W and PSW_E bits in rsm, ssm and mtsm deller
2024-02-08 20:43 ` Richard Henderson
2024-02-09 8:55 ` Helge Deller
2024-02-07 18:20 ` [PATCH 04/13] hw/pci-host/astro: Avoid aborting on access failure deller
2024-02-08 20:45 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 05/13] hw/pci-host/astro: Implement Hard Fail and Soft Fail mode deller
2024-02-08 20:46 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 06/13] lasi: allow access to LAN MAC address registers deller
2024-02-07 18:20 ` deller [this message]
2024-02-07 18:20 ` [PATCH 08/13] lasi: Add reset I/O ports for LASI audio and FDC deller
2024-02-07 18:20 ` [PATCH 09/13] target/hppa: Allow read-access to PSW with rsm 0, reg instruction deller
2024-02-08 21:12 ` [PATCH 09/13] target/hppa: Allow read-access to PSW with rsm 0,reg instruction Richard Henderson
2024-02-07 18:20 ` [PATCH 10/13] target/hppa: Check privilege only when PSW.P is set deller
2024-02-08 21:14 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 11/13] target/hppa: PDC_BTLB_INFO uses 32-bit ints deller
2024-02-08 21:17 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 12/13] target/hppa: Update SeaBIOS-hppa to version 16 deller
2024-02-08 21:19 ` Richard Henderson
2024-02-07 18:20 ` [PATCH 13/13] hw/hppa/machine: Load 64-bit firmware on 64-bit machines deller
2024-02-08 21:18 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240207182023.36316-8-deller@kernel.org \
--to=deller@kernel.org \
--cc=deller@gmx.de \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).