From: Michael Ellerman <mpe@ellerman.id.au>
To: Christoph Hellwig <hch@lst.de>,
Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
iommu@lists.linux-foundation.org,
Russell King <linux@armlinux.org.uk>
Cc: linuxppc-dev@lists.ozlabs.org, linux-mips@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/3] dma-direct: unify the dma_capable definitions
Date: Thu, 14 Nov 2019 19:47:09 +1100 [thread overview]
Message-ID: <875zjm26b6.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20191113073539.9660-2-hch@lst.de>
Christoph Hellwig <hch@lst.de> writes:
> Currently each architectures that wants to override dma_to_phys and
> phys_to_dma also has to provide dma_capable. But there isn't really
> any good reason for that. powerpc and mips just have copies of the
> generic one minus the latests fix, and the arm one was the inspiration
> for said fix, but misses the bus_dma_mask handling.
> Make all architectures use the generic version instead.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> arch/arm/include/asm/dma-direct.h | 19 -------------------
> arch/mips/include/asm/dma-direct.h | 8 --------
> arch/powerpc/include/asm/dma-direct.h | 9 ---------
Looks OK to me.
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
cheers
> diff --git a/arch/arm/include/asm/dma-direct.h b/arch/arm/include/asm/dma-direct.h
> index b67e5fc1fe43..7c3001a6a775 100644
> --- a/arch/arm/include/asm/dma-direct.h
> +++ b/arch/arm/include/asm/dma-direct.h
> @@ -14,23 +14,4 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
> return __pfn_to_phys(dma_to_pfn(dev, dev_addr)) + offset;
> }
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - u64 limit, mask;
> -
> - if (!dev->dma_mask)
> - return 0;
> -
> - mask = *dev->dma_mask;
> -
> - limit = (mask + 1) & ~mask;
> - if (limit && size > limit)
> - return 0;
> -
> - if ((addr | (addr + size - 1)) & ~mask)
> - return 0;
> -
> - return 1;
> -}
> -
> #endif /* ASM_ARM_DMA_DIRECT_H */
> diff --git a/arch/mips/include/asm/dma-direct.h b/arch/mips/include/asm/dma-direct.h
> index b5c240806e1b..14e352651ce9 100644
> --- a/arch/mips/include/asm/dma-direct.h
> +++ b/arch/mips/include/asm/dma-direct.h
> @@ -2,14 +2,6 @@
> #ifndef _MIPS_DMA_DIRECT_H
> #define _MIPS_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <= *dev->dma_mask;
> -}
> -
> dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr);
> phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr);
>
> diff --git a/arch/powerpc/include/asm/dma-direct.h b/arch/powerpc/include/asm/dma-direct.h
> index a2912b47102c..e29e8a236b8d 100644
> --- a/arch/powerpc/include/asm/dma-direct.h
> +++ b/arch/powerpc/include/asm/dma-direct.h
> @@ -2,15 +2,6 @@
> #ifndef ASM_POWERPC_DMA_DIRECT_H
> #define ASM_POWERPC_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <=
> - min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> -}
> -
> static inline dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
> {
> if (!dev)
> diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
> index 6db863c3eb93..991f8aa2676e 100644
> --- a/include/linux/dma-direct.h
> +++ b/include/linux/dma-direct.h
> @@ -24,6 +24,7 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
>
> return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> }
> +#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> {
> @@ -38,7 +39,6 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
>
> return end <= min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> }
> -#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> #ifdef CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED
> bool force_dma_unencrypted(struct device *dev);
> --
> 2.20.1
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Christoph Hellwig <hch@lst.de>,
Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
iommu@lists.linux-foundation.org,
Russell King <linux@armlinux.org.uk>
Cc: linuxppc-dev@lists.ozlabs.org, linux-mips@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/3] dma-direct: unify the dma_capable definitions
Date: Thu, 14 Nov 2019 19:47:09 +1100 [thread overview]
Message-ID: <875zjm26b6.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20191113073539.9660-2-hch@lst.de>
Christoph Hellwig <hch@lst.de> writes:
> Currently each architectures that wants to override dma_to_phys and
> phys_to_dma also has to provide dma_capable. But there isn't really
> any good reason for that. powerpc and mips just have copies of the
> generic one minus the latests fix, and the arm one was the inspiration
> for said fix, but misses the bus_dma_mask handling.
> Make all architectures use the generic version instead.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> arch/arm/include/asm/dma-direct.h | 19 -------------------
> arch/mips/include/asm/dma-direct.h | 8 --------
> arch/powerpc/include/asm/dma-direct.h | 9 ---------
Looks OK to me.
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
cheers
> diff --git a/arch/arm/include/asm/dma-direct.h b/arch/arm/include/asm/dma-direct.h
> index b67e5fc1fe43..7c3001a6a775 100644
> --- a/arch/arm/include/asm/dma-direct.h
> +++ b/arch/arm/include/asm/dma-direct.h
> @@ -14,23 +14,4 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
> return __pfn_to_phys(dma_to_pfn(dev, dev_addr)) + offset;
> }
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - u64 limit, mask;
> -
> - if (!dev->dma_mask)
> - return 0;
> -
> - mask = *dev->dma_mask;
> -
> - limit = (mask + 1) & ~mask;
> - if (limit && size > limit)
> - return 0;
> -
> - if ((addr | (addr + size - 1)) & ~mask)
> - return 0;
> -
> - return 1;
> -}
> -
> #endif /* ASM_ARM_DMA_DIRECT_H */
> diff --git a/arch/mips/include/asm/dma-direct.h b/arch/mips/include/asm/dma-direct.h
> index b5c240806e1b..14e352651ce9 100644
> --- a/arch/mips/include/asm/dma-direct.h
> +++ b/arch/mips/include/asm/dma-direct.h
> @@ -2,14 +2,6 @@
> #ifndef _MIPS_DMA_DIRECT_H
> #define _MIPS_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <= *dev->dma_mask;
> -}
> -
> dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr);
> phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr);
>
> diff --git a/arch/powerpc/include/asm/dma-direct.h b/arch/powerpc/include/asm/dma-direct.h
> index a2912b47102c..e29e8a236b8d 100644
> --- a/arch/powerpc/include/asm/dma-direct.h
> +++ b/arch/powerpc/include/asm/dma-direct.h
> @@ -2,15 +2,6 @@
> #ifndef ASM_POWERPC_DMA_DIRECT_H
> #define ASM_POWERPC_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <=
> - min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> -}
> -
> static inline dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
> {
> if (!dev)
> diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
> index 6db863c3eb93..991f8aa2676e 100644
> --- a/include/linux/dma-direct.h
> +++ b/include/linux/dma-direct.h
> @@ -24,6 +24,7 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
>
> return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> }
> +#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> {
> @@ -38,7 +39,6 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
>
> return end <= min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> }
> -#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> #ifdef CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED
> bool force_dma_unencrypted(struct device *dev);
> --
> 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Christoph Hellwig <hch@lst.de>,
Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
iommu@lists.linux-foundation.org,
Russell King <linux@armlinux.org.uk>
Cc: linuxppc-dev@lists.ozlabs.org, linux-mips@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/3] dma-direct: unify the dma_capable definitions
Date: Thu, 14 Nov 2019 19:47:09 +1100 [thread overview]
Message-ID: <875zjm26b6.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20191113073539.9660-2-hch@lst.de>
Christoph Hellwig <hch@lst.de> writes:
> Currently each architectures that wants to override dma_to_phys and
> phys_to_dma also has to provide dma_capable. But there isn't really
> any good reason for that. powerpc and mips just have copies of the
> generic one minus the latests fix, and the arm one was the inspiration
> for said fix, but misses the bus_dma_mask handling.
> Make all architectures use the generic version instead.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> arch/arm/include/asm/dma-direct.h | 19 -------------------
> arch/mips/include/asm/dma-direct.h | 8 --------
> arch/powerpc/include/asm/dma-direct.h | 9 ---------
Looks OK to me.
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
cheers
> diff --git a/arch/arm/include/asm/dma-direct.h b/arch/arm/include/asm/dma-direct.h
> index b67e5fc1fe43..7c3001a6a775 100644
> --- a/arch/arm/include/asm/dma-direct.h
> +++ b/arch/arm/include/asm/dma-direct.h
> @@ -14,23 +14,4 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
> return __pfn_to_phys(dma_to_pfn(dev, dev_addr)) + offset;
> }
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - u64 limit, mask;
> -
> - if (!dev->dma_mask)
> - return 0;
> -
> - mask = *dev->dma_mask;
> -
> - limit = (mask + 1) & ~mask;
> - if (limit && size > limit)
> - return 0;
> -
> - if ((addr | (addr + size - 1)) & ~mask)
> - return 0;
> -
> - return 1;
> -}
> -
> #endif /* ASM_ARM_DMA_DIRECT_H */
> diff --git a/arch/mips/include/asm/dma-direct.h b/arch/mips/include/asm/dma-direct.h
> index b5c240806e1b..14e352651ce9 100644
> --- a/arch/mips/include/asm/dma-direct.h
> +++ b/arch/mips/include/asm/dma-direct.h
> @@ -2,14 +2,6 @@
> #ifndef _MIPS_DMA_DIRECT_H
> #define _MIPS_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <= *dev->dma_mask;
> -}
> -
> dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr);
> phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr);
>
> diff --git a/arch/powerpc/include/asm/dma-direct.h b/arch/powerpc/include/asm/dma-direct.h
> index a2912b47102c..e29e8a236b8d 100644
> --- a/arch/powerpc/include/asm/dma-direct.h
> +++ b/arch/powerpc/include/asm/dma-direct.h
> @@ -2,15 +2,6 @@
> #ifndef ASM_POWERPC_DMA_DIRECT_H
> #define ASM_POWERPC_DMA_DIRECT_H 1
>
> -static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> -{
> - if (!dev->dma_mask)
> - return false;
> -
> - return addr + size - 1 <=
> - min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> -}
> -
> static inline dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
> {
> if (!dev)
> diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
> index 6db863c3eb93..991f8aa2676e 100644
> --- a/include/linux/dma-direct.h
> +++ b/include/linux/dma-direct.h
> @@ -24,6 +24,7 @@ static inline phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dev_addr)
>
> return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> }
> +#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> {
> @@ -38,7 +39,6 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
>
> return end <= min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
> }
> -#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
>
> #ifdef CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED
> bool force_dma_unencrypted(struct device *dev);
> --
> 2.20.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-11-14 8:47 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-13 7:35 unify the dma_capable definition Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` [PATCH 1/3] dma-direct: unify the dma_capable definitions Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-14 8:47 ` Michael Ellerman [this message]
2019-11-14 8:47 ` Michael Ellerman
2019-11-14 8:47 ` Michael Ellerman
2019-11-19 9:27 ` Marek Szyprowski
2019-11-19 9:27 ` Marek Szyprowski
2019-11-19 9:27 ` Marek Szyprowski
2019-11-19 9:44 ` Krzysztof Kozlowski
2019-11-19 9:44 ` Krzysztof Kozlowski
2019-11-19 9:44 ` Krzysztof Kozlowski
2019-11-19 10:26 ` Marek Szyprowski
2019-11-19 10:26 ` Marek Szyprowski
2019-11-19 10:26 ` Marek Szyprowski
2019-11-19 16:16 ` Robin Murphy
2019-11-19 16:16 ` Robin Murphy
2019-11-19 16:16 ` Robin Murphy
2019-11-19 16:46 ` Christoph Hellwig
2019-11-19 16:46 ` Christoph Hellwig
2019-11-19 16:46 ` Christoph Hellwig
2019-11-20 6:31 ` Marek Szyprowski
2019-11-20 6:31 ` Marek Szyprowski
2019-11-20 6:31 ` Marek Szyprowski
2019-11-19 10:19 ` Nicolas Saenz Julienne
2019-11-19 10:19 ` Nicolas Saenz Julienne
2019-11-19 10:19 ` Nicolas Saenz Julienne
2019-11-13 7:35 ` [PATCH 2/3] dma-direct: avoid a forward declaration for phys_to_dma Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` [PATCH 3/3] powerpc: remove support for NULL dev in __phys_to_dma / __dma_to_phys Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-13 7:35 ` Christoph Hellwig
2019-11-14 8:48 ` Michael Ellerman
2019-11-14 8:48 ` Michael Ellerman
2019-11-14 8:48 ` Michael Ellerman
2019-11-13 10:18 ` unify the dma_capable definition Nicolas Saenz Julienne
2019-11-13 10:18 ` Nicolas Saenz Julienne
2019-11-13 10:18 ` Nicolas Saenz Julienne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875zjm26b6.fsf@mpe.ellerman.id.au \
--to=mpe@ellerman.id.au \
--cc=hch@lst.de \
--cc=iommu@lists.linux-foundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=nsaenzjulienne@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.