From: Yijing Wang <wangyijing@huawei.com> To: Bjorn Helgaas <bhelgaas@google.com> Cc: Yinghai Lu <yinghai@kernel.org>, <linux-pci@vger.kernel.org>, Tony Luck <tony.luck@intel.com>, <linux-ia64@vger.kernel.org>, Fenghua Yu <fenghua.yu@intel.com>, Hanjun Guo <guohanjun@huawei.com>, <jiang.liu@huawei.com>, Yijing Wang <wangyijing@huawei.com>, John Keller <jpk@sgi.com>, Jay Lan <jlan@engr.sgi.com>, Jack Steiner <steiner@sgi.com>, Mark Maule <maule@sgi.com> Subject: [PATCH -v4 2/8] PCI/IA64: SN: use normal resource instead of pci_window Date: Wed, 5 Jun 2013 14:01:51 +0800 [thread overview] Message-ID: <1370412117-12860-3-git-send-email-wangyijing@huawei.com> (raw) In-Reply-To: <1370412117-12860-1-git-send-email-wangyijing@huawei.com> Pci_window in pci_controller will not be used again, use normal resource instead of pci_window in sn_legacy_pci_window_fixup(), this patch is to prepare remove pci_window in IA64. Signed-off-by: Yijing Wang <wangyijing@huawei.com> Cc: John Keller <jpk@sgi.com> Cc: Jay Lan <jlan@engr.sgi.com> Cc: Jack Steiner <steiner@sgi.com> Cc: Mark Maule <maule@sgi.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org --- arch/ia64/sn/kernel/io_init.c | 56 +++++++++++++++++++---------------------- 1 files changed, 26 insertions(+), 30 deletions(-) diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index b8ff9ea..d97e2b4 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c @@ -118,34 +118,26 @@ static void __init sn_fixup_ionodes(void) } /* - * sn_pci_legacy_window_fixup - Create PCI controller windows for + * sn_pci_legacy_window_fixup - Setup PCI resources for * legacy IO and MEM space. This needs to * be done here, as the PROM does not have * ACPI support defining the root buses * and their resources (_CRS), */ static void -sn_legacy_pci_window_fixup(struct pci_controller *controller, - u64 legacy_io, u64 legacy_mem) +sn_legacy_pci_window_fixup(struct resource *res, + u64 legacy_io, u64 legacy_mem) { - controller->window = kcalloc(2, sizeof(struct pci_window), - GFP_KERNEL); - BUG_ON(controller->window == NULL); - controller->window[0].offset = legacy_io; - controller->window[0].resource.name = "legacy_io"; - controller->window[0].resource.flags = IORESOURCE_IO; - controller->window[0].resource.start = legacy_io; - controller->window[0].resource.end = - controller->window[0].resource.start + 0xffff; - controller->window[0].resource.parent = &ioport_resource; - controller->window[1].offset = legacy_mem; - controller->window[1].resource.name = "legacy_mem"; - controller->window[1].resource.flags = IORESOURCE_MEM; - controller->window[1].resource.start = legacy_mem; - controller->window[1].resource.end = - controller->window[1].resource.start + (1024 * 1024) - 1; - controller->window[1].resource.parent = &iomem_resource; - controller->windows = 2; + res[0].name = "legacy_io"; + res[0].flags = IORESOURCE_IO; + res[0].start = legacy_io; + res[0].end = res[0].start + 0xffff; + res[0].parent = &ioport_resource; + res[1].name = "legacy_mem"; + res[1].flags = IORESOURCE_MEM; + res[1].start = legacy_mem; + res[1].end = res[1].start + (1024 * 1024) - 1; + res[1].parent = &iomem_resource; } /* @@ -244,8 +236,8 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) s64 status = 0; struct pci_controller *controller; struct pcibus_bussoft *prom_bussoft_ptr; + struct resource *res; LIST_HEAD(resources); - int i; status = sal_get_pcibus_info((u64) segment, (u64) busnum, (u64) ia64_tpa(&prom_bussoft_ptr)); @@ -257,19 +249,23 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) BUG_ON(!controller); controller->segment = segment; + res = kcalloc(2, sizeof(struct resource), GFP_KERNEL); + BUG_ON(!res); + /* * Temporarily save the prom_bussoft_ptr for use by sn_bus_fixup(). * (platform_data will be overwritten later in sn_common_bus_fixup()) */ controller->platform_data = prom_bussoft_ptr; - sn_legacy_pci_window_fixup(controller, - prom_bussoft_ptr->bs_legacy_io, - prom_bussoft_ptr->bs_legacy_mem); - for (i = 0; i < controller->windows; i++) - pci_add_resource_offset(&resources, - &controller->window[i].resource, - controller->window[i].offset); + sn_legacy_pci_window_fixup(res, + prom_bussoft_ptr->bs_legacy_io, + prom_bussoft_ptr->bs_legacy_mem); + pci_add_resource_offset(&resources, &res[0], + prom_bussoft_ptr->bs_legacy_io); + pci_add_resource_offset(&resources, &res[1], + prom_bussoft_ptr->bs_legacy_mem); + bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, controller, &resources); if (bus == NULL) @@ -280,7 +276,7 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) return; error_return: - + kfree(res); kfree(controller); return; } -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com> To: Bjorn Helgaas <bhelgaas@google.com> Cc: Yinghai Lu <yinghai@kernel.org>, linux-pci@vger.kernel.org, Tony Luck <tony.luck@intel.com>, linux-ia64@vger.kernel.org, Fenghua Yu <fenghua.yu@intel.com>, Hanjun Guo <guohanjun@huawei.com>, jiang.liu@huawei.com, Yijing Wang <wangyijing@huawei.com>, John Keller <jpk@sgi.com>, Jay Lan <jlan@engr.sgi.com>, Jack Steiner <steiner@sgi.com>, Mark Maule <maule@sgi.com> Subject: [PATCH -v4 2/8] PCI/IA64: SN: use normal resource instead of pci_window Date: Wed, 05 Jun 2013 06:01:51 +0000 [thread overview] Message-ID: <1370412117-12860-3-git-send-email-wangyijing@huawei.com> (raw) In-Reply-To: <1370412117-12860-1-git-send-email-wangyijing@huawei.com> Pci_window in pci_controller will not be used again, use normal resource instead of pci_window in sn_legacy_pci_window_fixup(), this patch is to prepare remove pci_window in IA64. Signed-off-by: Yijing Wang <wangyijing@huawei.com> Cc: John Keller <jpk@sgi.com> Cc: Jay Lan <jlan@engr.sgi.com> Cc: Jack Steiner <steiner@sgi.com> Cc: Mark Maule <maule@sgi.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org --- arch/ia64/sn/kernel/io_init.c | 56 +++++++++++++++++++---------------------- 1 files changed, 26 insertions(+), 30 deletions(-) diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index b8ff9ea..d97e2b4 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c @@ -118,34 +118,26 @@ static void __init sn_fixup_ionodes(void) } /* - * sn_pci_legacy_window_fixup - Create PCI controller windows for + * sn_pci_legacy_window_fixup - Setup PCI resources for * legacy IO and MEM space. This needs to * be done here, as the PROM does not have * ACPI support defining the root buses * and their resources (_CRS), */ static void -sn_legacy_pci_window_fixup(struct pci_controller *controller, - u64 legacy_io, u64 legacy_mem) +sn_legacy_pci_window_fixup(struct resource *res, + u64 legacy_io, u64 legacy_mem) { - controller->window = kcalloc(2, sizeof(struct pci_window), - GFP_KERNEL); - BUG_ON(controller->window = NULL); - controller->window[0].offset = legacy_io; - controller->window[0].resource.name = "legacy_io"; - controller->window[0].resource.flags = IORESOURCE_IO; - controller->window[0].resource.start = legacy_io; - controller->window[0].resource.end - controller->window[0].resource.start + 0xffff; - controller->window[0].resource.parent = &ioport_resource; - controller->window[1].offset = legacy_mem; - controller->window[1].resource.name = "legacy_mem"; - controller->window[1].resource.flags = IORESOURCE_MEM; - controller->window[1].resource.start = legacy_mem; - controller->window[1].resource.end - controller->window[1].resource.start + (1024 * 1024) - 1; - controller->window[1].resource.parent = &iomem_resource; - controller->windows = 2; + res[0].name = "legacy_io"; + res[0].flags = IORESOURCE_IO; + res[0].start = legacy_io; + res[0].end = res[0].start + 0xffff; + res[0].parent = &ioport_resource; + res[1].name = "legacy_mem"; + res[1].flags = IORESOURCE_MEM; + res[1].start = legacy_mem; + res[1].end = res[1].start + (1024 * 1024) - 1; + res[1].parent = &iomem_resource; } /* @@ -244,8 +236,8 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) s64 status = 0; struct pci_controller *controller; struct pcibus_bussoft *prom_bussoft_ptr; + struct resource *res; LIST_HEAD(resources); - int i; status = sal_get_pcibus_info((u64) segment, (u64) busnum, (u64) ia64_tpa(&prom_bussoft_ptr)); @@ -257,19 +249,23 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) BUG_ON(!controller); controller->segment = segment; + res = kcalloc(2, sizeof(struct resource), GFP_KERNEL); + BUG_ON(!res); + /* * Temporarily save the prom_bussoft_ptr for use by sn_bus_fixup(). * (platform_data will be overwritten later in sn_common_bus_fixup()) */ controller->platform_data = prom_bussoft_ptr; - sn_legacy_pci_window_fixup(controller, - prom_bussoft_ptr->bs_legacy_io, - prom_bussoft_ptr->bs_legacy_mem); - for (i = 0; i < controller->windows; i++) - pci_add_resource_offset(&resources, - &controller->window[i].resource, - controller->window[i].offset); + sn_legacy_pci_window_fixup(res, + prom_bussoft_ptr->bs_legacy_io, + prom_bussoft_ptr->bs_legacy_mem); + pci_add_resource_offset(&resources, &res[0], + prom_bussoft_ptr->bs_legacy_io); + pci_add_resource_offset(&resources, &res[1], + prom_bussoft_ptr->bs_legacy_mem); + bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, controller, &resources); if (bus = NULL) @@ -280,7 +276,7 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus) return; error_return: - + kfree(res); kfree(controller); return; } -- 1.7.1
next prev parent reply other threads:[~2013-06-05 6:05 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-06-05 6:01 [PATCH -v4 0/8] Add hostbridge resource release to support root bus hotplug in IA64 Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 1/8] PCI/IA64: SN: remove sn_pci_window_fixup() Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` Yijing Wang [this message] 2013-06-05 6:01 ` [PATCH -v4 2/8] PCI/IA64: SN: use normal resource instead of pci_window Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 3/8] PCI/IA64: embed pci hostbridge resources into pci_root_info Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 4/8] PCI/IA64: Allocate pci_root_info instead of using stack Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 5/8] PCI/IA64: fix memleak for create pci root bus fail Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 6/8] PCI/IA64: add host bridge resource release for _CRS path Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 7/8] PCI/IA64: introduce probe_pci_root_info() to manage _CRS resource Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 6:01 ` [PATCH -v4 8/8] PCI: Replace printks with appropriate pr_*() Yijing Wang 2013-06-05 6:01 ` Yijing Wang 2013-06-05 17:27 ` [PATCH -v4 0/8] Add hostbridge resource release to support root bus hotplug in IA64 Bjorn Helgaas 2013-06-05 17:27 ` Bjorn Helgaas 2013-06-06 7:32 ` Yijing Wang 2013-06-06 7:32 ` 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=1370412117-12860-3-git-send-email-wangyijing@huawei.com \ --to=wangyijing@huawei.com \ --cc=bhelgaas@google.com \ --cc=fenghua.yu@intel.com \ --cc=guohanjun@huawei.com \ --cc=jiang.liu@huawei.com \ --cc=jlan@engr.sgi.com \ --cc=jpk@sgi.com \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=maule@sgi.com \ --cc=steiner@sgi.com \ --cc=tony.luck@intel.com \ --cc=yinghai@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: linkBe 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.