drivers/vfio: EEH support for VFIO PCI device
The patch adds new IOCTL commands for sPAPR VFIO container device to support EEH functionality for PCI devices, which have been passed through from host to somebody else via VFIO. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Acked-by: Alexander Graf <agraf@suse.de> Acked-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committato da
Benjamin Herrenschmidt

parent
212d16cdca
commit
1b69be5e8a
@@ -157,8 +157,10 @@ static void vfio_pci_release(void *device_data)
|
||||
{
|
||||
struct vfio_pci_device *vdev = device_data;
|
||||
|
||||
if (atomic_dec_and_test(&vdev->refcnt))
|
||||
if (atomic_dec_and_test(&vdev->refcnt)) {
|
||||
vfio_spapr_pci_eeh_release(vdev->pdev);
|
||||
vfio_pci_disable(vdev);
|
||||
}
|
||||
|
||||
module_put(THIS_MODULE);
|
||||
}
|
||||
@@ -166,19 +168,27 @@ static void vfio_pci_release(void *device_data)
|
||||
static int vfio_pci_open(void *device_data)
|
||||
{
|
||||
struct vfio_pci_device *vdev = device_data;
|
||||
int ret;
|
||||
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
return -ENODEV;
|
||||
|
||||
if (atomic_inc_return(&vdev->refcnt) == 1) {
|
||||
int ret = vfio_pci_enable(vdev);
|
||||
ret = vfio_pci_enable(vdev);
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
ret = vfio_spapr_pci_eeh_open(vdev->pdev);
|
||||
if (ret) {
|
||||
module_put(THIS_MODULE);
|
||||
return ret;
|
||||
vfio_pci_disable(vdev);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
error:
|
||||
module_put(THIS_MODULE);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int vfio_pci_get_irq_count(struct vfio_pci_device *vdev, int irq_type)
|
||||
|
Fai riferimento in un nuovo problema
Block a user