All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Grundler <grundler@parisc-linux.org>
To: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
	Len Brown <lenb@kernel.org>,
	linux-acpi@vger.kernel.org,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-pci@vger.kernel.org, "Barnes,
	Jesse" <jesse.barnes@intel.com>,
	shaohua.li@intel.com
Subject: Re: ACPI hotplug panic with current git head
Date: Sun, 25 Jan 2009 23:21:32 -0700	[thread overview]
Message-ID: <20090126062132.GC4376@colo.lackof.org> (raw)
In-Reply-To: <497D1BD7.9000609@jp.fujitsu.com>

On Mon, Jan 26, 2009 at 11:11:35AM +0900, Kenji Kaneshige wrote:
...
> Thanks to you, I found the root cause of the
> problem. The acpi_pci_get_bridge_handle() function assumes
> pci_bus->self is NULL on the root bus.

Mea culpa: I contributed this mess too. This worked for PA-RISC
and lacking better guidance, is what I used in 1/2 the places.

> But it is not true
> and pci_bus->self can have a non-NULL value on some
> platfroms (like yours). So it must check pci_bus->parent
> instead.

It is true for PA-RISC and some other architectures.
These architectures don't provide fake PCI devices
(emulated PCI config space) for Host-PCI Bus controllers.

> I found some other code that has the same wrong assumption.
> I'll make a fix for them and send it soon.

I would like to keep the code consistent. Attached is a patch
for drivers/parisc. Please include with my
    Signed-off-by: Grant Grundler <grundler@parisc-linux.org>

Or if you prefer, I can repost as a separate patch.

I've compiled the iosapic/lba changes and will test those shortly.
I have no HW (by choice) to test the dino code change.

thanks,
grant


diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index d539d9d..f79266c 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -587,7 +587,7 @@ dino_fixup_bus(struct pci_bus *bus)
 			bus->resource[i+1] = &res[i];
 		}
 
-	} else if(bus->self) {
+	} else if (bus->parent) {
 		int i;
 
 		pci_read_bridge_bases(bus);
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
index 0797659..1cdfdea 100644
--- a/drivers/parisc/iosapic.c
+++ b/drivers/parisc/iosapic.c
@@ -487,7 +487,7 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev)
 	}
 
 	/* Check if pcidev behind a PPB */
-	if (NULL != pcidev->bus->self) {
+	if (pcidev->bus->parent) {
 		/* Convert pcidev INTR_PIN into something we
 		** can lookup in the IRT.
 		*/
@@ -523,10 +523,9 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev)
 #endif /* PCI_BRIDGE_FUNCS */
 
 		/*
-		** Locate the host slot the PPB nearest the Host bus
-		** adapter.
-		*/
-		while (NULL != p->parent->self)
+		 * Locate the host slot of the PPB.
+		 */
+		while (p->parent->parent)
 			p = p->parent;
 
 		intr_slot = PCI_SLOT(p->self->devfn);
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c
index d8233de..59fbbf1 100644
--- a/drivers/parisc/lba_pci.c
+++ b/drivers/parisc/lba_pci.c
@@ -644,7 +644,7 @@ lba_fixup_bus(struct pci_bus *bus)
 	** Properly Setup MMIO resources for this bus.
 	** pci_alloc_primary_bus() mangles this.
 	*/
-	if (bus->self) {
+	if (bus->parent) {
 		int i;
 		/* PCI-PCI Bridge */
 		pci_read_bridge_bases(bus);
@@ -802,7 +802,7 @@ lba_fixup_bus(struct pci_bus *bus)
 ** Can't fixup here anyway....garr...
 */
 	if (fbb_enable) {
-		if (bus->self) {
+		if (bus->parent) {
 			u8 control;
 			/* enable on PPB */
 			(void) pci_read_config_byte(bus->self, PCI_BRIDGE_CONTROL, &control);

  reply	other threads:[~2009-01-26  6:21 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-10 16:17 ACPI hotplug panic with current git head James Bottomley
2009-01-12 21:16 ` Len Brown
2009-01-13  0:48   ` James Bottomley
2009-01-13  3:40     ` Len Brown
2009-01-15 19:01     ` James Bottomley
2009-01-15 19:22       ` Len Brown
2009-01-15 19:54         ` James Bottomley
2009-01-15 20:12           ` James Bottomley
2009-01-16  6:07             ` Kenji Kaneshige
2009-01-16 14:19               ` James Bottomley
2009-01-19  1:10                 ` Kenji Kaneshige
2009-01-19  1:23                   ` James Bottomley
2009-01-19  3:11                     ` Kenji Kaneshige
2009-01-21 17:26                       ` James Bottomley
2009-01-26  2:11                         ` Kenji Kaneshige
2009-01-26  6:21                           ` Grant Grundler [this message]
2009-01-26 12:27                             ` Kenji Kaneshige
2009-01-28 11:47                           ` Kenji Kaneshige
2009-01-28 11:48                             ` [PATCH 1/8] PCI/ACPI: fix wrong assumption in acpi_pci_get_bridge_handle Kenji Kaneshige
2009-01-28 11:50                             ` [PATCH 2/8] PCI/ACPI: fix wrong assumption in acpi_find_root_bridge_handle Kenji Kaneshige
2009-01-28 11:51                             ` [PATCH 3/8] PCI hotplug: fix wrong assumption in acpi_get_hp_params_from_firmware Kenji Kaneshige
2009-01-28 11:55                             ` [PATCH 4/8] PCI hotplug: fix wrong assumption in acpi_get_hp_hw_control_from_firmware Kenji Kaneshige
2009-01-28 11:56                             ` [PATCH 5/8] PCI: fix wrong assumption in pci_find_upstream_pcie_bridge Kenji Kaneshige
2009-01-28 11:57                             ` [PATCH 6/8] PCI: fix wrong assumption in pci_read_bridge_bases Kenji Kaneshige
2009-01-28 11:58                             ` [PATCH 7/8] PCI: fix wrong assumption in pci_get_interrupt_pin Kenji Kaneshige
2009-01-28 11:59                             ` [PATCH 8/8] PCI: fix wrong assumption in pci_common_swizzle Kenji Kaneshige
2009-01-28 12:05                             ` ACPI hotplug panic with current git head Kenji Kaneshige
2009-02-14  0:30                             ` Jesse Barnes
     [not found]                               ` <499A46CC.1020102@jp.fujitsu.com>
2009-02-18 18:59                                 ` Jesse Barnes
2009-02-18 19:08                                   ` James Bottomley
2009-02-18 19:41                                     ` Jesse Barnes
2009-03-02 17:07                                       ` James Bottomley
2009-01-16 20:08               ` Len Brown
2009-01-16 20:22                 ` Jesse Barnes
2009-01-19  1:15                 ` Kenji Kaneshige

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=20090126062132.GC4376@colo.lackof.org \
    --to=grundler@parisc-linux.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=jesse.barnes@intel.com \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=shaohua.li@intel.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.