From: Zhou Wang <wangzhou1@hisilicon.com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
Will Deacon <will.deacon@arm.com>,
<linux-arm-kernel@lists.infradead.org>,
Linux PCI <linux-pci@vger.kernel.org>
Subject: Re: [Question] PCI ACS is broken for ARM SMMU v3?
Date: Tue, 5 Sep 2017 20:47:15 +0800 [thread overview]
Message-ID: <59AE9CD3.1020700@hisilicon.com> (raw)
In-Reply-To: <20170904155948.GA20601@red-moon>
On 2017/9/4 23:59, Lorenzo Pieralisi wrote:
> On Mon, Sep 04, 2017 at 08:33:22PM +0800, Zhou Wang wrote:
>> +to: Lorenzo
>>
>> On 2017/8/31 22:21, Zhou Wang wrote:
>>> Hi Will and Alex,
>>>
>>> pci_request_acs is called in drivers/iommu/arm-smmu-v3.c to set pci_acs_enable.
>>>
>>> PCI subsystem tries to enable ACS as below:
>>>
>>> pci_device_add
>>> --> pci_init_capabilities
>>> --> pci_enable_acs
>>>
>>> in ACPI PCI driver. However, ACPI PCI driver will be called before SMMU v3 driver,
>>> which will lead pci_enable_acs to return directly as pci_acs_enable is not set
>>> before SMMU v3 driver loading.
>>>
>>> I think this is a bug, what do you think about this problem?
>
> I think that it is a bug that affects OF/ACPI alike. One way of solving
Yes, DT also has this problem.
> it is requesting ACS at IORT init following appropriate checks (ie
> mappings PCI->IOMMU - that would not solve the OF path though). I can
> put together a quick fix, the overall problem needs some thinking
> though.
I am not familiar with IORT init, but can we do it like:
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index a3215ee..a6f1a21 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -1131,6 +1131,7 @@ static void __init iort_init_platform_devices(void)
acpi_free_fwnode_static(fwnode);
return;
}
+ pci_request_acs();
}
iort_node = ACPI_ADD_PTR(struct acpi_iort_node, iort_node,
Best,
Zhou
>
> Lorenzo
>
> .
>
WARNING: multiple messages have this Message-ID (diff)
From: wangzhou1@hisilicon.com (Zhou Wang)
To: linux-arm-kernel@lists.infradead.org
Subject: [Question] PCI ACS is broken for ARM SMMU v3?
Date: Tue, 5 Sep 2017 20:47:15 +0800 [thread overview]
Message-ID: <59AE9CD3.1020700@hisilicon.com> (raw)
In-Reply-To: <20170904155948.GA20601@red-moon>
On 2017/9/4 23:59, Lorenzo Pieralisi wrote:
> On Mon, Sep 04, 2017 at 08:33:22PM +0800, Zhou Wang wrote:
>> +to: Lorenzo
>>
>> On 2017/8/31 22:21, Zhou Wang wrote:
>>> Hi Will and Alex,
>>>
>>> pci_request_acs is called in drivers/iommu/arm-smmu-v3.c to set pci_acs_enable.
>>>
>>> PCI subsystem tries to enable ACS as below:
>>>
>>> pci_device_add
>>> --> pci_init_capabilities
>>> --> pci_enable_acs
>>>
>>> in ACPI PCI driver. However, ACPI PCI driver will be called before SMMU v3 driver,
>>> which will lead pci_enable_acs to return directly as pci_acs_enable is not set
>>> before SMMU v3 driver loading.
>>>
>>> I think this is a bug, what do you think about this problem?
>
> I think that it is a bug that affects OF/ACPI alike. One way of solving
Yes, DT also has this problem.
> it is requesting ACS at IORT init following appropriate checks (ie
> mappings PCI->IOMMU - that would not solve the OF path though). I can
> put together a quick fix, the overall problem needs some thinking
> though.
I am not familiar with IORT init, but can we do it like:
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index a3215ee..a6f1a21 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -1131,6 +1131,7 @@ static void __init iort_init_platform_devices(void)
acpi_free_fwnode_static(fwnode);
return;
}
+ pci_request_acs();
}
iort_node = ACPI_ADD_PTR(struct acpi_iort_node, iort_node,
Best,
Zhou
>
> Lorenzo
>
> .
>
next prev parent reply other threads:[~2017-09-05 12:47 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-31 14:21 [Question] PCI ACS is broken for ARM SMMU v3? Zhou Wang
2017-08-31 14:21 ` Zhou Wang
2017-09-04 12:33 ` Zhou Wang
2017-09-04 12:33 ` Zhou Wang
2017-09-04 15:59 ` Lorenzo Pieralisi
2017-09-04 15:59 ` Lorenzo Pieralisi
2017-09-05 12:47 ` Zhou Wang [this message]
2017-09-05 12:47 ` Zhou Wang
2017-09-06 9:55 ` Lorenzo Pieralisi
2017-09-06 9:55 ` Lorenzo Pieralisi
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=59AE9CD3.1020700@hisilicon.com \
--to=wangzhou1@hisilicon.com \
--cc=alex.williamson@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@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: 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.