drivers/nvdimm/nd.h | 1 drivers/nvdimm/pmem.c | 4 drivers/nvdimm/region_devs.c | 24 +++- drivers/virtio/Kconfig | 9 + drivers/virtio/Makefile | 1 drivers/virtio/virtio_pmem.c | 190 +++++++++++++++++++++++++++++++++++++++ include/linux/libnvdimm.h | 5 - include/linux/virtio_pmem.h | 44 +++++++++ include/uapi/linux/virtio_ids.h | 1 include/uapi/linux/virtio_pmem.h | 40 ++++++++ 10 files changed, 310 insertions(+), 9 deletions(-)
This is RFC V3 for 'fake DAX' flushing interface sharing for review. This patchset has two parts: - Guest virtio-pmem driver Guest driver reads persistent memory range from paravirt device and registers with 'nvdimm_bus'. 'nvdimm/pmem' driver uses this information to allocate persistent memory range. Also, we have implemented guest side of VIRTIO flushing interface. - Qemu virtio-pmem device It exposes a persistent memory range to KVM guest which at host side is file backed memory and works as persistent memory device. In addition to this it provides virtio device handling of flushing interface. KVM guest performs Qemu side asynchronous sync using this interface. Changes from RFC v2: - Add flush function in the nd_region in place of switching on a flag - Dan & Stefan - Add flush completion function with proper locking and wait for host side flush completion - Stefan & Dan - Keep userspace API in uapi header file - Stefan, MST - Use LE fields & New device id - MST - Indentation & spacing suggestions - MST & Eric - Remove extra header files & add licensing - Stefan Changes from RFC v1: - Reuse existing 'pmem' code for registering persistent memory and other operations instead of creating an entirely new block driver. - Use VIRTIO driver to register memory information with nvdimm_bus and create region_type accordingly. - Call VIRTIO flush from existing pmem driver. Details of project idea for 'fake DAX' flushing interface is shared [2] & [3]. Pankaj Gupta (2): Add virtio-pmem guest driver pmem: device flush over VIRTIO [1] https://marc.info/?l=linux-mm&m=150782346802290&w=2 [2] https://www.spinics.net/lists/kvm/msg149761.html [3] https://www.spinics.net/lists/kvm/msg153095.html drivers/nvdimm/nd.h | 1 drivers/nvdimm/pmem.c | 4 drivers/nvdimm/region_devs.c | 24 +++- drivers/virtio/Kconfig | 9 + drivers/virtio/Makefile | 1 drivers/virtio/virtio_pmem.c | 190 +++++++++++++++++++++++++++++++++++++++ include/linux/libnvdimm.h | 5 - include/linux/virtio_pmem.h | 44 +++++++++ include/uapi/linux/virtio_ids.h | 1 include/uapi/linux/virtio_pmem.h | 40 ++++++++ 10 files changed, 310 insertions(+), 9 deletions(-)
On 13.07.2018 09:52, Pankaj Gupta wrote: > This is RFC V3 for 'fake DAX' flushing interface sharing > for review. This patchset has two parts: > > - Guest virtio-pmem driver > Guest driver reads persistent memory range from paravirt device > and registers with 'nvdimm_bus'. 'nvdimm/pmem' driver uses this > information to allocate persistent memory range. Also, we have > implemented guest side of VIRTIO flushing interface. > > - Qemu virtio-pmem device > It exposes a persistent memory range to KVM guest which at host > side is file backed memory and works as persistent memory device. > In addition to this it provides virtio device handling of flushing > interface. KVM guest performs Qemu side asynchronous sync using > this interface. > > Changes from RFC v2: > - Add flush function in the nd_region in place of switching > on a flag - Dan & Stefan > - Add flush completion function with proper locking and wait > for host side flush completion - Stefan & Dan > - Keep userspace API in uapi header file - Stefan, MST > - Use LE fields & New device id - MST > - Indentation & spacing suggestions - MST & Eric > - Remove extra header files & add licensing - Stefan > > Changes from RFC v1: > - Reuse existing 'pmem' code for registering persistent > memory and other operations instead of creating an entirely > new block driver. > - Use VIRTIO driver to register memory information with > nvdimm_bus and create region_type accordingly. > - Call VIRTIO flush from existing pmem driver. > > Details of project idea for 'fake DAX' flushing interface is > shared [2] & [3]. > > Pankaj Gupta (2): > Add virtio-pmem guest driver > pmem: device flush over VIRTIO > > [1] https://marc.info/?l=linux-mm&m=150782346802290&w=2 > [2] https://www.spinics.net/lists/kvm/msg149761.html > [3] https://www.spinics.net/lists/kvm/msg153095.html > > drivers/nvdimm/nd.h | 1 > drivers/nvdimm/pmem.c | 4 > drivers/nvdimm/region_devs.c | 24 +++- > drivers/virtio/Kconfig | 9 + > drivers/virtio/Makefile | 1 > drivers/virtio/virtio_pmem.c | 190 +++++++++++++++++++++++++++++++++++++++ > include/linux/libnvdimm.h | 5 - > include/linux/virtio_pmem.h | 44 +++++++++ > include/uapi/linux/virtio_ids.h | 1 > include/uapi/linux/virtio_pmem.h | 40 ++++++++ > 10 files changed, 310 insertions(+), 9 deletions(-) > Hi Pankaj, do you have a branch for the QEMU part somewhere available? I want to see how this works with MemoryDevice changes. -- Thanks, David / dhildenb
Hi David, > > for review. This patchset has two parts: > > > > - Guest virtio-pmem driver > > Guest driver reads persistent memory range from paravirt device > > and registers with 'nvdimm_bus'. 'nvdimm/pmem' driver uses this > > information to allocate persistent memory range. Also, we have > > implemented guest side of VIRTIO flushing interface. > > > > - Qemu virtio-pmem device > > It exposes a persistent memory range to KVM guest which at host > > side is file backed memory and works as persistent memory device. > > In addition to this it provides virtio device handling of flushing > > interface. KVM guest performs Qemu side asynchronous sync using > > this interface. > > > > Changes from RFC v2: > > - Add flush function in the nd_region in place of switching > > on a flag - Dan & Stefan > > - Add flush completion function with proper locking and wait > > for host side flush completion - Stefan & Dan > > - Keep userspace API in uapi header file - Stefan, MST > > - Use LE fields & New device id - MST > > - Indentation & spacing suggestions - MST & Eric > > - Remove extra header files & add licensing - Stefan > > > > Changes from RFC v1: > > - Reuse existing 'pmem' code for registering persistent > > memory and other operations instead of creating an entirely > > new block driver. > > - Use VIRTIO driver to register memory information with > > nvdimm_bus and create region_type accordingly. > > - Call VIRTIO flush from existing pmem driver. > > > > Details of project idea for 'fake DAX' flushing interface is > > shared [2] & [3]. > > > > Pankaj Gupta (2): > > Add virtio-pmem guest driver > > pmem: device flush over VIRTIO > > > > [1] https://marc.info/?l=linux-mm&m=150782346802290&w=2 > > [2] https://www.spinics.net/lists/kvm/msg149761.html > > [3] https://www.spinics.net/lists/kvm/msg153095.html > > > > drivers/nvdimm/nd.h | 1 > > drivers/nvdimm/pmem.c | 4 > > drivers/nvdimm/region_devs.c | 24 +++- > > drivers/virtio/Kconfig | 9 + > > drivers/virtio/Makefile | 1 > > drivers/virtio/virtio_pmem.c | 190 > > +++++++++++++++++++++++++++++++++++++++ > > include/linux/libnvdimm.h | 5 - > > include/linux/virtio_pmem.h | 44 +++++++++ > > include/uapi/linux/virtio_ids.h | 1 > > include/uapi/linux/virtio_pmem.h | 40 ++++++++ > > 10 files changed, 310 insertions(+), 9 deletions(-) > > > > Hi Pankaj, > > do you have a branch for the QEMU part somewhere available? I want to > see how this works with MemoryDevice changes. o.k I will update the guest virtio-pmem and Qemu current changes and share with you. BTW previous version is here: https://marc.info/?l=kvm&m=153146839627143&w=2 Thanks, Pankaj > > -- > > Thanks, > > David / dhildenb > >
© 2016 - 2024 Red Hat, Inc.