Skip to contentSkip to conversation

ARM: Enable GICv2m on 32-bit virt machine

PATCH Superseded Pavel Fedin 2 participants 2 messages Sep 4, 2015

Subsystems (3)

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 ARM: Enable GICv2m on 32-bit virt machine

qemu implementation of "virt" includes GICv2m. This commit allows to use it also on ARM32 architecture.

msi.h is added because it is required by linux/msi.h
if CONFIG_GENERIC_MSI_IRQ_DOMAIN is defined. It gets enabled by the following KConfig dependency chain:
ARM_GIC_V2M => PCI_MSI_IRQ_DOMAIN => GENERIC_MSI_IRQ_DOMAIN

drivers/irqchip/irq-gic-v2m.c: In function ?gicv2m_compose_msi_msg?:
drivers/irqchip/irq-gic-v2m.c:100:2: warning: right shift count >= width of type [enabled by default]
msg->address_hi = (u32) (addr >> 32);
^

---
v2 => v3:
Fixed build warning in irq-gic-v2m.c

v1 => v2:
Added verbose explanation in commit message

---
 arch/arm/Kconfig              | 1 +
 arch/arm/include/asm/Kbuild   | 1 +
 drivers/irqchip/irq-gic-v2m.c | 2 ++
 3 files changed, 4 insertions(+)
arch/arm/Kconfig +1 -0
index 45df48b..1091025 100644
@@ -815,6 +815,7 @@ config ARCH_VIRT
 	bool "Dummy Virtual Machine" if ARCH_MULTI_V7
 	select ARM_AMBA
 	select ARM_GIC
+	select ARM_GIC_V2M if PCI_MSI
 	select ARM_PSCI
 	select HAVE_ARM_ARCH_TIMER
 
arch/arm/include/asm/Kbuild +1 -0
index 3c4596d..01806f5 100644
@@ -14,6 +14,7 @@ generic-y += local.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += msgbuf.h
+generic-y += msi.h
 generic-y += param.h
 generic-y += parport.h
 generic-y += poll.h
drivers/irqchip/irq-gic-v2m.c +2 -0
index fdf7065..f76fc9a 100644
@@ -97,7 +97,9 @@ static void gicv2m_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
 	struct v2m_data *v2m = irq_data_get_irq_chip_data(data);
 	phys_addr_t addr = v2m->res.start + V2M_MSI_SETSPI_NS;
 
+#ifdef CONFIG_ARM64
 	msg->address_hi = (u32) (addr >> 32);
+#endif
 	msg->address_lo = (u32) (addr);
 	msg->data = data->hwirq;
 }
Signature · 1 line
2.4.4
#1 lore raw

PATCH v3 1/1 ARM: Enable GICv2m on 32-bit virt machine

Quoted 57 lines · Pavel Fedin

qemu implementation of "virt" includes GICv2m. This commit allows to use it also on ARM32 architecture.

msi.h is added because it is required by linux/msi.h
if CONFIG_GENERIC_MSI_IRQ_DOMAIN is defined. It gets enabled by the following KConfig dependency chain:
ARM_GIC_V2M => PCI_MSI_IRQ_DOMAIN => GENERIC_MSI_IRQ_DOMAIN

drivers/irqchip/irq-gic-v2m.c: In function ?gicv2m_compose_msi_msg?:
drivers/irqchip/irq-gic-v2m.c:100:2: warning: right shift count >= width of type [enabled by default]
msg->address_hi = (u32) (addr >> 32);
^

---
v2 => v3:
Fixed build warning in irq-gic-v2m.c

v1 => v2:
Added verbose explanation in commit message

---
 arch/arm/Kconfig              | 1 +
 arch/arm/include/asm/Kbuild   | 1 +
 drivers/irqchip/irq-gic-v2m.c | 2 ++
 3 files changed, 4 insertions(+)
arch/arm/Kconfig +1 -0
index 45df48b..1091025 100644
@@ -815,6 +815,7 @@ config ARCH_VIRT
 	bool "Dummy Virtual Machine" if ARCH_MULTI_V7
 	select ARM_AMBA
 	select ARM_GIC
+	select ARM_GIC_V2M if PCI_MSI
 	select ARM_PSCI
 	select HAVE_ARM_ARCH_TIMER
 
arch/arm/include/asm/Kbuild +1 -0
index 3c4596d..01806f5 100644
@@ -14,6 +14,7 @@ generic-y += local.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += msgbuf.h
+generic-y += msi.h
 generic-y += param.h
 generic-y += parport.h
 generic-y += poll.h
drivers/irqchip/irq-gic-v2m.c +0 -0
index fdf7065..f76fc9a 100644

drivers/irqchip/irq-gic-v2m.c static void gicv2m_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · line 105

Quoted 9 lines
drivers/irqchip/irq-gic-v2m.c +2 -0
@@ -97,7 +97,9 @@ static void gicv2m_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
 	struct v2m_data *v2m = irq_data_get_irq_chip_data(data);
 	phys_addr_t addr = v2m->res.start + V2M_MSI_SETSPI_NS;
 
+#ifdef CONFIG_ARM64
 	msg->address_hi = (u32) (addr >> 32);
+#endif
 	msg->address_lo = (u32) (addr);
 	msg->data = data->hwirq;
 }

Please use the upper_32_bits/lower_32_bits macros that will avoid this ugly #ifdef. This should be a separate patch.

Thanks,

	M.
Signature · 1 line
Jazz is not dead. It just smells funny...