linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [RFC v3 00/45] dma-mapping: Use unsigned long for dma_attrs
@ 2016-06-02 15:39 Krzysztof Kozlowski
  2016-06-02 15:39 ` [RFC v3 01/45] powerpc: dma-mapping: Don't hard-code the value of DMA_ATTR_WEAK_ORDERING Krzysztof Kozlowski
                   ` (44 more replies)
  0 siblings, 45 replies; 56+ messages in thread
From: Krzysztof Kozlowski @ 2016-06-02 15:39 UTC (permalink / raw)
  To: Richard Henderson, Ivan Kokshaysky, Matt Turner, Vineet Gupta,
	Russell King, Stefano Stabellini, Catalin Marinas, Will Deacon,
	Haavard Skinnemoen, Hans-Christian Egtvedt, Steven Miao,
	Mark Salter, Aurelien Jacquiot, Mikael Starvik, Jesper Nilsson,
	Yoshinori Sato, Richard Kuo, Tony Luck, Fenghua Yu,
	Konrad Rzeszutek Wilk, Geert Uytterhoeven, James Hogan,
	Michal Simek, Ralf Baechle, David Howells, Ley Foon Tan,
	Jonas Bonn, James E.J. Bottomley, Helge Deller,
	Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
	Arnd Bergmann, Olof Johansson, Geoff Levand, Martin Schwidefsky,
	Guan Xuetao, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Boris Ostrovsky, David Vrabel, Juergen Gross, Muli Ben-Yehuda,
	Bjorn Helgaas, David Airlie, Joerg Roedel, David Woodhouse,
	Andrew Morton, linux-doc, linux-kernel, linux-alpha,
	linux-snps-arc, linux-arm-kernel, xen-devel, adi-buildroot-devel,
	linux-c6x-dev, linux-cris-kernel, uclinux-h8-devel,
	linux-hexagon, linux-ia64, linux-m68k, linux-metag, linux-mips,
	linux-am33-list, nios2-dev, linux-parisc, linuxppc-dev,
	linux-s390, linux-sh, sparclinux, discuss, linux-pci,
	linux-xtensa, dri-devel, linux-samsung-soc, linux-mediatek,
	linux-arm-msm, freedreno, nouveau, linux-rockchip, linux-rdma,
	iommu, linux-media, linux-omap, linux-fbdev
  Cc: hch, Krzysztof Kozlowski, Bartlomiej Zolnierkiewicz

Hi,


This is third approach (complete this time) for replacing struct
dma_attrs with unsigned long.

The main patch (2/45) doing the change is split into many subpatches
for easier review (3-43).  They should be squashed together when
applying.


*Important:* Patchset is *only* build tested on allyesconfigs: ARM,
ARM64, i386, x86_64 and powerpc. Please provide reviewes and tests
for other platforms.

Rebased on next-20160602.

For easier testing the patchset is available here:
repo:   https://github.com/krzk/linux
branch: for-next/dma-attrs-const-v3


I didn't CC all the maintainers... the list is too big.

Changes since v2
================
1. Follow Christoph Hellwig's comments (don't use BIT add
   documentation, remove dma_get_attr).


Rationale
=========
The dma-mapping core and the implementations do not change the
DMA attributes passed by pointer.  Thus the pointer can point to const
data.  However the attributes do not have to be a bitfield. Instead
unsigned long will do fine:

1. This is just simpler.  Both in terms of reading the code and setting
   attributes.  Instead of initializing local attributes on the stack
   and passing pointer to it to dma_set_attr(), just set the bits.

2. It brings safeness and checking for const correctness because the
   attributes are passed by value.


Best regards,
Krzysztof


Krzysztof Kozlowski (45):
  powerpc: dma-mapping: Don't hard-code the value of
    DMA_ATTR_WEAK_ORDERING
  dma-mapping: Use unsigned long for dma_attrs
  alpha: dma-mapping: Use unsigned long for dma_attrs
  arc: dma-mapping: Use unsigned long for dma_attrs
  ARM: dma-mapping: Use unsigned long for dma_attrs
  arm64: dma-mapping: Use unsigned long for dma_attrs
  avr32: dma-mapping: Use unsigned long for dma_attrs
  blackfin: dma-mapping: Use unsigned long for dma_attrs
  c6x: dma-mapping: Use unsigned long for dma_attrs
  cris: dma-mapping: Use unsigned long for dma_attrs
  frv: dma-mapping: Use unsigned long for dma_attrs
  drm/exynos: dma-mapping: Use unsigned long for dma_attrs
  drm/mediatek: dma-mapping: Use unsigned long for dma_attrs
  drm/msm: dma-mapping: Use unsigned long for dma_attrs
  drm/nouveau: dma-mapping: Use unsigned long for dma_attrs
  drm/rockship: dma-mapping: Use unsigned long for dma_attrs
  infiniband: dma-mapping: Use unsigned long for dma_attrs
  iommu: dma-mapping: Use unsigned long for dma_attrs
  [media] dma-mapping: Use unsigned long for dma_attrs
  xen: dma-mapping: Use unsigned long for dma_attrs
  swiotlb: dma-mapping: Use unsigned long for dma_attrs
  powerpc: dma-mapping: Use unsigned long for dma_attrs
  video: dma-mapping: Use unsigned long for dma_attrs
  x86: dma-mapping: Use unsigned long for dma_attrs
  iommu: intel: dma-mapping: Use unsigned long for dma_attrs
  h8300: dma-mapping: Use unsigned long for dma_attrs
  hexagon: dma-mapping: Use unsigned long for dma_attrs
  ia64: dma-mapping: Use unsigned long for dma_attrs
  m68k: dma-mapping: Use unsigned long for dma_attrs
  metag: dma-mapping: Use unsigned long for dma_attrs
  microblaze: dma-mapping: Use unsigned long for dma_attrs
  mips: dma-mapping: Use unsigned long for dma_attrs
  mn10300: dma-mapping: Use unsigned long for dma_attrs
  nios2: dma-mapping: Use unsigned long for dma_attrs
  openrisc: dma-mapping: Use unsigned long for dma_attrs
  parisc: dma-mapping: Use unsigned long for dma_attrs
  misc: mic: dma-mapping: Use unsigned long for dma_attrs
  s390: dma-mapping: Use unsigned long for dma_attrs
  sh: dma-mapping: Use unsigned long for dma_attrs
  sparc: dma-mapping: Use unsigned long for dma_attrs
  tile: dma-mapping: Use unsigned long for dma_attrs
  unicore32: dma-mapping: Use unsigned long for dma_attrs
  xtensa: dma-mapping: Use unsigned long for dma_attrs
  dma-mapping: Remove dma_get_attr
  dma-mapping: Document the DMA attributes right in declaration

 Documentation/DMA-API.txt                          |  33 +++---
 Documentation/DMA-attributes.txt                   |   2 +-
 arch/alpha/include/asm/dma-mapping.h               |   2 -
 arch/alpha/kernel/pci-noop.c                       |   2 +-
 arch/alpha/kernel/pci_iommu.c                      |  12 +-
 arch/arc/mm/dma.c                                  |  12 +-
 arch/arm/common/dmabounce.c                        |   4 +-
 arch/arm/include/asm/dma-mapping.h                 |  13 +--
 arch/arm/include/asm/xen/page-coherent.h           |  16 +--
 arch/arm/mm/dma-mapping.c                          | 117 +++++++++----------
 arch/arm/xen/mm.c                                  |   8 +-
 arch/arm64/mm/dma-mapping.c                        |  67 +++++------
 arch/avr32/mm/dma-coherent.c                       |  12 +-
 arch/blackfin/kernel/dma-mapping.c                 |   8 +-
 arch/c6x/include/asm/dma-mapping.h                 |   4 +-
 arch/c6x/kernel/dma.c                              |   9 +-
 arch/c6x/mm/dma-coherent.c                         |   4 +-
 arch/cris/arch-v32/drivers/pci/dma.c               |   9 +-
 arch/frv/mb93090-mb00/pci-dma-nommu.c              |   8 +-
 arch/frv/mb93090-mb00/pci-dma.c                    |   9 +-
 arch/h8300/kernel/dma.c                            |   8 +-
 arch/hexagon/include/asm/dma-mapping.h             |   1 -
 arch/hexagon/kernel/dma.c                          |   8 +-
 arch/ia64/hp/common/sba_iommu.c                    |  22 ++--
 arch/ia64/include/asm/machvec.h                    |   1 -
 arch/ia64/kernel/pci-swiotlb.c                     |   4 +-
 arch/ia64/sn/pci/pci_dma.c                         |  22 ++--
 arch/m68k/kernel/dma.c                             |  12 +-
 arch/metag/kernel/dma.c                            |  16 +--
 arch/microblaze/include/asm/dma-mapping.h          |   1 -
 arch/microblaze/kernel/dma.c                       |  12 +-
 arch/mips/cavium-octeon/dma-octeon.c               |   8 +-
 arch/mips/loongson64/common/dma-swiotlb.c          |  10 +-
 arch/mips/mm/dma-default.c                         |  20 ++--
 arch/mips/netlogic/common/nlm-dma.c                |   4 +-
 arch/mn10300/mm/dma-alloc.c                        |   8 +-
 arch/nios2/mm/dma-mapping.c                        |  12 +-
 arch/openrisc/kernel/dma.c                         |  21 ++--
 arch/parisc/kernel/pci-dma.c                       |  18 +--
 arch/powerpc/include/asm/dma-mapping.h             |   7 +-
 arch/powerpc/include/asm/iommu.h                   |  10 +-
 arch/powerpc/kernel/dma-iommu.c                    |  12 +-
 arch/powerpc/kernel/dma.c                          |  18 +--
 arch/powerpc/kernel/ibmebus.c                      |  12 +-
 arch/powerpc/kernel/iommu.c                        |  12 +-
 arch/powerpc/kernel/vio.c                          |  12 +-
 arch/powerpc/platforms/cell/iommu.c                |  26 ++---
 arch/powerpc/platforms/pasemi/iommu.c              |   2 +-
 arch/powerpc/platforms/powernv/npu-dma.c           |   8 +-
 arch/powerpc/platforms/powernv/pci-ioda.c          |   4 +-
 arch/powerpc/platforms/powernv/pci.c               |   2 +-
 arch/powerpc/platforms/powernv/pci.h               |   2 +-
 arch/powerpc/platforms/ps3/system-bus.c            |  18 +--
 arch/powerpc/platforms/pseries/iommu.c             |   6 +-
 arch/powerpc/sysdev/dart_iommu.c                   |   2 +-
 arch/s390/include/asm/dma-mapping.h                |   1 -
 arch/s390/pci/pci_dma.c                            |  23 ++--
 arch/sh/include/asm/dma-mapping.h                  |   4 +-
 arch/sh/kernel/dma-nommu.c                         |   4 +-
 arch/sh/mm/consistent.c                            |   4 +-
 arch/sparc/kernel/iommu.c                          |  12 +-
 arch/sparc/kernel/ioport.c                         |  24 ++--
 arch/sparc/kernel/pci_sun4v.c                      |  12 +-
 arch/tile/kernel/pci-dma.c                         |  28 ++---
 arch/unicore32/mm/dma-swiotlb.c                    |   4 +-
 arch/x86/include/asm/dma-mapping.h                 |   5 +-
 arch/x86/include/asm/swiotlb.h                     |   4 +-
 arch/x86/include/asm/xen/page-coherent.h           |   9 +-
 arch/x86/kernel/amd_gart_64.c                      |  20 ++--
 arch/x86/kernel/pci-calgary_64.c                   |  14 +--
 arch/x86/kernel/pci-dma.c                          |   4 +-
 arch/x86/kernel/pci-nommu.c                        |   4 +-
 arch/x86/kernel/pci-swiotlb.c                      |   4 +-
 arch/x86/pci/sta2x11-fixup.c                       |   2 +-
 arch/x86/pci/vmd.c                                 |  16 +--
 arch/xtensa/kernel/pci-dma.c                       |  12 +-
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c          |   2 +-
 drivers/gpu/drm/exynos/exynos_drm_g2d.c            |  12 +-
 drivers/gpu/drm/exynos/exynos_drm_gem.c            |  20 ++--
 drivers/gpu/drm/exynos/exynos_drm_gem.h            |   2 +-
 drivers/gpu/drm/mediatek/mtk_drm_gem.c             |  13 +--
 drivers/gpu/drm/mediatek/mtk_drm_gem.h             |   2 +-
 drivers/gpu/drm/msm/msm_drv.c                      |  13 +--
 .../gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c    |  13 +--
 drivers/gpu/drm/rockchip/rockchip_drm_gem.c        |  17 ++-
 drivers/gpu/drm/rockchip/rockchip_drm_gem.h        |   2 +-
 drivers/infiniband/core/umem.c                     |   7 +-
 drivers/iommu/amd_iommu.c                          |  12 +-
 drivers/iommu/dma-iommu.c                          |   8 +-
 drivers/iommu/intel-iommu.c                        |  12 +-
 drivers/media/platform/sti/bdisp/bdisp-hw.c        |  26 ++---
 drivers/media/v4l2-core/videobuf2-dma-contig.c     |  30 ++---
 drivers/media/v4l2-core/videobuf2-dma-sg.c         |  19 +--
 drivers/misc/mic/host/mic_boot.c                   |  20 ++--
 drivers/parisc/ccio-dma.c                          |  16 +--
 drivers/parisc/sba_iommu.c                         |  16 +--
 drivers/video/fbdev/omap2/omapfb/omapfb-main.c     |  12 +-
 drivers/video/fbdev/omap2/omapfb/omapfb.h          |   3 +-
 drivers/xen/swiotlb-xen.c                          |  14 +--
 include/linux/dma-attrs.h                          |  71 ------------
 include/linux/dma-iommu.h                          |   6 +-
 include/linux/dma-mapping.h                        | 128 ++++++++++++++-------
 include/linux/swiotlb.h                            |  10 +-
 include/media/videobuf2-dma-contig.h               |   7 +-
 include/rdma/ib_verbs.h                            |   8 +-
 include/xen/swiotlb-xen.h                          |  12 +-
 lib/dma-noop.c                                     |   9 +-
 lib/swiotlb.c                                      |  13 ++-
 108 files changed, 689 insertions(+), 788 deletions(-)
 delete mode 100644 include/linux/dma-attrs.h

-- 
1.9.1

^ permalink raw reply	[flat|nested] 56+ messages in thread

end of thread, other threads:[~2016-06-07  9:13 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-02 15:39 [RFC v3 00/45] dma-mapping: Use unsigned long for dma_attrs Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 01/45] powerpc: dma-mapping: Don't hard-code the value of DMA_ATTR_WEAK_ORDERING Krzysztof Kozlowski
2016-06-03  7:55   ` Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 02/45] dma-mapping: Use unsigned long for dma_attrs Krzysztof Kozlowski
2016-06-03  7:17   ` Geert Uytterhoeven
2016-06-03  7:50     ` Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 03/45] alpha: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 04/45] arc: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 05/45] ARM: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 06/45] arm64: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 07/45] avr32: " Krzysztof Kozlowski
2016-06-06  6:43   ` Hans-Christian Noren Egtvedt
2016-06-02 15:39 ` [RFC v3 08/45] blackfin: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 09/45] c6x: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 10/45] cris: " Krzysztof Kozlowski
2016-06-03  7:52   ` Jesper Nilsson
2016-06-02 15:39 ` [RFC v3 11/45] frv: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 12/45] drm/exynos: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 13/45] drm/mediatek: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 14/45] drm/msm: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 15/45] drm/nouveau: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 16/45] drm/rockship: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 17/45] infiniband: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 18/45] iommu: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 19/45] [media] " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 20/45] xen: " Krzysztof Kozlowski
2016-06-07  9:06   ` David Vrabel
2016-06-02 15:39 ` [RFC v3 21/45] swiotlb: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 22/45] powerpc: " Krzysztof Kozlowski
2016-06-03 11:56   ` Michael Ellerman
2016-06-03 12:39     ` Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 23/45] video: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 24/45] x86: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 25/45] iommu: intel: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 26/45] h8300: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 27/45] hexagon: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 28/45] ia64: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 29/45] m68k: " Krzysztof Kozlowski
2016-06-03  7:18   ` Geert Uytterhoeven
2016-06-02 15:39 ` [RFC v3 30/45] metag: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 31/45] microblaze: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 32/45] mips: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 33/45] mn10300: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 34/45] nios2: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 35/45] openrisc: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 36/45] parisc: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 37/45] misc: mic: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 38/45] s390: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 39/45] sh: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 40/45] sparc: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 41/45] tile: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 42/45] unicore32: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 43/45] xtensa: " Krzysztof Kozlowski
2016-06-02 15:39 ` [RFC v3 44/45] dma-mapping: Remove dma_get_attr Krzysztof Kozlowski
2016-06-06  6:45   ` Hans-Christian Noren Egtvedt
2016-06-02 15:39 ` [RFC v3 45/45] dma-mapping: Document the DMA attributes right in declaration Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).