In many cases, the call to event_notifier_set in aio_notify is unnecessary. In particular, if we are executing aio_dispatch, or if aio_poll is not blocking, we know that we will soon get to the next loop iteration (if necessary); the thread that hosts the AioContext's event loop does not need any nudging. The patch includes a Promela formal model that shows that this really works and does not need any further complication such as generation counts. It needs a memory barrier though. The generation counts are not needed because any change to ctx->dispatching after the memory barrier is okay for aio_notify. If it changes from zero to one, it is the right thing to skip event_notifier_set. If it changes from one to zero, the event_notifier_set is unnecessary but harmless. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
||
|---|---|---|
| .. | ||
| qmp | ||
| specs | ||
| aio_notify.promela | ||
| atomics.txt | ||
| blkverify.txt | ||
| bootindex.txt | ||
| ccid.txt | ||
| ich9-ehci-uhci.cfg | ||
| libcacard.txt | ||
| live-block-ops.txt | ||
| memory.txt | ||
| migration.txt | ||
| multiseat.txt | ||
| q35-chipset.cfg | ||
| qapi-code-gen.txt | ||
| qdev-device-use.txt | ||
| qemupciserial.inf | ||
| rdma.txt | ||
| spice-port-fqdn.txt | ||
| tracing.txt | ||
| usb-storage.txt | ||
| usb2.txt | ||
| virtio-balloon-stats.txt | ||
| vnc-ledstate-Pseudo-encoding.txt | ||
| writing-qmp-commands.txt | ||
| xbzrle.txt | ||
| xen-save-devices-state.txt | ||