From: Jiang Liu <jiang.liu@linux.intel.com>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
Bjorn Helgaas <bhelgaas@google.com>,
Marc Zyngier <Marc.Zyngier@arm.com>,
"hanjun.guo@linaro.org" <hanjun.guo@linaro.org>,
Liviu Dudau <Liviu.Dudau@arm.com>,
Yijing Wang <wangyijing@huawei.com>, Len Brown <lenb@kernel.org>,
Lv Zheng <lv.zheng@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"x86 @ kernel . org" <x86@kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [Patch v5 4/6] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core
Date: Wed, 10 Jun 2015 00:58:15 +0800 [thread overview]
Message-ID: <55771B27.1060509@linux.intel.com> (raw)
In-Reply-To: <20150609161230.GC8591@red-moon>
On 2015/6/10 0:12, Lorenzo Pieralisi wrote:
> On Mon, Jun 08, 2015 at 05:20:46PM +0100, Jiang Liu wrote:
>
> [...]
>
>> +static int acpi_pci_probe_root_resources(struct acpi_pci_root_info *info)
>> +{
>> + int ret;
>> + struct list_head *list = &info->resources;
>> + struct acpi_device *device = info->bridge;
>> + struct resource_entry *entry, *tmp;
>> + unsigned long flags;
>> +
>> + flags = IORESOURCE_IO | IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT;
>
> Is IORESOURCE_MEM_8AND16BIT required because of some pending patches
> that will change ACPI resource filtering ? It does not seem to make
> a difference in the mainline code, AFAICT.
Hi Lorenzo,
Sorry, the 'IORESOURCE_MEM_8AND16BIT' is leaked into this patch
from another bugfix patch. It should be removed.
>> +static void acpi_pci_root_release_info(struct pci_host_bridge *bridge)
>> +{
>> + struct resource *res;
>> + struct resource_entry *entry;
>> +
>> + resource_list_for_each_entry(entry, &bridge->windows) {
>> + res = entry->res;
>> + if (res->parent &&
>> + (res->flags & (IORESOURCE_MEM | IORESOURCE_IO)))
>> + release_resource(res);
>> + }
>
> It is a question: is this loop necessary given that we are already
> releasing resources in __acpi_pci_root_release_info() ?
Function pci_create_root_bus() moves resources from info->resources list
onto bridge->windows list, so an ACPI resource will be either on
info->resources or bridge->windows. Thus we need to deal with both
info->resources and bridge->windows.
>
>> + __acpi_pci_root_release_info(bridge->release_data);
>> +}
>> +
>> +struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
>> + struct acpi_pci_root_ops *ops,
>> + struct acpi_pci_root_info *info,
>> + void *sysdata, int segment, int node)
>
> I do not think you need to pass segment and node, they clutter the
> function signature when you can retrieve them from root, I would
> make them local variables and use root->segment and acpi_get_node
> in the function body to retrieve them.
On x86, node and segment may be overridden under certain conditions.
For example, segment will always be 0 if 'pci_ignore_seg' is set.
>> +{
>> + int ret, busnum = root->secondary.start;
>> + struct acpi_device *device = root->device;
>> + struct pci_bus *bus;
>> +
>> + info->root = root;
>> + info->bridge = device;
>> + info->ops = ops;
>> + INIT_LIST_HEAD(&info->resources);
>> + snprintf(info->name, sizeof(info->name), "PCI Bus %04x:%02x",
>> + segment, busnum);
>> +
>> + if (ops->init_info && ops->init_info(info))
>> + goto out_release_info;
>> + ret = acpi_pci_probe_root_resources(info);
>> + if (ops->prepare_resources)
>> + ret = ops->prepare_resources(info, ret);
>
> You go through this ret passing song and dance because we may want to
> call prepare_resources even if acpi_pci_probe_root_resource failed (on
> x86), correct ? I will have a further look at x86 and ia64 if we
> can consolidate these ops function hooks even further.
Yes. X86 uses flag 'pci_use_crs' to choose ACPI parsed resources or
other method parsed resources. This provides user a way to work
around some bios issues.
Thanks!
Gerry
next prev parent reply other threads:[~2015-06-09 16:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-08 16:20 [Patch v5 0/6] Consolidate ACPI PCI root common code into ACPI core Jiang Liu
2015-06-08 16:20 ` [Patch v5 1/6] ACPI/PCI: Enhance ACPI core to support sparse IO space Jiang Liu
2015-07-29 20:37 ` Bjorn Helgaas
2015-09-09 6:38 ` Jiang Liu
2015-09-09 14:54 ` Bjorn Helgaas
2015-06-08 16:20 ` [Patch v5 2/6] ia64/PCI/ACPI: Use common ACPI resource parsing interface for host bridge Jiang Liu
2015-06-08 16:20 ` [Patch v5 3/6] ia64/PCI: Use common struct resource_entry to replace struct iospace_resource Jiang Liu
2015-06-08 16:20 ` [Patch v5 4/6] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core Jiang Liu
2015-06-09 16:12 ` Lorenzo Pieralisi
2015-06-09 16:58 ` Jiang Liu [this message]
2015-06-10 16:48 ` Lorenzo Pieralisi
2015-06-10 17:19 ` Jiang Liu
2015-06-11 16:18 ` Lorenzo Pieralisi
2015-07-29 20:54 ` Bjorn Helgaas
2015-07-29 20:24 ` Bjorn Helgaas
2015-06-08 16:20 ` [Patch v5 5/6] x86/PCI/ACPI: Use common interface to support PCI host bridge Jiang Liu
2015-06-08 16:20 ` [Patch v5 6/6] ia64/PCI/ACPI: " Jiang Liu
2015-07-29 12:17 ` [Patch v5 0/6] Consolidate ACPI PCI root common code into ACPI core Hanjun Guo
2015-07-29 20:30 ` Bjorn Helgaas
2015-07-30 7:58 ` Jiang Liu
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=55771B27.1060509@linux.intel.com \
--to=jiang.liu@linux.intel.com \
--cc=Liviu.Dudau@arm.com \
--cc=Marc.Zyngier@arm.com \
--cc=bhelgaas@google.com \
--cc=hanjun.guo@linaro.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lv.zheng@intel.com \
--cc=rjw@rjwysocki.net \
--cc=wangyijing@huawei.com \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).