Patch "drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" has been added to the 4.0-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling
to the 4.0-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:
drm-radeon-fix-vm_context-_page_table_end_addr-handling.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
607d48063512707a414e346972e2210dc71ab491Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <[email protected]>
Date: Tue, 12 May 2015 14:56:17 +0200
Subject: drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <[email protected]>
commit 607d48063512707a414e346972e2210dc71ab491 upstream.
The mapping range is inclusive between starting and ending addresses.
--- drivers/gpu/drm/radeon/cik.c | 4 ++-- drivers/gpu/drm/radeon/evergreen.c | 2 +- drivers/gpu/drm/radeon/ni.c | 5 +++-- drivers/gpu/drm/radeon/r600.c | 2 +- drivers/gpu/drm/radeon/rv770.c | 2 +- drivers/gpu/drm/radeon/si.c | 4 ++-- 6 files changed, 10 insertions(+), 9 deletions(-)
drivers/gpu/drm/radeon/cik.c +2 -2
@@ -5789,7 +5789,7 @@ static int cik_pcie_gart_enable(struct r L2_CACHE_BIGK_FRAGMENT_SIZE(4));/* setup context0 */ WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR , (u32)(rdev->dummy_page.addr >>12 ));
@@ -5804,7 +5804,7 @@ static int cik_pcie_gart_enable(struct r/* restore context1-15 */ /* set vm size, must be a multiple of 4 */ WREG32 (VM_CONTEXT1_PAGE_TABLE_START_ADDR ,0 ); -WREG32 (VM_CONTEXT1_PAGE_TABLE_END_ADDR , rdev->vm_manager.max_pfn); +WREG32 (VM_CONTEXT1_PAGE_TABLE_END_ADDR , rdev->vm_manager.max_pfn -1 );for (i =1 ; i <16 ; i++) {if (i <8 ) WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
drivers/gpu/drm/radeon/evergreen.c +1 -1
@@ -2457,7 +2457,7 @@ static int evergreen_pcie_gart_enable(stWREG32 (MC_VM_MB_L1_TLB2_CNTL , tmp);WREG32 (MC_VM_MB_L1_TLB3_CNTL , tmp);WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_CNTL ,ENABLE_CONTEXT |PAGE_TABLE_DEPTH (0 ) |RANGE_PROTECTION_FAULT_ENABLE_DEFAULT );
drivers/gpu/drm/radeon/ni.c +3 -2
@@ -1253,7 +1253,7 @@ static int cayman_pcie_gart_enable(struc L2_CACHE_BIGK_FRAGMENT_SIZE(6));/* setup context0 */ WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR , (u32)(rdev->dummy_page.addr >>12 ));
@@ -1272,7 +1272,8 @@ static int cayman_pcie_gart_enable(struc*/ for (i =1 ; i <8 ; i++) {WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR + (i <<2 ),0 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i <<2 ), rdev->vm_manager.max_pfn); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR + (i <<2 ), + rdev->vm_manager.max_pfn -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i <<2 ), rdev->vm_manager.saved_table_addr[i]); }
drivers/gpu/drm/radeon/r600.c +1 -1
@@ -1086,7 +1086,7 @@ static int r600_pcie_gart_enable(structWREG32 (MC_VM_L1_TLB_MCB_RD_SEM_CNTL , tmp |ENABLE_SEMAPHORE_MODE );WREG32 (MC_VM_L1_TLB_MCB_WR_SEM_CNTL , tmp |ENABLE_SEMAPHORE_MODE );WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_CNTL ,ENABLE_CONTEXT |PAGE_TABLE_DEPTH (0 ) |RANGE_PROTECTION_FAULT_ENABLE_DEFAULT );
drivers/gpu/drm/radeon/rv770.c +1 -1
@@ -921,7 +921,7 @@ static int rv770_pcie_gart_enable(structWREG32 (MC_VM_MB_L1_TLB2_CNTL , tmp);WREG32 (MC_VM_MB_L1_TLB3_CNTL , tmp);WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_CNTL ,ENABLE_CONTEXT |PAGE_TABLE_DEPTH (0 ) |RANGE_PROTECTION_FAULT_ENABLE_DEFAULT );
drivers/gpu/drm/radeon/si.c +2 -2
@@ -4273,7 +4273,7 @@ static int si_pcie_gart_enable(struct ra L2_CACHE_BIGK_FRAGMENT_SIZE(4));/* setup context0 */ WREG32 (VM_CONTEXT0_PAGE_TABLE_START_ADDR , rdev->mc.gtt_start >>12 ); -WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , rdev->mc.gtt_end >>12 ); +WREG32 (VM_CONTEXT0_PAGE_TABLE_END_ADDR , (rdev->mc.gtt_end >>12 ) -1 );WREG32 (VM_CONTEXT0_PAGE_TABLE_BASE_ADDR , rdev->gart.table_addr >>12 );WREG32 (VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR , (u32)(rdev->dummy_page.addr >>12 ));
@@ -4288,7 +4288,7 @@ static int si_pcie_gart_enable(struct ra/* empty context1-15 */ /* set vm size, must be a multiple of 4 */ WREG32 (VM_CONTEXT1_PAGE_TABLE_START_ADDR ,0 ); -WREG32 (VM_CONTEXT1_PAGE_TABLE_END_ADDR , rdev->vm_manager.max_pfn); +WREG32 (VM_CONTEXT1_PAGE_TABLE_END_ADDR , rdev->vm_manager.max_pfn -1 );/* Assign the pt base to something valid for now; the pts used for * the VMs are determined by the application and setup and assigned * on the fly in the vm part of radeon_gart.c
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch queue-4.0/drm-radeon-fix-vm_context-_page_table_end_addr-handling.patch