Re: [PATCH v3 2/4] PCI: brcmstb: Add ACPI config space quirk

From: nicolas saenz julienne
Date: Mon Aug 30 2021 - 04:36:51 EST


Hi Jeremy,
sorry for the late reply, I've been on vacation.

On Thu, 2021-08-26 at 02:15 -0500, Jeremy Linton wrote:

[...]

> +static void __iomem *brcm_pcie_map_conf2(struct pci_bus *bus,
> + unsigned int devfn, int where)
> +{
> + struct pci_config_window *cfg = bus->sysdata;
> + void __iomem *base = cfg->win;
> + int idx;
> + u32 up;
> +
> + /* Accesses to the RC go right to the RC registers if slot==0 */
> + if (pci_is_root_bus(bus))
> + return PCI_SLOT(devfn) ? NULL : base + where;
> +
> + /*
> + * Assure the link is up before sending requests downstream. This is done
> + * to avoid sending transactions to EPs that don't exist. Link flap
> + * conditions/etc make this race more probable. The resulting unrecoverable
> + * SERRORs will result in the machine crashing.
> + */
> + up = readl(base + PCIE_MISC_PCIE_STATUS);
> + if (!(up & PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_MASK))
> + return NULL;
> +
> + if (!(up & PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_MASK))
> + return NULL;

Couldn't this be integrated in the original brcm_pcie_map_conf()? IIUC there is
nothing ACPI specific about it. It'd also make for less code duplication.

Regards,
Nicolas