From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Leizhen (ThunderTown)" Subject: Re: [PATCH v2 7/7] iommu/arm-smmu: Support non-PCI devices with SMMUv3 Date: Wed, 15 Jun 2016 09:22:14 +0800 Message-ID: <5760ADC6.8000803@huawei.com> References: <42a8a71932f766d70ea9dcae5d11d5f33dcc3652.1464966939.git.robin.murphy@arm.com> <20160614151642.GC16531@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20160614151642.GC16531-5wv7dgnIgG8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Will Deacon , Robin Murphy Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: devicetree@vger.kernel.org On 2016/6/14 23:16, Will Deacon wrote: > [adding ThunderTown, since he might be able to test this for us] OK. I'm so glad to do it. > > On Fri, Jun 03, 2016 at 06:15:42PM +0100, Robin Murphy wrote: >> With the device <-> stream ID relationship suitably abstracted and >> of_xlate() hooked up, we no longer have any PCI-specifics in play, >> so adding support for the simpler kinds of platform device (a single >> unique stream ID each) becomes trivial; let's do it! >> >> Signed-off-by: Robin Murphy >> --- >> >> v2: New. Consider this one "extra bonus material" as I'm not sure there >> are even any suitable devices on our model to test it with (it >> _should_ be OK, given that I know the basic infrastructure on either >> side works...) >> >> drivers/iommu/Kconfig | 2 +- >> drivers/iommu/arm-smmu-v3.c | 36 ++++++++++++++++++++++++++++++------ >> 2 files changed, 31 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig >> index ad0860383cb3..d1c66afefeed 100644 >> --- a/drivers/iommu/Kconfig >> +++ b/drivers/iommu/Kconfig >> @@ -308,7 +308,7 @@ config ARM_SMMU >> >> config ARM_SMMU_V3 >> bool "ARM Ltd. System MMU Version 3 (SMMUv3) Support" >> - depends on ARM64 && PCI >> + depends on ARM64 >> select IOMMU_API >> select IOMMU_IO_PGTABLE_LPAE >> select GENERIC_MSI_IRQ_DOMAIN >> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c >> index 28dcc5ca237e..6379f0ab24fc 100644 >> --- a/drivers/iommu/arm-smmu-v3.c >> +++ b/drivers/iommu/arm-smmu-v3.c >> @@ -35,6 +35,8 @@ >> #include >> #include >> >> +#include >> + >> #include "io-pgtable.h" >> >> /* MMIO registers */ >> @@ -1773,6 +1775,22 @@ static void arm_smmu_remove_device(struct device *dev) >> iommu_group_remove_device(dev); >> } >> >> +static struct iommu_group *arm_smmu_device_group(struct device *dev) >> +{ >> + struct iommu_group *group; >> + >> + /* >> + * We've currently no means of grouping non-PCI masters, so >> + * there'd better not be any non-unique stream IDs in the DT... >> + */ > > Worse: what if a SID in the DT aliases with a PCI master? It might be > nice to have some basic snity checking, at least. > > Will > > . > From mboxrd@z Thu Jan 1 00:00:00 1970 From: thunder.leizhen@huawei.com (Leizhen (ThunderTown)) Date: Wed, 15 Jun 2016 09:22:14 +0800 Subject: [PATCH v2 7/7] iommu/arm-smmu: Support non-PCI devices with SMMUv3 In-Reply-To: <20160614151642.GC16531@arm.com> References: <42a8a71932f766d70ea9dcae5d11d5f33dcc3652.1464966939.git.robin.murphy@arm.com> <20160614151642.GC16531@arm.com> Message-ID: <5760ADC6.8000803@huawei.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2016/6/14 23:16, Will Deacon wrote: > [adding ThunderTown, since he might be able to test this for us] OK. I'm so glad to do it. > > On Fri, Jun 03, 2016 at 06:15:42PM +0100, Robin Murphy wrote: >> With the device <-> stream ID relationship suitably abstracted and >> of_xlate() hooked up, we no longer have any PCI-specifics in play, >> so adding support for the simpler kinds of platform device (a single >> unique stream ID each) becomes trivial; let's do it! >> >> Signed-off-by: Robin Murphy >> --- >> >> v2: New. Consider this one "extra bonus material" as I'm not sure there >> are even any suitable devices on our model to test it with (it >> _should_ be OK, given that I know the basic infrastructure on either >> side works...) >> >> drivers/iommu/Kconfig | 2 +- >> drivers/iommu/arm-smmu-v3.c | 36 ++++++++++++++++++++++++++++++------ >> 2 files changed, 31 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig >> index ad0860383cb3..d1c66afefeed 100644 >> --- a/drivers/iommu/Kconfig >> +++ b/drivers/iommu/Kconfig >> @@ -308,7 +308,7 @@ config ARM_SMMU >> >> config ARM_SMMU_V3 >> bool "ARM Ltd. System MMU Version 3 (SMMUv3) Support" >> - depends on ARM64 && PCI >> + depends on ARM64 >> select IOMMU_API >> select IOMMU_IO_PGTABLE_LPAE >> select GENERIC_MSI_IRQ_DOMAIN >> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c >> index 28dcc5ca237e..6379f0ab24fc 100644 >> --- a/drivers/iommu/arm-smmu-v3.c >> +++ b/drivers/iommu/arm-smmu-v3.c >> @@ -35,6 +35,8 @@ >> #include >> #include >> >> +#include >> + >> #include "io-pgtable.h" >> >> /* MMIO registers */ >> @@ -1773,6 +1775,22 @@ static void arm_smmu_remove_device(struct device *dev) >> iommu_group_remove_device(dev); >> } >> >> +static struct iommu_group *arm_smmu_device_group(struct device *dev) >> +{ >> + struct iommu_group *group; >> + >> + /* >> + * We've currently no means of grouping non-PCI masters, so >> + * there'd better not be any non-unique stream IDs in the DT... >> + */ > > Worse: what if a SID in the DT aliases with a PCI master? It might be > nice to have some basic snity checking, at least. > > Will > > . >