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
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 +--