[PATCH v3 00/17] hw/block/nvme: multiple namespaces support

Klaus Jensen posted 17 patches 3 years, 6 months ago
Test docker-quick@centos7 passed
Test docker-mingw@fedora passed
Test checkpatch passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200922084533.1273962-1-its@irrelevant.dk
Maintainers: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Kevin Wolf <kwolf@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, Klaus Jensen <its@irrelevant.dk>, Keith Busch <kbusch@kernel.org>, "Michael S. Tsirkin" <mst@redhat.com>, Max Reitz <mreitz@redhat.com>
docs/specs/nvme.txt    |  23 ++
docs/specs/pci-ids.txt |   1 +
hw/block/nvme-ns.h     |  74 ++++
hw/block/nvme.h        |  83 +++-
include/block/nvme.h   |   6 +-
include/hw/pci/pci.h   |   4 +-
hw/block/nvme-ns.c     | 167 ++++++++
hw/block/nvme.c        | 848 ++++++++++++++++++++++++++++++-----------
hw/core/machine.c      |   1 +
MAINTAINERS            |   1 +
hw/block/meson.build   |   2 +-
hw/block/trace-events  |  23 +-
12 files changed, 978 insertions(+), 255 deletions(-)
create mode 100644 docs/specs/nvme.txt
create mode 100644 hw/block/nvme-ns.h
create mode 100644 hw/block/nvme-ns.c
[PATCH v3 00/17] hw/block/nvme: multiple namespaces support
Posted by Klaus Jensen 3 years, 6 months ago
From: Klaus Jensen <k.jensen@samsung.com>

This is the next round of my patches for the nvme device.

This includes a bit of cleanup and two new features:

  * support for scatter/gather lists

  * multiple namespaces support through a new nvme-ns device

Finally, the series wraps up with changing the PCI vendor and device ID to get
rid of the internal Intel id and as a side-effect get rid of some Linux kernel
quirks that no longer applies.

"pci: pass along the return value of dma_memory_rw" has already been posted by
Philippe in another series, but since it is not applied yet, I am including it
here.

Changes for v3
~~~~~~~~~~~~~~

  * hw/block/nvme: handle dma errors
    Do not retry DMA, just set Controller Fatal Status (CFS). This causes
    the Linux kernel to most likely disable the controller when running the
    blktests block/011 test case, which causes some havoc when running
    blktests, but I have submitted a patch for blktests to fix this. (Keith)

  * hw/block/nvme: refactor aio submission
    Dropped the unneeded nvme_req_is_write function. (Keith)

  * Added R-b's from Keith and Philippe.

Changes for v2
~~~~~~~~~~~~~~

  * Added a new patch ("hw/block/nvme: fix typo in trace event") that does what
    it says on the tin.

  * Dropped the "hw/block/nvme: support multiple parallel aios per request"
    patch (Keith).

  * hw/block/nvme: add symbolic command name to trace events
    Changed to single quote (Philippe)

  * hw/block/nvme: default request status to success
    Commit message typo fixed (Philippe)

  * hw/block/nvme: change controller pci id
    Do NOT bump the device id for the legacy Intel id (David)

Gollu Appalanaidu (1):
  hw/block/nvme: add support for sgl bit bucket descriptor

Klaus Jensen (16):
  hw/block/nvme: fix typo in trace event
  pci: pass along the return value of dma_memory_rw
  hw/block/nvme: handle dma errors
  hw/block/nvme: commonize nvme_rw error handling
  hw/block/nvme: alignment style fixes
  hw/block/nvme: add a lba to bytes helper
  hw/block/nvme: fix endian conversion
  hw/block/nvme: add symbolic command name to trace events
  hw/block/nvme: refactor aio submission
  hw/block/nvme: default request status to success
  hw/block/nvme: harden cmb access
  hw/block/nvme: add support for scatter gather lists
  hw/block/nvme: refactor identify active namespace id list
  hw/block/nvme: support multiple namespaces
  pci: allocate pci id for nvme
  hw/block/nvme: change controller pci id

 docs/specs/nvme.txt    |  23 ++
 docs/specs/pci-ids.txt |   1 +
 hw/block/nvme-ns.h     |  74 ++++
 hw/block/nvme.h        |  83 +++-
 include/block/nvme.h   |   6 +-
 include/hw/pci/pci.h   |   4 +-
 hw/block/nvme-ns.c     | 167 ++++++++
 hw/block/nvme.c        | 848 ++++++++++++++++++++++++++++++-----------
 hw/core/machine.c      |   1 +
 MAINTAINERS            |   1 +
 hw/block/meson.build   |   2 +-
 hw/block/trace-events  |  23 +-
 12 files changed, 978 insertions(+), 255 deletions(-)
 create mode 100644 docs/specs/nvme.txt
 create mode 100644 hw/block/nvme-ns.h
 create mode 100644 hw/block/nvme-ns.c

-- 
2.28.0


Re: [PATCH v3 00/17] hw/block/nvme: multiple namespaces support
Posted by Keith Busch 3 years, 6 months ago
On Tue, Sep 22, 2020 at 10:45:16AM +0200, Klaus Jensen wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
> 
> This is the next round of my patches for the nvme device.
> 
> This includes a bit of cleanup and two new features:
> 
>   * support for scatter/gather lists
> 
>   * multiple namespaces support through a new nvme-ns device
> 
> Finally, the series wraps up with changing the PCI vendor and device ID to get
> rid of the internal Intel id and as a side-effect get rid of some Linux kernel
> quirks that no longer applies.
> 
> "pci: pass along the return value of dma_memory_rw" has already been posted by
> Philippe in another series, but since it is not applied yet, I am including it
> here.

For the rest of the patches I haven't individually commented:

Reviewed-by: Keith Busch <kbusch@kernel.org>

Re: [PATCH v3 00/17] hw/block/nvme: multiple namespaces support
Posted by Klaus Jensen 3 years, 6 months ago
On Sep 22 08:31, Keith Busch wrote:
> On Tue, Sep 22, 2020 at 10:45:16AM +0200, Klaus Jensen wrote:
> > From: Klaus Jensen <k.jensen@samsung.com>
> > 
> > This is the next round of my patches for the nvme device.
> > 
> > This includes a bit of cleanup and two new features:
> > 
> >   * support for scatter/gather lists
> > 
> >   * multiple namespaces support through a new nvme-ns device
> > 
> > Finally, the series wraps up with changing the PCI vendor and device ID to get
> > rid of the internal Intel id and as a side-effect get rid of some Linux kernel
> > quirks that no longer applies.
> > 
> > "pci: pass along the return value of dma_memory_rw" has already been posted by
> > Philippe in another series, but since it is not applied yet, I am including it
> > here.
> 
> For the rest of the patches I haven't individually commented:
> 
> Reviewed-by: Keith Busch <kbusch@kernel.org>

Sorry if I am being thick here Keith, but didn't you R-b all patches
(except 3 and 9) in v2 yesterday?

I do not see any comments to any of the v3 patches, so I'm not sure how
to interpret this ;)
Re: [PATCH v3 00/17] hw/block/nvme: multiple namespaces support
Posted by Keith Busch 3 years, 6 months ago
On Tue, Sep 22, 2020 at 07:27:30PM +0200, Klaus Jensen wrote:
> On Sep 22 08:31, Keith Busch wrote:
> > On Tue, Sep 22, 2020 at 10:45:16AM +0200, Klaus Jensen wrote:
> > > From: Klaus Jensen <k.jensen@samsung.com>
> > > 
> > > This is the next round of my patches for the nvme device.
> > > 
> > > This includes a bit of cleanup and two new features:
> > > 
> > >   * support for scatter/gather lists
> > > 
> > >   * multiple namespaces support through a new nvme-ns device
> > > 
> > > Finally, the series wraps up with changing the PCI vendor and device ID to get
> > > rid of the internal Intel id and as a side-effect get rid of some Linux kernel
> > > quirks that no longer applies.
> > > 
> > > "pci: pass along the return value of dma_memory_rw" has already been posted by
> > > Philippe in another series, but since it is not applied yet, I am including it
> > > here.
> > 
> > For the rest of the patches I haven't individually commented:
> > 
> > Reviewed-by: Keith Busch <kbusch@kernel.org>
> 
> Sorry if I am being thick here Keith, but didn't you R-b all patches
> (except 3 and 9) in v2 yesterday?
> 
> I do not see any comments to any of the v3 patches, so I'm not sure how
> to interpret this ;)

Ha, I thought I did yesterday too, but it's not showing in my "Sent"
mail so I sent it again. But since it apparently did send, you can
interpret the 2nd as "two thumbs up!". :)

Re: [PATCH v3 00/17] hw/block/nvme: multiple namespaces support
Posted by Klaus Jensen 3 years, 6 months ago
On Sep 22 10:45, Klaus Jensen wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
> 
> This is the next round of my patches for the nvme device.
> 
> This includes a bit of cleanup and two new features:
> 
>   * support for scatter/gather lists
> 
>   * multiple namespaces support through a new nvme-ns device
> 
> Finally, the series wraps up with changing the PCI vendor and device ID to get
> rid of the internal Intel id and as a side-effect get rid of some Linux kernel
> quirks that no longer applies.
> 
> "pci: pass along the return value of dma_memory_rw" has already been posted by
> Philippe in another series, but since it is not applied yet, I am including it
> here.
> 
> Changes for v3
> ~~~~~~~~~~~~~~
> 
>   * hw/block/nvme: handle dma errors
>     Do not retry DMA, just set Controller Fatal Status (CFS). This causes
>     the Linux kernel to most likely disable the controller when running the
>     blktests block/011 test case, which causes some havoc when running
>     blktests, but I have submitted a patch for blktests to fix this. (Keith)
> 
>   * hw/block/nvme: refactor aio submission
>     Dropped the unneeded nvme_req_is_write function. (Keith)
> 
>   * Added R-b's from Keith and Philippe.
> 
> Changes for v2
> ~~~~~~~~~~~~~~
> 
>   * Added a new patch ("hw/block/nvme: fix typo in trace event") that does what
>     it says on the tin.
> 
>   * Dropped the "hw/block/nvme: support multiple parallel aios per request"
>     patch (Keith).
> 
>   * hw/block/nvme: add symbolic command name to trace events
>     Changed to single quote (Philippe)
> 
>   * hw/block/nvme: default request status to success
>     Commit message typo fixed (Philippe)
> 
>   * hw/block/nvme: change controller pci id
>     Do NOT bump the device id for the legacy Intel id (David)
> 
> Gollu Appalanaidu (1):
>   hw/block/nvme: add support for sgl bit bucket descriptor
> 
> Klaus Jensen (16):
>   hw/block/nvme: fix typo in trace event
>   pci: pass along the return value of dma_memory_rw
>   hw/block/nvme: handle dma errors
>   hw/block/nvme: commonize nvme_rw error handling
>   hw/block/nvme: alignment style fixes
>   hw/block/nvme: add a lba to bytes helper
>   hw/block/nvme: fix endian conversion
>   hw/block/nvme: add symbolic command name to trace events
>   hw/block/nvme: refactor aio submission
>   hw/block/nvme: default request status to success
>   hw/block/nvme: harden cmb access
>   hw/block/nvme: add support for scatter gather lists
>   hw/block/nvme: refactor identify active namespace id list
>   hw/block/nvme: support multiple namespaces
>   pci: allocate pci id for nvme
>   hw/block/nvme: change controller pci id
> 
>  docs/specs/nvme.txt    |  23 ++
>  docs/specs/pci-ids.txt |   1 +
>  hw/block/nvme-ns.h     |  74 ++++
>  hw/block/nvme.h        |  83 +++-
>  include/block/nvme.h   |   6 +-
>  include/hw/pci/pci.h   |   4 +-
>  hw/block/nvme-ns.c     | 167 ++++++++
>  hw/block/nvme.c        | 848 ++++++++++++++++++++++++++++++-----------
>  hw/core/machine.c      |   1 +
>  MAINTAINERS            |   1 +
>  hw/block/meson.build   |   2 +-
>  hw/block/trace-events  |  23 +-
>  12 files changed, 978 insertions(+), 255 deletions(-)
>  create mode 100644 docs/specs/nvme.txt
>  create mode 100644 hw/block/nvme-ns.h
>  create mode 100644 hw/block/nvme-ns.c
> 
> -- 
> 2.28.0
> 

Pushed to nvme-next.

Thanks for the reviews everyone. I think I posted the first version of
this more than a year ago. This feels so good!