qemu/target
Daniel Henrique Barboza 0c0aac01c4 target/ppc: fix 'skip KVM' cond in cpu_interrupt_exittb()
cpu_interrupt_exittb() was introduced by commit 044897ef4a
("target/ppc: Fix system lockups caused by interrupt_request state
corruption") as a way to wrap cpu_interrupt() helper in BQL.

After that, commit 6d38666a89 ("ppc: Ignore the CPU_INTERRUPT_EXITTB
interrupt with KVM") added a condition to skip this interrupt if we're
running with KVM.

Problem is that the change made by the above commit, testing for
!kvm_enabled() at the start of cpu_interrupt_exittb():

static inline void cpu_interrupt_exittb(CPUState *cs)
{
    if (!kvm_enabled()) {
        return;
    }
    (... do cpu_interrupt(cs, CPU_INTERRUPT_EXITTB) ...)

is doing the opposite of what it intended to do. This will return
immediately if not kvm_enabled(), i.e. it's a emulated CPU, and if
kvm_enabled() it will proceed to fire CPU_INTERRUPT_EXITTB.

Fix the 'skip KVM' condition so the function is a no-op when
kvm_enabled().

CC: Greg Kurz <groug@kaod.org>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/809
Fixes: 6d38666a89 ("ppc: Ignore the CPU_INTERRUPT_EXITTB interrupt with KVM")
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20220121160841.9102-1-danielhb413@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2022-01-28 13:15:02 +01:00
..
alpha exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
arm hw/arm/virt: KVM: Enable PAuth when supported by the host 2022-01-20 11:47:52 +00:00
avr target/avr: Drop checks for singlestep_enabled 2021-10-15 16:39:14 -07:00
cris exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
hexagon target/hexagon/cpu.h: don't include qemu-common.h 2021-12-15 10:35:26 +00:00
hppa exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
i386 KVM: x86: ignore interrupt_bitmap field of KVM_GET/SET_SREGS 2022-01-12 14:09:06 +01:00
m68k target/m68k: don't word align SP in stack frame if M68K_FEATURE_UNALIGNED_DATA feature enabled 2022-01-09 12:05:02 +01:00
microblaze target/microblaze: Do not set MO_ALIGN for user-only 2021-11-02 07:00:52 -04:00
mips target/mips: Extract trap code into env->error_code 2022-01-11 18:40:44 +01:00
nios2 linux-user/nios2: Map a real kuser page 2022-01-06 11:40:52 +01:00
openrisc target/openrisc: Make openrisc_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
ppc target/ppc: fix 'skip KVM' cond in cpu_interrupt_exittb() 2022-01-28 13:15:02 +01:00
riscv target/riscv: Relax UXL field for debugging 2022-01-21 15:52:57 +10:00
rx target/rx/cpu.h: Don't include qemu-common.h 2021-12-15 10:35:26 +00:00
s390x s390x: sigp: Reorder the SIGP STOP code 2022-01-18 15:00:57 +01:00
sh4 exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
sparc exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
tricore exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
xtensa exec/memop: Adding signedness to quad definitions 2022-01-08 15:46:10 +10:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
meson.build Drop the deprecated unicore32 target 2021-05-12 18:20:52 +02:00