On 10/31/2012 02:18 PM, Stefan Hajnoczi wrote:
IMO we should use the same mechanism as proposed for other devices: address_space_map() should grab a reference on the dimm device, and address_space_unmap() can release it. This way device destruction will be deferred as soon as all devices complete I/O.
We will have to be careful with network receive buffers though, since they can be held indefinitely.
Network receive buffers aren't mapped. Net receive is not zero-copy. For example, virtio-net does virtqueue_pop() inside virtio_net_receive().
I don't see a problem with networking.
What about vhost-net? But that is managed separately with a MemoryListener.
On Wed, Oct 31, 2012 at 1:34 PM, Avi Kivity avi@redhat.com wrote:
On 10/31/2012 02:18 PM, Stefan Hajnoczi wrote:
IMO we should use the same mechanism as proposed for other devices: address_space_map() should grab a reference on the dimm device, and address_space_unmap() can release it. This way device destruction will be deferred as soon as all devices complete I/O.
We will have to be careful with network receive buffers though, since they can be held indefinitely.
Network receive buffers aren't mapped. Net receive is not zero-copy. For example, virtio-net does virtqueue_pop() inside virtio_net_receive().
I don't see a problem with networking.
What about vhost-net? But that is managed separately with a MemoryListener.
Yep. It should find out when memory regions change through its listener.
Stefan