Krzysztof Kozlowski
2016-Jun-30 08:23 UTC
[Nouveau] [PATCH v5 00/44] dma-mapping: Use unsigned long for dma_attrs
Hi, This is fifth approach for replacing struct dma_attrs with unsigned long. The main patch (1/44) doing the change is split into many subpatches for easier review (2-42). They should be squashed together when applying. Rebased on v4.7-rc5. For easier testing the patchset is available here: repo: https://github.com/krzk/linux branch: for-next/dma-attrs-const-v5 Changes since v4 ===============1. Collect some acks. Still need more. 2. Minor fixes pointed by Robin Murphy. 3. Applied changes from Bart Van Assche's comment. 4. More tests and builds (using https://www.kernel.org/pub/tools/crosstool/). Changes since v3 ===============1. Collect some acks. 2. Drop wrong patch 1/45 ("powerpc: dma-mapping: Don't hard-code the value of DMA_ATTR_WEAK_ORDERING"). 3. Minor fix pointed out by Michael Ellerman. 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 (44): 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 next to the 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 | 66 +++++------ 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 | 28 ++--- 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(+), 789 deletions(-) delete mode 100644 include/linux/dma-attrs.h -- 1.9.1
Daniel Vetter
2016-Jul-12 12:16 UTC
[Nouveau] [PATCH v5 00/44] dma-mapping: Use unsigned long for dma_attrs
On Thu, Jun 30, 2016 at 10:23:39AM +0200, Krzysztof Kozlowski wrote:> Hi, > > > This is fifth approach for replacing struct dma_attrs with unsigned > long. > > The main patch (1/44) doing the change is split into many subpatches > for easier review (2-42). They should be squashed together when > applying.For all the drm driver patches: Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch> Should I pull these in through drm-misc, or do you prefer to merge them through a special topic branch (with everything else) instead on your own? -Daniel> > > Rebased on v4.7-rc5. > > For easier testing the patchset is available here: > repo: https://github.com/krzk/linux > branch: for-next/dma-attrs-const-v5 > > > Changes since v4 > ===============> 1. Collect some acks. Still need more. > 2. Minor fixes pointed by Robin Murphy. > 3. Applied changes from Bart Van Assche's comment. > 4. More tests and builds (using https://www.kernel.org/pub/tools/crosstool/). > > > Changes since v3 > ===============> 1. Collect some acks. > 2. Drop wrong patch 1/45 ("powerpc: dma-mapping: Don't hard-code > the value of DMA_ATTR_WEAK_ORDERING"). > 3. Minor fix pointed out by Michael Ellerman. > > > 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 (44): > 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 next to the 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 | 66 +++++------ > 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 | 28 ++--- > 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(+), 789 deletions(-) > delete mode 100644 include/linux/dma-attrs.h > > -- > 1.9.1 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel-- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
Krzysztof Kozlowski
2016-Jul-12 12:19 UTC
[Nouveau] [PATCH v5 00/44] dma-mapping: Use unsigned long for dma_attrs
On 07/12/2016 02:16 PM, Daniel Vetter wrote:> On Thu, Jun 30, 2016 at 10:23:39AM +0200, Krzysztof Kozlowski wrote: >> Hi, >> >> >> This is fifth approach for replacing struct dma_attrs with unsigned >> long. >> >> The main patch (1/44) doing the change is split into many subpatches >> for easier review (2-42). They should be squashed together when >> applying. > > For all the drm driver patches: > > Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch> > > Should I pull these in through drm-misc, or do you prefer to merge them > through a special topic branch (with everything else) instead on your own? > -DanielThanks. I saw today that Andrew Morton applied the patchset so I think he will handle it. Best regards, Krzysztof
Seemingly Similar Threads
- [PATCH v6 00/46] dma-mapping: Use unsigned long for dma_attrs
- [PATCH v4 00/44] dma-mapping: Use unsigned long for dma_attrs
- [PATCH v5 00/44] dma-mapping: Use unsigned long for dma_attrs
- [RFC v3 19/45] [media] dma-mapping: Use unsigned long for dma_attrs
- [RFC v3 00/45] dma-mapping: Use unsigned long for dma_attrs