ARM: Enable GICv2m on 32-bit virt machine
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
@@ -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
@@ -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
@@ -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
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.his added because it is required bylinux/msi.h
ifCONFIG_GENERIC_MSI_IRQ_DOMAINis 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);
^Signed-off-by Pavel Fedin <[email protected]>---
v2 => v3:
Fixed build warning inirq-gic-v2m.cv1 => 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@@ -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_TIMERarch/arm/include/asm/Kbuild +1
-0@@ -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.hdrivers/irqchip/irq-gic-v2m.c +0
-0
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...