No description
Find a file
Niklas Schnelle 4cdf2f4e24 s390/pci: implement minimal PCI error recovery
When the platform detects an error on a PCI function or a service action
has been performed it is put in the error state and an error event
notification is provided to the OS.

Currently we treat all error event notifications the same and simply set
pdev->error_state = pci_channel_io_perm_failure requiring user
intervention such as use of the recover attribute to get the device
usable again. Despite requiring a manual step this also has the
disadvantage that the device is completely torn down and recreated
resulting in higher level devices such as a block or network device
being recreated. In case of a block device this also means that it may
need to be removed and added to a software raid even if that could
otherwise survive with a temporary degradation.

This is of course not ideal more so since an error notification with PEC
0x3A indicates that the platform already performed error recovery
successfully or that the error state was caused by a service action that
is now finished.

At least in this case we can assume that the error state can be reset
and the function made usable again. So as not to have the disadvantage
of a full tear down and recreation we need to coordinate this recovery
with the driver. Thankfully there is already a well defined recovery
flow for this described in Documentation/PCI/pci-error-recovery.rst.

The implementation of this is somewhat straight forward and simplified
by the fact that our recovery flow is defined per PCI function. As
a reset we use the newly introduced zpci_hot_reset_device() which also
takes the PCI function out of the error state.

Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
Acked-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2021-11-08 14:17:49 +01:00
arch s390/pci: implement minimal PCI error recovery 2021-11-08 14:17:49 +01:00
block for-5.16/inode-sync-2021-10-29 2021-11-01 10:25:27 -07:00
certs certs: Add support for using elliptic curve keys for signing modules 2021-08-23 19:55:42 +03:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2021-11-01 21:24:02 -07:00
Documentation s390 updates for the 5.16 merge window 2021-11-06 14:48:06 -07:00
drivers PCI: Export pci_dev_lock() 2021-11-08 14:17:49 +01:00
fs Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
include PCI: Export pci_dev_lock() 2021-11-08 14:17:49 +01:00
init Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
ipc ipc: remove memcg accounting for sops objects in do_semtimedop() 2021-09-14 10:22:11 -07:00
kernel pci-v5.16-changes 2021-11-06 14:36:12 -07:00
lib Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
LICENSES
mm Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
net Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
samples s390 updates for the 5.16 merge window 2021-11-06 14:48:06 -07:00
scripts Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
security Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
sound TTY / Serial driver update for 5.16-rc1 2021-11-04 09:09:37 -07:00
tools s390 updates for the 5.16 merge window 2021-11-06 14:48:06 -07:00
usr
virt kvm: irqfd: avoid update unmodified entries of the routing 2021-09-30 04:27:10 -04:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap ARM: SoC DT updates for v5.16 2021-11-03 16:56:03 -07:00
COPYING
CREDITS MAINTAINERS: Move Daniel Drake to credits 2021-09-21 08:34:58 +03:00
Kbuild
Kconfig
MAINTAINERS pci-v5.16-changes 2021-11-06 14:36:12 -07:00
Makefile Merge branch 'akpm' (patches from Andrew) 2021-11-06 14:08:17 -07:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.