qemu-arm
[Top][All Lists]
Advanced

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

Re: gicv3 maintenance interrupt not triggering


From: Peter Maydell
Subject: Re: gicv3 maintenance interrupt not triggering
Date: Fri, 25 Sep 2020 17:47:38 +0100

On Wed, 23 Sep 2020 at 16:55, Jose Martins <josemartins90@gmail.com> wrote:
> I've tried to debug the issue this morning but I've hit a wall.
>
> As I said in the previous email, the issue seems to be due to the fact
> that cs->maintenance_irq is not initialized correctly and therefore
> the call to qemu_set_irq for the maintenance interrupt in
> gicv3_cpuif_virt_update has no effect. When this variable is
> initialized in gicv3_init_cpuif using
> cpu->gicv3_maintenance_interrupt, the latter was also not initialized
> yet. From what I could understand this initialization is only achieved
> in the call to qdev_connect_gpio_out_named which is only made later in
> virt's create_gic function (using gdb I was able to figure out the
> call to gicv3_init_cpuif is somewhere in the call graph of
> sysbus_realize_and_unref for gicbusdev made earlier in create_gic).

Yeah, the IRQ lines are (supposed to be) wired up by the board code.
It shouldn't matter which way round the connections are done...

> I've tried a naive fix by changing the order of these initializations
> in create_gic but this crashes qemu immediately. Given my limited
> knowledge of qemu internals, I'm not able to figure out how to fix
> this.
>
> I'm not sure if this analysis is correct but would appreciate further
> guidance on how to resolve this.

Do you have a test case binary/command line I can use to repro?

(Linux does work with the GICv3 emulation as far as I'm aware;
maybe it handles maintenance interrupts in a different way
to your guest code.)

thanks
-- PMM



reply via email to

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