All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <guohanjun@huawei.com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Hanjun Guo <hanjun.guo@linaro.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linuxarm <linuxarm@huawei.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	Lv Zheng <lv.zheng@intel.com>,
	Robin Murphy <robin.murphy@arm.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 3/4] ACPI: IORT: Skip SMMUv3 device ID map for two steps mappings
Date: Wed, 11 Oct 2017 13:26:10 +0800	[thread overview]
Message-ID: <59DDAB72.7070605@huawei.com> (raw)
In-Reply-To: <20171010092036.GA8507@red-moon>

On 2017/10/10 17:20, Lorenzo Pieralisi wrote:
> On Tue, Oct 10, 2017 at 02:47:53PM +0800, Hanjun Guo wrote:
>> Hi Lorenzo,
>>
>> Sorry for the late reply, holidays in China for the past week.
>>
>> At 2017/9/27 21:54, Lorenzo Pieralisi wrote:
>>> Hi Hanjun,
>>>
>>> On Wed, Sep 27, 2017 at 09:20:14AM +0800, Hanjun Guo wrote:
>>>> IORT revision C introduced SMMUv3 MSI support which adding a
>>>> device ID mapping index in SMMUv3 sub table, to get the SMMUv3
>>>> device ID mapping for the output ID (dev ID for ITS) and the
>>>> link to which ITS.
>>>>
>>>> So if a platform supports SMMUv3 MSI for control interrupt,
>>>> there will be a additional single map entry under SMMU, this
>>>> will not introduce any difference for devices just use one
>>>> step map to get its output ID and parent (ITS or SMMU), such
>>>> as PCI/NC/PMCG ---> ITS or PCI/NC ---> SMMU, but we need to
>>>> do the special handling for two steps map case such as
>>>> PCI/NC--->SMMUv3--->ITS.
>>>>
>>>> Take a PCI hostbridge for example,
>>>>
>>>> |----------------------|
>>>> |  Root Complex Node   |
>>>> |----------------------|
>>>> |    map entry[x]      |
>>>> |----------------------|
>>>> |       id value       |
>>>> | output_reference     |
>>>> |---|------------------|
>>>>      |
>>>>      |   |----------------------|
>>>>      |-->|        SMMUv3        |
>>>>          |----------------------|
>>>>          |     SMMU dev ID      |
>>>>          |     mapping index 0  |
>>>>          |----------------------|
>>>>          |      map entry[0]    |
>>>>          |----------------------|
>>>>          |       id value       |
>>>>          | output_reference-----------> ITS 1 (SMMU MSI domain)
>>>>          |----------------------|
>>>>          |      map entry[1]    |
>>>>          |----------------------|
>>>>          |       id value       |
>>>>          | output_reference-----------> ITS 2 (PCI MSI domain)
>>>>          |----------------------|
>>>>
>>>> When the SMMU dev ID mapping index is 0, there is entry[0]
>>>> to map to a ITS, we need to skip that map entry for PCI
>>>> or NC (named component), or we may get the wrong ITS parent.
>>> Is this actually true ? I think that currently we would simply skip
>>> the entry and print an error log but we can't get a wrong ITS parent.
>> So the only valid single mapping under type SMMUv3 is SMMUv3's dev id
>> mapping, we need to fix the IORT spec as well.
>>
>>> I am rewriting this commit (I will probably split it), it is doing the
>>> right thing but the commit log is stale (probably caused by code
>>> reshuffling).
>> Do I need to resend another version, or you can help to update it?
>> please let me know.
> I reworked the patches, you can repost/retest them I made them available
> in the branch below, we will have to add a guard around ACPICA smmu
> struct (unfortunately I think we will have to use the ACPICA version as
> a guard) or I can ask Rafael to pull the series if ACPICA goes via ACPI
> tree (and your patch made it into the release - I will check ACPICA
> upstream).

Bob already merged my pull request yesterday, I think it will be ready for
acpica release for this month.

>
> git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git iort/smmu-msi-for-4.15
>

Thanks! I will retest then repost.

Hanjun

WARNING: multiple messages have this Message-ID (diff)
From: guohanjun@huawei.com (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] ACPI: IORT: Skip SMMUv3 device ID map for two steps mappings
Date: Wed, 11 Oct 2017 13:26:10 +0800	[thread overview]
Message-ID: <59DDAB72.7070605@huawei.com> (raw)
In-Reply-To: <20171010092036.GA8507@red-moon>

On 2017/10/10 17:20, Lorenzo Pieralisi wrote:
> On Tue, Oct 10, 2017 at 02:47:53PM +0800, Hanjun Guo wrote:
>> Hi Lorenzo,
>>
>> Sorry for the late reply, holidays in China for the past week.
>>
>> At 2017/9/27 21:54, Lorenzo Pieralisi wrote:
>>> Hi Hanjun,
>>>
>>> On Wed, Sep 27, 2017 at 09:20:14AM +0800, Hanjun Guo wrote:
>>>> IORT revision C introduced SMMUv3 MSI support which adding a
>>>> device ID mapping index in SMMUv3 sub table, to get the SMMUv3
>>>> device ID mapping for the output ID (dev ID for ITS) and the
>>>> link to which ITS.
>>>>
>>>> So if a platform supports SMMUv3 MSI for control interrupt,
>>>> there will be a additional single map entry under SMMU, this
>>>> will not introduce any difference for devices just use one
>>>> step map to get its output ID and parent (ITS or SMMU), such
>>>> as PCI/NC/PMCG ---> ITS or PCI/NC ---> SMMU, but we need to
>>>> do the special handling for two steps map case such as
>>>> PCI/NC--->SMMUv3--->ITS.
>>>>
>>>> Take a PCI hostbridge for example,
>>>>
>>>> |----------------------|
>>>> |  Root Complex Node   |
>>>> |----------------------|
>>>> |    map entry[x]      |
>>>> |----------------------|
>>>> |       id value       |
>>>> | output_reference     |
>>>> |---|------------------|
>>>>      |
>>>>      |   |----------------------|
>>>>      |-->|        SMMUv3        |
>>>>          |----------------------|
>>>>          |     SMMU dev ID      |
>>>>          |     mapping index 0  |
>>>>          |----------------------|
>>>>          |      map entry[0]    |
>>>>          |----------------------|
>>>>          |       id value       |
>>>>          | output_reference-----------> ITS 1 (SMMU MSI domain)
>>>>          |----------------------|
>>>>          |      map entry[1]    |
>>>>          |----------------------|
>>>>          |       id value       |
>>>>          | output_reference-----------> ITS 2 (PCI MSI domain)
>>>>          |----------------------|
>>>>
>>>> When the SMMU dev ID mapping index is 0, there is entry[0]
>>>> to map to a ITS, we need to skip that map entry for PCI
>>>> or NC (named component), or we may get the wrong ITS parent.
>>> Is this actually true ? I think that currently we would simply skip
>>> the entry and print an error log but we can't get a wrong ITS parent.
>> So the only valid single mapping under type SMMUv3 is SMMUv3's dev id
>> mapping, we need to fix the IORT spec as well.
>>
>>> I am rewriting this commit (I will probably split it), it is doing the
>>> right thing but the commit log is stale (probably caused by code
>>> reshuffling).
>> Do I need to resend another version, or you can help to update it?
>> please let me know.
> I reworked the patches, you can repost/retest them I made them available
> in the branch below, we will have to add a guard around ACPICA smmu
> struct (unfortunately I think we will have to use the ACPICA version as
> a guard) or I can ask Rafael to pull the series if ACPICA goes via ACPI
> tree (and your patch made it into the release - I will check ACPICA
> upstream).

Bob already merged my pull request yesterday, I think it will be ready for
acpica release for this month.

>
> git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git iort/smmu-msi-for-4.15
>

Thanks! I will retest then repost.

Hanjun

  reply	other threads:[~2017-10-11  5:26 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-27  1:20 [PATCH 0/4] IORT SMMUv3 MSI support Hanjun Guo
2017-09-27  1:20 ` Hanjun Guo
2017-09-27  1:20 ` [PATCH 1/4] ACPICA: Add SMMUv3 device ID mapping index support Hanjun Guo
2017-09-27  1:20   ` Hanjun Guo
2017-09-27  1:20 ` [PATCH 2/4] ACPI: IORT: lookup iort node via fwnode Hanjun Guo
2017-09-27  1:20   ` Hanjun Guo
2017-09-27  1:20 ` [PATCH 3/4] ACPI: IORT: Skip SMMUv3 device ID map for two steps mappings Hanjun Guo
2017-09-27  1:20   ` Hanjun Guo
2017-09-27 13:54   ` Lorenzo Pieralisi
2017-09-27 13:54     ` Lorenzo Pieralisi
2017-10-10  6:47     ` Hanjun Guo
2017-10-10  6:47       ` Hanjun Guo
2017-10-10  9:20       ` Lorenzo Pieralisi
2017-10-10  9:20         ` Lorenzo Pieralisi
2017-10-11  5:26         ` Hanjun Guo [this message]
2017-10-11  5:26           ` Hanjun Guo
2017-10-11 10:24           ` Lorenzo Pieralisi
2017-10-11 10:24             ` Lorenzo Pieralisi
2017-10-12  7:30             ` Hanjun Guo
2017-10-12  7:30               ` Hanjun Guo
2017-10-12  9:50               ` Lorenzo Pieralisi
2017-10-12  9:50                 ` Lorenzo Pieralisi
2017-09-27  1:20 ` [PATCH 4/4] ACPI: IORT: SMMUv3 nodes MSI support Hanjun Guo
2017-09-27  1:20   ` Hanjun Guo

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=59DDAB72.7070605@huawei.com \
    --to=guohanjun@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=lv.zheng@intel.com \
    --cc=marc.zyngier@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=robin.murphy@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.