On Sat, May 4, 2013 at 5:53 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 03/05/2013 04:45, Liu Ping Fan ha scritto: >> v1->v2: >> 1.split RCU prepared style update and monitor the RAM-Device refcnt into >> two patches (patch 2,4) >> 2.introduce AddrSpaceMem, which is similar to HostMem, but based on >> address space, while >> the original HostMem only server system memory address space > > This looks suspiciously similar to FlatView, doesn't it? > FlatView is used for all the listeners, including for mmio dispatching, which aims to mapping from hwaddr to DeviceState for dispatching service. While here, we mapping from hwaddr to hva.
> Perhaps the right thing to do is to add the appropriate locking and > RCU-style updating to address_space_update_topology and RCU implementation is data struct related, and each listener has its local table, so I think it is more reasonable to implement them separately. And vhost has its own RCU implement in kernel already. > memory_region_find. (And replacing flatview_destroy with ref/unref > similar to HostMem in your patch 2). Then just switch dataplane to use > memory_region_find... > In fact, I think, HostMem listener can be an substitute for cpu_physical_memory_map(), the main issue can be the migration support. But before getting big patches, I hope to have this smaller and simpler one. Regards, Pingfan > Paolo > >> Liu Ping Fan (6): >> hostmem: make hostmem single, not per Vring related >> hostmem: AddressSpace has its own map and maintained by RCU prepared >> style >> memory: add ref/unref interface for MemroyRegionOps >> hostmem: hostmem listener pin RAM-Device by refcnt >> Vring: use hostmem's RAM safe api >> virtio-blk: release reference to RAM's memoryRegion >> >> exec.c | 1 + >> hw/block/dataplane/virtio-blk.c | 52 ++++++++--- >> hw/virtio/dataplane/hostmem.c | 168 >> +++++++++++++++++++++++++-------- >> hw/virtio/dataplane/vring.c | 100 +++++++++++++++----- >> include/exec/memory.h | 11 ++ >> include/hw/virtio/dataplane/hostmem.h | 25 +++--- >> include/hw/virtio/dataplane/vring.h | 5 +- >> memory.c | 18 ++++ >> 8 files changed, 289 insertions(+), 91 deletions(-) >> >