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
@@ -212,11 +212,9 @@ void rs400_gart_fini(struct radeon_device *rdev)
|
||||
#define RS400_PTE_WRITEABLE (1 << 2)
|
||||
#define RS400_PTE_READABLE (1 << 3)
|
||||
|
||||
void rs400_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||
uint64_t addr, uint32_t flags)
|
||||
uint64_t rs400_gart_get_page_entry(uint64_t addr, uint32_t flags)
|
||||
{
|
||||
uint32_t entry;
|
||||
u32 *gtt = rdev->gart.ptr;
|
||||
|
||||
entry = (lower_32_bits(addr) & PAGE_MASK) |
|
||||
((upper_32_bits(addr) & 0xff) << 4);
|
||||
@@ -226,8 +224,14 @@ void rs400_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||
entry |= RS400_PTE_WRITEABLE;
|
||||
if (!(flags & RADEON_GART_PAGE_SNOOP))
|
||||
entry |= RS400_PTE_UNSNOOPED;
|
||||
entry = cpu_to_le32(entry);
|
||||
gtt[i] = entry;
|
||||
return entry;
|
||||
}
|
||||
|
||||
void rs400_gart_set_page(struct radeon_device *rdev, unsigned i,
|
||||
uint64_t entry)
|
||||
{
|
||||
u32 *gtt = rdev->gart.ptr;
|
||||
gtt[i] = cpu_to_le32(lower_32_bits(entry));
|
||||
}
|
||||
|
||||
int rs400_mc_wait_for_idle(struct radeon_device *rdev)
|
||||
|
Reference in New Issue
Block a user