qemu-e2k/target-ppc
Alexander Graf fc87e18530 KVM: PPC: Add level based interrupt logic
KVM on PowerPC used to have completely broken interrupt logic. Usually,
interrupts work by having a PIC that pulls a line up/down, so the CPU knows
that an interrupt is active. This line stays active until some action is
done to the PIC to release the line.

On KVM for PPC, we just checked if there was an interrupt pending and pulled
a line in the kernel module. We never released it though, hoping that kernel
space would just declare an interrupt as released when injected - which is
wrong.

To fix this, we need to completely redesign the interrupt injection logic.
Whenever an interrupt line gets triggered, we need to notify kernel space
that the line is up. Whenever it gets released, we do the same. This way
we can assure that the interrupt state is always known to kernel space.

This fixes random stalls in KVM guests on PowerPC that were waiting for
an interrupt while everyone else thought they received it already.

Signed-off-by: Alexander Graf <agraf@suse.de>
2010-09-05 11:50:48 +02:00
..
STATUS Update PowerPC emulation status file. 2007-10-25 21:38:16 +00:00
cpu.h remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
exec.h move cpu_pc_from_tb to target-*/exec.h 2010-07-03 09:48:12 +03:00
helper.c target-ppc: remove useless line 2010-05-31 19:18:25 +02:00
helper.h target-ppc: add vexptefp instruction 2010-07-13 18:18:32 +02:00
helper_regs.h Replace always_inline with inline 2009-08-16 09:06:54 +00:00
kvm.c KVM: PPC: Add level based interrupt logic 2010-09-05 11:50:48 +02:00
kvm_ppc.c kvm ppc: Remove unused label 2009-11-12 11:23:55 -06:00
kvm_ppc.h KVM: PPC: Add level based interrupt logic 2010-09-05 11:50:48 +02:00
machine.c KVM: Rework VCPU state writeback API 2010-03-04 00:29:28 -03:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
mfrom_table_gen.c find -type f | xargs sed -i 's/[\t ]*$//g' # Yes, again. Note the star in the regex. 2007-09-17 08:09:54 +00:00
op_helper.c target-ppc: add vexptefp instruction 2010-07-13 18:18:32 +02:00
translate.c target-ppc: add vexptefp instruction 2010-07-13 18:18:32 +02:00
translate_init.c target-ppc: fix power mode checking on 7400/7410 2010-07-19 00:33:29 +02:00