eb6ae7a682
If xen_backend_device_create() fails to instantiate a device, the XenBus code will just keep trying over and over again each time the bus is re-enumerated, as long as the backend appears online and in XenbusStateInitialising. The only thing which prevents the XenBus code from recreating duplicates of devices which already exist, is the fact that xen_device_realize() sets the backend state to XenbusStateInitWait. If the attempt to create the device doesn't get *that* far, that's when it will keep getting retried. My first thought was to handle errors by setting the backend state to XenbusStateClosed, but that doesn't work for XenConsole which wants to *ignore* any device of type != "ioemu" completely. So, make xen_backend_device_create() *keep* the XenBackendInstance for a failed device, and provide a new xen_backend_exists() function to allow xen_bus_type_enumerate() to check whether one already exists before creating a new one. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org> |
||
---|---|---|
.. | ||
Kconfig | ||
meson.build | ||
trace-events | ||
trace.h | ||
xen_devconfig.c | ||
xen_pt_config_init.c | ||
xen_pt_graphics.c | ||
xen_pt_load_rom.c | ||
xen_pt_msi.c | ||
xen_pt_stub.c | ||
xen_pt.c | ||
xen_pt.h | ||
xen_pvdev.c | ||
xen-backend.c | ||
xen-bus-helper.c | ||
xen-bus.c | ||
xen-host-pci-device.c | ||
xen-host-pci-device.h | ||
xen-hvm-common.c | ||
xen-legacy-backend.c | ||
xen-mapcache.c | ||
xen-operations.c |