vfio: move re-enabling INTX out of the common helper
Move re-enabling INTX out, and the callers should decide to re-enable it or not. Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com> Link: https://lore.kernel.org/r/20220326060226.1892-3-longpeng2@huawei.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
a6f5770fb2
commit
be4a46eccf
@ -693,7 +693,6 @@ retry:
|
|||||||
|
|
||||||
static void vfio_msi_disable_common(VFIOPCIDevice *vdev)
|
static void vfio_msi_disable_common(VFIOPCIDevice *vdev)
|
||||||
{
|
{
|
||||||
Error *err = NULL;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < vdev->nr_vectors; i++) {
|
for (i = 0; i < vdev->nr_vectors; i++) {
|
||||||
@ -712,15 +711,11 @@ static void vfio_msi_disable_common(VFIOPCIDevice *vdev)
|
|||||||
vdev->msi_vectors = NULL;
|
vdev->msi_vectors = NULL;
|
||||||
vdev->nr_vectors = 0;
|
vdev->nr_vectors = 0;
|
||||||
vdev->interrupt = VFIO_INT_NONE;
|
vdev->interrupt = VFIO_INT_NONE;
|
||||||
|
|
||||||
vfio_intx_enable(vdev, &err);
|
|
||||||
if (err) {
|
|
||||||
error_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vfio_msix_disable(VFIOPCIDevice *vdev)
|
static void vfio_msix_disable(VFIOPCIDevice *vdev)
|
||||||
{
|
{
|
||||||
|
Error *err = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
msix_unset_vector_notifiers(&vdev->pdev);
|
msix_unset_vector_notifiers(&vdev->pdev);
|
||||||
@ -741,6 +736,10 @@ static void vfio_msix_disable(VFIOPCIDevice *vdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
vfio_msi_disable_common(vdev);
|
vfio_msi_disable_common(vdev);
|
||||||
|
vfio_intx_enable(vdev, &err);
|
||||||
|
if (err) {
|
||||||
|
error_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name);
|
||||||
|
}
|
||||||
|
|
||||||
memset(vdev->msix->pending, 0,
|
memset(vdev->msix->pending, 0,
|
||||||
BITS_TO_LONGS(vdev->msix->entries) * sizeof(unsigned long));
|
BITS_TO_LONGS(vdev->msix->entries) * sizeof(unsigned long));
|
||||||
@ -750,8 +749,14 @@ static void vfio_msix_disable(VFIOPCIDevice *vdev)
|
|||||||
|
|
||||||
static void vfio_msi_disable(VFIOPCIDevice *vdev)
|
static void vfio_msi_disable(VFIOPCIDevice *vdev)
|
||||||
{
|
{
|
||||||
|
Error *err = NULL;
|
||||||
|
|
||||||
vfio_disable_irqindex(&vdev->vbasedev, VFIO_PCI_MSI_IRQ_INDEX);
|
vfio_disable_irqindex(&vdev->vbasedev, VFIO_PCI_MSI_IRQ_INDEX);
|
||||||
vfio_msi_disable_common(vdev);
|
vfio_msi_disable_common(vdev);
|
||||||
|
vfio_intx_enable(vdev, &err);
|
||||||
|
if (err) {
|
||||||
|
error_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name);
|
||||||
|
}
|
||||||
|
|
||||||
trace_vfio_msi_disable(vdev->vbasedev.name);
|
trace_vfio_msi_disable(vdev->vbasedev.name);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user