On Fri, Aug 2, 2024 at 7:12 AM Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote: > > On Fri, Jul 26, 2024 at 05:28:29PM +0800, Huacai Chen wrote: > > This is similar to commit 62b6dee1b44aa23b39355 ("PCI/portdrv: Prevent > > LS7A Bus Master clearing on shutdown"), which prevents LS7A Bus Master > > clearing on kexec. > > > > Only skip Bus Master clearing on bridges because endpoint devices still > > need it. > > I think we need some explanation here and a hint in the comment below > about why this is needed. > > I guess the point is to work around the LS7A defect that clearing > PCI_COMMAND_MASTER prevents MMIO requests from going downstream, and > we may need to do that even after .shutdown(), e.g., to print console > messages? > > And in this case we rely on .shutdown() for the downstream devices to > disable interrupts and DMA? Yes, this is the key point, I will add the above information to the commit message. > > s/62b6dee1b44aa23b39355/62b6dee1b44a/ OK, thanks. Huacai > > > Signed-off-by: Ming Wang <wangming01@xxxxxxxxxxx> > > Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> > > --- > > drivers/pci/pci-driver.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c > > index f412ef73a6e4..b7d3a4d8532f 100644 > > --- a/drivers/pci/pci-driver.c > > +++ b/drivers/pci/pci-driver.c > > @@ -517,7 +517,7 @@ static void pci_device_shutdown(struct device *dev) > > * If it is not a kexec reboot, firmware will hit the PCI > > * devices with big hammer and stop their DMA any way. > > */ > > - if (kexec_in_progress && (pci_dev->current_state <= PCI_D3hot)) > > + if (kexec_in_progress && !pci_is_bridge(pci_dev) && (pci_dev->current_state <= PCI_D3hot)) > > pci_clear_master(pci_dev); > > } > > > > -- > > 2.43.5 > >