qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC v0 3/4] intc: arm_gic: Implement Linux boot


From: Peter Maydell
Subject: Re: [Qemu-devel] [RFC v0 3/4] intc: arm_gic: Implement Linux boot
Date: Tue, 30 Jun 2015 20:46:50 +0100

On 30 June 2015 at 20:21, Peter Crosthwaite
<address@hidden> wrote:
> Change all the interrupt groups to 1 to enable interrupts from the NS
> world. This gives a Linux guest full control of the interrupts when
> booting directly with -kernel.
>
> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
> Needs to be rebased on Peter's work
> ---
> ---
>  hw/intc/arm_gic.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c
> index 454bfd7..9374145 100644
> --- a/hw/intc/arm_gic.c
> +++ b/hw/intc/arm_gic.c
> @@ -22,6 +22,8 @@
>  #include "gic_internal.h"
>  #include "qom/cpu.h"
>
> +#include "hw/guest/linux.h"
> +
>  //#define DEBUG_GIC
>
>  #ifdef DEBUG_GIC
> @@ -1135,13 +1137,28 @@ static void arm_gic_realize(DeviceState *dev, Error 
> **errp)
>      }
>  }
>
> +static void arm_gic_linux_init(LinuxDevice *obj)
> +{
> +    /* FIXME: rebase - this is based on Xilinx tree code */
> +#if 0
> +    GICState *s = ARM_GIC(obj);
> +    int i;
> +
> +    for (i = 0 ; i < s->num_irq; ++i) {
> +        s->irq_state[i].group = 1;
> +    }
> +#endif
> +}

Implementing this as a hook like this means it will get
called for any Linux boot, but we only want to call it
if we're going to boot the kernel nonsecure (if we boot
the kernel secure then it will expect its irqs to be
in group 0 as usual).

You also need to change the cpu priority register.

thanks
-- PMM



reply via email to

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