Bug 87781
Summary: | ExpressCards can not be hotplugged (recognized by colboot only) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Elmar Stellnberger (estellnb) |
Component: | PCI | Assignee: | drivers_pci (drivers_pci) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | alan, bjorn, yinghai |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 3.2.0-4-amd64 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
lspci -vvv (coldplugged)
lspci -vvv (before plugging, clean boot) lspci -vvv (plugged) /proc/interrupts (coldplug) /proc/interrupts (before plugging) /proc/interrupts (after plugging) /var/log/messages pm-suspend.log dmesg with debug ignore_loglevel initcall_debug: empty lspci -vvxx (after hotplugging) lspci -tv (after hotplugging) kernel configuration + modules available / loaded after boot acpidump for Amilo Xi2550 acpidump for Amilo Xi2550 (new mainboard, same BIOS) |
Description
Elmar Stellnberger
2014-11-05 13:49:50 UTC
Created attachment 156661 [details]
lspci -vvv (coldplugged)
Created attachment 156671 [details]
lspci -vvv (before plugging, clean boot)
Created attachment 156681 [details]
lspci -vvv (plugged)
Created attachment 156691 [details]
/proc/interrupts (coldplug)
Created attachment 156701 [details]
/proc/interrupts (before plugging)
Created attachment 156711 [details]
/proc/interrupts (after plugging)
Created attachment 156721 [details]
/var/log/messages
Created attachment 156731 [details]
pm-suspend.log
can you post dmesg instead with "debug ignore_loglevel initcall_debug"? also good to have lspci -vvxxx lspci -tv Created attachment 156801 [details]
dmesg with debug ignore_loglevel initcall_debug: empty
Simply nothing in the logs; not even with debug ignore_loglevel initcall_debug.
Created attachment 156811 [details]
lspci -vvxx (after hotplugging)
Created attachment 156821 [details]
lspci -tv (after hotplugging)
[ 0.352170] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.352238] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.352314] ACPI _OSC control for PCIe not granted, disabling ASPM your system BIOS does not have _OSC to handle pcie etc control (including pcie hp) to kernel, so kernel does not load pciehp. Please check if you have acpiphp loaded or built-in. Created attachment 156891 [details]
kernel configuration + modules available / loaded after boot
There is an acpiphp_ibm module which can not be loaded but apparently nothing else (I should not have hesitated to also post cfg+mods initially.).
root:/home/elm/bugs/expresscard> modprobe acpiphp_ibm
ERROR: could not insert 'acpiphp_ibm': No such device
root:/home/elm/bugs/expresscard> modprobe pciehp
root:/home/elm/bugs/expresscard> lsmod | grep pciehp
root:/home/elm/bugs/expresscard>
acpiphp is loaded in CONFIG_HOTPLUG_PCI_ACPI=y and [ 0.729191] calling acpiphp_init+0x0/0x55 @ 1 [ 0.729258] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 [ 0.729618] initcall acpiphp_init+0x0/0x55 returned -19 after 350 usecs so looks like you BIOS does not support acpiphp. No acpiphp and no pciehp support, you will not have hotplug automatically. The only solution for you: use echo 1 > /sys/bus/pci/devices/0000:02:00.0/remove before take Expresscard out from slots physically. use echo 1 > /sys/bus/pci/rescan after plug the card .... Or check if there is BIOS update or even get another laptop to try luck. Yes, that works in deed. I hope that one day we will get coreboot support for that machine; at least as soon as I would receive something about the schematic of the board (There will be no BIOS updates). Yinghai, do you have anything against having a look at the ExpressCard adapter (Bug 43192)? It would be even more valuable than a working native slot since I still have some computers with PCMCIA but no eSATA and USB3.0 support. Elmar, does ExpressCard hotplug work as you expect on Windows? If it works on Windows but not on Linux, there should be something we can do to make Linux work better. Can you also attach an acpidump for reference? Created attachment 157191 [details]
acpidump for Amilo Xi2550
Hmmm, Windows. The computer was sold with Windows Vista. That is why I would presume that it works with Vista. I currently have no OEM-DVD but can offer to install Windows 7 and give you test results in a week or two.
Bjorn; I have tested it with Windows 7 and it can recognize when an ExpressCard has been plugged - it prompts me to install USB3.0 drivers, then. Thanks for testing that, Elmar. So we *should* be able to make this work on Linux, too. The only ways I can think of are: 1) Figure out if it's safe for us to use pciehp (native PCIe hotplug) on this box. 2) Figure out if acpiphp (ACPI hotplug) is supposed to work, but it doesn't work on Linux because we're not using it correctly. An acpidump is the first place I'd look, to see if there's an _OSC where we don't expect it, or if there are acpiphp methods that we're not using for some reason. 3) suspect windows is polling Created attachment 177531 [details]
acpidump for Amilo Xi2550 (new mainboard, same BIOS)
Great! Now it works. I have the same BIOS version, a new mainboard and Linux 3.16.0-4-amd64; tested: s2ram with ExpressCard and Data Medium, autorecognition of plugging an USB3 ExpressCard and USB sticks into the ExpressCard.
There seems to be no difference in the main section (DSDT) of the acpi dump (which is displayed by both versions of acpidump in the same way) so I would guess that there has been a fix for it in the kernel. Definitely resolved by Linux (It reproducably does not work with 3.2.0-4-amd64 but with 3.16.0-4-amd64 it does.). Well done! |