于 2013-01-27 19:19, Chris Clayton 写道: > Hi Yijing > > On 01/27/13 02:45, Yijing Wang wrote: >> 于 2013-01-27 4:54, Chris Clayton 写道: >>> Hi Martin, >>> >>> On 01/24/13 19:21, Martin Mokrejs wrote: >>>> Hi Chris, >>>> try to include in kernel only acpiphp and omit pciehp. Don't use >>>> modules but include >>>> them statically. And try, in addition, check whether "pcie_aspm=off" in >>>> grub.conf helped. >>>> >>> >>> Thanks for the tip. I had the pciehp driver installed, but it was a module >>> and not loaded. I didn't have acpiphp enabled at all. Building them both in >>> statically, appears to have papered over the cracks of the oops :-) >> >> Not loaded pciehp driver? Remove the device from this slot without poweroff ? >> > > That's correct. When I first encountered the oops, I did not have the pciehp > driver loaded and removing the device from the slot whilst the laptop was > powered on resulted in the oops.
Hmm, that's unsafe and dangerous, because device now may be running. There are two ways to trigger pci hot-add or hot-remove in linux, after loaded pciehp or acpiphp module (the two modules only one can loaded into system at the same time). You can trigger hot-add/hot-remove by sysfs interface under /sys/bus/pci/slots/[slot-name]/power or attention button on hardware (if your laptop supports that). >>> >>>> The best would if you subscribe to linux-pci, and read my recent >>>> threads >>>> about similar issues I had with express cards with Dell Vostro 3550. >>>> Further, there is >>>> a lot of changes to PCI hotplug done by Yingahi Liu and Rafael Wysockij, >>>> just browse the >>>> archives of linux-pci and see the pacthes and the discussion. >>> >>> Those discussions are way above my level of knowledge. I guess all this >>> work will be merged into mainline in due course, so I'll watch for them in >>> 3.9 or later. Unless, of course, there is a tree I could clone and help >>> test the changes with my laptop and expresscard. >>> >>> Hotplug isn't working at all on my Fujitsu laptop, so I can only get the >>> card recognised by rebooting with the card inserted (or by writing 1 >>> to/sys/bus/pci/rescan). There seem to be a few reports on this in the >>> kernel bugzilla, so I'll look through them and see what's being done. >> >> Hi Chris, >> What about use #modprobe pciehp pciehp_debug=1 pciehp_poll_mode=1 >> pciehp_poll_time=1 ? >> >> Can you resend the dmesg log and "lspci -vvv" info after hotplug device from >> your Fujitsu laptop with above module parameters? >> > > I wasn't sure whether or not the pciehp driver should be loaded on its own or > with the acpiphp driver also loaded. So I built them both as modules and > planned to try both, pciehp only and acpiphp only. However, I've found that > acpiphp will not load (regardless of whether or not pciehp is already > loaded). What I get is: > > [chris:~]$ sudo modprobe acpiphp debug=1 > modprobe: ERROR: could not insert 'acpiphp': No such device > Currently, If your hardware support pciehp native hotplug, acpiphp driver will be rejected when loading it in system (you can force loading it by add boot parameter pcie_aspm=off as Martin said). > and at the end of the dmesg output I see: > > [ 68.199789] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 > [ 68.199970] acpiphp_glue: Total 0 slots > > The pciehp driver loads OK. I've attached pciehp-only which shows the dmesg > and lscpi output that you asked for. > > As I said before, the only way that I can get the card detected with > rebooting the laptop is to write 1 to /sys/bus/pci/rescan. In the hope that > it might help (e.g. it shows details of the expresscard I'm using), I've also > attached the output from dmesg and lspci after a rescan. In this case, i guess your slot maybe always power on, once you insert your pcie card, and use rescan intercace, you can find them. I checked the WinTV-HVR-1400 expressed card device's parent port device, as bellow. I found the powerctrl in slot cap is clear. So I doubt the hardware support pci hotplug. Chris, Can you try to add and remove device by /sys/bus/pci/slots/3/power? (use #modprobe pciehp pciehp_debug=1) 00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b5) (prog-if 00 [Normal decode]) Bus: primary=00, secondary=02, subordinate=06, sec-latency=0 Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <16us ClockPM- Surprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Slot #3, PowerLimit 10.000W; Interlock- NoCompl+ SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet+ CmdCplt- HPIrq- LinkChg- Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet- LinkState+ > > Please let me know if I can provide any additional diagnostics. > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/