On Thu, May 22, 2014 at 7:36 AM, Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote: > On Wednesday, May 21, 2014 07:53:37 AM Bjorn Helgaas wrote: >> On Wed, May 21, 2014 at 3:45 AM, Gavin Guo <gavin.guo@xxxxxxxxxxxxx> wrote: >> > Hi Bjorn, >> > >> > On Wed, May 21, 2014 at 12:54 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> >> On Tue, May 20, 2014 at 10:36 PM, Gavin Guo <gavin.guo@xxxxxxxxxxxxx> wrote: >> >>> Hi all, >> >>> >> >>> I have a APIOTEK PCI-to-USB ExpressCard and found that when it is >> >>> plugged at cold boot, the card can be detected. But, hotplug cannot >> >>> work at run time. The bug may be related to the commit which I >> >>> reported last year: >> >>> >> >>> commit 3f327e39b4b8f760c331bb2836735be6d83fbf53 >> >> >> >> Where is your report from last year? How did you identify this >> >> commit? Did you verify that it works correctly with v3.10-rc1, but >> >> fails when you add this commit? >> > >> > The mail about the bug I reported last year is attached. And I'm sorry >> > about not describing clearly. This commit is the one to fix the bug >> > before. So, I think it will be a clue to find out what's wrong. I've >> > built v3.10 and tested it on the platform. It works fine. The bug >> > seems like a regression. >> > >> > I also attached the dmesg of v3.10 which works correctly with hotplug. >> >> v3.10 contains 3f327e39b4b8 (it appeared in v3.10-rc3). So since it >> works correctly in v3.10, that commit is probably not the cause of the >> regression. >> >> So apparently it worked in v3.10 and broke sometime later. Do you >> know when it broke? >> >> We're getting Bus Check events: >> >> ACPI: \_SB_.PCI0: ACPI_NOTIFY_BUS_CHECK event >> >> but apparently we aren't handling them correctly. Can you turn on the >> debug in the acpi_hotplug_schedule() path and add more if necessary to >> if we get to acpi_hotplug_work_fn(), acpi_device_hotplug(), etc.? I'm >> not familiar with that path, so either you'll have to narrow it down, >> or we can hope that Yinghai or Rafael has some insight. > > Well, it would be good to create a bug entry for this at bugzilla.kernel.org > against ACPI/Config-hotplug and mark it as a regression. I've completed the bisect and found 2d8b1d566a5f4874f4d92361f5cdbb50baa396f8 is the first bad commit. The "git bisect log" is also attached. commit 2d8b1d566a5f4874f4d92361f5cdbb50baa396f8 Author: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> Date: Sat Jul 13 20:09:59 2013 +0300 ACPI / hotplug / PCI: Get rid of check_sub_bridges() Now that acpiphp_check_bridge() always enumerates devices behind the bridge, there is no need to do that for each sub-bridge anymore like it is done in the current ACPI-based PCI hotplug (ACPIPHP) code. Given this we don't need check_sub_bridges() anymore, so drop that function completely. This also simplifies the ACPIPHP code a bit. Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> :040000 040000 1f3f81404e06c92c01d6848ed7a6c5bffdb5f878 4e7ca3e4af42738f90555640cafbb6e6522ceedf M drivers > > Rafael > > >> >>> Author: Yinghai Lu <yinghai@xxxxxxxxxx> >> >>> Date: Tue May 7 11:06:03 2013 -0600 >> >>> >> >>> PCI: acpiphp: Re-enumerate devices when host bridge receives Bus Check >> >>> >> >>> When a PCI host bridge device receives a Bus Check notification, we >> >>> must re-enumerate starting with the bridge to discover changes (devices >> >>> that have been added or removed). >> >>> >> >>> Prior to 668192b678 ("PCI: acpiphp: Move host bridge hotplug to >> >>> pci_root.c"), this happened in _handle_hotplug_event_bridge(). After that >> >>> commit, _handle_hotplug_event_bridge() is not installed for host bridges, >> >>> and the host bridge notify handler, _handle_hotplug_event_root() did not >> >>> re-enumerate. >> >>> >> >>> This patch adds re-enumeration to _handle_hotplug_event_root(). >> >>> >> >>> This fixes cases where we don't notice the addition or removal of >> >>> PCI devices, e.g., the PCI-to-USB ExpressCard in the bugzilla below. >> >>> >> >>> Dmesg is attached. The scenario of the dmesg: The PCI-to-USB >> >>> ExpressCard is attached at cold boot. Then, you can see that the usb >> >>> storage can be detected in the dmesg. Finally, I've done hotplug 2 >> >>> times to see if it can detect the PCI-to-USB ExpressCard. At the end >> >>> of Dmesg, it only has several "ACPI: \_SB_.PCI0: ACPI_NOTIFY_BUS_CHECK >> >>> event" and can't detect the card. >> >>> >> >>> Thanks, >> >>> Gavin Guo >> -- >> 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 > > -- > I speak only for myself. > Rafael J. Wysocki, Intel Open Source Technology Center.
# bad: [272b98c6455f00884f0350f775c5342358ebb73f] Linux 3.12-rc1 # good: [6e4664525b1db28f8c4e1130957f70a94c19213e] Linux 3.11 # good: [39772038ea93e85ea4f1307ec9c1f48a063d89a0] PCI: Assign resources for hot-added host bridge more aggressively # good: [3dc48af310709b85d07c8b0d3aa8f1ead02829d3] PCI/ACPI: Fix _OSC ordering to allow PCIe hotplug use when available git bisect start 'v3.12-rc1' 'v3.11' '39772038ea93e85ea4f1307ec9c1f48a063d89a0' '3dc48af310709b85d07c8b0d3aa8f1ead02829d3' '--' # bad: [57d730924d5cc2c3e280af16a9306587c3a511db] Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip git bisect bad 57d730924d5cc2c3e280af16a9306587c3a511db # bad: [357397a14117f0c2eeafcac06a1f8412a02aa6af] Merge branch 'for-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata git bisect bad 357397a14117f0c2eeafcac06a1f8412a02aa6af # good: [91121c103ae93ef117e58712786864270d7f488e] staging: dwc2: make dwc2_core_params documentation more complete git bisect good 91121c103ae93ef117e58712786864270d7f488e # good: [1d1fdd95df681f0c065d90ffaafa215a0e8825e2] Merge tag 'char-misc-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc git bisect good 1d1fdd95df681f0c065d90ffaafa215a0e8825e2 # good: [d472d9d98b463dd7a04f2bcdeafe4261686ce6ab] lockref: Relax in cmpxchg loop git bisect good d472d9d98b463dd7a04f2bcdeafe4261686ce6ab # bad: [7a330a5416de9240c93a6987e11cb32b581d3263] Merge branch 'pm-cpufreq' git bisect bad 7a330a5416de9240c93a6987e11cb32b581d3263 # bad: [8462d9df9d5033da4d25e59016b1e7a9d94a1f22] Merge branch 'acpi-bind' git bisect bad 8462d9df9d5033da4d25e59016b1e7a9d94a1f22 # bad: [abe5430e9d5314190ca571b3bfc0c42000634378] Merge branch 'acpi-pci-hotplug' git bisect bad abe5430e9d5314190ca571b3bfc0c42000634378 # good: [c8ebcf1ff91a8f64b09c4df0ee21ae80a953c39c] ACPI / hotplug / PCI: Pass hotplug context objects to event handlers git bisect good c8ebcf1ff91a8f64b09c4df0ee21ae80a953c39c # good: [5c8d0e1dc475f0f35b5a774c92c68c3f7dbd3f5f] ACPI / hotplug / PCI: Do not queue up event handling work items in vain git bisect good 5c8d0e1dc475f0f35b5a774c92c68c3f7dbd3f5f # good: [a1d0abcea845730c4ff2f47897e28c2f11c79d4f] ACPI / hotplug / PCI: Redefine enable_device() and disable_device() git bisect good a1d0abcea845730c4ff2f47897e28c2f11c79d4f # bad: [1aaac07112f04068d7e2fc47bb435cfd4f9d5468] ACPI / hotplug / PCI: Fix NULL pointer dereference in cleanup_bridge() git bisect bad 1aaac07112f04068d7e2fc47bb435cfd4f9d5468 # bad: [2d8b1d566a5f4874f4d92361f5cdbb50baa396f8] ACPI / hotplug / PCI: Get rid of check_sub_bridges() git bisect bad 2d8b1d566a5f4874f4d92361f5cdbb50baa396f8 # good: [ff181e5a4f6b536e5f3f1601cd5c54e792cd9abc] ACPI / hotplug / PCI: Clean up bridge_mutex usage git bisect good ff181e5a4f6b536e5f3f1601cd5c54e792cd9abc