Re: [PATCH v2 00/24] Unify PCI error response checking

From: Naveen Naidu
Date: Fri Oct 15 2021 - 10:38:35 EST


On 15/10, Naveen Naidu wrote:
> An MMIO read from a PCI device that doesn't exist or doesn't respond
> causes a PCI error. There's no real data to return to satisfy the
> CPU read, so most hardware fabricates ~0 data.
>
> This patch series adds PCI_ERROR_RESPONSE definition and other helper
> definition SET_PCI_ERROR_RESPONSE and RESPONSE_IS_PCI_ERROR and uses it
> where appropriate to make these checks consistent and easier to find.
>
> This helps unify PCI error response checking and make error check
> consistent and easier to find.
>
> This series also ensures that the error response fabrication now happens
> in the PCI_OP_READ and PCI_USER_READ_CONFIG. This removes the
> responsibility from controller drivers to do the error response setting.
>
> Patch 1:
> - Adds the PCI_ERROR_RESPONSE and other related defintions
> - All other patches are dependent on this patch. This patch needs to
> be applied first, before the others
>
> Patch 2:
> - Error fabrication happens in PCI_OP_READ and PCI_USER_READ_CONFIG
> whenever the data read via the controller driver fails.
> - This patch needs to be applied before, Patch 4/24 to Patch 15/24 are
> applied.
>
> Patch 3:
> - Uses SET_PCI_ERROR_RESPONSE() when device is not found and
> RESPONSE_IS_PCI_ERROR() to check hardware read from the hardware.
>
> Patch 4 - 15:
> - Removes redundant error fabrication that happens in controller
> drivers when the read from a PCI device fails.
> - These patches are dependent on Patch 2/24 of the series.
> - These can be applied in any order.
>
> Patch 16 - 22:
> - Uses RESPONSE_IS_PCI_ERROR() to check the reads from hardware
> - Patches can be applied in any order.
>
> Patch 23 - 24:
> - Edits the comments to include PCI_ERROR_RESPONSE alsong with
> 0xFFFFFFFF, so that it becomes easier to grep for faulty
> hardware reads.
>
> Changelog
> =========
>
> v2:
> - Instead of using SET_PCI_ERROR_RESPONSE in all controller drivers
> to fabricate error response, only use them in PCI_OP_READ and
> PCI_USER_READ_CONFIG
>
> Naveen Naidu (24):
> [PATCH 1/24] PCI: Add PCI_ERROR_RESPONSE and it's related definitions
> [PATCH 2/24] PCI: Set error response in config access defines when ops->read() fails
> [PATCH 3/24] PCI: Unify PCI error response checking
> [PATCH 4/24] PCI: Remove redundant error fabrication when device read fails
> [PATCH 5/24] PCI: thunder: Remove redundant error fabrication when device read fails
> [PATCH 6/24] PCI: iproc: Remove redundant error fabrication when device read fails
> [PATCH 7/24] PCI: mediatek: Remove redundant error fabrication when device read fails
> [PATCH 8/24] PCI: exynos: Remove redundant error fabrication when device read fails
> [PATCH 9/24] PCI: histb: Remove redundant error fabrication when device read fails
> [PATCH 10/24] PCI: kirin: Remove redundant error fabrication when device read fails
> [PATCH 11/24] PCI: aardvark: Remove redundant error fabrication when device read fails
> [PATCH 12/24] PCI: mvebu: Remove redundant error fabrication when device read fails
> [PATCH 13/24] PCI: altera: Remove redundant error fabrication when device read fails
> [PATCH 14/24] PCI: rcar: Remove redundant error fabrication when device read fails
> [PATCH 15/24] PCI: rockchip: Remove redundant error fabrication when device read fails
> [PATCH 16/24] PCI/ERR: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 17/24] PCI: vmd: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 18/24] PCI: pciehp: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 19/24] PCI/DPC: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 20/24] PCI/PME: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 21/24] PCI: cpqphp: Use RESPONSE_IS_PCI_ERROR() to check read from hardware
> [PATCH 22/24] PCI: keystone: Use PCI_ERROR_RESPONSE to specify hardware error
> [PATCH 23/24] PCI: hv: Use PCI_ERROR_RESPONSE to specify hardware read error
> [PATCH 24/24] PCI: xgene: Use PCI_ERROR_RESPONSE to specify hardware error
>
> drivers/pci/access.c | 36 ++++++++--------
> drivers/pci/controller/dwc/pci-exynos.c | 4 +-
> drivers/pci/controller/dwc/pci-keystone.c | 4 +-
> drivers/pci/controller/dwc/pcie-histb.c | 4 +-
> drivers/pci/controller/dwc/pcie-kirin.c | 4 +-
> drivers/pci/controller/pci-aardvark.c | 10 +----
> drivers/pci/controller/pci-hyperv.c | 2 +-
> drivers/pci/controller/pci-mvebu.c | 8 +---
> drivers/pci/controller/pci-thunder-ecam.c | 46 +++++++--------------
> drivers/pci/controller/pci-thunder-pem.c | 4 +-
> drivers/pci/controller/pci-xgene.c | 8 ++--
> drivers/pci/controller/pcie-altera.c | 4 +-
> drivers/pci/controller/pcie-iproc.c | 4 +-
> drivers/pci/controller/pcie-mediatek.c | 11 +----
> drivers/pci/controller/pcie-rcar-host.c | 4 +-
> drivers/pci/controller/pcie-rockchip-host.c | 4 +-
> drivers/pci/controller/vmd.c | 2 +-
> drivers/pci/hotplug/cpqphp_ctrl.c | 4 +-
> drivers/pci/hotplug/pciehp_hpc.c | 10 ++---
> drivers/pci/pci.c | 10 ++---
> drivers/pci/pcie/dpc.c | 4 +-
> drivers/pci/pcie/pme.c | 4 +-
> drivers/pci/probe.c | 10 ++---
> include/linux/pci.h | 9 ++++
> 24 files changed, 87 insertions(+), 123 deletions(-)
>
> --
> 2.25.1
>

Please ignore this stray cover letter. I had a wrong message ID written
for it. Apologies for the inconvenience caused.