Subject: linux-next: manual merge of the pci tree with Linus' tree

From: Stephen Rothwell <[email-masked]>
Date: Thu, 27 Nov 2025 10:49:55 +1100

Hi all,

Today's linux-next merge of the pci tree got a conflict in:

  drivers/pci/controller/dwc/pcie-designware-host.c

between commit:

  a1978b692a39 ("PCI: dwc: Use custom pci_ops for root bus DBI vs ECAM config access")

from Linus' tree and commit:

  3445d3820770 ("PCI: dwc: Implement .assert_perst() for dwc glue drivers")

from the pci tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc drivers/pci/controller/dwc/pcie-designware-host.c
index e92513c5bda5,cac1aff84e94..000000000000
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@@ -840,34 -843,21 +841,43 @@@ void __iomem *dw_pcie_own_conf_map_bus(
  }
  EXPORT_SYMBOL_GPL(dw_pcie_own_conf_map_bus);
  
 +static void __iomem *dw_pcie_ecam_conf_map_bus(struct pci_bus *bus, unsigned int devfn, int where)
 +{
 +	struct pci_config_window *cfg = bus->sysdata;
 +	struct dw_pcie_rp *pp = cfg->priv;
 +	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
 +	unsigned int busn = bus->number;
 +
 +	if (busn > 0)
 +		return pci_ecam_map_bus(bus, devfn, where);
 +
 +	if (PCI_SLOT(devfn) > 0)
 +		return NULL;
 +
 +	return pci->dbi_base + where;
 +}
 +
+ static int dw_pcie_op_assert_perst(struct pci_bus *bus, bool assert)
+ {
+ 	struct dw_pcie_rp *pp = bus->sysdata;
+ 	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
+ 
+ 	return dw_pcie_assert_perst(pci, assert);
+ }
+ 
  static struct pci_ops dw_pcie_ops = {
  	.map_bus = dw_pcie_own_conf_map_bus,
  	.read = pci_generic_config_read,
  	.write = pci_generic_config_write,
+ 	.assert_perst = dw_pcie_op_assert_perst,
  };
  
 +static struct pci_ops dw_pcie_ecam_ops = {
 +	.map_bus = dw_pcie_ecam_conf_map_bus,
 +	.read = pci_generic_config_read,
 +	.write = pci_generic_config_write,
 +};
 +
  static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
  {
  	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);