mirror of
https://github.com/qemu/qemu.git
synced 2025-10-25 19:32:47 +00:00
It is not safe to close an event channel from the QEMU main thread when that channel's poller is running in IOThread context. This patch adds a new xen_device_set_event_channel_context() function to explicitly assign the channel AioContext, and modifies xen_device_bind_event_channel() to initially assign the channel's poller to the QEMU main thread context. The code in xen-block's dataplane is then modified to assign the channel to IOThread context during xen_block_dataplane_start() and de-assign it during in xen_block_dataplane_stop(), such that the channel is always assigned back to main thread context before it is closed. aio_set_fd_handler() already deals with all the necessary synchronization when moving an fd between AioContext-s so no extra code is needed to manage this. Reported-by: Julien Grall <jgrall@amazon.com> Signed-off-by: Paul Durrant <pdurrant@amazon.com> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com> Message-Id: <20191216143451.19024-1-pdurrant@amazon.com> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> |
||
|---|---|---|
| .. | ||
| Makefile.objs | ||
| trace-events | ||
| xen_devconfig.c | ||
| xen_pt_config_init.c | ||
| xen_pt_graphics.c | ||
| xen_pt_load_rom.c | ||
| xen_pt_msi.c | ||
| xen_pt.c | ||
| xen_pt.h | ||
| xen_pvdev.c | ||
| xen-backend.c | ||
| xen-bus-helper.c | ||
| xen-bus.c | ||
| xen-common.c | ||
| xen-host-pci-device.c | ||
| xen-host-pci-device.h | ||
| xen-legacy-backend.c | ||