On 02/22/2013 03:49 PM, Wei Yang wrote: > On Tue, Feb 19, 2013 at 06:07:30PM +0800, Gu Zheng wrote: >> On 02/19/2013 05:28 PM, Paul Bolle wrote: >> >>> Richard, >>> >>> On Tue, 2013-02-19 at 16:25 +0800, Wei Yang wrote: >>>> Sorry for bothering, I am looking at this and try to understand the process, >>>> while get some confusion. >>>> >>>> 1. The error log will be printed every time suspend/resume, no matter whether >>>> the device is plug in/plug out during the suspend as discussed below? >>>> >>>> If the device is always there, no one touch it, the error message still be >>>> printed? >>>> >>>> 2. In my mind, before the pcied_init is called, those pci_dev are >>>> already enumerated, such as the wireless card in this case. >>>> >>>> During the boot stage, if the pciehp_force is set to true, the error messge >>>> still be printed? Since I don't have those devices to create pcie_device, I >>>> can't test this. >>>> >>>> 3. Do you think it would be find to remove those devices at the suspend stage? >>>> Then they will be added again at the resume stage? >>> >>> Bypassing your questions, I'd like to point you at >>> http://article.gmane.org/gmane.linux.kernel.pci/20077 , in which Rafael >>> suggested a possible solution to this situation. (There's some extra >>> info in other messages in this thread.) >> >> >> Yes, Rafael's suggestion seems a possible solution to this situation. >> In my mind, it's impossible to figure out a unique pci device with >> the registers in the PCI config space, something like "vender_id + device_id" >> can not describe a unique device. >> The pcie device has a feature likes "series number" which could be used to figure >> out a unique one, but this feature is optional. If it's not set, we still >> can not detect a unique pcie device. >> Sorry for my poor knowledge, if what I said has any mistake, please figure it out!:) > > Gu, > > After reading the code, there are several sets of hotplug code, for example > pciehp, acpiphp. > > For acpiphp, I found there is notification handler _handle_hotplug_event_bridge > and _handle_hotplug_event_func to handle the hardware events. > > While for pciehp, I didn't find such handler to handle a hardware event. The > pciehp_resume is the start point? Look into pcie_init_slot(),pcie_init_notification(), pciehp use workqueue each slot to handle hardware event in polling/intrupt. Pciehp_resume() has relations to power manager. In fact, it's near the end point in the resume routine. And further more, you can see documentation/power/pci.txt and follow pci_pm_resume(). Thanks, Gu > >> >> Thanks, >> Gu >> >> >> >> >>> I must confess that I'm not at all sure how to implement it and that so >>> far I have, rather cowardly, not even drafted a solution along those >>> lines. >>> >>> >>> Paul Bolle >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-pci" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html