From: Alex Chiang <achiang@hp.com>
To: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Cc: jbarnes@virtuousgeek.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Matthew Wilcox <matthew@wil.cx>,
Andrew Morton <akpm@linux-foundation.org>,
kristen.c.accardi@intel.com, greg@kroah.com, lenb@kernel.org,
pbadari@us.ibm.com, linux-pci@vger.kernel.org,
pcihpd-discuss@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/4, v14] PCI, ACPI: Physical PCI slot objects
Date: Mon, 9 Jun 2008 16:11:08 -0600 [thread overview]
Message-ID: <20080609221108.GA16588@ldl.fc.hp.com> (raw)
In-Reply-To: <484CE515.4030205@jp.fujitsu.com>
* Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>:
>
> I tried your patches and I have a comment (question) about the behavior.
>
> To emulate the (broken?) platform that assigns the same name to multiple
> slots, I made a debug patch for pciehp driver to assign same name ('1000')
> to all slots (my environment has two PCIe slots). With this patch, I
> noticed that the behavior or pci_hp_register() (or pci_create_slot())
> varies depending on whether pci_slot driver is loaded or not. See below.
>
> (a) With pci_slot driver loaded
> I got the following error message when I loaded pciehp driver.
>
> pciehp: pci_hp_register failed with error -17
> pciehp: Failed to register slot because of name collision. Try
> 'pciehp_slot_with_bus' module option.
> pciehp: pciehp: slot initialization failed
> (b) Without pci_slot driver loaded
> I got the kernel stack dump and error messages when I loaded pciehp
> driver.
>
> kobject_add_internal failed for 1000 with -EEXIST, don't try to
> register things with the same name in the same directory.
>
> Call Trace:
> [<a000000100015180>] show_stack+0x40/0xa0
> sp=e0000040a086fb80 bsp=e0000040a0861158
> [<a000000100015210>] dump_stack+0x30/0x60
> sp=e0000040a086fd50 bsp=e0000040a0861140
> [<a0000001003b3910>] kobject_add_internal+0x330/0x400
> sp=e0000040a086fd50 bsp=e0000040a0861100
> [<a0000001003b3bd0>] kobject_add_varg+0x90/0xc0
> sp=e0000040a086fd50 bsp=e0000040a08610c8
> [<a0000001003b3c90>] kobject_init_and_add+0x90/0xc0
> sp=e0000040a086fd50 bsp=e0000040a0861068
> [<a0000001003d69b0>] pci_create_slot+0x150/0x260
> sp=e0000040a086fd80 bsp=e0000040a0861030
> [<a000000200b71870>] pci_hp_register+0x130/0x880 [pci_hotplug]
> sp=e0000040a086fd80 bsp=e0000040a0860ff0
> [<a000000200ec1a60>] pciehp_probe+0x720/0xca0 [pciehp]
>
> (snip...)
>
> Unable to register kobject 1000
> pciehp: pci_hp_register failed with error -17
> pciehp: Failed to register slot because of name collision. Try
> 'pciehp_slot_with_bus' module option.
> pciehp: pciehp: slot initialization failed
>
> Could you tell me why that difference happen? And my expectation is
> the result should be (a) above regardless of whether pci_slot driver
> is loaded or not.
The difference was because in (a), pci_slot created the slots and
when pciehp tried to register them, the pci slot infrastructure
simply refcounted them and returned, but did not try to
re-register the kobjects with the kobj core.
In (b), the pci hotplug core allowed you to create multiple slots
with the same name, and called pci_create_slot() multiple times.
This time, since you were trying to create new slot objects, we
did not refcount them; we actually did a kzalloc *and* tried to
register them with the kobject core, which is why we got that
stack trace.
I read your patch (a86161b3134465f) in closer detail and decided
that it can work without problems with my patch series.
- Your patch will keep track of hotplug slots and
disallow multiple hotplug slots with the same name
- the PCI slot infrastructure will still allow multiple
callers of pci_create_slot() to succeed by refcounting
identical slots
This is the correct behavior to allow pciehp and pci_slot to
coexist because pci_slot is not trying to register a hotplug
handler or do any other hotplug operations.
I will update the patch series and resend it.
Thanks for testing, sorry about the inconvenience.
/ac
next prev parent reply other threads:[~2008-06-09 22:11 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-04 20:08 [PATCH 0/4, v14] PCI, ACPI: Physical PCI slot objects Alex Chiang
2008-06-04 20:14 ` [PATCH] fakephp: Construct one fakephp slot per PCI slot Alex Chiang
2008-06-04 20:16 ` [PATCH] kobject: Export kobject_rename for pci_hotplug_core Alex Chiang
2008-06-04 23:55 ` Greg KH
2008-06-05 5:48 ` Andrew Morton
2008-06-05 6:05 ` Kenji Kaneshige
2008-06-05 6:33 ` Andrew Morton
2008-06-05 15:11 ` Alex Chiang
2008-06-06 4:07 ` Benjamin Herrenschmidt
2008-06-06 4:51 ` Alex Chiang
2008-06-06 23:20 ` Benjamin Herrenschmidt
2008-06-04 20:16 ` [PATCH] PCI: Introduce pci_slot Alex Chiang
2008-06-04 20:18 ` [PATCH] ACPI: PCI slot detection driver Alex Chiang
2008-06-10 18:24 ` Len Brown
2008-06-10 21:17 ` Alex Chiang
2008-06-05 2:32 ` [PATCH 0/4, v14] PCI, ACPI: Physical PCI slot objects Kenji Kaneshige
2008-06-05 3:07 ` Alex Chiang
2008-06-05 3:20 ` Kenji Kaneshige
2008-06-09 8:08 ` Kenji Kaneshige
2008-06-09 22:11 ` Alex Chiang [this message]
2008-06-10 3:04 ` Kenji Kaneshige
2008-06-10 3:12 ` Kenji Kaneshige
2008-06-10 19:24 ` Jesse Barnes
2008-06-10 21:19 ` Alex Chiang
2008-06-10 17:34 ` Alex Chiang
2008-06-11 1:48 ` Kenji Kaneshige
2008-06-11 2:53 ` Alex Chiang
2008-06-11 6:29 ` 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=20080609221108.GA16588@ldl.fc.hp.com \
--to=achiang@hp.com \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=greg@kroah.com \
--cc=jbarnes@virtuousgeek.org \
--cc=kaneshige.kenji@jp.fujitsu.com \
--cc=kristen.c.accardi@intel.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=pbadari@us.ibm.com \
--cc=pcihpd-discuss@lists.sourceforge.net \
/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.