File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -2465,6 +2465,31 @@ static int vmbus_acpi_add(struct platform_device *pdev)
2465
2465
}
2466
2466
#endif
2467
2467
2468
+ static int vmbus_set_irq (struct platform_device * pdev )
2469
+ {
2470
+ struct irq_data * data ;
2471
+ int irq ;
2472
+ irq_hw_number_t hwirq ;
2473
+
2474
+ irq = platform_get_irq (pdev , 0 );
2475
+ /* platform_get_irq() may not return 0. */
2476
+ if (irq < 0 )
2477
+ return irq ;
2478
+
2479
+ data = irq_get_irq_data (irq );
2480
+ if (!data ) {
2481
+ pr_err ("No interrupt data for VMBus virq %d\n" , irq );
2482
+ return - ENODEV ;
2483
+ }
2484
+ hwirq = irqd_to_hwirq (data );
2485
+
2486
+ vmbus_irq = irq ;
2487
+ vmbus_interrupt = hwirq ;
2488
+ pr_debug ("VMBus virq %d, hwirq %d\n" , vmbus_irq , vmbus_interrupt );
2489
+
2490
+ return 0 ;
2491
+ }
2492
+
2468
2493
static int vmbus_device_add (struct platform_device * pdev )
2469
2494
{
2470
2495
struct resource * * cur_res = & hyperv_mmio ;
@@ -2479,6 +2504,11 @@ static int vmbus_device_add(struct platform_device *pdev)
2479
2504
if (ret )
2480
2505
return ret ;
2481
2506
2507
+ if (!__is_defined (HYPERVISOR_CALLBACK_VECTOR ))
2508
+ ret = vmbus_set_irq (pdev );
2509
+ if (ret )
2510
+ return ret ;
2511
+
2482
2512
for_each_of_range (& parser , & range ) {
2483
2513
struct resource * res ;
2484
2514
You can’t perform that action at this time.
0 commit comments