drm/radeon: Split off gart_get_page_entry ASIC hook from set_page_entry
get_page_entry calculates the GART page table entry, which is just written to the GART page table by set_page_entry. This is a prerequisite for the following fix. Reviewed-by: Christian König <christian.koenig@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
67cf2d3912
commit
cb65890610
@@ -159,11 +159,13 @@ void radeon_agp_disable(struct radeon_device *rdev)
|
||||
DRM_INFO("Forcing AGP to PCIE mode\n");
|
||||
rdev->flags |= RADEON_IS_PCIE;
|
||||
rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush;
|
||||
rdev->asic->gart.get_page_entry = &rv370_pcie_gart_get_page_entry;
|
||||
rdev->asic->gart.set_page = &rv370_pcie_gart_set_page;
|
||||
} else {
|
||||
DRM_INFO("Forcing AGP to PCI mode\n");
|
||||
rdev->flags |= RADEON_IS_PCI;
|
||||
rdev->asic->gart.tlb_flush = &r100_pci_gart_tlb_flush;
|
||||
rdev->asic->gart.get_page_entry = &r100_pci_gart_get_page_entry;
|
||||
rdev->asic->gart.set_page = &r100_pci_gart_set_page;
|
||||
}
|
||||
rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
|
||||
@@ -199,6 +201,7 @@ static struct radeon_asic r100_asic = {
|
||||
.mc_wait_for_idle = &r100_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &r100_pci_gart_tlb_flush,
|
||||
.get_page_entry = &r100_pci_gart_get_page_entry,
|
||||
.set_page = &r100_pci_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -265,6 +268,7 @@ static struct radeon_asic r200_asic = {
|
||||
.mc_wait_for_idle = &r100_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &r100_pci_gart_tlb_flush,
|
||||
.get_page_entry = &r100_pci_gart_get_page_entry,
|
||||
.set_page = &r100_pci_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -359,6 +363,7 @@ static struct radeon_asic r300_asic = {
|
||||
.mc_wait_for_idle = &r300_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &r100_pci_gart_tlb_flush,
|
||||
.get_page_entry = &r100_pci_gart_get_page_entry,
|
||||
.set_page = &r100_pci_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -425,6 +430,7 @@ static struct radeon_asic r300_asic_pcie = {
|
||||
.mc_wait_for_idle = &r300_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rv370_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rv370_pcie_gart_get_page_entry,
|
||||
.set_page = &rv370_pcie_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -491,6 +497,7 @@ static struct radeon_asic r420_asic = {
|
||||
.mc_wait_for_idle = &r300_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rv370_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rv370_pcie_gart_get_page_entry,
|
||||
.set_page = &rv370_pcie_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -557,6 +564,7 @@ static struct radeon_asic rs400_asic = {
|
||||
.mc_wait_for_idle = &rs400_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rs400_gart_tlb_flush,
|
||||
.get_page_entry = &rs400_gart_get_page_entry,
|
||||
.set_page = &rs400_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -623,6 +631,7 @@ static struct radeon_asic rs600_asic = {
|
||||
.mc_wait_for_idle = &rs600_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rs600_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -691,6 +700,7 @@ static struct radeon_asic rs690_asic = {
|
||||
.mc_wait_for_idle = &rs690_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rs400_gart_tlb_flush,
|
||||
.get_page_entry = &rs400_gart_get_page_entry,
|
||||
.set_page = &rs400_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -759,6 +769,7 @@ static struct radeon_asic rv515_asic = {
|
||||
.mc_wait_for_idle = &rv515_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rv370_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rv370_pcie_gart_get_page_entry,
|
||||
.set_page = &rv370_pcie_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -825,6 +836,7 @@ static struct radeon_asic r520_asic = {
|
||||
.mc_wait_for_idle = &r520_mc_wait_for_idle,
|
||||
.gart = {
|
||||
.tlb_flush = &rv370_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rv370_pcie_gart_get_page_entry,
|
||||
.set_page = &rv370_pcie_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -919,6 +931,7 @@ static struct radeon_asic r600_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &r600_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1004,6 +1017,7 @@ static struct radeon_asic rv6xx_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &r600_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1095,6 +1109,7 @@ static struct radeon_asic rs780_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &r600_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1199,6 +1214,7 @@ static struct radeon_asic rv770_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &r600_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1317,6 +1333,7 @@ static struct radeon_asic evergreen_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &evergreen_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1409,6 +1426,7 @@ static struct radeon_asic sumo_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &evergreen_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1500,6 +1518,7 @@ static struct radeon_asic btc_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &evergreen_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.ring = {
|
||||
@@ -1635,6 +1654,7 @@ static struct radeon_asic cayman_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &cayman_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.vm = {
|
||||
@@ -1738,6 +1758,7 @@ static struct radeon_asic trinity_asic = {
|
||||
.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &cayman_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.vm = {
|
||||
@@ -1871,6 +1892,7 @@ static struct radeon_asic si_asic = {
|
||||
.get_gpu_clock_counter = &si_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &si_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.vm = {
|
||||
@@ -2032,6 +2054,7 @@ static struct radeon_asic ci_asic = {
|
||||
.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &cik_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.vm = {
|
||||
@@ -2139,6 +2162,7 @@ static struct radeon_asic kv_asic = {
|
||||
.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
|
||||
.gart = {
|
||||
.tlb_flush = &cik_pcie_gart_tlb_flush,
|
||||
.get_page_entry = &rs600_gart_get_page_entry,
|
||||
.set_page = &rs600_gart_set_page,
|
||||
},
|
||||
.vm = {
|
||||
|
Reference in New Issue
Block a user