diff options
author | Roger He <Hongbo.He@amd.com> | 2017-08-24 02:57:57 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-08-24 12:34:30 -0400 |
commit | 2959a5346b8943412226c4b51c78f9b6f077c2a0 (patch) | |
tree | 9e8653c2a7452088cef665b7f05c6f955cd3bd77 | |
parent | ac7afe6b3cf39bf2c02a7463c0b81b145e41a906 (diff) |
drm/amd/amdgpu: fix BANK_SELECT on Vega10 (v2)
BANK_SELECT should always be FRAGMENT_SIZE + 3 due to 8-entry (2^3)
per cache line in L2 TLB for Vega10.
v2: agd: fix warning
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Roger He <Hongbo.He@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | 5 |
2 files changed, 4 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c index 4f2788b61a08..6c8040e616c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | |||
@@ -124,7 +124,7 @@ static void gfxhub_v1_0_init_tlb_regs(struct amdgpu_device *adev) | |||
124 | 124 | ||
125 | static void gfxhub_v1_0_init_cache_regs(struct amdgpu_device *adev) | 125 | static void gfxhub_v1_0_init_cache_regs(struct amdgpu_device *adev) |
126 | { | 126 | { |
127 | uint32_t tmp, field; | 127 | uint32_t tmp; |
128 | 128 | ||
129 | /* Setup L2 cache */ | 129 | /* Setup L2 cache */ |
130 | tmp = RREG32_SOC15(GC, 0, mmVM_L2_CNTL); | 130 | tmp = RREG32_SOC15(GC, 0, mmVM_L2_CNTL); |
@@ -143,9 +143,8 @@ static void gfxhub_v1_0_init_cache_regs(struct amdgpu_device *adev) | |||
143 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1); | 143 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1); |
144 | WREG32_SOC15(GC, 0, mmVM_L2_CNTL2, tmp); | 144 | WREG32_SOC15(GC, 0, mmVM_L2_CNTL2, tmp); |
145 | 145 | ||
146 | field = adev->vm_manager.fragment_size; | ||
147 | tmp = mmVM_L2_CNTL3_DEFAULT; | 146 | tmp = mmVM_L2_CNTL3_DEFAULT; |
148 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, field); | 147 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, 9); |
149 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6); | 148 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6); |
150 | WREG32_SOC15(GC, 0, mmVM_L2_CNTL3, tmp); | 149 | WREG32_SOC15(GC, 0, mmVM_L2_CNTL3, tmp); |
151 | 150 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c index 4395a4f12149..74cb647da30e 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | |||
@@ -138,7 +138,7 @@ static void mmhub_v1_0_init_tlb_regs(struct amdgpu_device *adev) | |||
138 | 138 | ||
139 | static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev) | 139 | static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev) |
140 | { | 140 | { |
141 | uint32_t tmp, field; | 141 | uint32_t tmp; |
142 | 142 | ||
143 | /* Setup L2 cache */ | 143 | /* Setup L2 cache */ |
144 | tmp = RREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL); | 144 | tmp = RREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL); |
@@ -157,9 +157,8 @@ static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev) | |||
157 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1); | 157 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1); |
158 | WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL2, tmp); | 158 | WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL2, tmp); |
159 | 159 | ||
160 | field = adev->vm_manager.fragment_size; | ||
161 | tmp = mmVM_L2_CNTL3_DEFAULT; | 160 | tmp = mmVM_L2_CNTL3_DEFAULT; |
162 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, field); | 161 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, BANK_SELECT, 9); |
163 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6); | 162 | tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3, L2_CACHE_BIGK_FRAGMENT_SIZE, 6); |
164 | WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL3, tmp); | 163 | WREG32_SOC15(MMHUB, 0, mmVM_L2_CNTL3, tmp); |
165 | 164 | ||