Patch "drm/radeon: fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" has been added to the 3.14-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 3.14-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-3.14 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
@@ -5342,7 +5342,7 @@ static int cik_pcie_gart_enable(struct r 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 ));
@@ -5360,7 +5360,7 @@ static int cik_pcie_gart_enable(struct r*/ /* 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
@@ -2474,7 +2474,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
@@ -1237,7 +1237,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 ));
@@ -1256,7 +1256,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->gart.table_addr >>12 ); }
drivers/gpu/drm/radeon/r600.c +1 -1
@@ -996,7 +996,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
@@ -916,7 +916,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
@@ -4069,7 +4069,7 @@ static int si_pcie_gart_enable(struct ra L2_CACHE_BIGK_FRAGMENT_SIZE(0));/* 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 ));
@@ -4084,7 +4084,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-3.14/drm-radeon-partially-revert-fix-vm_context-_page_table_end_addr-handling.patch queue-3.14/drm-radeon-fix-vm_context-_page_table_end_addr-handling.patch