linux/arch/s390/pci
Niklas Schnelle 59bbf59679 iommu/s390: Make attach succeed even if the device is in error state
If a zPCI device is in the error state while switching IOMMU domains
zpci_register_ioat() will fail and we would end up with the device not
attached to any domain. In this state since zdev->dma_table == NULL
a reset via zpci_hot_reset_device() would wrongfully re-initialize the
device for DMA API usage using zpci_dma_init_device(). As automatic
recovery is currently disabled while attached to an IOMMU domain this
only affects slot resets triggered through other means but will affect
automatic recovery once we switch to using dma-iommu.

Additionally with that switch common code expects attaching to the
default domain to always work so zpci_register_ioat() should only fail
if there is no chance to recover anyway, e.g. if the device has been
unplugged.

Improve the robustness of attach by specifically looking at the status
returned by zpci_mod_fc() to determine if the device is unavailable and
in this case simply ignore the error. Once the device is reset
zpci_hot_reset_device() will then correctly set the domain's DMA
translation tables.

Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Link: https://lore.kernel.org/r/20221109142903.4080275-2-schnelle@linux.ibm.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
2022-11-19 10:28:15 +01:00
..
Makefile KVM: s390: pci: Hook to access KVM lowlevel from VFIO 2022-08-29 13:29:28 +02:00
pci_bus.c s390/pci: allow zPCI zbus without a function zero 2022-07-22 16:06:13 -05:00
pci_bus.h s390/pci: rename get_zdev_by_bus() to zdev_from_bus() 2022-03-27 22:18:40 +02:00
pci_clp.c s390/pci: stash dtsm and maxstbl 2022-07-11 09:54:24 +02:00
pci_debug.c s390/pci: make better use of zpci_dbg() levels 2022-04-25 13:54:15 +02:00
pci_dma.c iommu/s390: Make attach succeed even if the device is in error state 2022-11-19 10:28:15 +01:00
pci_event.c s390/pci: don't log availability events as errors 2022-04-25 13:54:15 +02:00
pci_insn.c KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding 2022-07-11 09:54:32 +02:00
pci_iov.c s390/pci: add missing pci_iov.h include 2020-09-16 14:08:47 +02:00
pci_iov.h s390/pci: consolidate SR-IOV specific code 2020-09-14 11:38:34 +02:00
pci_irq.c s390/pci: stash associated GISA designation 2022-07-11 09:54:22 +02:00
pci_kvm_hook.c KVM: s390: pci: Hook to access KVM lowlevel from VFIO 2022-08-29 13:29:28 +02:00
pci_mmio.c s390/pci: add missing EX_TABLE entries to __pcistg_mio_inuser()/__pcilg_mio_inuser() 2022-10-26 14:47:31 +02:00
pci_sysfs.c s390/pci: tolerate inconsistent handle in recover 2021-10-04 09:49:36 +02:00
pci.c iommu/s390: Make attach succeed even if the device is in error state 2022-11-19 10:28:15 +01:00