From: Zhou Wang <wangzhou1@hisilicon.com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>, Tomasz Nowicki <tn@semihalf.com>,
Jayachandran C <jchandra@broadcom.com>,
jorn Helgaas <bhelgaas@google.com>,
liudongdong3@huawei.com, gabriele.paoloni@huawei.com,
linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] ACPI/PCI: Fix bus range comparation in pci_mcfg_lookup
Date: Wed, 4 Jan 2017 13:44:44 +0800 [thread overview]
Message-ID: <586C8BCC.7020006@hisilicon.com> (raw)
In-Reply-To: <20170103120021.GC7145@red-moon>
On 2017/1/3 20:00, Lorenzo Pieralisi wrote:
> On Thu, Dec 22, 2016 at 05:07:43PM +0800, Zhou Wang wrote:
>> Multiple PCIe host bridges may exists in one PCIe segment. So bus range for each
>> host bridge should be in the coverage of bus range of related PCIe segment.
>>
>> This patch will support this kind of scenario:
>>
>> MCFG:
>> bus range: 0x00~0xff.
>> segment: 0.
>> DSDT:
>> host bridge 1:
>> bus range: 0x00~0x1f.
>> segment: 0.
>> host bridge 2:
>> bus range: 0x20~0x4f.
>> segment: 0.
>
> "The configuration data provided by an MCFG region (ie PCI segment and
> bus range) may span multiple host bridges.
>
> Current code in pci_mcfg_lookup() carries out an exact match of host
> bridge bus range start value against the MCFG region(s) bus range start
> value which would cause configurations like the following:
>
> MCFG region:
> bus range: 0x00~0xff.
> segment: 0.
>
> PCI host bridges configuration (segment numbers and bus ranges):
> host bridge 1:
> bus range: 0x00~0x1f.
> segment: 0.
> host bridge 2:
> bus range: 0x20~0x4f.
> segment: 0.
>
> to fail, in that the bus range start value for host bridge 2 does
> not match the bus range start value of the respective MCFG region.
>
> Relax the bus range check in pci_mcfg_lookup() to cater for
> PCI configurations with multiple host bridges sharing the same
> MCFG region."
>
> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Hi Lorenzo,
Thanks for your view.
I will modify the commit message and post a new version patch.
Regards,
Zhou
>
>> Signed-off-by: Zhou Wang <wangzhou1@hisilicon.com>
>> ---
>> drivers/acpi/pci_mcfg.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
>> index b5b376e..46a3e32 100644
>> --- a/drivers/acpi/pci_mcfg.c
>> +++ b/drivers/acpi/pci_mcfg.c
>> @@ -40,11 +40,10 @@ phys_addr_t pci_mcfg_lookup(u16 seg, struct resource *bus_res)
>> struct mcfg_entry *e;
>>
>> /*
>> - * We expect exact match, unless MCFG entry end bus covers more than
>> - * specified by caller.
>> + * We expect the range in bus_res in the coverage of MCFG bus range.
>> */
>> list_for_each_entry(e, &pci_mcfg_list, list) {
>> - if (e->segment == seg && e->bus_start == bus_res->start &&
>> + if (e->segment == seg && e->bus_start <= bus_res->start &&
>> e->bus_end >= bus_res->end)
>> return e->addr;
>> }
>> --
>> 1.9.1
>>
>
> .
>
WARNING: multiple messages have this Message-ID (diff)
From: Zhou Wang <wangzhou1@hisilicon.com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>, Tomasz Nowicki <tn@semihalf.com>,
Jayachandran C <jchandra@broadcom.com>,
jorn Helgaas <bhelgaas@google.com>, <liudongdong3@huawei.com>,
<gabriele.paoloni@huawei.com>, <linux-acpi@vger.kernel.org>,
<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH] ACPI/PCI: Fix bus range comparation in pci_mcfg_lookup
Date: Wed, 4 Jan 2017 13:44:44 +0800 [thread overview]
Message-ID: <586C8BCC.7020006@hisilicon.com> (raw)
In-Reply-To: <20170103120021.GC7145@red-moon>
On 2017/1/3 20:00, Lorenzo Pieralisi wrote:
> On Thu, Dec 22, 2016 at 05:07:43PM +0800, Zhou Wang wrote:
>> Multiple PCIe host bridges may exists in one PCIe segment. So bus range for each
>> host bridge should be in the coverage of bus range of related PCIe segment.
>>
>> This patch will support this kind of scenario:
>>
>> MCFG:
>> bus range: 0x00~0xff.
>> segment: 0.
>> DSDT:
>> host bridge 1:
>> bus range: 0x00~0x1f.
>> segment: 0.
>> host bridge 2:
>> bus range: 0x20~0x4f.
>> segment: 0.
>
> "The configuration data provided by an MCFG region (ie PCI segment and
> bus range) may span multiple host bridges.
>
> Current code in pci_mcfg_lookup() carries out an exact match of host
> bridge bus range start value against the MCFG region(s) bus range start
> value which would cause configurations like the following:
>
> MCFG region:
> bus range: 0x00~0xff.
> segment: 0.
>
> PCI host bridges configuration (segment numbers and bus ranges):
> host bridge 1:
> bus range: 0x00~0x1f.
> segment: 0.
> host bridge 2:
> bus range: 0x20~0x4f.
> segment: 0.
>
> to fail, in that the bus range start value for host bridge 2 does
> not match the bus range start value of the respective MCFG region.
>
> Relax the bus range check in pci_mcfg_lookup() to cater for
> PCI configurations with multiple host bridges sharing the same
> MCFG region."
>
> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Hi Lorenzo,
Thanks for your view.
I will modify the commit message and post a new version patch.
Regards,
Zhou
>
>> Signed-off-by: Zhou Wang <wangzhou1@hisilicon.com>
>> ---
>> drivers/acpi/pci_mcfg.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
>> index b5b376e..46a3e32 100644
>> --- a/drivers/acpi/pci_mcfg.c
>> +++ b/drivers/acpi/pci_mcfg.c
>> @@ -40,11 +40,10 @@ phys_addr_t pci_mcfg_lookup(u16 seg, struct resource *bus_res)
>> struct mcfg_entry *e;
>>
>> /*
>> - * We expect exact match, unless MCFG entry end bus covers more than
>> - * specified by caller.
>> + * We expect the range in bus_res in the coverage of MCFG bus range.
>> */
>> list_for_each_entry(e, &pci_mcfg_list, list) {
>> - if (e->segment == seg && e->bus_start == bus_res->start &&
>> + if (e->segment == seg && e->bus_start <= bus_res->start &&
>> e->bus_end >= bus_res->end)
>> return e->addr;
>> }
>> --
>> 1.9.1
>>
>
> .
>
next prev parent reply other threads:[~2017-01-04 5:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-22 9:07 [RFC PATCH] ACPI/PCI: Fix bus range comparation in pci_mcfg_lookup Zhou Wang
2016-12-22 9:07 ` Zhou Wang
2017-01-03 1:28 ` Zhou Wang
2017-01-03 1:28 ` Zhou Wang
2017-01-03 6:39 ` Tomasz Nowicki
2017-01-03 9:07 ` Zhou Wang
2017-01-03 9:07 ` Zhou Wang
2017-01-03 12:00 ` Lorenzo Pieralisi
2017-01-04 5:44 ` Zhou Wang [this message]
2017-01-04 5:44 ` Zhou Wang
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=586C8BCC.7020006@hisilicon.com \
--to=wangzhou1@hisilicon.com \
--cc=bhelgaas@google.com \
--cc=gabriele.paoloni@huawei.com \
--cc=jchandra@broadcom.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=liudongdong3@huawei.com \
--cc=lorenzo.pieralisi@arm.com \
--cc=rjw@rjwysocki.net \
--cc=tn@semihalf.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.