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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox