spapr: Handle irq backend changes with VFIO PCI devices
pseries machine type can have one of two different interrupt controllers in use depending on feature negotiation with the guest. Usually this is invisible to devices, because they route to a common set of qemu_irqs which in turn dispatch to the correct back end. VFIO passthrough devices, however, wire themselves up directly to the KVM irqchip for performance, which means they are affected by this change in interrupt controller. To get them to adjust correctly for the change in irqchip, we need to fire the kvm irqchip change notifier. Cc: Alex Williamson <alex.williamson@redhat.com> Cc: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Cédric Le Goater <clg@kaod.org> Tested-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org> Acked-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
		
							parent
							
								
									c5478fea27
								
							
						
					
					
						commit
						e532e1d93c
					
				@ -508,6 +508,12 @@ static void set_active_intc(SpaprMachineState *spapr,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    spapr->active_intc = new_intc;
 | 
					    spapr->active_intc = new_intc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * We've changed the kernel irqchip, let VFIO devices know they
 | 
				
			||||||
 | 
					     * need to readjust.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    kvm_irqchip_change_notify();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void spapr_irq_update_active_intc(SpaprMachineState *spapr)
 | 
					void spapr_irq_update_active_intc(SpaprMachineState *spapr)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user