From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Pierre Ossman <drzeus-list@drzeus.cx>,
Alex Chiang <achiang@hp.com>, LKML <linux-kernel@vger.kernel.org>,
linux-pci@vger.kernel.org,
Kristen Accardi <kristen.c.accardi@intel.com>
Subject: Re: post 2.6.26 requires pciehp_slot_with_bus
Date: Mon, 28 Jul 2008 17:44:28 +0900 [thread overview]
Message-ID: <488D86EC.1010903@jp.fujitsu.com> (raw)
In-Reply-To: <200807251518.53462.jbarnes@virtuousgeek.org>
Jesse Barnes wrote:
> On Thursday, July 24, 2008 9:50 pm Kenji Kaneshige wrote:
>> Thank you for debug info, Pierre.
>>
>> According to the debugging output, five slots are detected (five
>> slots on laptop!?) and two of them have the same physical slots
>> number '2'. This is the reason why Pierre's machine needs
>> 'pciehp_slot_with_bus' option.
>>
>> Before 2.6.26 (from 2.6.xx), pciehp did the workaround for the
>> problem (some platform wrongly assign the same physical slot
>> number to multiple slots) by default. But this was not a good
>> idea because of the several reasons like follows:
>>
>> - Slot name should be a physical identifier of physical slot
>> on the system. Using bus number as a part of slot name is
>> not a idea because bus number is logical number and it can
>> be changed.
>>
>> - As Jesse explained, some hotplug slot can be handled through
>> several type of controllers. For example, some hotplug slot
>> can be handled by either acpiphp or pciehp. But those drivers
>> must not handle the same slot at the same time. The pci
>> hotplug core is checking this by checking duplicate names.
>> This check didn't work because pciehp had started using bus
>> number as a part of slot name and slot names became different
>> between acpiphp and pciehp.
>>
>> About the former, I'm ok with using bus number as a part of slot
>> name on the problematic platform. But it should not be used on
>> the normal platform.
>>
>> About the latter, IIRC, thanks to Alex's pci slot framework from
>> 2.6.26, pci hotplug core can check if multiple drivers attempts
>> to handle the same slot even if those drivers uses the different
>> names.
>>
>> Based on my thought above, I have a following idea to remove
>> "pciehp_slot_with_bus".
>>
>> - Try to use physical slot number as a slot name, first.
>>
>> - If pci_hp_register() success, no problem.
>>
>> - If pci_hp_register() returns -EBUSY, that means another
>> hotplug driver already handling the slot. So return as error.
>>
>> - If pci_hp_register() returns -EEXIST, that means there is a
>> existing slot with the same name. In this case, retry to
>> register slots with logical name (bus number + physical slot
>> number, or other).
>>
>> With this idea, slots names will become as follows on Pierre's
>> machine.
>>
>> <Before 2.6.26>
>> 0001_0001, 0002_0002, 0003_0003, 0004_0004, 0005_0005, 000d_0002
>>
>> <Current>
>> 1, 2, 3, 4, 5
>>
>> <With my idea>
>> 1, 2, 3, 4, 5, 000d_0002
>>
>>
>> Please give me comments.
>
> I think that's fine (automatically creating duplicate devices with names to
> differentiate them), but I think we should also try harder to avoid adding
> duplicates.
>
> In Pierre's case, and on my T61, there's only one actual hotplug slot
> available, but the firmware creates duplicate physical slot numbers and sets
> the HP_CAP bit on everything, both of which are obviously wrong (well I
> suppose you could pop these chips off the board, but it's not very
> practical). However, afaict that "other" OS uses the _RMV method to
> determine whether a given slot is actually hot pluggable. On my T61 at
> least, this seems to be accurate: only one of my EXP* objects has a _RMV
> method.
>
> So maybe the PCIe hotplug driver should be checking for that method when ACPI
> is available? We already try to use _OSC etc., so checking for _RMV first
> would make sense...
>
As you pointed out, the root cause might not a problem of slot naming,
but a problem of slots detection, because pciehp driver detects multiple
PCIe hotplug slots even thought your and Pierre's system seems to have
only one hotplug slot. So I think we should also consider the problem
from this view point (slot detection).
But, I think simply checking for _RMV method first is dangerous because
I think there are many systems that doesn't implement _RMV for PCIe
hotplug slots (at least, my system doesn't implement that. Anyway,
I would like to look at the documents/specifications that mention _RMV
method for determining whether a given slot is hot pluggable. Do you
have any information about that? I think PCI Local Bus, PCI Express and
PCI Firmware specification don't mention that. I think hot pluggable slots
on your, Pierre's and Matthew's system are ExpressCard slots. So I guess
ExpressCard specification might define something about this. But
unfortunately, I don't have ExpressCard specification. Can anyone access
ExpressCard spec?
Thanks,
Kenji Kaneshige
next prev parent reply other threads:[~2008-07-28 8:46 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-24 11:47 post 2.6.26 requires pciehp_slot_with_bus Pierre Ossman
2008-07-24 12:38 ` Kenji Kaneshige
2008-07-24 20:39 ` Pierre Ossman
2008-07-24 21:07 ` Jesse Barnes
2008-07-24 21:51 ` Pierre Ossman
2008-07-24 22:06 ` Jesse Barnes
2008-07-24 22:29 ` Alex Chiang
2008-07-24 22:49 ` Pierre Ossman
2008-07-24 23:08 ` Alex Chiang
2008-07-24 23:29 ` Pierre Ossman
2008-07-25 3:29 ` Matthew Wilcox
2008-07-25 4:42 ` Alex Chiang
2008-07-25 5:38 ` Kenji Kaneshige
2008-07-25 11:18 ` Matthew Wilcox
2008-07-28 18:05 ` Greg KH
2008-07-25 4:57 ` Kenji Kaneshige
2008-07-30 2:38 ` Alex Chiang
2008-07-30 2:42 ` [PATCH 1/2] pciehp: Rename duplicate slot name N as N-1, N-2, N-M Alex Chiang
2008-07-31 10:32 ` Kenji Kaneshige
2008-07-30 2:44 ` [PATCH 2/2] shpchp: " Alex Chiang
2008-07-31 10:32 ` Kenji Kaneshige
2008-07-31 10:31 ` post 2.6.26 requires pciehp_slot_with_bus Kenji Kaneshige
2008-07-31 15:47 ` Alex Chiang
2008-08-01 8:43 ` Kenji Kaneshige
2008-07-25 8:53 ` Kenji Kaneshige
2008-07-25 11:40 ` Matthew Wilcox
2008-07-28 7:21 ` Kenji Kaneshige
2008-07-25 4:50 ` Kenji Kaneshige
2008-07-25 22:18 ` Jesse Barnes
2008-07-26 1:16 ` Matthew Wilcox
2008-07-28 8:58 ` Kenji Kaneshige
2008-07-28 8:44 ` Kenji Kaneshige [this message]
2008-07-28 16:16 ` Jesse Barnes
2008-07-29 2:43 ` Kenji Kaneshige
2008-07-29 15:14 ` Jesse Barnes
2008-07-30 2:44 ` Kenji Kaneshige
2008-07-28 16:57 ` Matthew Wilcox
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=488D86EC.1010903@jp.fujitsu.com \
--to=kaneshige.kenji@jp.fujitsu.com \
--cc=achiang@hp.com \
--cc=drzeus-list@drzeus.cx \
--cc=jbarnes@virtuousgeek.org \
--cc=kristen.c.accardi@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.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: 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