]> rtime.felk.cvut.cz Git - jailhouse.git/blobdiff - hypervisor/arch/arm/irqchip.c
arm: Remove irq field from pending_irq
[jailhouse.git] / hypervisor / arch / arm / irqchip.c
index 5c07421af2d2bc795f9887cdb87ba64b90349686..a4e2d9962530c3297a192d7150a33e072dc3fb14 100644 (file)
@@ -34,6 +34,21 @@ unsigned long gicd_size;
 static bool irqchip_is_init;
 static struct irqchip_ops irqchip;
 
+bool spi_in_cell(struct cell *cell, unsigned int spi)
+{
+       /* FIXME: Change the configuration to a bitmask range */
+       u32 spi_mask;
+
+       if (spi >= 64)
+               return false;
+       else if (spi >= 32)
+               spi_mask = cell->arch.spis >> 32;
+       else
+               spi_mask = cell->arch.spis;
+
+       return spi_mask & (1 << (spi & 31));
+}
+
 static int irqchip_init_pending(struct per_cpu *cpu_data)
 {
        struct pending_irq *pend_array;
@@ -119,17 +134,6 @@ int irqchip_set_pending(struct per_cpu *cpu_data, u32 irq_id, bool try_inject)
        struct pending_irq pending;
 
        pending.virt_id = irq_id;
-       /* Priority must be less than ICC_PMR */
-       pending.priority = 0;
-
-       if (is_sgi(irq_id)) {
-               pending.hw = 0;
-               pending.type.sgi.maintenance = 0;
-               pending.type.sgi.cpuid = 0;
-       } else {
-               pending.hw = 1;
-               pending.type.irq = irq_id;
-       }
 
        if (try_inject && irqchip.inject_irq(cpu_data, &pending) == 0)
                return 0;
@@ -237,14 +241,6 @@ void irqchip_cpu_shutdown(struct per_cpu *cpu_data)
                irqchip.cpu_reset(cpu_data, true);
 }
 
-int irqchip_mmio_access(struct mmio_access *access)
-{
-       if (irqchip.mmio_access)
-               return irqchip.mmio_access(access);
-
-       return TRAP_UNHANDLED;
-}
-
 static const struct jailhouse_irqchip *
 irqchip_find_config(struct jailhouse_cell_desc *config)
 {