Re: [PATCH v3 6/7] Drivers: hv: vmbus: Get the IRQ number from DT

From: Roman Kisel
Date: Mon Aug 05 2024 - 11:50:07 EST




On 8/5/2024 7:12 AM, Michael Kelley wrote:
From: Saurabh Singh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx> Sent: Monday, August 5, 2024 1:30 AM

On Fri, Jul 26, 2024 at 03:59:09PM -0700, Roman Kisel wrote:
The VMBus driver uses ACPI for interrupt assignment on
arm64 hence it won't function in the VTL mode where only
DeviceTree can be used.

Update the VMBus driver to discover interrupt configuration
via DeviceTree and indicate DMA cache coherency.

Signed-off-by: Roman Kisel <romank@xxxxxxxxxxxxxxxxxxx>
---
drivers/hv/vmbus_drv.c | 49 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)

diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index 12a707ab73f8..7eee7caff5f6 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -2306,6 +2306,34 @@ static int vmbus_acpi_add(struct platform_device *pdev)
}
#endif

+static int __maybe_unused vmbus_set_irq(struct platform_device *pdev)
+{
+ struct irq_desc *desc;
+ int irq;
+
+ irq = platform_get_irq(pdev, 0);
+ if (irq == 0) {
+ pr_err("VMBus interrupt mapping failure\n");
+ return -EINVAL;
+ }
+ if (irq < 0) {
+ pr_err("VMBus interrupt data can't be read from DeviceTree, error %d\n", irq);
+ return irq;
+ }
+
+ desc = irq_to_desc(irq);

irq_to_desc is not an exported symbol if CONFIG_SPARSE_IRQ is enabled. This will
break the builds for HYPERV as module.


Instead, use irq_get_irq_data(), then irqd_to_hwirq().

Couldn't appreciate enough your indispensable advice, folks!

Michael

--
Thank you,
Roman