qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 08/10] hw/mips: In KVM mode, inject IRQ2 (I/O


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 08/10] hw/mips: In KVM mode, inject IRQ2 (I/O) interupts via ioctls
Date: Sat, 21 Dec 2013 20:40:57 +0000

On 16 December 2013 14:12, James Hogan <address@hidden> wrote:
> From: Sanjay Lal <address@hidden>
>
> COP0 emulation is in-kernel for KVM, so inject IRQ2 (I/O) interrupts via
> ioctls.
>
> Signed-off-by: Sanjay Lal <address@hidden>
> Signed-off-by: James Hogan <address@hidden>
> Cc: Aurelien Jarno <address@hidden>
> ---
> Changes in v2:
>  - Expand commit message
>  - Remove #ifdef CONFIG_KVM since it's guarded by kvm_enabled() already
> ---
>  hw/mips/mips_int.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
> index 7dbd24d..1b9981e 100644
> --- a/hw/mips/mips_int.c
> +++ b/hw/mips/mips_int.c
> @@ -23,6 +23,8 @@
>  #include "hw/hw.h"
>  #include "hw/mips/cpudevs.h"
>  #include "cpu.h"
> +#include "sysemu/kvm.h"
> +#include "kvm_mips.h"
>
>  static void cpu_mips_irq_request(void *opaque, int irq, int level)
>  {
> @@ -35,8 +37,17 @@ static void cpu_mips_irq_request(void *opaque, int irq, 
> int level)
>
>      if (level) {
>          env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
> +
> +        if (kvm_enabled() && irq == 2) {
> +            kvm_mips_set_interrupt(env, irq, level);
> +        }
> +
>      } else {
>          env->CP0_Cause &= ~(1 << (irq + CP0Ca_IP));
> +
> +        if (kvm_enabled() && irq == 2) {
> +            kvm_mips_set_interrupt(env, irq, level);
> +        }
>      }
>
>      if (env->CP0_Cause & CP0Ca_IP_mask) {

For ARM we got rid of the arm_cpu_pic functions (which were more
or less like these) completely, because we can just model CPU
interrupt lines as actual irq lines on the CPU object. See commits
7c1840b686e3 to b643e4b90bb0b. That's not necessary for
KVM support but it might be worth considering as a cleanup for
MIPS at some point: it helps to get the "is this kvm or tcg?" code
out of the device emulation stuff in hw/, and also means there's
less hw/ code grubbing around in CPUState.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]