From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
To: Laurent Pinchart
<laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Cc: Laura Abbott <lauraa-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
Will Deacon <Will.Deacon-5wv7dgnIgG8@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org"
<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC/PATCH 2/9] arm: dma-mapping: Support IOMMU mappings spanning the full 32 bits range
Date: Tue, 19 May 2015 11:17:32 +0100 [thread overview]
Message-ID: <555B0DBC.6090204@arm.com> (raw)
In-Reply-To: <1431644410-2997-3-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
Hi Laurent,
On 15/05/15 00:00, Laurent Pinchart wrote:
> The arm_iommu_create_mapping() function takes the IOMMU mapping size as
> a size_t, limiting the size to 4GB - 1 on 32 bit platforms while most
> bus masters would support the full 32 bits range. Fix this by passing
> the size as a 64 bits integer, and limiting it to 4GB for now.
FYI there's already an almost-identical patch in -rc3 from Marek fixing
this: 1424532b2163 ("ARM: 8347/1: dma-mapping: fix off-by-one check in
arm_setup_iommu_dma_ops").
Robin.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
> ---
> arch/arm/include/asm/dma-iommu.h | 2 +-
> arch/arm/mm/dma-mapping.c | 12 +++---------
> 2 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/include/asm/dma-iommu.h b/arch/arm/include/asm/dma-iommu.h
> index 8e3fcb924db6..2ef282f96651 100644
> --- a/arch/arm/include/asm/dma-iommu.h
> +++ b/arch/arm/include/asm/dma-iommu.h
> @@ -25,7 +25,7 @@ struct dma_iommu_mapping {
> };
>
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size);
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
>
> void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index 7aa5e339a596..c69e216a0cf9 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -1878,7 +1878,7 @@ struct dma_map_ops iommu_coherent_ops = {
> * arm_iommu_attach_device function.
> */
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size)
> {
> unsigned int bits = size >> PAGE_SHIFT;
> unsigned int bitmap_size = BITS_TO_LONGS(bits) * sizeof(long);
> @@ -1886,7 +1886,8 @@ arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> int extensions = 1;
> int err = -ENOMEM;
>
> - if (!bitmap_size)
> + /* Limit the size to 4GB for now. */
> + if (!size || size > (1ULL << 32))
> return ERR_PTR(-EINVAL);
>
> if (bitmap_size > PAGE_SIZE) {
> @@ -2057,13 +2058,6 @@ static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size,
> if (!iommu)
> return false;
>
> - /*
> - * currently arm_iommu_create_mapping() takes a max of size_t
> - * for size param. So check this limit for now.
> - */
> - if (size > SIZE_MAX)
> - return false;
> -
> mapping = arm_iommu_create_mapping(dev->bus, dma_base, size);
> if (IS_ERR(mapping)) {
> pr_warn("Failed to create %llu-byte IOMMU mapping for device %s\n",
>
WARNING: multiple messages have this Message-ID (diff)
From: robin.murphy@arm.com (Robin Murphy)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC/PATCH 2/9] arm: dma-mapping: Support IOMMU mappings spanning the full 32 bits range
Date: Tue, 19 May 2015 11:17:32 +0100 [thread overview]
Message-ID: <555B0DBC.6090204@arm.com> (raw)
In-Reply-To: <1431644410-2997-3-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
Hi Laurent,
On 15/05/15 00:00, Laurent Pinchart wrote:
> The arm_iommu_create_mapping() function takes the IOMMU mapping size as
> a size_t, limiting the size to 4GB - 1 on 32 bit platforms while most
> bus masters would support the full 32 bits range. Fix this by passing
> the size as a 64 bits integer, and limiting it to 4GB for now.
FYI there's already an almost-identical patch in -rc3 from Marek fixing
this: 1424532b2163 ("ARM: 8347/1: dma-mapping: fix off-by-one check in
arm_setup_iommu_dma_ops").
Robin.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> arch/arm/include/asm/dma-iommu.h | 2 +-
> arch/arm/mm/dma-mapping.c | 12 +++---------
> 2 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/include/asm/dma-iommu.h b/arch/arm/include/asm/dma-iommu.h
> index 8e3fcb924db6..2ef282f96651 100644
> --- a/arch/arm/include/asm/dma-iommu.h
> +++ b/arch/arm/include/asm/dma-iommu.h
> @@ -25,7 +25,7 @@ struct dma_iommu_mapping {
> };
>
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size);
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
>
> void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index 7aa5e339a596..c69e216a0cf9 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -1878,7 +1878,7 @@ struct dma_map_ops iommu_coherent_ops = {
> * arm_iommu_attach_device function.
> */
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size)
> {
> unsigned int bits = size >> PAGE_SHIFT;
> unsigned int bitmap_size = BITS_TO_LONGS(bits) * sizeof(long);
> @@ -1886,7 +1886,8 @@ arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> int extensions = 1;
> int err = -ENOMEM;
>
> - if (!bitmap_size)
> + /* Limit the size to 4GB for now. */
> + if (!size || size > (1ULL << 32))
> return ERR_PTR(-EINVAL);
>
> if (bitmap_size > PAGE_SIZE) {
> @@ -2057,13 +2058,6 @@ static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size,
> if (!iommu)
> return false;
>
> - /*
> - * currently arm_iommu_create_mapping() takes a max of size_t
> - * for size param. So check this limit for now.
> - */
> - if (size > SIZE_MAX)
> - return false;
> -
> mapping = arm_iommu_create_mapping(dev->bus, dma_base, size);
> if (IS_ERR(mapping)) {
> pr_warn("Failed to create %llu-byte IOMMU mapping for device %s\n",
>
WARNING: multiple messages have this Message-ID (diff)
From: Robin Murphy <robin.murphy@arm.com>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
Laura Abbott <lauraa@codeaurora.org>,
Arnd Bergmann <arnd@arndb.de>,
Mitchel Humpherys <mitchelh@codeaurora.org>,
Joreg Roedel <joro@8bytes.org>, Will Deacon <Will.Deacon@arm.com>,
"grant.likely@linaro.org" <grant.likely@linaro.org>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Thierry Reding <thierry.reding@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [RFC/PATCH 2/9] arm: dma-mapping: Support IOMMU mappings spanning the full 32 bits range
Date: Tue, 19 May 2015 11:17:32 +0100 [thread overview]
Message-ID: <555B0DBC.6090204@arm.com> (raw)
In-Reply-To: <1431644410-2997-3-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
Hi Laurent,
On 15/05/15 00:00, Laurent Pinchart wrote:
> The arm_iommu_create_mapping() function takes the IOMMU mapping size as
> a size_t, limiting the size to 4GB - 1 on 32 bit platforms while most
> bus masters would support the full 32 bits range. Fix this by passing
> the size as a 64 bits integer, and limiting it to 4GB for now.
FYI there's already an almost-identical patch in -rc3 from Marek fixing
this: 1424532b2163 ("ARM: 8347/1: dma-mapping: fix off-by-one check in
arm_setup_iommu_dma_ops").
Robin.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> arch/arm/include/asm/dma-iommu.h | 2 +-
> arch/arm/mm/dma-mapping.c | 12 +++---------
> 2 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/include/asm/dma-iommu.h b/arch/arm/include/asm/dma-iommu.h
> index 8e3fcb924db6..2ef282f96651 100644
> --- a/arch/arm/include/asm/dma-iommu.h
> +++ b/arch/arm/include/asm/dma-iommu.h
> @@ -25,7 +25,7 @@ struct dma_iommu_mapping {
> };
>
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size);
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
>
> void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index 7aa5e339a596..c69e216a0cf9 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -1878,7 +1878,7 @@ struct dma_map_ops iommu_coherent_ops = {
> * arm_iommu_attach_device function.
> */
> struct dma_iommu_mapping *
> -arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> +arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size)
> {
> unsigned int bits = size >> PAGE_SHIFT;
> unsigned int bitmap_size = BITS_TO_LONGS(bits) * sizeof(long);
> @@ -1886,7 +1886,8 @@ arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size)
> int extensions = 1;
> int err = -ENOMEM;
>
> - if (!bitmap_size)
> + /* Limit the size to 4GB for now. */
> + if (!size || size > (1ULL << 32))
> return ERR_PTR(-EINVAL);
>
> if (bitmap_size > PAGE_SIZE) {
> @@ -2057,13 +2058,6 @@ static bool arm_setup_iommu_dma_ops(struct device *dev, u64 dma_base, u64 size,
> if (!iommu)
> return false;
>
> - /*
> - * currently arm_iommu_create_mapping() takes a max of size_t
> - * for size param. So check this limit for now.
> - */
> - if (size > SIZE_MAX)
> - return false;
> -
> mapping = arm_iommu_create_mapping(dev->bus, dma_base, size);
> if (IS_ERR(mapping)) {
> pr_warn("Failed to create %llu-byte IOMMU mapping for device %s\n",
>
next prev parent reply other threads:[~2015-05-19 10:17 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-14 23:00 [RFC/PATCH 0/9] IOMMU probe deferral support Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-1-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-14 23:00 ` [RFC/PATCH 1/9] arm: dma-mapping: Don't override dma_ops in arch_setup_dma_ops() Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-2-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-27 17:38 ` Will Deacon
2015-05-27 17:38 ` Will Deacon
2015-05-27 17:38 ` Will Deacon
2015-05-14 23:00 ` [RFC/PATCH 2/9] arm: dma-mapping: Support IOMMU mappings spanning the full 32 bits range Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-3-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-19 10:17 ` Robin Murphy [this message]
2015-05-19 10:17 ` Robin Murphy
2015-05-19 10:17 ` Robin Murphy
2015-05-24 22:38 ` Laurent Pinchart
2015-05-24 22:38 ` Laurent Pinchart
2015-05-14 23:00 ` [RFC/PATCH 3/9] of: dma: Move range size workaround to of_dma_get_range() Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-27 17:59 ` Will Deacon
2015-05-27 17:59 ` Will Deacon
[not found] ` <1431644410-2997-4-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-28 2:37 ` Rob Herring
2015-05-28 2:37 ` Rob Herring
2015-05-28 2:37 ` Rob Herring
2015-05-14 23:00 ` [RFC/PATCH 4/9] of: dma: Make of_dma_deconfigure() public Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-5-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-28 12:42 ` Will Deacon
2015-05-28 12:42 ` Will Deacon
2015-05-28 12:42 ` Will Deacon
2015-05-29 14:04 ` Rob Herring
2015-05-29 14:04 ` Rob Herring
2015-05-29 14:04 ` Rob Herring
2015-05-14 23:00 ` [RFC/PATCH 5/9] of: dma: Split of_configure_dma() into mask and ops configuration Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-6-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-28 13:01 ` Will Deacon
2015-05-28 13:01 ` Will Deacon
2015-05-28 13:01 ` Will Deacon
2015-05-29 14:19 ` Rob Herring
2015-05-29 14:19 ` Rob Herring
2015-05-29 14:19 ` Rob Herring
2015-05-14 23:00 ` [RFC/PATCH 6/9] drivers: platform: Configure dma operations at probe time Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-7-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-15 23:59 ` Greg Kroah-Hartman
2015-05-15 23:59 ` Greg Kroah-Hartman
2015-05-15 23:59 ` Greg Kroah-Hartman
2015-05-19 10:39 ` Robin Murphy
2015-05-19 10:39 ` Robin Murphy
[not found] ` <555B12D5.5080608-5wv7dgnIgG8@public.gmane.org>
2015-05-24 22:41 ` Laurent Pinchart
2015-05-24 22:41 ` Laurent Pinchart
2015-05-24 22:41 ` Laurent Pinchart
2015-05-14 23:00 ` [RFC/PATCH 7/9] iommu: of: Document the of_iommu_configure() function Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-8-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-28 13:02 ` Will Deacon
2015-05-28 13:02 ` Will Deacon
2015-05-28 13:02 ` Will Deacon
2015-05-14 23:00 ` [RFC/PATCH 8/9] iommu: of: Handle IOMMU lookup failure with deferred probing or error Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
[not found] ` <1431644410-2997-9-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2015-05-28 13:31 ` Will Deacon
2015-05-28 13:31 ` Will Deacon
2015-05-28 13:31 ` Will Deacon
2015-05-14 23:00 ` [RFC/PATCH 9/9] iommu/ipmmu-vmsa: Use DT-based instantiation Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-14 23:00 ` Laurent Pinchart
2015-05-27 13:26 ` [RFC/PATCH 0/9] IOMMU probe deferral support Marek Szyprowski
2015-05-27 13:26 ` Marek Szyprowski
2015-05-28 17:36 ` Laura Abbott
2015-05-28 17:36 ` Laura Abbott
2015-06-11 16:25 ` Will Deacon
2015-06-11 16:25 ` Will Deacon
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=555B0DBC.6090204@arm.com \
--to=robin.murphy-5wv7dgnigg8@public.gmane.org \
--cc=Will.Deacon-5wv7dgnIgG8@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=lauraa-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/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.