Patch "Revert "drm/amdgpu: TA unload messages are not actually sent to psp when amdgpu is uninstalled"" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    Revert "drm/amdgpu: TA unload messages are not actually sent to psp when amdgpu is uninstalled"

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     revert-drm-amdgpu-ta-unload-messages-are-not-actuall.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3a6ed2e6a0625f0a164047066d0e85295a34aa4a
Author: Vitaly Prosyak <vitaly.prosyak@xxxxxxx>
Date:   Fri Jan 20 13:19:50 2023 -0500

    Revert "drm/amdgpu: TA unload messages are not actually sent to psp when amdgpu is uninstalled"
    
    [ Upstream commit 39934d3ed5725c5e3570ed1b67f612f1ea60ce03 ]
    
    This reverts commit fac53471d0ea9693d314aa2df08d62b2e7e3a0f8.
    The following change: move the drm_dev_unplug call after
    amdgpu_driver_unload_kms in amdgpu_pci_remove. The reason is
    the following: amdgpu_pci_remove calls drm_dev_unregister
    and it should be called first to ensure userspace can't access the
    device instance anymore. If we call drm_dev_unplug after
    amdgpu_driver_unload_kms then we observe IGT PCI software unplug
    test failure (kernel hung) for all ASICs. This is how this
    regression was found.
    
    After this revert, the following commands do work not, but it would
    be fixed in the next commit:
     - sudo modprobe -r amdgpu
     - sudo modprobe amdgpu
    
    Signed-off-by: Vitaly Prosyak <vitaly.prosyak@xxxxxxx>
    Reviewed-by Alex Deucher <alexander.deucher@xxxxxxx>
    Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index a21b3f66fd708..824b0b356b3ce 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4012,7 +4012,8 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
 
 	amdgpu_gart_dummy_page_fini(adev);
 
-	amdgpu_device_unmap_mmio(adev);
+	if (drm_dev_is_unplugged(adev_to_drm(adev)))
+		amdgpu_device_unmap_mmio(adev);
 
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 2e5d78b6635c4..dfbeef2c4a9e2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2226,6 +2226,8 @@ amdgpu_pci_remove(struct pci_dev *pdev)
 	struct drm_device *dev = pci_get_drvdata(pdev);
 	struct amdgpu_device *adev = drm_to_adev(dev);
 
+	drm_dev_unplug(dev);
+
 	if (adev->pm.rpm_mode != AMDGPU_RUNPM_NONE) {
 		pm_runtime_get_sync(dev->dev);
 		pm_runtime_forbid(dev->dev);
@@ -2265,8 +2267,6 @@ amdgpu_pci_remove(struct pci_dev *pdev)
 
 	amdgpu_driver_unload_kms(dev);
 
-	drm_dev_unplug(dev);
-
 	/*
 	 * Flush any in flight DMA operations from device.
 	 * Clear the Bus Master Enable bit and then wait on the PCIe Device



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux