Re: [PATCH v7 0/3] spapr: nvdimm: Introduce spapr-nvdimm device
Cédric Le Goater <[email protected]>
| Newsgroups | org.kernel.vger.kvm-ppc,dev.linux.lists.nvdimm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 2/4/22 09:15, Shivaprasad G Bhat wrote: > If the device backend is not persistent memory for the nvdimm, there > is need for explicit IO flushes to ensure persistence. > > On SPAPR, the issue is addressed by adding a new hcall to request for > an explicit flush from the guest when the backend is not pmem. > So, the approach here is to convey when the hcall flush is required > in a device tree property. The guest once it knows the device needs > explicit flushes, makes the hcall as and when required. > > It was suggested to create a new device type to address the > explicit flush for such backends on PPC instead of extending the > generic nvdimm device with new property. So, the patch introduces > the spapr-nvdimm device. The new device inherits the nvdimm device > with the new bahviour such that if the backend has pmem=no, the > device tree property is set by default. > > The below demonstration shows the map_sync behavior for non-pmem > backends. > (https://github.com/avocado-framework-tests/avocado-misc-tests/blob/master/memory/ndctl.py.data/map_sync.c) > > The pmem0 is from spapr-nvdimm with with backend pmem=on, and pmem1 is > from spapr-nvdimm with pmem=off, mounted as > /dev/pmem0 on /mnt1 type xfs (rw,relatime,attr2,dax=always,inode64,logbufs=8,logbsize2k,noquota) > /dev/pmem1 on /mnt2 type xfs (rw,relatime,attr2,dax=always,inode64,logbufs=8,logbsize2k,noquota) > > [root@atest-guest ~]# ./mapsync /mnt1/newfile ----> When pmem=on > [root@atest-guest ~]# ./mapsync /mnt2/newfile ----> when pmem=off > Failed to mmap with Operation not supported > > First patch adds the realize/unrealize call backs to the generic device > for the new device's vmstate registration. The second patch implements > the hcall, adds the necessary vmstate properties to spapr machine structure > for carrying the hcall status during save-restore. The nature of the hcall > being asynchronus, the patch uses aio utilities to offload the flush. The > third patch introduces the spapr-nvdimm device, adds the device tree > property for the guest when spapr-nvdimm is used with pmem=no on the > backend. Also adds new property pmem-override(?, suggest if you have better > name) to the spapr-nvdimm which hints at forcing the hcall based flushes even > on pmem backed devices. > > The kernel changes to exploit this hcall is at > https://github.com/linuxppc/linux/commit/75b7c05ebf9026.patch Applied for ppc-7.0 Thanks, C.