From: Jan Kiszka <[email protected]>

This replaces the non-intuitive special case of
irqchip_set_pending(NULL, ...) with an explicit one.
The only case where irqchip_set_pending() was called like this was
arch_ivshmem_trigger_interrupt(). All others already passed in a
cpu_public pointer guaranteed to be non-NULL.

Signed-off-by: Jan Kiszka <[email protected]>
---
 hypervisor/arch/arm-common/include/asm/irqchip.h |  2 ++
 hypervisor/arch/arm-common/irqchip.c             | 14 +++++++-------
 hypervisor/arch/arm-common/ivshmem.c             |  2 +-
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/hypervisor/arch/arm-common/include/asm/irqchip.h 
b/hypervisor/arch/arm-common/include/asm/irqchip.h
index 9ac33465..b3fa6d3c 100644
--- a/hypervisor/arch/arm-common/include/asm/irqchip.h
+++ b/hypervisor/arch/arm-common/include/asm/irqchip.h
@@ -97,6 +97,8 @@ bool irqchip_has_pending_irqs(void);
 void irqchip_inject_pending(void);
 void irqchip_set_pending(struct public_per_cpu *cpu_public, u16 irq_id);
 
+void irqchip_trigger_external_irq(u16 irq_id);
+
 bool irqchip_irq_in_cell(struct cell *cell, unsigned int irq_id);
 
 #endif /* __ASSEMBLY__ */
diff --git a/hypervisor/arch/arm-common/irqchip.c 
b/hypervisor/arch/arm-common/irqchip.c
index 6b6f7332..847758ae 100644
--- a/hypervisor/arch/arm-common/irqchip.c
+++ b/hypervisor/arch/arm-common/irqchip.c
@@ -228,13 +228,6 @@ void irqchip_set_pending(struct public_per_cpu 
*cpu_public, u16 irq_id)
        unsigned int new_tail;
        struct sgi sgi;
 
-       if (!cpu_public) {
-               /* Injection via GICD */
-               mmio_write32(gicd_base + GICD_ISPENDR + (irq_id / 32) * 4,
-                            1 << (irq_id % 32));
-               return;
-       }
-
        if (local_injection && irqchip.inject_irq(irq_id, sender) != -EBUSY)
                return;
 
@@ -311,6 +304,13 @@ void irqchip_inject_pending(void)
        irqchip.enable_maint_irq(false);
 }
 
+void irqchip_trigger_external_irq(u16 irq_id)
+{
+       /* Injection via GICD */
+       mmio_write32(gicd_base + GICD_ISPENDR + (irq_id / 32) * 4,
+                    1 << (irq_id % 32));
+}
+
 int irqchip_send_sgi(struct sgi *sgi)
 {
        return irqchip.send_sgi(sgi);
diff --git a/hypervisor/arch/arm-common/ivshmem.c 
b/hypervisor/arch/arm-common/ivshmem.c
index 14e31da4..9f0a11dc 100644
--- a/hypervisor/arch/arm-common/ivshmem.c
+++ b/hypervisor/arch/arm-common/ivshmem.c
@@ -25,7 +25,7 @@ void arch_ivshmem_trigger_interrupt(struct ivshmem_endpoint 
*ive,
                 */
                memory_barrier();
 
-               irqchip_set_pending(NULL, irq_id);
+               irqchip_trigger_external_irq(irq_id);
        }
 }
 
-- 
2.16.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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/d2becb4a22a7dc85cb237014796862a50f4cfc6d.1583516039.git.jan.kiszka%40siemens.com.

Reply via email to