From: bhelgaas@google.com (Bjorn Helgaas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 08/30] PCI: Update pci_host_bridge bus resource
Date: Tue, 7 Apr 2015 17:42:43 -0500 [thread overview]
Message-ID: <20150407224243.GL10892@google.com> (raw)
In-Reply-To: <1428053164-28277-10-git-send-email-wangyijing@huawei.com>
On Fri, Apr 03, 2015 at 05:25:42PM +0800, Yijing Wang wrote:
> From: Yijing Wang <wangyijing0307@gmail.com>
>
> Sometimes, the bus resource start number is not equal to
> root bus number. For example, in pci_scan_bus(), we always
> add the default bus resource which start bus number is 0,
> but the root bus number callers given may != 0, so
> we need to update pci_host_bridge bus resource, because we
> would check whether host bridge bus resoruce is confict
> in later patch.
It's true that pci_scan_bus() always inserts [bus 00-ff]. But I think
that's completely bogus. The caller of pci_scan_bus() supplies a root bus
number X. Any bus numbers below X are useless as far as this host bridge
is concerned, and it's pointless to include them in the range inserted by
pci_scan_bus().
I think we'd be better off if we forced every pci_scan_bus() caller to
supply a real non-overlapping bus number range. We probably can't do that
easily because the arch knows the beginning bus number, but some don't know
how to figure out the ending bus number.
Do we have a per-domain structure that tracks the bus numbers in use in the
domain? It seems like if we had one, we could use that to approximate the
end. For example, if the arch scans three root buses, at bus 00, bus 40,
and bus 80, we could start with the first one at [bus 00-ff], and when we
scan the one at bus 40, we could either report a conflict (if the bus 00
tree included a bus 40) or reduce the first range to [bus 00-3f].
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> drivers/pci/host-bridge.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
> index ecc1a7c..1a9834b 100644
> --- a/drivers/pci/host-bridge.c
> +++ b/drivers/pci/host-bridge.c
> @@ -26,8 +26,11 @@ static void pci_host_update_busn_res(
> struct resource_entry *window;
>
> resource_list_for_each_entry(window, resources)
> - if (window->res->flags & IORESOURCE_BUS)
> + if (window->res->flags & IORESOURCE_BUS) {
> + if (bus > window->res->start)
> + window->res->start = bus;
I see what you're trying to do here, but I think this is the wrong place to
do it. I'd rather figure out a way to insert something other than
busn_resource in pci_scan_bus(). That probably means we need to
dynamically allocate a new busn_res struct.
> return;
> + }
>
> pr_info(
> "No busn resource found for pci%04x:%02x, will use [bus %02x-ff]\n",
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-04-07 22:42 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-03 9:25 [PATCH v9 00/30] Refine PCI scan interfaces and make generic pci host bridge Yijing Wang
2015-04-03 9:25 ` [PATCH] PCI: Save sysdata in pci_host_bridge drvdata Yijing Wang
2015-04-03 9:32 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 01/30] xen/PCI: Don't use deprecated function pci_scan_bus_parented() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 02/30] PCI: Remove deprecated pci_scan_bus_parented() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 03/30] PCI: Save domain in pci_host_bridge Yijing Wang
2015-04-08 8:09 ` Gregory CLEMENT
2015-04-08 8:32 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 04/30] PCI: Move pci_bus_assign_domain_nr() declaration into drivers/pci/pci.h Yijing Wang
2015-04-03 9:25 ` [PATCH v9 05/30] PCI: Introduce pci_host_assign_domain_nr() to assign domain Yijing Wang
2015-04-03 9:25 ` [PATCH v9 06/30] PCI: Separate pci_host_bridge creation out of pci_create_root_bus() Yijing Wang
2015-04-07 21:38 ` Bjorn Helgaas
2015-04-08 1:18 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 07/30] PCI: Add default bus resource in pci_host_bridge Yijing Wang
2015-04-07 22:25 ` Bjorn Helgaas
2015-04-08 8:14 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 08/30] PCI: Update pci_host_bridge bus resource Yijing Wang
2015-04-07 22:42 ` Bjorn Helgaas [this message]
2015-04-08 9:22 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 09/30] PCI: Introduce pci_host_first_busnr() function Yijing Wang
2015-04-03 9:25 ` [PATCH v9 10/30] PCI: Introduce pci_host_bridge_list to manage host bridges Yijing Wang
2015-04-03 9:25 ` [PATCH v9 11/30] PCI: Save sysdata in pci_host_bridge drvdata Yijing Wang
2015-04-03 9:25 ` [PATCH v9 12/30] powerpc/PCI: Rename pcibios_root_bridge_prepare() to pcibios_set_root_bus_speed() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 13/30] PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 14/30] PCI: Introduce pci_host_bridge_ops to support host specific operations Yijing Wang
2015-04-07 7:04 ` Daniel Axtens
2015-04-03 9:25 ` [PATCH v9 15/30] PCI: Introduce new scan function pci_scan_host_bridge() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 16/30] PCI: Introduce pci_bus_child_max_busnr() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 17/30] x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge Yijing Wang
2015-04-03 9:25 ` [PATCH v9 18/30] ia64/PCI: " Yijing Wang
2015-04-03 9:25 ` [PATCH v9 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity Yijing Wang
2015-04-06 23:35 ` Daniel Axtens
2015-04-07 2:52 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 20/30] PCI: Remove pcibios_root_bridge_prepare() and pcibos_set_root_bus_speed() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 21/30] sparc/PCI: Use pci_scan_host_bridge() for simplicity Yijing Wang
2015-04-03 9:25 ` [PATCH v9 22/30] parisc/PCI: Use pci_scan_root_bus() " Yijing Wang
2015-04-03 9:25 ` [PATCH v9 23/30] PCI/mvebu: Use pci_common_init_dev() to simplify code Yijing Wang
2015-04-08 8:08 ` Gregory CLEMENT
2015-04-08 8:30 ` Yijing Wang
2015-04-03 9:25 ` [PATCH v9 24/30] PCI/tegra: Remove redundant tegra_pcie_scan_bus() Yijing Wang
2015-04-03 9:25 ` [PATCH v9 25/30] PCI/designware: Use pci_scan_root_bus() for simplicity Yijing Wang
2015-04-03 9:26 ` [PATCH v9 26/30] PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus() Yijing Wang
2015-04-03 9:26 ` [PATCH v9 27/30] PCI: Rename __pci_create_root_bus() to pci_create_root_bus() Yijing Wang
2015-04-03 9:26 ` [PATCH v9 28/30] PCI: Remove platform specific pci_domain_nr() Yijing Wang
2015-04-03 9:26 ` [PATCH v9 29/30] PCI: Remove pci_bus_assign_domain_nr() Yijing Wang
2015-04-03 9:26 ` [PATCH v9 30/30] PCI: Clean up CONFIG_PCI_DOMAINS_GENERIC Yijing 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=20150407224243.GL10892@google.com \
--to=bhelgaas@google.com \
--cc=linux-arm-kernel@lists.infradead.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).