This is my stack of patches that piled up while walking through the interrupt injection logic of arm (and soon also arm64). Besides a lot of more or less minor cleanups, it primarily reworks the software queue for pending interrupts into a ring and fixes setup, handling and protection of the maintenance interrupt.
One open issue, though still a minor one: We should probably bring all distributor registers related to hypervisor SGIs and the maintenance interrupt into defined state during handover from Linux. The whole thing is lightly tested so far, only on the Banana Pi (I lost my Jetson board, need to reclaim next). That also means, GICv3 is compile-tested only. Tony, if you can reintegrate you patches on top soon, I will refrain from doing this with the current wip/arm64 state and will wait for your test results. Thorough review welcome, specifically as I started reading the related sections in the manuals only last weekend. Thanks, Jan Jan Kiszka (22): arm: Use asm-defines.h for struct per_cpu members arm: Add missing printk.h include arm: Fix build warning in gic-v3 arm: Remove unneeded include from irqchip.h arm: Un-inline spi_in_cell arm: Remove write-only priority field from pending_irq arm: Remove maintenance flag from pending_irq.type.sgi arm: Remove hw flag from pending_irq arm: Remove cpuid from pending_irq arm: Remove irq field from pending_irq arm: Remove return code from irqchip_inject_pending arm: Remove unused return code of irqchip_set_pending arm: Disable maintenance interrupt on successful injection arm: Make sure to not queue interrupt that were rejected as duplicates arm: Convert software queue of pending interrupts into a ring arm: Remove try_inject parameter from irqchip_set_pending arm: Enable maintenance interrupt also from irqchip_set_pending arm: Enable / disable maintenance interrupt in distributor arm: Protect hypervisor used SGIs and PPIs from cell changes arm: Make cpu_init and cpu_reset callbacks mandatory arm: Reject unknown GIC versions arm: Consolidate gic_irqchip to irqchip hypervisor/arch/arm/asm-defines.c | 12 ++ hypervisor/arch/arm/control.c | 2 +- hypervisor/arch/arm/entry.S | 3 +- hypervisor/arch/arm/gic-common.c | 28 ++-- hypervisor/arch/arm/gic-v2.c | 62 +++++---- hypervisor/arch/arm/gic-v3.c | 65 +++++----- hypervisor/arch/arm/include/asm/irqchip.h | 52 ++------ hypervisor/arch/arm/include/asm/percpu.h | 36 ++--- hypervisor/arch/arm/irqchip.c | 209 +++++++++--------------------- hypervisor/arch/arm/setup.c | 2 +- hypervisor/arch/arm/smp-vexpress.c | 1 + 11 files changed, 184 insertions(+), 288 deletions(-) -- 2.1.4 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
