ACPI: don't call acpi_pcihp_device_plug_cb on xen
Commit f0c9d64a exposed the issue that with a xenfv machine using pci passthrough, acpi pci hotplug code was being executed by mistake. Guard calls to acpi_pcihp_device_plug_cb (and corresponding acpi_pcihp_device_unplug_cb) with a check for xen_enabled(). Without this check I am seeing an error that the bus doesn't have the acpi-pcihp-bsel property set. Signed-off-by: Bruce Rogers <brogers@suse.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									ef0e8fc768
								
							
						
					
					
						commit
						153eba4726
					
				@ -385,7 +385,10 @@ static void piix4_device_plug_cb(HotplugHandler *hotplug_dev,
 | 
				
			|||||||
                                dev, errp);
 | 
					                                dev, errp);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
 | 
					    } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
 | 
				
			||||||
        acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev, errp);
 | 
					        if (!xen_enabled()) {
 | 
				
			||||||
 | 
					            acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
 | 
				
			||||||
 | 
					                                      errp);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
 | 
					    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
 | 
				
			||||||
        if (s->cpu_hotplug_legacy) {
 | 
					        if (s->cpu_hotplug_legacy) {
 | 
				
			||||||
            legacy_acpi_cpu_plug_cb(hotplug_dev, &s->gpe_cpu, dev, errp);
 | 
					            legacy_acpi_cpu_plug_cb(hotplug_dev, &s->gpe_cpu, dev, errp);
 | 
				
			||||||
@ -408,8 +411,10 @@ static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev,
 | 
				
			|||||||
        acpi_memory_unplug_request_cb(hotplug_dev, &s->acpi_memory_hotplug,
 | 
					        acpi_memory_unplug_request_cb(hotplug_dev, &s->acpi_memory_hotplug,
 | 
				
			||||||
                                      dev, errp);
 | 
					                                      dev, errp);
 | 
				
			||||||
    } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
 | 
					    } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
 | 
				
			||||||
 | 
					        if (!xen_enabled()) {
 | 
				
			||||||
            acpi_pcihp_device_unplug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
 | 
					            acpi_pcihp_device_unplug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
 | 
				
			||||||
                                        errp);
 | 
					                                        errp);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) &&
 | 
					    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) &&
 | 
				
			||||||
               !s->cpu_hotplug_legacy) {
 | 
					               !s->cpu_hotplug_legacy) {
 | 
				
			||||||
        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
 | 
					        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user