From: Nikita Yushchenko <nikita.yoush@cogentembedded.com> To: Arnd Bergmann <arnd@arndb.de> Cc: Robin Murphy <robin.murphy@arm.com>, Will Deacon <will.deacon@arm.com>, linux-arm-kernel@lists.infradead.org, linux-renesas-soc@vger.kernel.org, Simon Horman <horms@verge.net.au>, Bjorn Helgaas <bhelgaas@google.com>, fkan@apm.com, linux-kernel@vger.kernel.org, Artemi Ivanov <artemi.ivanov@cogentembedded.com> Subject: Re: [PATCH 1/2] dma-mapping: let arch know origin of dma range passed to arch_setup_dma_ops() Date: Thu, 12 Jan 2017 09:33:32 +0300 [thread overview] Message-ID: <7d7dc402-e527-c581-0b1c-37713759db31@cogentembedded.com> (raw) In-Reply-To: <764334db-3400-58c6-cc4b-3f7ce66daa27@cogentembedded.com> 12.01.2017 08:52, Nikita Yushchenko wrote: >>> diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> index 5ac373c..480b644 100644 >>> --- a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> +++ b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> @@ -540,7 +540,7 @@ int fsl_mc_device_add(struct dprc_obj_desc *obj_desc, >>> >>> /* Objects are coherent, unless 'no shareability' flag set. */ >>> if (!(obj_desc->flags & DPRC_OBJ_FLAG_NO_MEM_SHAREABILITY)) >>> - arch_setup_dma_ops(&mc_dev->dev, 0, 0, NULL, true); >>> + arch_setup_dma_ops(&mc_dev->dev, 0, 0, false, NULL, true); >>> >>> /* >>> * The device-specific probe callback will get invoked by device_add() >> >> Why are these actually calling arch_setup_dma_ops() here in the first >> place? Are these all devices that are DMA masters without an OF node? > > I don't know, but that's a different topic. This patch just adds > argument and sets it to false everywhere but in the location when range > should be definitely enforced. > >>> @@ -126,6 +127,8 @@ void of_dma_configure(struct device *dev, struct device_node *np) >>> return; >>> } >>> dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset); >>> + >>> + enforce_range = true; >>> } >>> >>> dev->dma_pfn_offset = offset; >> >> Hmm, I think when the dma-ranges are missing, we should either enforce >> a 32-bit mask, or disallow DMA completely. It's probably too late for >> the latter, I wish we had done this earlier in order to force everyone >> on ARM64 to have a valid dma-ranges property for any DMA master. > > This can be done over time. > > However the very idea of this version of patch is - keep working pieces > as-is, thus for now setting enforce_range to false in case of no defined > dma-ranges is intentional. What we can do is - check bus width (as it is defined in DT) and set enforce_range to true if bus is 32-bit > What I should re-check is - does rcar dtsi set dma-ranges, and add it if > it does not. It does not, will have to add. In DT bus is defined as 64-bit. But looks like physically it is 32-bit. Maybe DT needs fixing.
WARNING: multiple messages have this Message-ID (diff)
From: nikita.yoush@cogentembedded.com (Nikita Yushchenko) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] dma-mapping: let arch know origin of dma range passed to arch_setup_dma_ops() Date: Thu, 12 Jan 2017 09:33:32 +0300 [thread overview] Message-ID: <7d7dc402-e527-c581-0b1c-37713759db31@cogentembedded.com> (raw) In-Reply-To: <764334db-3400-58c6-cc4b-3f7ce66daa27@cogentembedded.com> 12.01.2017 08:52, Nikita Yushchenko wrote: >>> diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> index 5ac373c..480b644 100644 >>> --- a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> +++ b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c >>> @@ -540,7 +540,7 @@ int fsl_mc_device_add(struct dprc_obj_desc *obj_desc, >>> >>> /* Objects are coherent, unless 'no shareability' flag set. */ >>> if (!(obj_desc->flags & DPRC_OBJ_FLAG_NO_MEM_SHAREABILITY)) >>> - arch_setup_dma_ops(&mc_dev->dev, 0, 0, NULL, true); >>> + arch_setup_dma_ops(&mc_dev->dev, 0, 0, false, NULL, true); >>> >>> /* >>> * The device-specific probe callback will get invoked by device_add() >> >> Why are these actually calling arch_setup_dma_ops() here in the first >> place? Are these all devices that are DMA masters without an OF node? > > I don't know, but that's a different topic. This patch just adds > argument and sets it to false everywhere but in the location when range > should be definitely enforced. > >>> @@ -126,6 +127,8 @@ void of_dma_configure(struct device *dev, struct device_node *np) >>> return; >>> } >>> dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset); >>> + >>> + enforce_range = true; >>> } >>> >>> dev->dma_pfn_offset = offset; >> >> Hmm, I think when the dma-ranges are missing, we should either enforce >> a 32-bit mask, or disallow DMA completely. It's probably too late for >> the latter, I wish we had done this earlier in order to force everyone >> on ARM64 to have a valid dma-ranges property for any DMA master. > > This can be done over time. > > However the very idea of this version of patch is - keep working pieces > as-is, thus for now setting enforce_range to false in case of no defined > dma-ranges is intentional. What we can do is - check bus width (as it is defined in DT) and set enforce_range to true if bus is 32-bit > What I should re-check is - does rcar dtsi set dma-ranges, and add it if > it does not. It does not, will have to add. In DT bus is defined as 64-bit. But looks like physically it is 32-bit. Maybe DT needs fixing.
next prev parent reply other threads:[~2017-01-12 6:33 UTC|newest] Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-01-09 7:30 [PATCH v2] arm64: do not set dma masks that device connection can't handle Nikita Yushchenko 2017-01-09 7:30 ` Nikita Yushchenko 2017-01-10 11:51 ` Will Deacon 2017-01-10 11:51 ` Will Deacon 2017-01-10 12:47 ` Nikita Yushchenko 2017-01-10 12:47 ` Nikita Yushchenko 2017-01-10 13:12 ` Arnd Bergmann 2017-01-10 13:12 ` Arnd Bergmann 2017-01-10 13:25 ` Robin Murphy 2017-01-10 13:25 ` Robin Murphy 2017-01-10 13:42 ` Arnd Bergmann 2017-01-10 13:42 ` Arnd Bergmann 2017-01-10 14:16 ` Robin Murphy 2017-01-10 14:16 ` Robin Murphy 2017-01-10 15:06 ` Arnd Bergmann 2017-01-10 15:06 ` Arnd Bergmann 2017-01-11 12:37 ` Nikita Yushchenko 2017-01-11 12:37 ` Nikita Yushchenko 2017-01-11 16:21 ` Arnd Bergmann 2017-01-11 16:21 ` Arnd Bergmann 2017-01-11 18:28 ` Robin Murphy 2017-01-11 18:28 ` Robin Murphy 2017-01-10 14:59 ` Christoph Hellwig 2017-01-10 14:59 ` Christoph Hellwig 2017-01-10 14:00 ` [PATCH] arm64: avoid increasing DMA masks above what hardware supports Nikita Yushchenko 2017-01-10 14:00 ` Nikita Yushchenko 2017-01-10 17:14 ` Robin Murphy 2017-01-10 17:14 ` Robin Murphy 2017-01-11 7:59 ` Nikita Yushchenko 2017-01-11 7:59 ` Nikita Yushchenko 2017-01-11 11:54 ` Robin Murphy 2017-01-11 11:54 ` Robin Murphy 2017-01-11 13:41 ` Nikita Yushchenko 2017-01-11 13:41 ` Nikita Yushchenko 2017-01-11 14:50 ` Robin Murphy 2017-01-11 14:50 ` Robin Murphy 2017-01-11 16:03 ` Nikita Yushchenko 2017-01-11 16:50 ` Robin Murphy 2017-01-11 16:50 ` Robin Murphy 2017-01-11 18:31 ` [PATCH 0/2] arm64: fix handling of DMA masks wider than bus supports Nikita Yushchenko 2017-01-11 18:31 ` Nikita Yushchenko 2017-01-11 18:31 ` [PATCH 1/2] dma-mapping: let arch know origin of dma range passed to arch_setup_dma_ops() Nikita Yushchenko 2017-01-11 18:31 ` Nikita Yushchenko 2017-01-11 21:08 ` Arnd Bergmann 2017-01-11 21:08 ` Arnd Bergmann 2017-01-12 5:52 ` Nikita Yushchenko 2017-01-12 5:52 ` Nikita Yushchenko 2017-01-12 6:33 ` Nikita Yushchenko [this message] 2017-01-12 6:33 ` Nikita Yushchenko 2017-01-12 13:28 ` Arnd Bergmann 2017-01-12 13:28 ` Arnd Bergmann 2017-01-12 13:39 ` Nikita Yushchenko 2017-01-12 13:39 ` Nikita Yushchenko 2017-01-12 12:16 ` Will Deacon 2017-01-12 12:16 ` Will Deacon 2017-01-12 13:25 ` Arnd Bergmann 2017-01-12 13:25 ` Arnd Bergmann 2017-01-12 13:43 ` Robin Murphy 2017-01-12 13:43 ` Robin Murphy 2017-01-13 10:40 ` kbuild test robot 2017-01-13 10:40 ` kbuild test robot 2017-01-11 18:31 ` [PATCH 2/2] arm64: avoid increasing DMA masks above what hardware supports Nikita Yushchenko 2017-01-11 18:31 ` Nikita Yushchenko 2017-01-11 21:11 ` Arnd Bergmann 2017-01-11 21:11 ` Arnd Bergmann 2017-01-12 5:53 ` Nikita Yushchenko 2017-01-12 5:53 ` Nikita Yushchenko 2017-01-13 10:16 ` kbuild test robot 2017-01-13 10:16 ` kbuild test robot 2017-01-10 14:01 ` [PATCH v2] arm64: do not set dma masks that device connection can't handle Nikita Yushchenko 2017-01-10 14:01 ` Nikita Yushchenko 2017-01-10 14:57 ` Christoph Hellwig 2017-01-10 14:57 ` Christoph Hellwig 2017-01-10 14:51 ` Christoph Hellwig 2017-01-10 14:51 ` Christoph Hellwig
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=7d7dc402-e527-c581-0b1c-37713759db31@cogentembedded.com \ --to=nikita.yoush@cogentembedded.com \ --cc=arnd@arndb.de \ --cc=artemi.ivanov@cogentembedded.com \ --cc=bhelgaas@google.com \ --cc=fkan@apm.com \ --cc=horms@verge.net.au \ --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=will.deacon@arm.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: linkBe 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.