Revert "virtio: postpone the execution of event_notifier_cleanup function"
This reverts commit 4fe6d78b2e241f41208dfb07605aace4becfc747 as it is reported to break cleanup and migration. Cc: Gal Hammer <ghammer@redhat.com> Cc: Sitong Liu <siliu@redhat.com> Cc: Xiaoling Gao <xiagao@redhat.com> Suggested-by: Greg Kurz <groug@kaod.org> Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Reported-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> Reported-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									ce3a9eaff4
								
							
						
					
					
						commit
						1ef8185a06
					
				| @ -812,10 +812,6 @@ static void kvm_mem_ioeventfd_del(MemoryListener *listener, | ||||
|     if (r < 0) { | ||||
|         abort(); | ||||
|     } | ||||
| 
 | ||||
|     if (e->cleanup) { | ||||
|         e->cleanup(e); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void kvm_io_ioeventfd_add(MemoryListener *listener, | ||||
|  | ||||
| @ -256,15 +256,6 @@ bool virtio_bus_ioeventfd_enabled(VirtioBusState *bus) | ||||
|     return k->ioeventfd_assign && k->ioeventfd_enabled(proxy); | ||||
| } | ||||
| 
 | ||||
| static void virtio_bus_cleanup_event_notifier(EventNotifier *notifier) | ||||
| { | ||||
|     /* Test and clear notifier after disabling event,
 | ||||
|      * in case poll callback didn't have time to run. | ||||
|      */ | ||||
|     virtio_queue_host_notifier_read(notifier); | ||||
|     event_notifier_cleanup(notifier); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * This function switches ioeventfd on/off in the device. | ||||
|  * The caller must set or clear the handlers for the EventNotifier. | ||||
| @ -292,13 +283,19 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign) | ||||
|         r = k->ioeventfd_assign(proxy, notifier, n, true); | ||||
|         if (r < 0) { | ||||
|             error_report("%s: unable to assign ioeventfd: %d", __func__, r); | ||||
|             virtio_bus_cleanup_event_notifier(notifier); | ||||
|             goto cleanup_event_notifier; | ||||
|         } | ||||
|         return 0; | ||||
|     } else { | ||||
|         notifier->cleanup = virtio_bus_cleanup_event_notifier; | ||||
|         k->ioeventfd_assign(proxy, notifier, n, false); | ||||
|     } | ||||
| 
 | ||||
| cleanup_event_notifier: | ||||
|     /* Test and clear notifier after disabling event,
 | ||||
|      * in case poll callback didn't have time to run. | ||||
|      */ | ||||
|     virtio_queue_host_notifier_read(notifier); | ||||
|     event_notifier_cleanup(notifier); | ||||
|     return r; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Michael S. Tsirkin
						Michael S. Tsirkin