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.