lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 13 Jan 2017 18:27:48 +0000
From:   "Estrin, Alex" <alex.estrin@...el.com>
To:     Bart Van Assche <bart.vanassche@...disk.com>,
        Doug Ledford <dledford@...hat.com>
CC:     "linux-rdma@...r.kernel.org" <linux-rdma@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "Greg Kroah-Hartman" <gregkh@...uxfoundation.org>
Subject: RE: [PATCH v2 00/26] IB: Optimize DMA mapping

Hi Bart,

This series applied to 4.10-rc3 breaks hfi1 sdma engines.
[   34.712343] hfi1 0000:82:00.0: hfi1_0: SDMA (0) engine error: 0x21 state s50_HwHaltWait
[   34.722752] hfi1 0000:82:00.0: hfi1_0: SDMA (0) descq_head: 0 descq_tail: 3 freecnt: 2044 FLE 0
[   34.733933] hfi1 0000:82:00.0: hfi1_0: SDMA sdmadesc[0]: flags:--F- addr:0x00008808248c8000 gen:0 len:36 bytes
[   34.746595] hfi1 0000:82:00.0: hfi1_0:       desc0:0x80248808248c8000 desc1 0x0000000000000000
[   34.757218] hfi1 0000:82:00.0: hfi1_0:       aidx: 0 amode: 0 alen: 0
[   34.765448] hfi1 0000:82:00.0: hfi1_0: SDMA sdmadesc[1]: flags:---- addr:0x0000880829fd5000 gen:0 len:24 bytes
[   34.778184] hfi1 0000:82:00.0: hfi1_0:       desc0:0x0018880829fd5000 desc1 0x0000000000000000
[   34.788941] hfi1 0000:82:00.0: hfi1_0: SDMA sdmadesc[2]: flags:-H-L addr:0x0000880829fd5018 gen:0 len:440 bytes
[   34.801849] hfi1 0000:82:00.0: hfi1_0:       desc0:0x41b8880829fd5018 desc1 0x0000000000000001
...etc

BTW, what was the base for this series, as 19/26 did not apply cleanly to 4.10-rc3?

Thanks,
Alex.

> -----Original Message-----
> From: linux-rdma-owner@...r.kernel.org [mailto:linux-rdma-
> owner@...r.kernel.org] On Behalf Of Bart Van Assche
> Sent: Thursday, January 12, 2017 2:07 PM
> To: Doug Ledford <dledford@...hat.com>
> Cc: linux-rdma@...r.kernel.org; linux-kernel@...r.kernel.org; Greg Kroah-Hartman
> <gregkh@...uxfoundation.org>; Bart Van Assche <bart.vanassche@...disk.com>
> Subject: [PATCH v2 00/26] IB: Optimize DMA mapping
> 
> Hello Doug,
> 
> As you know there are two sets of DMA mapping operations in the Linux
> kernel:
> - One set of DMA mapping operations that is used by most drivers.
> - Another set of DMA mapping operations that is only used by the RDMA
>   drivers.
> Having two sets of DMA mapping operations is not only a source of
> confusion but also a source of unnecessary overhead. The DMA mapping
> operations are in the hot path so it is important that the overhead
> of these operations is as low as possible. Hence this patch series
> that converts the RDMA code to the standard DMA mapping API and
> thereby eliminates the if (dev->dma_ops) test from the hot path. An
> additional benefit is that the size of HW and SW drivers that do not
> use DMA is reduced by switching to dma_virt_ops.
> 
> The changes compared to version 1 of this patch series are:
> - Patch "Move dma_ops from archdata into struct device" has been
>   split into three patches.
> - Patch "treewide: Inline ib_dma_map_*() functions" has been split
>   into 15 patches (one per driver).
> - A patch has been added that builds dma_noop_ops only for the
>   architectures that need it.
> - The new dma_virt_ops is only built if it is used by a driver.
> - In these last 15 patches indentation has been adjusted to keep
>   the arguments aligned with the opening parenthesis.
> 
> Bart Van Assche (26):
>   treewide: Constify most dma_map_ops structures
>   treewide: Move dma_ops from struct dev_archdata into struct device
>   treewide: Consolidate set_dma_ops() implementations
>   treewide: Consolidate get_dma_ops() implementations
>   lib/dma-noop: Clarify a comment
>   lib/dma-noop: Only build dma_noop_ops for m32r and s390
>   lib/dma-virt: Add dma_virt_ops
>   IB/hf1: Remove DMA mapping code
>   IB/qib: Remove DMA mapping code
>   IB: Use dma_virt_ops instead of duplicating it
>   RDS: IB: Remove an unused structure member
>   IB: Convert ib_dma_*_coherent() argument type from u64 into dma_addr_t
>   IB/core: Inline ib_dma_map_*() functions
>   IB/mlx4: Inline ib_dma_map_*() functions
>   IB/mlx5: Inline ib_dma_map_*() functions
>   IB/IPoIB: Inline ib_dma_map_*() functions
>   IB/iser: Inline ib_dma_map_*() functions
>   IB/isert: Inline ib_dma_map_*() functions
>   IB/srp: Inline ib_dma_map_*() functions
>   IB/srpt: Inline ib_dma_map_*() functions
>   staging/lustre: Inline ib_dma_map_*() functions
>   nvme-rdma: Inline ib_dma_map_*() functions
>   net/9p: Inline ib_dma_map_*() functions
>   net/rds: Inline ib_dma_map_*() functions
>   xprtrdma: Inline ib_dma_map_*() functions
>   IB/core: Remove ib_dma_map_*() functions
> 
>  arch/alpha/include/asm/dma-mapping.h               |   4 +-
>  arch/alpha/kernel/pci-noop.c                       |   4 +-
>  arch/alpha/kernel/pci_iommu.c                      |   4 +-
>  arch/arc/include/asm/dma-mapping.h                 |   4 +-
>  arch/arc/mm/dma.c                                  |   2 +-
>  arch/arm/common/dmabounce.c                        |   2 +-
>  arch/arm/include/asm/device.h                      |   1 -
>  arch/arm/include/asm/dma-mapping.h                 |  20 +-
>  arch/arm/mm/dma-mapping.c                          |  22 +-
>  arch/arm/xen/mm.c                                  |   4 +-
>  arch/arm64/include/asm/device.h                    |   1 -
>  arch/arm64/include/asm/dma-mapping.h               |  12 +-
>  arch/arm64/mm/dma-mapping.c                        |  14 +-
>  arch/avr32/include/asm/dma-mapping.h               |   4 +-
>  arch/avr32/mm/dma-coherent.c                       |   2 +-
>  arch/blackfin/include/asm/dma-mapping.h            |   4 +-
>  arch/blackfin/kernel/dma-mapping.c                 |   2 +-
>  arch/c6x/include/asm/dma-mapping.h                 |   4 +-
>  arch/c6x/kernel/dma.c                              |   2 +-
>  arch/cris/arch-v32/drivers/pci/dma.c               |   2 +-
>  arch/cris/include/asm/dma-mapping.h                |   6 +-
>  arch/frv/include/asm/dma-mapping.h                 |   4 +-
>  arch/frv/mb93090-mb00/pci-dma-nommu.c              |   2 +-
>  arch/frv/mb93090-mb00/pci-dma.c                    |   2 +-
>  arch/h8300/include/asm/dma-mapping.h               |   4 +-
>  arch/h8300/kernel/dma.c                            |   2 +-
>  arch/hexagon/include/asm/dma-mapping.h             |   7 +-
>  arch/hexagon/kernel/dma.c                          |   4 +-
>  arch/ia64/hp/common/hwsw_iommu.c                   |   4 +-
>  arch/ia64/hp/common/sba_iommu.c                    |   4 +-
>  arch/ia64/include/asm/dma-mapping.h                |   7 +-
>  arch/ia64/include/asm/machvec.h                    |   4 +-
>  arch/ia64/kernel/dma-mapping.c                     |   4 +-
>  arch/ia64/kernel/pci-dma.c                         |  10 +-
>  arch/ia64/kernel/pci-swiotlb.c                     |   2 +-
>  arch/m32r/Kconfig                                  |   1 +
>  arch/m32r/include/asm/device.h                     |   1 -
>  arch/m32r/include/asm/dma-mapping.h                |   4 +-
>  arch/m68k/include/asm/dma-mapping.h                |   4 +-
>  arch/m68k/kernel/dma.c                             |   2 +-
>  arch/metag/include/asm/dma-mapping.h               |   4 +-
>  arch/metag/kernel/dma.c                            |   2 +-
>  arch/microblaze/include/asm/dma-mapping.h          |   4 +-
>  arch/microblaze/kernel/dma.c                       |   2 +-
>  arch/mips/cavium-octeon/dma-octeon.c               |   4 +-
>  arch/mips/include/asm/device.h                     |   5 -
>  arch/mips/include/asm/dma-mapping.h                |   9 +-
>  .../include/asm/mach-cavium-octeon/dma-coherence.h |   2 +-
>  arch/mips/include/asm/netlogic/common.h            |   2 +-
>  arch/mips/loongson64/common/dma-swiotlb.c          |   2 +-
>  arch/mips/mm/dma-default.c                         |   4 +-
>  arch/mips/netlogic/common/nlm-dma.c                |   2 +-
>  arch/mips/pci/pci-octeon.c                         |   2 +-
>  arch/mn10300/include/asm/dma-mapping.h             |   4 +-
>  arch/mn10300/mm/dma-alloc.c                        |   2 +-
>  arch/nios2/include/asm/dma-mapping.h               |   4 +-
>  arch/nios2/mm/dma-mapping.c                        |   2 +-
>  arch/openrisc/include/asm/dma-mapping.h            |   4 +-
>  arch/openrisc/kernel/dma.c                         |   2 +-
>  arch/parisc/include/asm/dma-mapping.h              |   8 +-
>  arch/parisc/kernel/drivers.c                       |   2 +-
>  arch/parisc/kernel/pci-dma.c                       |   4 +-
>  arch/powerpc/include/asm/device.h                  |   4 -
>  arch/powerpc/include/asm/dma-mapping.h             |  14 +-
>  arch/powerpc/include/asm/pci.h                     |   4 +-
>  arch/powerpc/include/asm/ps3.h                     |   2 +-
>  arch/powerpc/include/asm/swiotlb.h                 |   2 +-
>  arch/powerpc/kernel/dma-swiotlb.c                  |   2 +-
>  arch/powerpc/kernel/dma.c                          |   8 +-
>  arch/powerpc/kernel/pci-common.c                   |   6 +-
>  arch/powerpc/platforms/cell/iommu.c                |   6 +-
>  arch/powerpc/platforms/pasemi/iommu.c              |   2 +-
>  arch/powerpc/platforms/pasemi/setup.c              |   2 +-
>  arch/powerpc/platforms/powernv/npu-dma.c           |   2 +-
>  arch/powerpc/platforms/ps3/system-bus.c            |   8 +-
>  arch/powerpc/platforms/pseries/ibmebus.c           |   4 +-
>  arch/powerpc/platforms/pseries/vio.c               |   2 +-
>  arch/s390/Kconfig                                  |   1 +
>  arch/s390/include/asm/device.h                     |   1 -
>  arch/s390/include/asm/dma-mapping.h                |   6 +-
>  arch/s390/pci/pci.c                                |   2 +-
>  arch/s390/pci/pci_dma.c                            |   2 +-
>  arch/sh/include/asm/dma-mapping.h                  |   4 +-
>  arch/sh/kernel/dma-nommu.c                         |   2 +-
>  arch/sh/mm/consistent.c                            |   2 +-
>  arch/sparc/include/asm/dma-mapping.h               |  10 +-
>  arch/sparc/kernel/iommu.c                          |   4 +-
>  arch/sparc/kernel/ioport.c                         |   8 +-
>  arch/sparc/kernel/pci_sun4v.c                      |   2 +-
>  arch/tile/include/asm/device.h                     |   3 -
>  arch/tile/include/asm/dma-mapping.h                |  20 +-
>  arch/tile/kernel/pci-dma.c                         |  24 +-
>  arch/unicore32/include/asm/dma-mapping.h           |   4 +-
>  arch/unicore32/mm/dma-swiotlb.c                    |   2 +-
>  arch/x86/include/asm/device.h                      |   5 +-
>  arch/x86/include/asm/dma-mapping.h                 |  11 +-
>  arch/x86/include/asm/iommu.h                       |   2 +-
>  arch/x86/kernel/amd_gart_64.c                      |   2 +-
>  arch/x86/kernel/pci-calgary_64.c                   |   6 +-
>  arch/x86/kernel/pci-dma.c                          |   4 +-
>  arch/x86/kernel/pci-nommu.c                        |   2 +-
>  arch/x86/kernel/pci-swiotlb.c                      |   2 +-
>  arch/x86/pci/common.c                              |   2 +-
>  arch/x86/pci/sta2x11-fixup.c                       |  10 +-
>  arch/x86/xen/pci-swiotlb-xen.c                     |   2 +-
>  arch/xtensa/include/asm/device.h                   |   4 -
>  arch/xtensa/include/asm/dma-mapping.h              |   9 +-
>  arch/xtensa/kernel/pci-dma.c                       |   2 +-
>  drivers/infiniband/core/mad.c                      |  79 +++---
>  drivers/infiniband/core/rw.c                       |  30 +-
>  drivers/infiniband/core/umem.c                     |  13 +-
>  drivers/infiniband/core/umem_odp.c                 |  12 +-
>  drivers/infiniband/hw/hfi1/dma.c                   | 183 ------------
>  drivers/infiniband/hw/mlx4/cq.c                    |   8 +-
>  drivers/infiniband/hw/mlx4/mad.c                   |  79 +++---
>  drivers/infiniband/hw/mlx4/mr.c                    |   8 +-
>  drivers/infiniband/hw/mlx4/qp.c                    |  29 +-
>  drivers/infiniband/hw/mlx5/mr.c                    |  12 +-
>  drivers/infiniband/hw/qib/qib_dma.c                | 169 -----------
>  drivers/infiniband/hw/qib/qib_keys.c               |   5 +-
>  drivers/infiniband/sw/rdmavt/Kconfig               |   1 +
>  drivers/infiniband/sw/rdmavt/Makefile              |   2 +-
>  drivers/infiniband/sw/rdmavt/dma.c                 | 198 -------------
>  drivers/infiniband/sw/rdmavt/dma.h                 |  53 ----
>  drivers/infiniband/sw/rdmavt/mr.c                  |   8 +-
>  drivers/infiniband/sw/rdmavt/vt.c                  |   5 +-
>  drivers/infiniband/sw/rdmavt/vt.h                  |   1 -
>  drivers/infiniband/sw/rxe/Kconfig                  |   1 +
>  drivers/infiniband/sw/rxe/Makefile                 |   1 -
>  drivers/infiniband/sw/rxe/rxe_dma.c                | 183 ------------
>  drivers/infiniband/sw/rxe/rxe_loc.h                |   2 -
>  drivers/infiniband/sw/rxe/rxe_verbs.c              |   3 +-
>  drivers/infiniband/ulp/ipoib/ipoib_cm.c            |  34 ++-
>  drivers/infiniband/ulp/ipoib/ipoib_ib.c            |  42 +--
>  drivers/infiniband/ulp/iser/iscsi_iser.c           |  11 +-
>  drivers/infiniband/ulp/iser/iser_initiator.c       |  88 +++---
>  drivers/infiniband/ulp/iser/iser_memory.c          |  13 +-
>  drivers/infiniband/ulp/iser/iser_verbs.c           |   6 +-
>  drivers/infiniband/ulp/isert/ib_isert.c            | 120 ++++----
>  drivers/infiniband/ulp/srp/ib_srp.c                |  80 +++---
>  drivers/infiniband/ulp/srpt/ib_srpt.c              |  18 +-
>  drivers/iommu/amd_iommu.c                          |  10 +-
>  drivers/misc/mic/bus/mic_bus.c                     |   4 +-
>  drivers/misc/mic/bus/scif_bus.c                    |   4 +-
>  drivers/misc/mic/bus/scif_bus.h                    |   2 +-
>  drivers/misc/mic/bus/vop_bus.c                     |   2 +-
>  drivers/misc/mic/host/mic_boot.c                   |   4 +-
>  drivers/nvme/host/rdma.c                           |  35 +--
>  drivers/nvme/target/rdma.c                         |  32 +--
>  drivers/parisc/ccio-dma.c                          |   2 +-
>  drivers/parisc/sba_iommu.c                         |   2 +-
>  drivers/pci/host/vmd.c                             |   2 +-
>  .../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h    |  14 +-
>  include/linux/device.h                             |   1 +
>  include/linux/dma-mapping.h                        |  55 ++--
>  include/linux/mic_bus.h                            |   2 +-
>  include/rdma/ib_verbs.h                            | 310 ---------------------
>  include/xen/arm/hypervisor.h                       |   2 +-
>  lib/Kconfig                                        |  10 +
>  lib/Makefile                                       |   3 +-
>  lib/dma-noop.c                                     |   4 +-
>  lib/dma-virt.c                                     |  73 +++++
>  net/9p/trans_rdma.c                                |  24 +-
>  net/rds/ib.h                                       |  45 +--
>  net/rds/ib_cm.c                                    |  42 +--
>  net/rds/ib_fmr.c                                   |  10 +-
>  net/rds/ib_frmr.c                                  |  12 +-
>  net/rds/ib_mr.h                                    |   1 -
>  net/rds/ib_rdma.c                                  |  13 +-
>  net/rds/ib_recv.c                                  |  19 +-
>  net/rds/ib_send.c                                  |  50 ++--
>  net/sunrpc/xprtrdma/fmr_ops.c                      |  12 +-
>  net/sunrpc/xprtrdma/frwr_ops.c                     |  12 +-
>  net/sunrpc/xprtrdma/rpc_rdma.c                     |  28 +-
>  net/sunrpc/xprtrdma/svc_rdma_backchannel.c         |   7 +-
>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c            |  20 +-
>  net/sunrpc/xprtrdma/svc_rdma_sendto.c              |  26 +-
>  net/sunrpc/xprtrdma/svc_rdma_transport.c           |  17 +-
>  net/sunrpc/xprtrdma/verbs.c                        |  18 +-
>  179 files changed, 911 insertions(+), 2011 deletions(-)
>  delete mode 100644 drivers/infiniband/hw/hfi1/dma.c
>  delete mode 100644 drivers/infiniband/hw/qib/qib_dma.c
>  delete mode 100644 drivers/infiniband/sw/rdmavt/dma.c
>  delete mode 100644 drivers/infiniband/sw/rdmavt/dma.h
>  delete mode 100644 drivers/infiniband/sw/rxe/rxe_dma.c
>  create mode 100644 lib/dma-virt.c
> 
> --
> 2.11.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ