Message ID | 20221118091858.242569-3-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | main-loop: Introduce QEMU_IOTHREAD_LOCK_GUARD | expand |
On 18/11/22 10:18, Richard Henderson wrote: > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > Cc: Philippe Mathieu-Daudé <philmd@linaro.org> > Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> > --- > hw/mips/mips_int.c | 11 +---------- > 1 file changed, 1 insertion(+), 10 deletions(-) > > diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c > index 2db5e10fe0..73437cd90f 100644 > --- a/hw/mips/mips_int.c > +++ b/hw/mips/mips_int.c > @@ -32,17 +32,12 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level) > MIPSCPU *cpu = opaque; > CPUMIPSState *env = &cpu->env; > CPUState *cs = CPU(cpu); > - bool locked = false; > > if (irq < 0 || irq > 7) { > return; > } > > - /* Make sure locking works even if BQL is already held by the caller */ > - if (!qemu_mutex_iothread_locked()) { > - locked = true; > - qemu_mutex_lock_iothread(); > - } > + QEMU_IOTHREAD_LOCK_GUARD(); > > if (level) { > env->CP0_Cause |= 1 << (irq + CP0Ca_IP); > @@ -59,10 +54,6 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level) > } else { > cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); > } > - > - if (locked) { > - qemu_mutex_unlock_iothread(); > - } > } I'd rather have a macro similar to WITH_RCU_READ_LOCK_GUARD() so the locked context is obvious: WITH_QEMU_IOTHREAD_LOCK_GUARD() { ... } Anyhow: Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c index 2db5e10fe0..73437cd90f 100644 --- a/hw/mips/mips_int.c +++ b/hw/mips/mips_int.c @@ -32,17 +32,12 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level) MIPSCPU *cpu = opaque; CPUMIPSState *env = &cpu->env; CPUState *cs = CPU(cpu); - bool locked = false; if (irq < 0 || irq > 7) { return; } - /* Make sure locking works even if BQL is already held by the caller */ - if (!qemu_mutex_iothread_locked()) { - locked = true; - qemu_mutex_lock_iothread(); - } + QEMU_IOTHREAD_LOCK_GUARD(); if (level) { env->CP0_Cause |= 1 << (irq + CP0Ca_IP); @@ -59,10 +54,6 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level) } else { cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } - - if (locked) { - qemu_mutex_unlock_iothread(); - } } void cpu_mips_irq_init_cpu(MIPSCPU *cpu)
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- Cc: Philippe Mathieu-Daudé <philmd@linaro.org> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> --- hw/mips/mips_int.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)