On 15/05/2024 00:43, 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. > > Signed-off-by: Roman Kisel <romank@xxxxxxxxxxxxxxxxxxx> > --- > drivers/hv/vmbus_drv.c | 37 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 37 insertions(+) > > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > index e25223cee3ab..52f01bd1c947 100644 > --- a/drivers/hv/vmbus_drv.c > +++ b/drivers/hv/vmbus_drv.c > @@ -36,6 +36,7 @@ > #include <linux/syscore_ops.h> > #include <linux/dma-map-ops.h> > #include <linux/pci.h> > +#include <linux/of_irq.h> > #include <clocksource/hyperv_timer.h> > #include <asm/mshyperv.h> > #include "hyperv_vmbus.h" > @@ -2316,6 +2317,34 @@ static int vmbus_acpi_add(struct platform_device *pdev) > } > #endif > > +static int __maybe_unused vmbus_of_set_irq(struct device_node *np) > +{ > + struct irq_desc *desc; > + int irq; > + > + irq = of_irq_get(np, 0); Where is the binding for this? > + 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); > + if (!desc) { > + pr_err("VMBus interrupt description can't be found for virq %d\n", irq); > + return -ENODEV; > + } > + > + vmbus_irq = irq; > + vmbus_interrupt = desc->irq_data.hwirq; > + pr_debug("VMBus virq %d, hwirq %d\n", vmbus_irq, vmbus_interrupt); > + > + return 0; > +} > + > static int vmbus_device_add(struct platform_device *pdev) > { > struct resource **cur_res = &hyperv_mmio; > @@ -2324,12 +2353,20 @@ static int vmbus_device_add(struct platform_device *pdev) > struct device_node *np = pdev->dev.of_node; > int ret; > > + pr_debug("VMBus is present in DeviceTree\n"); Not related and not really helpful. Simple entry/exit tracking is provided already by tracing. Best regards, Krzysztof