hw/ppc/ppc.c | 4 ++++ 1 file changed, 4 insertions(+)
When using u-boot as firmware with the taihu board, QEMU aborts with
this assertion:
ERROR:../accel/tcg/tcg-accel-ops.c:79:tcg_handle_interrupt: assertion failed:
(qemu_mutex_iothread_locked())
Running QEMU with "-d in_asm" shows that the crash happens when writing
to SPR 0x3f2, so we are missing to lock the iothread in the code path
here.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
hw/ppc/ppc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index f5d012f860..bb57f1c9ed 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -336,6 +336,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
{
PowerPCCPU *cpu = env_archcpu(env);
+ qemu_mutex_lock_iothread();
+
switch ((val >> 28) & 0x3) {
case 0x0:
/* No action */
@@ -353,6 +355,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
ppc40x_system_reset(cpu);
break;
}
+
+ qemu_mutex_unlock_iothread();
}
/* PowerPC 40x internal IRQ controller */
--
2.27.0
On 10/6/21 09:11, Thomas Huth wrote: > When using u-boot as firmware with the taihu board, QEMU aborts with > this assertion: > > ERROR:../accel/tcg/tcg-accel-ops.c:79:tcg_handle_interrupt: assertion failed: > (qemu_mutex_iothread_locked()) > > Running QEMU with "-d in_asm" shows that the crash happens when writing > to SPR 0x3f2, so we are missing to lock the iothread in the code path > here. > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Tested-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > hw/ppc/ppc.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c > index f5d012f860..bb57f1c9ed 100644 > --- a/hw/ppc/ppc.c > +++ b/hw/ppc/ppc.c > @@ -336,6 +336,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val) > { > PowerPCCPU *cpu = env_archcpu(env); > > + qemu_mutex_lock_iothread(); > + > switch ((val >> 28) & 0x3) { > case 0x0: > /* No action */ > @@ -353,6 +355,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val) > ppc40x_system_reset(cpu); > break; > } > + > + qemu_mutex_unlock_iothread(); > } > > /* PowerPC 40x internal IRQ controller */ >
On Wed, Oct 06, 2021 at 09:11:40AM +0200, Thomas Huth wrote: > When using u-boot as firmware with the taihu board, QEMU aborts with > this assertion: > > ERROR:../accel/tcg/tcg-accel-ops.c:79:tcg_handle_interrupt: assertion failed: > (qemu_mutex_iothread_locked()) > > Running QEMU with "-d in_asm" shows that the crash happens when writing > to SPR 0x3f2, so we are missing to lock the iothread in the code path > here. > > Signed-off-by: Thomas Huth <thuth@redhat.com> Applied to ppc-for-6.2, thanks. > --- > hw/ppc/ppc.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c > index f5d012f860..bb57f1c9ed 100644 > --- a/hw/ppc/ppc.c > +++ b/hw/ppc/ppc.c > @@ -336,6 +336,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val) > { > PowerPCCPU *cpu = env_archcpu(env); > > + qemu_mutex_lock_iothread(); > + > switch ((val >> 28) & 0x3) { > case 0x0: > /* No action */ > @@ -353,6 +355,8 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val) > ppc40x_system_reset(cpu); > break; > } > + > + qemu_mutex_unlock_iothread(); > } > > /* PowerPC 40x internal IRQ controller */ -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
© 2016 - 2024 Red Hat, Inc.