[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/35] ppc/vhyp: reset exception state when handling vhyp hcall
From: |
Cédric Le Goater |
Subject: |
[PULL 09/35] ppc/vhyp: reset exception state when handling vhyp hcall |
Date: |
Mon, 4 Sep 2023 11:06:04 +0200 |
From: Nicholas Piggin <npiggin@gmail.com>
Convention is to reset the exception_index and error_code after handling
an interrupt. The vhyp hcall handler fails to do this. This does not
appear to have ill effects because cpu_handle_exception() clears
exception_index later, but it is fragile and inconsistent. Reset the
exception state after handling vhyp hcall like other handlers.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
target/ppc/excp_helper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 32e46e56b3fc..72ec2be92e40 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -843,6 +843,7 @@ static void powerpc_excp_7xx(PowerPCCPU *cpu, int excp)
PPCVirtualHypervisorClass *vhc =
PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp);
vhc->hypercall(cpu->vhyp, cpu);
+ powerpc_reset_excp_state(cpu);
return;
}
@@ -1014,6 +1015,7 @@ static void powerpc_excp_74xx(PowerPCCPU *cpu, int excp)
PPCVirtualHypervisorClass *vhc =
PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp);
vhc->hypercall(cpu->vhyp, cpu);
+ powerpc_reset_excp_state(cpu);
return;
}
@@ -1526,6 +1528,7 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp)
PPCVirtualHypervisorClass *vhc =
PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp);
vhc->hypercall(cpu->vhyp, cpu);
+ powerpc_reset_excp_state(cpu);
return;
}
if (env->insns_flags2 & PPC2_ISA310) {
--
2.41.0
- [PULL 00/35] ppc queue, Cédric Le Goater, 2023/09/04
- [PULL 02/35] ppc: Add stub implementation of TRIG SPRs, Cédric Le Goater, 2023/09/04
- [PULL 03/35] target/ppc: Remove single-step suppression inside 0x100-0xf00, Cédric Le Goater, 2023/09/04
- [PULL 06/35] target/ppc: Implement breakpoint debug facility for v2.07S, Cédric Le Goater, 2023/09/04
- [PULL 01/35] target/ppc: Generate storage interrupts for radix RC changes, Cédric Le Goater, 2023/09/04
- [PULL 05/35] target/ppc: Suppress single step interrupts on rfi-type instructions, Cédric Le Goater, 2023/09/04
- [PULL 04/35] target/ppc: Improve book3s branch trace interrupt for v2.07S, Cédric Le Goater, 2023/09/04
- [PULL 07/35] target/ppc: Implement watchpoint debug facility for v2.07S, Cédric Le Goater, 2023/09/04
- [PULL 08/35] spapr: implement H_SET_MODE debug facilities, Cédric Le Goater, 2023/09/04
- [PULL 09/35] ppc/vhyp: reset exception state when handling vhyp hcall,
Cédric Le Goater <=
- [PULL 10/35] ppc/vof: Fix missed fields in VOF cleanup, Cédric Le Goater, 2023/09/04
- [PULL 11/35] hw/ppc/ppc.c: Tidy over-long lines, Cédric Le Goater, 2023/09/04
- [PULL 12/35] hw/ppc: Introduce functions for conversion between timebase and nanoseconds, Cédric Le Goater, 2023/09/04
- [PULL 13/35] host-utils: Add muldiv64_round_up, Cédric Le Goater, 2023/09/04
- [PULL 14/35] hw/ppc: Round up the decrementer interval when converting to ns, Cédric Le Goater, 2023/09/04
- [PULL 15/35] hw/ppc: Avoid decrementer rounding errors, Cédric Le Goater, 2023/09/04
- [PULL 16/35] target/ppc: Sign-extend large decrementer to 64-bits, Cédric Le Goater, 2023/09/04
- [PULL 17/35] hw/ppc: Always store the decrementer value, Cédric Le Goater, 2023/09/04
- [PULL 18/35] target/ppc: Migrate DECR SPR, Cédric Le Goater, 2023/09/04
- [PULL 19/35] hw/ppc: Reset timebase facilities on machine reset, Cédric Le Goater, 2023/09/04