From: "Leizhen (ThunderTown)" <thunder.leizhen-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
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
Subject: Re: [PATCH v2 7/7] iommu/arm-smmu: Support non-PCI devices with SMMUv3
Date: Fri, 17 Jun 2016 09:54:11 +0800 [thread overview]
Message-ID: <57635843.6000906@huawei.com> (raw)
In-Reply-To: <5760ADC6.8000803-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Hi,
I only applied these patch series on lastest 4.7-rc3, is there any patches I missed?
According to my test, it seems can not work. The problem is:
[ 0.916536] Call trace:
[ 0.918967] [<ffff00000808882c>] dump_backtrace+0x0/0x1ac
[ 0.924361] [<ffff0000080889ec>] show_stack+0x14/0x1c
[ 0.929384] [<ffff00000833c290>] dump_stack+0x8c/0xac
[ 0.934425] [<ffff000008093550>] do_iommu_attach.isra.11+0x24/0x7c //called iommu_get_domain_for_dev, but currently dev->iommu_group is NULL
[ 0.940589] [<ffff000008093604>] __iommu_attach_notifier.part.13+0x5c/0xc8
[ 0.947443] [<ffff000008093690>] __iommu_attach_notifier+0x20/0x2c
[ 0.953608] [<ffff0000080d4c88>] notifier_call_chain+0x4c/0x88
[ 0.959408] [<ffff0000080d5010>] __blocking_notifier_call_chain+0x44/0x74
[ 0.966159] [<ffff0000080d5054>] blocking_notifier_call_chain+0x14/0x1c
[ 0.972754] [<ffff000008489600>] device_add+0x3ac/0x53c
[ 0.977959] [<ffff000008671810>] of_device_add+0x58/0x64
[ 0.983240] [<ffff0000086720c8>] of_platform_device_create_pdata+0x90/0xe8
[ 0.990077] [<ffff00000867220c>] of_platform_bus_create+0xd0/0x31c
[ 0.996265] [<ffff000008672574>] of_platform_populate+0x48/0xac
[ 1.002169] [<ffff000008af2654>] arm64_device_init+0x30/0x58
[ 1.007813] [<ffff000008081a14>] do_one_initcall+0x38/0x128
[ 1.013354] [<ffff000008af0cc4>] kernel_init_freeable+0x14c/0x1ec
[ 1.019439] [<ffff0000087a92d0>] kernel_init+0x10/0xfc
[ 1.024556] [<ffff000008084e10>] ret_from_fork+0x10/0x40
[ 0.906207] Failed to set up IOMMU for device tst_smmu; retaining platform DMA ops //error info
[ 0.963782] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.970442] ACPI: Interpreter disabled.
[ 0.974429] arm-smmu-v3 d0040000.smmu_alg: ias 44-bit, oas 44-bit (features 0x00000f0d)
[ 0.996948] Call trace:
[ 0.999400] [<ffff00000808882c>] dump_backtrace+0x0/0x1ac
[ 1.004787] [<ffff0000080889ec>] show_stack+0x14/0x1c
[ 1.009846] [<ffff00000833c290>] dump_stack+0x8c/0xac
[ 1.014905] [<ffff0000084829d4>] arm_smmu_add_device+0x44/0x160
[ 1.020801] [<ffff00000847a218>] add_iommu_group+0x20/0x44
[ 1.026291] [<ffff00000848a43c>] bus_for_each_dev+0x58/0x98
[ 1.031866] [<ffff00000847b220>] bus_set_iommu+0x9c/0xf8
[ 1.037150] [<ffff000008b1b420>] arm_smmu_init+0x78/0x84
[ 1.042475] [<ffff000008081a14>] do_one_initcall+0x38/0x128
[ 1.048043] [<ffff000008af0cc4>] kernel_init_freeable+0x14c/0x1ec
[ 1.054138] [<ffff0000087a931c>] kernel_init+0x10/0xfc
[ 1.059264] [<ffff000008084e10>] ret_from_fork+0x10/0x40
[ 1.171026] iommu: Adding device tst_smmu to group 0 //It's already late.
On 2016/6/15 9:22, Leizhen (ThunderTown) wrote:
>
>
> 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 <robin.murphy-5wv7dgnIgG8@public.gmane.org>
>>> ---
>>>
>>> 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 <linux/pci.h>
>>> #include <linux/platform_device.h>
>>>
>>> +#include <linux/amba/bus.h>
>>> +
>>> #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
>>
>> .
>>
WARNING: multiple messages have this Message-ID (diff)
From: thunder.leizhen@huawei.com (Leizhen (ThunderTown))
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 7/7] iommu/arm-smmu: Support non-PCI devices with SMMUv3
Date: Fri, 17 Jun 2016 09:54:11 +0800 [thread overview]
Message-ID: <57635843.6000906@huawei.com> (raw)
In-Reply-To: <5760ADC6.8000803@huawei.com>
Hi,
I only applied these patch series on lastest 4.7-rc3, is there any patches I missed?
According to my test, it seems can not work. The problem is:
[ 0.916536] Call trace:
[ 0.918967] [<ffff00000808882c>] dump_backtrace+0x0/0x1ac
[ 0.924361] [<ffff0000080889ec>] show_stack+0x14/0x1c
[ 0.929384] [<ffff00000833c290>] dump_stack+0x8c/0xac
[ 0.934425] [<ffff000008093550>] do_iommu_attach.isra.11+0x24/0x7c //called iommu_get_domain_for_dev, but currently dev->iommu_group is NULL
[ 0.940589] [<ffff000008093604>] __iommu_attach_notifier.part.13+0x5c/0xc8
[ 0.947443] [<ffff000008093690>] __iommu_attach_notifier+0x20/0x2c
[ 0.953608] [<ffff0000080d4c88>] notifier_call_chain+0x4c/0x88
[ 0.959408] [<ffff0000080d5010>] __blocking_notifier_call_chain+0x44/0x74
[ 0.966159] [<ffff0000080d5054>] blocking_notifier_call_chain+0x14/0x1c
[ 0.972754] [<ffff000008489600>] device_add+0x3ac/0x53c
[ 0.977959] [<ffff000008671810>] of_device_add+0x58/0x64
[ 0.983240] [<ffff0000086720c8>] of_platform_device_create_pdata+0x90/0xe8
[ 0.990077] [<ffff00000867220c>] of_platform_bus_create+0xd0/0x31c
[ 0.996265] [<ffff000008672574>] of_platform_populate+0x48/0xac
[ 1.002169] [<ffff000008af2654>] arm64_device_init+0x30/0x58
[ 1.007813] [<ffff000008081a14>] do_one_initcall+0x38/0x128
[ 1.013354] [<ffff000008af0cc4>] kernel_init_freeable+0x14c/0x1ec
[ 1.019439] [<ffff0000087a92d0>] kernel_init+0x10/0xfc
[ 1.024556] [<ffff000008084e10>] ret_from_fork+0x10/0x40
[ 0.906207] Failed to set up IOMMU for device tst_smmu; retaining platform DMA ops //error info
[ 0.963782] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.970442] ACPI: Interpreter disabled.
[ 0.974429] arm-smmu-v3 d0040000.smmu_alg: ias 44-bit, oas 44-bit (features 0x00000f0d)
[ 0.996948] Call trace:
[ 0.999400] [<ffff00000808882c>] dump_backtrace+0x0/0x1ac
[ 1.004787] [<ffff0000080889ec>] show_stack+0x14/0x1c
[ 1.009846] [<ffff00000833c290>] dump_stack+0x8c/0xac
[ 1.014905] [<ffff0000084829d4>] arm_smmu_add_device+0x44/0x160
[ 1.020801] [<ffff00000847a218>] add_iommu_group+0x20/0x44
[ 1.026291] [<ffff00000848a43c>] bus_for_each_dev+0x58/0x98
[ 1.031866] [<ffff00000847b220>] bus_set_iommu+0x9c/0xf8
[ 1.037150] [<ffff000008b1b420>] arm_smmu_init+0x78/0x84
[ 1.042475] [<ffff000008081a14>] do_one_initcall+0x38/0x128
[ 1.048043] [<ffff000008af0cc4>] kernel_init_freeable+0x14c/0x1ec
[ 1.054138] [<ffff0000087a931c>] kernel_init+0x10/0xfc
[ 1.059264] [<ffff000008084e10>] ret_from_fork+0x10/0x40
[ 1.171026] iommu: Adding device tst_smmu to group 0 //It's already late.
On 2016/6/15 9:22, Leizhen (ThunderTown) wrote:
>
>
> 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 <robin.murphy@arm.com>
>>> ---
>>>
>>> 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 <linux/pci.h>
>>> #include <linux/platform_device.h>
>>>
>>> +#include <linux/amba/bus.h>
>>> +
>>> #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
>>
>> .
>>
next prev parent reply other threads:[~2016-06-17 1:54 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 17:15 [PATCH v2 0/7] Generic DT bindings for PCI IOMMUs and ARM SMMUv3 Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <cover.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-03 17:15 ` [PATCH v2 1/7] iommu/of: Respect disabled IOMMUs Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <aca0b44206c87f6cb75d156a53e08aa968981119.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-14 14:11 ` Will Deacon
2016-06-14 14:11 ` Will Deacon
[not found] ` <20160614141148.GH19407-5wv7dgnIgG8@public.gmane.org>
2016-06-14 15:04 ` Robin Murphy
2016-06-14 15:04 ` Robin Murphy
2016-06-03 17:15 ` [PATCH v2 2/7] Docs: dt: add PCI IOMMU map bindings Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <3a7e47d7b8839ff079568137b5b1b438cfbb44ac.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-14 14:16 ` Will Deacon
2016-06-14 14:16 ` Will Deacon
2016-06-03 17:15 ` [PATCH v2 3/7] of/irq: Break out msi-map lookup (again) Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <2cbffa9a341edfd10114994f6486f6b08d0c390c.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-04 8:10 ` Marc Zyngier
2016-06-04 8:10 ` Marc Zyngier
2016-06-14 14:37 ` Will Deacon
2016-06-14 14:37 ` Will Deacon
[not found] ` <20160614143750.GJ19407-5wv7dgnIgG8@public.gmane.org>
2016-06-14 18:12 ` Robin Murphy
2016-06-14 18:12 ` Robin Murphy
[not found] ` <5760491E.7060104-5wv7dgnIgG8@public.gmane.org>
2016-06-14 18:20 ` Will Deacon
2016-06-14 18:20 ` Will Deacon
2016-06-14 17:01 ` Rob Herring
2016-06-14 17:01 ` Rob Herring
[not found] ` <CAL_JsqJ4km0dH2PxHma9-cPwC20WR0ejn_14UeV0vBWJ+XLBBg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-15 10:16 ` Robin Murphy
2016-06-15 10:16 ` Robin Murphy
2016-06-03 17:15 ` [PATCH v2 4/7] iommu/of: Handle iommu-map property for PCI Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <69952eda726c370ed6e5739bdd2e32cdc4466bfb.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-14 14:45 ` Will Deacon
2016-06-14 14:45 ` Will Deacon
[not found] ` <20160614144559.GK19407-5wv7dgnIgG8@public.gmane.org>
2016-06-15 11:21 ` Robin Murphy
2016-06-15 11:21 ` Robin Murphy
2016-06-03 17:15 ` [PATCH v2 5/7] iommu/arm-smmu: Implement of_xlate() for SMMUv3 Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <55aa94e099f00fd586077c45d4c4fd1c010981d9.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-14 15:07 ` Will Deacon
2016-06-14 15:07 ` Will Deacon
[not found] ` <20160614150757.GB16531-5wv7dgnIgG8@public.gmane.org>
2016-06-14 16:11 ` Robin Murphy
2016-06-14 16:11 ` Robin Murphy
2016-06-03 17:15 ` [PATCH v2 6/7] iommu/arm-smmu: Finish off SMMUv3 default domain support Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <aabcdd814b93b2b6a902b189f6911f929a29b64f.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-06 15:47 ` Jean-Philippe Brucker
2016-06-06 15:47 ` Jean-Philippe Brucker
[not found] ` <20160606154712.GA9864-lfHAr0XZR/FyySVAYrpuPyZi+YwRKgec@public.gmane.org>
2016-06-06 17:22 ` Robin Murphy
2016-06-06 17:22 ` Robin Murphy
2016-06-14 15:59 ` Will Deacon
2016-06-14 15:59 ` Will Deacon
2016-06-03 17:15 ` [PATCH v2 7/7] iommu/arm-smmu: Support non-PCI devices with SMMUv3 Robin Murphy
2016-06-03 17:15 ` Robin Murphy
[not found] ` <42a8a71932f766d70ea9dcae5d11d5f33dcc3652.1464966939.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2016-06-14 15:16 ` Will Deacon
2016-06-14 15:16 ` Will Deacon
[not found] ` <20160614151642.GC16531-5wv7dgnIgG8@public.gmane.org>
2016-06-15 1:22 ` Leizhen (ThunderTown)
2016-06-15 1:22 ` Leizhen (ThunderTown)
[not found] ` <5760ADC6.8000803-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-06-17 1:54 ` Leizhen (ThunderTown) [this message]
2016-06-17 1:54 ` Leizhen (ThunderTown)
[not found] ` <57635843.6000906-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2016-06-17 9:14 ` Robin Murphy
2016-06-17 9:14 ` Robin Murphy
[not found] ` <5763BF69.7010205-5wv7dgnIgG8@public.gmane.org>
2016-06-21 8:36 ` Leizhen (ThunderTown)
2016-06-21 8:36 ` Leizhen (ThunderTown)
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=57635843.6000906@huawei.com \
--to=thunder.leizhen-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=robin.murphy-5wv7dgnIgG8@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@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.