On Fri, Oct 20, 2017 at 1:00 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > On Thu, Oct 19, 2017 at 11:21:26AM -0700, Dan Williams wrote: >> The difference is that nvdimm_flush() is not mandatory, and that the >> platform will automatically perform the same flush at power-fail. >> Applications should be able to assume that if they are using MAP_SYNC >> that no other coordination with the kernel or the hypervisor is >> necessary. >> >> Advertising this as a generic Persistent Memory range to the guest >> means that the guest could theoretically use it with device-dax where >> there is no driver or filesystem sync interface. The hypervisor will >> be waiting for flush notifications and the guest will just issue cache >> flushes and sfence instructions. So, as far as I can see we need to >> differentiate this virtio-model from standard "Persistent Memory" to >> the guest and remove the possibility of guests/applications making the >> wrong assumption. > > So add a flag that it is not. We already have the nd_volatile type, > that is special. For now only in Linux, but I think adding this type > to the spec eventually would be very useful for efficiently exposing > directly mappable device to VM guests. Right, that's the same recommendation I gave. https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg08404.html ...so maybe I'm misunderstanding your concern? It sounds like we're on the same page.