mbox series

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

Message ID 20200922084533.1273962-1-its@irrelevant.dk
Headers show
Series hw/block/nvme: multiple namespaces support | expand

Message

Klaus Jensen Sept. 22, 2020, 8:45 a.m. UTC
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

Comments

Keith Busch Sept. 22, 2020, 3:31 p.m. UTC | #1
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>
Klaus Jensen Sept. 22, 2020, 5:27 p.m. UTC | #2
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 ;)
Keith Busch Sept. 22, 2020, 5:34 p.m. UTC | #3
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!". :)
Klaus Jensen Sept. 23, 2020, 7:19 p.m. UTC | #4
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!