mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	drm/amdgpu: fix gart.bo pin_count leak
gmc_v{9,10}_0_gart_disable() isn't called matched with
correspoding gart_enbale function in SRIOV case. This will
lead to gart.bo pin_count leak on driver unload.
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Leslie Shi <Yuliang.Shi@amd.com>
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
			
			
This commit is contained in:
		
							parent
							
								
									05812b971c
								
							
						
					
					
						commit
						66805763a9
					
				
					 2 changed files with 4 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1098,6 +1098,8 @@ static int gmc_v10_0_hw_fini(void *handle)
 | 
			
		|||
{
 | 
			
		||||
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 | 
			
		||||
 | 
			
		||||
	gmc_v10_0_gart_disable(adev);
 | 
			
		||||
 | 
			
		||||
	if (amdgpu_sriov_vf(adev)) {
 | 
			
		||||
		/* full access mode, so don't touch any GMC register */
 | 
			
		||||
		DRM_DEBUG("For SRIOV client, shouldn't do anything.\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1106,7 +1108,6 @@ static int gmc_v10_0_hw_fini(void *handle)
 | 
			
		|||
 | 
			
		||||
	amdgpu_irq_put(adev, &adev->gmc.ecc_irq, 0);
 | 
			
		||||
	amdgpu_irq_put(adev, &adev->gmc.vm_fault, 0);
 | 
			
		||||
	gmc_v10_0_gart_disable(adev);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1794,6 +1794,8 @@ static int gmc_v9_0_hw_fini(void *handle)
 | 
			
		|||
{
 | 
			
		||||
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 | 
			
		||||
 | 
			
		||||
	gmc_v9_0_gart_disable(adev);
 | 
			
		||||
 | 
			
		||||
	if (amdgpu_sriov_vf(adev)) {
 | 
			
		||||
		/* full access mode, so don't touch any GMC register */
 | 
			
		||||
		DRM_DEBUG("For SRIOV client, shouldn't do anything.\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1802,7 +1804,6 @@ static int gmc_v9_0_hw_fini(void *handle)
 | 
			
		|||
 | 
			
		||||
	amdgpu_irq_put(adev, &adev->gmc.ecc_irq, 0);
 | 
			
		||||
	amdgpu_irq_put(adev, &adev->gmc.vm_fault, 0);
 | 
			
		||||
	gmc_v9_0_gart_disable(adev);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue