On 15/05/2024 00:43, Roman Kisel wrote:Have not added to Documentation/devicetree/bindings/bus/microsoft,vmbus.yaml, my bad. Will update the file.
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?
True. Will remove.+ 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