[PATCH v2 00/16] hw/block/nvme: dma handling and address mapping cleanup

Klaus Jensen posted 16 patches 3 years, 9 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch failed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200729220638.344477-1-its@irrelevant.dk
Maintainers: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>, Max Reitz <mreitz@redhat.com>, Keith Busch <kbusch@kernel.org>
block/nvme.c          |   4 +-
hw/block/nvme.c       | 506 +++++++++++++++++++++++++++---------------
hw/block/nvme.h       |   4 +-
hw/block/trace-events |   4 +
include/block/nvme.h  |   4 +-
5 files changed, 340 insertions(+), 182 deletions(-)
[PATCH v2 00/16] hw/block/nvme: dma handling and address mapping cleanup
Posted by Klaus Jensen 3 years, 9 months ago
From: Klaus Jensen <k.jensen@samsung.com>

This series consists of patches that refactors dma read/write and adds a
number of address mapping helper functions.

v2:
  * hw/block/nvme: add mapping helpers
    - Add an assert in case of out of bounds array access. (Maxim)

  * hw/block/nvme: remove redundant has_sg member
    - Split the fix for the missing qemu_iov_destroy into a fresh patch
      ("hw/block/nvme: destroy request iov before reuse"). (Minwoo)

  * hw/block/nvme: pass request along for tracing [DROPPED]
    - Dropped the patch and replaced it with a simple patch that just adds
      tracing to the nvme_map_prp function ("hw/block/nvme: add tracing to
      nvme_map_prp"). (Minwoo)

  * hw/block/nvme: add request mapping helper
    - Changed the name from nvme_map to nvme_map_dptr. (Minwoo, Maxim)

  * hw/block/nvme: add check for mdts
    - Don't touch the documentaiton for the cmb_size_mb and max_ioqpairs
      parameters in this patch. (Minwoo)

  * hw/block/nvme: refactor NvmeRequest clearing [DROPPED]
    - Keep NvmeRequest structure clearing as "before use". (Maxim)

  * hw/block/nvme: add a namespace reference in NvmeRequest
  * hw/block/nvme: remove NvmeCmd parameter
    - Squash these two patches together into "hw/block/nvme: add ns/cmd
      references in NvmeRequest".

  * hw/block/nvme: consolidate qsg/iov clearing
    - Move the qsg/iov destroys to a new nvme_req_exit function that is called
      after the cqe has been posted.

  * hw/block/nvme: remove explicit qsg/iov parameters
    - New patch. THe nvme_map_prp() function doesn't require the qsg and iov
      parameters since it can just get them from the passed NvmeRequest.

Based-on: <20200706061303.246057-1-its@irrelevant.dk>

Klaus Jensen (16):
  hw/block/nvme: memset preallocated requests structures
  hw/block/nvme: add mapping helpers
  hw/block/nvme: replace dma_acct with blk_acct equivalent
  hw/block/nvme: remove redundant has_sg member
  hw/block/nvme: destroy request iov before reuse
  hw/block/nvme: refactor dma read/write
  hw/block/nvme: add tracing to nvme_map_prp
  hw/block/nvme: add request mapping helper
  hw/block/nvme: verify validity of prp lists in the cmb
  hw/block/nvme: refactor request bounds checking
  hw/block/nvme: add check for mdts
  hw/block/nvme: be consistent about zeros vs zeroes
  hw/block/nvme: add ns/cmd references in NvmeRequest
  hw/block/nvme: consolidate qsg/iov clearing
  hw/block/nvme: use preallocated qsg/iov in nvme_dma_prp
  hw/block/nvme: remove explicit qsg/iov parameters

 block/nvme.c          |   4 +-
 hw/block/nvme.c       | 506 +++++++++++++++++++++++++++---------------
 hw/block/nvme.h       |   4 +-
 hw/block/trace-events |   4 +
 include/block/nvme.h  |   4 +-
 5 files changed, 340 insertions(+), 182 deletions(-)

-- 
2.27.0


Re: [PATCH v2 00/16] hw/block/nvme: dma handling and address mapping cleanup
Posted by Klaus Jensen 3 years, 8 months ago
On Jul 30 00:06, Klaus Jensen wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
> 
> This series consists of patches that refactors dma read/write and adds a
> number of address mapping helper functions.
> 
> v2:
>   * hw/block/nvme: add mapping helpers
>     - Add an assert in case of out of bounds array access. (Maxim)
> 
>   * hw/block/nvme: remove redundant has_sg member
>     - Split the fix for the missing qemu_iov_destroy into a fresh patch
>       ("hw/block/nvme: destroy request iov before reuse"). (Minwoo)
> 
>   * hw/block/nvme: pass request along for tracing [DROPPED]
>     - Dropped the patch and replaced it with a simple patch that just adds
>       tracing to the nvme_map_prp function ("hw/block/nvme: add tracing to
>       nvme_map_prp"). (Minwoo)
> 
>   * hw/block/nvme: add request mapping helper
>     - Changed the name from nvme_map to nvme_map_dptr. (Minwoo, Maxim)
> 
>   * hw/block/nvme: add check for mdts
>     - Don't touch the documentaiton for the cmb_size_mb and max_ioqpairs
>       parameters in this patch. (Minwoo)
> 
>   * hw/block/nvme: refactor NvmeRequest clearing [DROPPED]
>     - Keep NvmeRequest structure clearing as "before use". (Maxim)
> 
>   * hw/block/nvme: add a namespace reference in NvmeRequest
>   * hw/block/nvme: remove NvmeCmd parameter
>     - Squash these two patches together into "hw/block/nvme: add ns/cmd
>       references in NvmeRequest".
> 
>   * hw/block/nvme: consolidate qsg/iov clearing
>     - Move the qsg/iov destroys to a new nvme_req_exit function that is called
>       after the cqe has been posted.
> 
>   * hw/block/nvme: remove explicit qsg/iov parameters
>     - New patch. THe nvme_map_prp() function doesn't require the qsg and iov
>       parameters since it can just get them from the passed NvmeRequest.
> 
> Based-on: <20200706061303.246057-1-its@irrelevant.dk>
> 
> Klaus Jensen (16):
>   hw/block/nvme: memset preallocated requests structures
>   hw/block/nvme: add mapping helpers
>   hw/block/nvme: replace dma_acct with blk_acct equivalent
>   hw/block/nvme: remove redundant has_sg member
>   hw/block/nvme: destroy request iov before reuse
>   hw/block/nvme: refactor dma read/write
>   hw/block/nvme: add tracing to nvme_map_prp
>   hw/block/nvme: add request mapping helper
>   hw/block/nvme: verify validity of prp lists in the cmb
>   hw/block/nvme: refactor request bounds checking
>   hw/block/nvme: add check for mdts
>   hw/block/nvme: be consistent about zeros vs zeroes
>   hw/block/nvme: add ns/cmd references in NvmeRequest
>   hw/block/nvme: consolidate qsg/iov clearing
>   hw/block/nvme: use preallocated qsg/iov in nvme_dma_prp
>   hw/block/nvme: remove explicit qsg/iov parameters
> 
>  block/nvme.c          |   4 +-
>  hw/block/nvme.c       | 506 +++++++++++++++++++++++++++---------------
>  hw/block/nvme.h       |   4 +-
>  hw/block/trace-events |   4 +
>  include/block/nvme.h  |   4 +-
>  5 files changed, 340 insertions(+), 182 deletions(-)
> 
> -- 
> 2.27.0
> 
> 

Thanks for the reviews everyone.

Pushed to nvme-next.