Dear stable kernel maintainers, can you please add the patch below into all stable kernels up until (and including) kernel 4.16 ? It's upstream patch b845f66f78bf which was merged in kernel 4.17. It turned out, that this patch prevents multiple kernel crashes when users add standard PCI cards (e.g. PCI USB cards) to parisc boxes and expect them to simply work. Instead, without this patch, parisc kernels prior to v4.17 will crash the box since the default PCI behaviour is to fault if Linux drivers read/write to PCI memory regions which aren't backed by real hardware. This happens e.g. when the Linux drivers poke into PCI memory to check if a specific hardware revision was installed. I got multiple reports from users which ran into this problem, and by adding this patch to older kernels (which are still used as distribution install kernels, e.g. v4.16 for debian) people will be able to install Linux with such PCI cards without crashes and with working PCI cards. Thanks! Helge ______________ Subject: [PATCH] parisc/pci: Switch LBA PCI bus from Hard Fail to Soft Fail mode Carlo Pisani noticed that his C3600 workstation behaved unstable during heavy I/O on the PCI bus with a VIA VT6421 IDE/SATA PCI card. To avoid such instability, this patch switches the LBA PCI bus from Hard Fail mode into Soft Fail mode. In this mode the bus will return -1UL for timed out MMIO transactions, which is exactly how the x86 (and most other architectures) PCI busses behave. This patch is based on a proposal by Grant Grundler and Kyle McMartin 10 years ago: https://www.spinics.net/lists/linux-parisc/msg01027.html Cc: Carlo Pisani <carlojpisani@xxxxxxxxx> Cc: Kyle McMartin <kyle@xxxxxxxxxxx> Reviewed-by: Grant Grundler <grantgrundler@xxxxxxxxx> Signed-off-by: Helge Deller <deller@xxxxxx> diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index 41b740aed3a3..69bd98421eb1 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c @@ -1403,9 +1403,27 @@ lba_hw_init(struct lba_device *d) WRITE_REG32(stat, d->hba.base_addr + LBA_ERROR_CONFIG); } - /* Set HF mode as the default (vs. -1 mode). */ + + /* + * Hard Fail vs. Soft Fail on PCI "Master Abort". + * + * "Master Abort" means the MMIO transaction timed out - usually due to + * the device not responding to an MMIO read. We would like HF to be + * enabled to find driver problems, though it means the system will + * crash with a HPMC. + * + * In SoftFail mode "~0L" is returned as a result of a timeout on the + * pci bus. This is like how PCI busses on x86 and most other + * architectures behave. In order to increase compatibility with + * existing (x86) PCI hardware and existing Linux drivers we enable + * Soft Faul mode on PA-RISC now too. + */ stat = READ_REG32(d->hba.base_addr + LBA_STAT_CTL); +#if defined(ENABLE_HARDFAIL) WRITE_REG32(stat | HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL); +#else + WRITE_REG32(stat & ~HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL); +#endif /* ** Writing a zero to STAT_CTL.rf (bit 0) will clear reset signal