Commit d0269ed8 authored by Jerome Glisse's avatar Jerome Glisse Committed by Dave Airlie

drm/radeon/kms: Make sure we release AGP device if we acquired it

In some case we weren't releasing the AGP device at module unloading.
This leaded to unfunctional AGP at next module load. This patch make
sure we release the AGP bus if we acquire it.
Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent cafe6609
...@@ -3369,6 +3369,7 @@ void r100_fini(struct radeon_device *rdev) ...@@ -3369,6 +3369,7 @@ void r100_fini(struct radeon_device *rdev)
radeon_gem_fini(rdev); radeon_gem_fini(rdev);
if (rdev->flags & RADEON_IS_PCI) if (rdev->flags & RADEON_IS_PCI)
r100_pci_gart_fini(rdev); r100_pci_gart_fini(rdev);
radeon_agp_fini(rdev);
radeon_irq_kms_fini(rdev); radeon_irq_kms_fini(rdev);
radeon_fence_driver_fini(rdev); radeon_fence_driver_fini(rdev);
radeon_bo_fini(rdev); radeon_bo_fini(rdev);
......
...@@ -1336,6 +1336,7 @@ void r300_fini(struct radeon_device *rdev) ...@@ -1336,6 +1336,7 @@ void r300_fini(struct radeon_device *rdev)
rv370_pcie_gart_fini(rdev); rv370_pcie_gart_fini(rdev);
if (rdev->flags & RADEON_IS_PCI) if (rdev->flags & RADEON_IS_PCI)
r100_pci_gart_fini(rdev); r100_pci_gart_fini(rdev);
radeon_agp_fini(rdev);
radeon_irq_kms_fini(rdev); radeon_irq_kms_fini(rdev);
radeon_fence_driver_fini(rdev); radeon_fence_driver_fini(rdev);
radeon_bo_fini(rdev); radeon_bo_fini(rdev);
......
...@@ -2090,8 +2090,7 @@ void r600_fini(struct radeon_device *rdev) ...@@ -2090,8 +2090,7 @@ void r600_fini(struct radeon_device *rdev)
radeon_gem_fini(rdev); radeon_gem_fini(rdev);
radeon_fence_driver_fini(rdev); radeon_fence_driver_fini(rdev);
radeon_clocks_fini(rdev); radeon_clocks_fini(rdev);
if (rdev->flags & RADEON_IS_AGP) radeon_agp_fini(rdev);
radeon_agp_fini(rdev);
radeon_bo_fini(rdev); radeon_bo_fini(rdev);
radeon_atombios_fini(rdev); radeon_atombios_fini(rdev);
kfree(rdev->bios); kfree(rdev->bios);
......
...@@ -252,10 +252,8 @@ void radeon_agp_resume(struct radeon_device *rdev) ...@@ -252,10 +252,8 @@ void radeon_agp_resume(struct radeon_device *rdev)
void radeon_agp_fini(struct radeon_device *rdev) void radeon_agp_fini(struct radeon_device *rdev)
{ {
#if __OS_HAS_AGP #if __OS_HAS_AGP
if (rdev->flags & RADEON_IS_AGP) { if (rdev->ddev->agp && rdev->ddev->agp->acquired) {
if (rdev->ddev->agp && rdev->ddev->agp->acquired) { drm_agp_release(rdev->ddev);
drm_agp_release(rdev->ddev);
}
} }
#endif #endif
} }
...@@ -1096,8 +1096,7 @@ void rv770_fini(struct radeon_device *rdev) ...@@ -1096,8 +1096,7 @@ void rv770_fini(struct radeon_device *rdev)
radeon_gem_fini(rdev); radeon_gem_fini(rdev);
radeon_fence_driver_fini(rdev); radeon_fence_driver_fini(rdev);
radeon_clocks_fini(rdev); radeon_clocks_fini(rdev);
if (rdev->flags & RADEON_IS_AGP) radeon_agp_fini(rdev);
radeon_agp_fini(rdev);
radeon_bo_fini(rdev); radeon_bo_fini(rdev);
radeon_atombios_fini(rdev); radeon_atombios_fini(rdev);
kfree(rdev->bios); kfree(rdev->bios);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment