public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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



  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