Skip to content

Commit 91c2d00

Browse files
committed
drm/amdgpu: Check SQ_CONFIG register support on SRIOV
On SRIOV environments, check if RLCG supports SQ_CONFIG register programming. Signed-off-by: Tony Yi <Tony.Yi@amd.com> Reviewed-by: Zhigang Luo <zhigang.luo@amd.com>
1 parent 3357ed7 commit 91c2d00

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,11 @@ enum AMDGIM_REG_ACCESS_FLAG {
150150
/* Use RLC to program MMHUB regs */
151151
AMDGIM_FEATURE_MMHUB_REG_RLC_EN = (1 << 1),
152152
/* Use RLC to program GC regs */
153-
AMDGIM_FEATURE_GC_REG_RLC_EN = (1 << 2),
153+
AMDGIM_FEATURE_GC_REG_RLC_EN = (1 << 2),
154+
/* Use PSP to program L1_TLB_CNTL */
155+
AMDGIM_FEATURE_L1_TLB_CNTL_PSP_EN = (1 << 3),
156+
/* Use RLCG to program SQ_CONFIG1 */
157+
AMDGIM_FEATURE_REG_ACCESS_SQ_CONFIG = (1 << 4),
154158
};
155159

156160
struct amdgim_pf2vf_info_v1 {
@@ -332,6 +336,10 @@ struct amdgpu_video_codec_info;
332336
#define amdgpu_sriov_rlcg_error_report_enabled(adev) \
333337
(amdgpu_sriov_reg_indirect_mmhub(adev) || amdgpu_sriov_reg_indirect_gc(adev))
334338

339+
#define amdgpu_sriov_reg_access_sq_config(adev) \
340+
(amdgpu_sriov_vf((adev)) && \
341+
((adev)->virt.reg_access & (AMDGIM_FEATURE_REG_ACCESS_SQ_CONFIG)))
342+
335343
#define amdgpu_passthrough(adev) \
336344
((adev)->virt.caps & AMDGPU_PASSTHROUGH_MODE)
337345

drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ union amd_sriov_msg_feature_flags {
109109

110110
union amd_sriov_reg_access_flags {
111111
struct {
112-
uint32_t vf_reg_access_ih: 1;
113-
uint32_t vf_reg_access_mmhub: 1;
114-
uint32_t vf_reg_access_gc: 1;
115-
uint32_t reserved: 29;
112+
uint32_t vf_reg_access_ih: 1;
113+
uint32_t vf_reg_access_mmhub: 1;
114+
uint32_t vf_reg_access_gc: 1;
115+
uint32_t vf_reg_access_l1_tlb_cntl: 1;
116+
uint32_t vf_reg_access_sq_config: 1;
117+
uint32_t reserved: 27;
116118
} flags;
117119
uint32_t all;
118120
};

drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1375,7 +1375,9 @@ static void gfx_v9_4_3_constants_init(struct amdgpu_device *adev)
13751375
switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
13761376
/* ToDo: GC 9.4.4 */
13771377
case IP_VERSION(9, 4, 3):
1378-
if (adev->gfx.mec_fw_version >= 184)
1378+
if (adev->gfx.mec_fw_version >= 184 &&
1379+
(amdgpu_sriov_reg_access_sq_config(adev) ||
1380+
!amdgpu_sriov_vf(adev)))
13791381
adev->gmc.xnack_flags |= AMDGPU_GMC_XNACK_FLAG_CHAIN;
13801382
break;
13811383
case IP_VERSION(9, 5, 0):

0 commit comments

Comments
 (0)