On Fri, Sep 11, 2020 at 11:55 AM Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote: > > On 09/11/2020 04:21 AM, Bjorn Helgaas wrote: > > [+cc Huacai] > > > > On Thu, Sep 10, 2020 at 02:41:39PM -0500, Bjorn Helgaas wrote: > >> On Sat, Sep 05, 2020 at 04:33:26PM +0800, Tiezhu Yang wrote: > >>> After commit 745be2e700cd ("PCIe: portdrv: call pci_disable_device > >>> during remove") and commit cc27b735ad3a ("PCI/portdrv: Turn off PCIe > >>> services during shutdown"), it also calls pci_disable_device() during > >>> shutdown, this seems unnecessary, so just remove it. > >> I would like to get rid of the portdrv completely by folding its > >> functionality into the PCI core itself, so there would be no portdrv > >> probe or remove. > >> > >> Does this solve a problem? > > Yes, sometimes it can not shutdown or reboot normally with > pci_disable_device(). Do you have any more details about what goes wrong here? Leaving devices enabled when actually shutting down probably doesn't matter. However, .shutdown() is also used when kexec()ing into a new kernel and we probably should be disabling devices before handing over to the new kernel. Is the real issue that we're closing the bridge windows before the endpoint drivers have had a chance to clean up? Oliver