From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753503Ab3KTBPL (ORCPT ); Tue, 19 Nov 2013 20:15:11 -0500 Received: from szxga02-in.huawei.com ([119.145.14.65]:13271 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752342Ab3KTBPI (ORCPT ); Tue, 19 Nov 2013 20:15:08 -0500 Message-ID: <528C0CF9.3020906@huawei.com> Date: Wed, 20 Nov 2013 09:14:33 +0800 From: Yijing Wang User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Bjorn Helgaas CC: Mika Westerberg , Yinghai Lu , Andreas Noever , "Matthew Garrett" , "linux-kernel@vger.kernel.org" , "Rafael J. Wysocki" , "linux-pci@vger.kernel.org" , "Kirill A. Shutemov" Subject: Re: [3.11.4] Thunderbolt/PCI unplug oops in pci_pme_list_scan References: <20131015024452.GA31951@srcf.ucam.org> <20131016202123.GA17866@google.com> <20131115115235.GA2281@intel.com> <20131119013343.GA17294@google.com> <528AC4F2.40708@huawei.com> <20131119171850.GA4261@google.com> In-Reply-To: <20131119171850.GA4261@google.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.135.76.69] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org >>> [bhelgaas: changelog, tag for stable] >>> Reported-by: David Bulkow >>> Reported-by: Mika Westerberg >>> Signed-off-by: Yinghai Lu >>> Signed-off-by: Bjorn Helgaas >>> CC: stable@vger.kernel.org # 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. Thanks! Yijing. -- Thanks! Yijing