All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: vinod.koul@intel.com, linux-renesas-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org,
	iommu@lists.linux-foundation.org
Cc: robin.murphy@arm.com, laurent.pinchart@ideasonboard.com,
	geert+renesas@glider.be, linus.walleij@linaro.org,
	dan.j.williams@intel.com, arnd@arndb.de,
	linux-arch@vger.kernel.org,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Subject: [PATCH v5 0/9] dmaengine: rcar-dmac: add iommu support for slave transfers
Date: Tue,  8 Mar 2016 03:42:45 +0100	[thread overview]
Message-ID: <1457404974-1800-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> (raw)

Hi,

This series add iommu support to rcar-dmac. It's tested on Koelsch with
CONFIG_IPMMU_VMSA and by enabling the ipmmu_ds node in r8a7791.dtsi. I
verified operation by interacting with /dev/mmcblk1 and the serial
console which both are devices behind the iommu.

The series depends patch '[PATCH] dmaengine: use phys_addr_t for slave
configuration'.

* Changes since v4
- Move the mapping from phys_addr_t to dma_addr_t from slave_config to the
  prepare calls. This way we know the direction of the mapping and don't have
  to use DMA_BIDIRECTIONAL. Thanks Vinod for suggesting this.
- To be clear that the data type for slave addresses are changed add a patch
  that only changes the data type to phys_addr_t.
- Fixed up commit messages.

* Changes since v3
- Folded in a fix from Robin to his patch.
- Added a check to make sure dma_map_resource can not be used to map RAM as
  pointed out by Robin. I use BUG_ON to enforce this. It might not be the best
  method but I saw no other good way since DMA_ERROR_CODE might not be defined
  on all platforms.
- Added comment about that DTS changes will disable 2 DMA channels due to a HW
  (?) but in the DMAC.
- Dropped the use of dma_attrs, no longer needed.
- Collected Acked-by and Reviewed-by from Laurent.
- Various indentation fix ups.

* Changes since v2
- Drop patch to add dma_{map,unmap}_page_attrs.
- Add dma_{map,unmap}_resource to handle the mapping without involving a
  'struct page'. Thanks Laurent and Robin for pointing this out.
- Use size instead of address to keep track of if a mapping exist or not
  since addr == 0 is valid. Thanks Laurent.
- Pick up patch from Robin with Laurents ack (hope it's OK for me to
  attach the ack?) to add IOMMU_MMIO.
- Fix bug in rcar_dmac_device_config where the error check where
  inverted.
- Use DMA_BIDIRECTIONAL in rcar_dmac_device_config since we at that
  point can't be sure what direction the mapping is going to be used.

* Changes since v1
- Add and use a dma_{map,unmap}_page_attrs to be able to map the page
  using attributes DMA_ATTR_NO_KERNEL_MAPPING and
  DMA_ATTR_SKIP_CPU_SYNC. Thanks Laurent.
- Drop check if dmac is part of a iommu group or not, let the DMA
  mapping api handle it.
- Move slave configuration data around in rcar-dmac to avoid code
  duplication.
- Fix build issue reported by 'kbuild test robot' regarding phys_to_page
  not availability on some configurations.
- Add DT information for r8a7791.

* Changes since RFC
- Switch to use the dma-mapping api instead of using the iommu_map()
  directly. Turns out the dma-mapper is much smarter then me...
- Dropped the patch to expose domain->ops->pgsize_bitmap from within the
  iommu api.
- Dropped the patch showing how I tested the RFC.

Niklas Söderlund (8):
  dma-mapping: add {map,unmap}_resource to dma_map_ops
  dma-mapping: add dma_{map,unmap}_resource
  arm: dma-mapping: add {map,unmap}_resource for iommu ops
  dmaengine: rcar-dmac: slave address are physical
  dmaengine: rcar-dmac: group slave configuration
  dmaengine: rcar-dmac: add iommu support for slave transfers
  ARM: dts: r8a7790: add iommus to dmac0 and dmac1
  ARM: dts: r8a7791: add iommus to dmac0 and dmac1

Robin Murphy (1):
  iommu: Add MMIO mapping type

 arch/arm/boot/dts/r8a7790.dtsi |  30 +++++++++++
 arch/arm/boot/dts/r8a7791.dtsi |  30 +++++++++++
 arch/arm/mm/dma-mapping.c      |  63 ++++++++++++++++++++++
 drivers/dma/sh/rcar-dmac.c     | 116 +++++++++++++++++++++++++++++++++--------
 drivers/iommu/io-pgtable-arm.c |   9 +++-
 include/linux/dma-mapping.h    |  38 ++++++++++++++
 include/linux/iommu.h          |   1 +
 7 files changed, 263 insertions(+), 24 deletions(-)

--
2.7.2

WARNING: multiple messages have this Message-ID (diff)
From: niklas.soderlund+renesas@ragnatech.se (Niklas Söderlund)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 0/9] dmaengine: rcar-dmac: add iommu support for slave transfers
Date: Tue,  8 Mar 2016 03:42:45 +0100	[thread overview]
Message-ID: <1457404974-1800-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> (raw)

Hi,

This series add iommu support to rcar-dmac. It's tested on Koelsch with
CONFIG_IPMMU_VMSA and by enabling the ipmmu_ds node in r8a7791.dtsi. I
verified operation by interacting with /dev/mmcblk1 and the serial
console which both are devices behind the iommu.

The series depends patch '[PATCH] dmaengine: use phys_addr_t for slave
configuration'.

* Changes since v4
- Move the mapping from phys_addr_t to dma_addr_t from slave_config to the
  prepare calls. This way we know the direction of the mapping and don't have
  to use DMA_BIDIRECTIONAL. Thanks Vinod for suggesting this.
- To be clear that the data type for slave addresses are changed add a patch
  that only changes the data type to phys_addr_t.
- Fixed up commit messages.

* Changes since v3
- Folded in a fix from Robin to his patch.
- Added a check to make sure dma_map_resource can not be used to map RAM as
  pointed out by Robin. I use BUG_ON to enforce this. It might not be the best
  method but I saw no other good way since DMA_ERROR_CODE might not be defined
  on all platforms.
- Added comment about that DTS changes will disable 2 DMA channels due to a HW
  (?) but in the DMAC.
- Dropped the use of dma_attrs, no longer needed.
- Collected Acked-by and Reviewed-by from Laurent.
- Various indentation fix ups.

* Changes since v2
- Drop patch to add dma_{map,unmap}_page_attrs.
- Add dma_{map,unmap}_resource to handle the mapping without involving a
  'struct page'. Thanks Laurent and Robin for pointing this out.
- Use size instead of address to keep track of if a mapping exist or not
  since addr == 0 is valid. Thanks Laurent.
- Pick up patch from Robin with Laurents ack (hope it's OK for me to
  attach the ack?) to add IOMMU_MMIO.
- Fix bug in rcar_dmac_device_config where the error check where
  inverted.
- Use DMA_BIDIRECTIONAL in rcar_dmac_device_config since we at that
  point can't be sure what direction the mapping is going to be used.

* Changes since v1
- Add and use a dma_{map,unmap}_page_attrs to be able to map the page
  using attributes DMA_ATTR_NO_KERNEL_MAPPING and
  DMA_ATTR_SKIP_CPU_SYNC. Thanks Laurent.
- Drop check if dmac is part of a iommu group or not, let the DMA
  mapping api handle it.
- Move slave configuration data around in rcar-dmac to avoid code
  duplication.
- Fix build issue reported by 'kbuild test robot' regarding phys_to_page
  not availability on some configurations.
- Add DT information for r8a7791.

* Changes since RFC
- Switch to use the dma-mapping api instead of using the iommu_map()
  directly. Turns out the dma-mapper is much smarter then me...
- Dropped the patch to expose domain->ops->pgsize_bitmap from within the
  iommu api.
- Dropped the patch showing how I tested the RFC.

Niklas S?derlund (8):
  dma-mapping: add {map,unmap}_resource to dma_map_ops
  dma-mapping: add dma_{map,unmap}_resource
  arm: dma-mapping: add {map,unmap}_resource for iommu ops
  dmaengine: rcar-dmac: slave address are physical
  dmaengine: rcar-dmac: group slave configuration
  dmaengine: rcar-dmac: add iommu support for slave transfers
  ARM: dts: r8a7790: add iommus to dmac0 and dmac1
  ARM: dts: r8a7791: add iommus to dmac0 and dmac1

Robin Murphy (1):
  iommu: Add MMIO mapping type

 arch/arm/boot/dts/r8a7790.dtsi |  30 +++++++++++
 arch/arm/boot/dts/r8a7791.dtsi |  30 +++++++++++
 arch/arm/mm/dma-mapping.c      |  63 ++++++++++++++++++++++
 drivers/dma/sh/rcar-dmac.c     | 116 +++++++++++++++++++++++++++++++++--------
 drivers/iommu/io-pgtable-arm.c |   9 +++-
 include/linux/dma-mapping.h    |  38 ++++++++++++++
 include/linux/iommu.h          |   1 +
 7 files changed, 263 insertions(+), 24 deletions(-)

--
2.7.2

             reply	other threads:[~2016-03-08  2:44 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-08  2:42 Niklas Söderlund [this message]
2016-03-08  2:42 ` [PATCH v5 0/9] dmaengine: rcar-dmac: add iommu support for slave transfers Niklas Söderlund
2016-03-08  2:42 ` [PATCH v5 1/9] iommu: Add MMIO mapping type Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-17 11:18   ` Laurent Pinchart
2016-03-17 11:18     ` Laurent Pinchart
2016-03-17 11:18     ` Laurent Pinchart
2016-03-17 11:18     ` Laurent Pinchart
2016-03-08  2:42 ` [PATCH v5 2/9] dma-mapping: add {map,unmap}_resource to dma_map_ops Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42 ` [PATCH v5 3/9] dma-mapping: add dma_{map,unmap}_resource Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  7:38   ` Christoph Hellwig
2016-03-08  7:38     ` Christoph Hellwig
2016-03-10 16:05     ` Niklas S??derlund
2016-03-10 16:05       ` Niklas S??derlund
2016-03-10 16:05       ` Niklas S??derlund
2016-03-11  6:19       ` Vinod Koul
2016-03-11  6:19         ` Vinod Koul
2016-03-11  6:19         ` Vinod Koul
2016-03-11  6:47       ` Dan Williams
2016-03-11  6:47         ` Dan Williams
2016-03-11  6:47         ` Dan Williams
2016-03-11 11:15         ` Christoph Hellwig
2016-03-11 11:15           ` Christoph Hellwig
2016-03-11 11:15           ` Christoph Hellwig
2016-03-11 12:58           ` Niklas Söderlund
2016-03-11 12:58             ` Niklas Söderlund
2016-03-11 12:58             ` Niklas Söderlund
2016-03-11 12:58             ` Niklas Söderlund
2016-03-15  8:22             ` Christoph Hellwig
2016-03-15  8:22               ` Christoph Hellwig
2016-03-15  8:22               ` Christoph Hellwig
2016-03-17 11:33               ` Laurent Pinchart
2016-03-17 11:33                 ` Laurent Pinchart
2016-03-17 11:33                 ` Laurent Pinchart
2016-03-17 11:33                 ` Laurent Pinchart
2016-03-21 15:26                 ` Christoph Hellwig
2016-03-21 15:26                   ` Christoph Hellwig
2016-03-21 15:26                   ` Christoph Hellwig
2016-04-13 13:29                   ` Niklas Söderlund
2016-04-13 13:29                     ` Niklas Söderlund
2016-04-13 13:29                     ` Niklas Söderlund
2016-04-13 13:29                     ` Niklas Söderlund
2016-04-13 13:29                     ` Niklas Söderlund
2016-04-21  9:48                     ` Niklas Söderlund
2016-04-21  9:48                       ` Niklas Söderlund
2016-04-21  9:48                       ` Niklas Söderlund
2016-04-21  9:48                       ` Niklas Söderlund
2016-04-21 13:49                     ` Christoph Hellwig
2016-04-21 13:49                       ` Christoph Hellwig
2016-04-21 13:49                       ` Christoph Hellwig
2016-04-25 14:26                       ` Niklas Söderlund
2016-04-25 14:26                         ` Niklas Söderlund
2016-04-25 14:26                         ` Niklas Söderlund
2016-04-25 14:26                         ` Niklas Söderlund
2016-04-25 19:10                         ` Christoph Hellwig
2016-04-25 19:10                           ` Christoph Hellwig
2016-04-25 19:10                           ` Christoph Hellwig
2016-04-26 13:29                           ` Niklas Söderlund
2016-04-26 13:29                             ` Niklas Söderlund
2016-04-26 13:29                             ` Niklas Söderlund
2016-04-26 13:29                             ` Niklas Söderlund
2016-04-26 13:29                             ` Niklas Söderlund
2016-03-11 13:46         ` Robin Murphy
2016-03-11 13:46           ` Robin Murphy
2016-03-11 13:46           ` Robin Murphy
2016-03-11 13:46           ` Robin Murphy
2016-03-11 17:51           ` Dan Williams
2016-03-11 17:51             ` Dan Williams
2016-03-11 17:51             ` Dan Williams
2016-03-08  2:42 ` [PATCH v5 4/9] arm: dma-mapping: add {map,unmap}_resource for iommu ops Niklas Söderlund
2016-03-08  2:42   ` [PATCH v5 4/9] arm: dma-mapping: add {map, unmap}_resource " Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42 ` [PATCH v5 5/9] dmaengine: rcar-dmac: slave address are physical Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-17 11:30   ` Laurent Pinchart
2016-03-17 11:30     ` Laurent Pinchart
2016-03-17 11:30     ` Laurent Pinchart
2016-03-17 11:30     ` Laurent Pinchart
2016-03-08  2:42 ` [PATCH v5 6/9] dmaengine: rcar-dmac: group slave configuration Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-17 11:28   ` Laurent Pinchart
2016-03-17 11:28     ` Laurent Pinchart
2016-03-17 11:28     ` Laurent Pinchart
2016-03-17 11:28     ` Laurent Pinchart
2016-03-08  2:42 ` [PATCH v5 7/9] dmaengine: rcar-dmac: add iommu support for slave transfers Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42 ` [PATCH v5 8/9] ARM: dts: r8a7790: add iommus to dmac0 and dmac1 Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund
2016-03-08  2:42 ` [PATCH v5 9/9] ARM: dts: r8a7791: " Niklas Söderlund
2016-03-08  2:42   ` Niklas Söderlund

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=1457404974-1800-1-git-send-email-niklas.soderlund+renesas@ragnatech.se \
    --to=niklas.soderlund+renesas@ragnatech.se \
    --cc=arnd@arndb.de \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=geert+renesas@glider.be \
    --cc=iommu@lists.linux-foundation.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=vinod.koul@intel.com \
    /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.