On 08/06/2015 18:25, Michael S. Tsirkin wrote: > > issue is that we have to re-reserve HVA region first so no other allocation > > would claim gap and the only way I found was just to call mmap() on it > > which as side effect invalidates MemoryRegion's backing RAM. > > Well the only point we need to mmap is where we'd unmap > normally, if that's not safe then unmapping wouldn't > be safe either?
I think it is it possible to map slot 2 at address 0x12340000 right after unmapping slot 1 at the same address but before an RCU grace period has expired. If this is possible, then you can have two DIMMs trying to mmap themselves at the same address. Probably you need to stop using object_child_foreach in hw/mem/pc-dimm.c, and instead build your own list. An object can keep a "weak" reference to itself in the list, and remove itself from the list at instance_finalize time. Paolo