On 2013/11/20 9:20, Bjorn Helgaas wrote: > On Tue, Nov 19, 2013 at 6:14 PM, Yijing Wang <wangyijing@xxxxxxxxxx> wrote: >>>>> [bhelgaas: changelog, tag for stable] >>>>> Reported-by: David Bulkow <David.Bulkow@xxxxxxxxxxx> >>>>> Reported-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> >>>>> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> >>>>> Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> >>>>> CC: stable@xxxxxxxxxxxxxxx # v2.6.32+ >>>> >>>> Hi Bjorn, >>>> This issue in X86 seems to be introduced after commit 928bea9 "PCI: Delay enabling bridges until they're needed" >>>> So this patch needs to back port to 2.6.32+ ? >>> >>> 928bea9 might have made it more visible, but the underlying problem is that >>> we enable the device once in the probe path, and disable it twice in the >>> remove path. That problem exists in 2.6.32.61: >>> >>> pcie_portdrv_probe # .probe() method >>> pcie_port_device_register >>> pci_enable_device <-- enable >>> >>> pcie_portdrv_remove # .remove() method >>> pcie_port_device_remove >>> pci_disable_device <-- disable #1 >>> pci_disable_device <-- disable #2 >> >> During assign unassigned resources, we also enable the port device, >> >> fs_initcall(pcibios_assign_resources); >> pci_assign_unassigned_resources; >> pci_enable_bridges() >> pci_enable_device() >> >> >> So I think before the commit 928bea9 , the pci bridge device enable and disable is symmetrical. >> After the commit 928bea9, we only enable bridge once, but still remove twice. > > The port driver should be symmetrical, regardless of what happens > outside it. We have to be able to bind/unbind/bind/unbind > indefinitely. > > Do you think the patch is a problem for current upstream, or are you > just saying it doesn't need to be backported as far as 2.6.32? I > frankly don't care that much if those old kernels pick it up or not. > All I'm saying is that the problem this fixes is present that far > back. > > I'm not really interested in doing a lot more digging about ancient > kernels, unless you think it's going to break something if applied to > them. As you said, this is not a big problem, it's ok for current upstream, and for 3.4 3.5 3.10 stable tree, it seems just a enable and disable symmetry problem. I don't find anything unsafe about this even though when we unbind pcie port driver, the pcie port maybe still enable. I have no objection to backport it to ancient kernels. :) Thanks! Yijing. > > Bjorn > > -- Thanks! Yijing -- 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