<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Arial",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<p style="font-family:Calibri;font-size:10pt;color:#008000;margin:5pt;font-style:normal;font-weight:normal;text-decoration:none;" align="Left">
[Public]<br>
</p>
<br>
<div>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Yang, Philip <Philip.Yang@amd.com>
<br>
<b>Sent:</b> Wednesday, February 5, 2025 6:09 PM<br>
<b>To:</b> Kasiviswanathan, Harish <Harish.Kasiviswanathan@amd.com>; amd-gfx@lists.freedesktop.org<br>
<b>Subject:</b> Re: [PATCH] drm/amdgpu: Set snoop bit for SDMA for MI series<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 2025-02-04 18:02, Harish Kasiviswanathan wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>SDMA writes has to probe invalidate RW lines. Set snoop bit in mmhub for<o:p></o:p></pre>
<pre>this to happen.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Signed-off-by: Harish Kasiviswanathan <a href="mailto:Harish.Kasiviswanathan@amd.com"><Harish.Kasiviswanathan@amd.com></a><o:p></o:p></pre>
<pre>---<o:p></o:p></pre>
<pre> drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c | 25 ++++++++++<o:p></o:p></pre>
<pre> drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c | 27 +++++++++++<o:p></o:p></pre>
<pre> drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c | 30 ++++++++++++<o:p></o:p></pre>
<pre> .../asic_reg/mmhub/mmhub_9_4_1_offset.h | 32 +++++++++++++<o:p></o:p></pre>
<pre> .../asic_reg/mmhub/mmhub_9_4_1_sh_mask.h | 48 +++++++++++++++++++<o:p></o:p></pre>
<pre> 5 files changed, 162 insertions(+)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c<o:p></o:p></pre>
<pre>index 9689e2b5d4e5..55659a4cbd10 100644<o:p></o:p></pre>
<pre>--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c<o:p></o:p></pre>
<pre>+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.c<o:p></o:p></pre>
<pre>@@ -172,6 +172,30 @@ static void mmhub_v1_7_init_tlb_regs(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> WREG32_SOC15(MMHUB, 0, regMC_VM_MX_L1_TLB_CNTL, tmp);<o:p></o:p></pre>
<pre> }<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>+/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */<o:p></o:p></pre>
<pre>+static void mmhub_v1_7_set_snoop(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre>+{<o:p></o:p></pre>
<pre>+ uint32_t tmp;<o:p></o:p></pre>
<pre>+ int j;<o:p></o:p></pre>
<pre>+ uint32_t distance = regDAGB1_WRCLI_GPU_SNOOP_OVERRIDE -<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE;<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ for (j = 0; j < 5; j++) { /* DAGB instances */<o:p></o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j*distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15); /* SDMA client is BIT15 */<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j*distance, tmp);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j*distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15);<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j*distance, tmp);<o:p></o:p></pre>
<pre>+ }<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+}<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre> static void mmhub_v1_7_init_cache_regs(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> {<o:p></o:p></pre>
<pre> uint32_t tmp;<o:p></o:p></pre>
<pre>@@ -337,6 +361,7 @@ static int mmhub_v1_7_gart_enable(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> mmhub_v1_7_init_system_aperture_regs(adev);<o:p></o:p></pre>
<pre> mmhub_v1_7_init_tlb_regs(adev);<o:p></o:p></pre>
<pre> mmhub_v1_7_init_cache_regs(adev);<o:p></o:p></pre>
<pre>+ mmhub_v1_7_set_snoop(adev);<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre> mmhub_v1_7_enable_system_domain(adev);<o:p></o:p></pre>
<pre> mmhub_v1_7_disable_identity_aperture(adev);<o:p></o:p></pre>
<pre>diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c<o:p></o:p></pre>
<pre>index e646e5cef0a2..92afffd27415 100644<o:p></o:p></pre>
<pre>--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c<o:p></o:p></pre>
<pre>+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c<o:p></o:p></pre>
<pre>@@ -213,6 +213,32 @@ static void mmhub_v1_8_init_tlb_regs(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> }<o:p></o:p></pre>
<pre> }<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>+/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */<o:p></o:p></pre>
<pre>+static void mmhub_v1_8_set_snoop(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre>+{<o:p></o:p></pre>
<pre>+ uint32_t tmp, inst_mask;<o:p></o:p></pre>
<pre>+ int i, j;<o:p></o:p></pre>
<pre>+ uint32_t distance = regDAGB1_WRCLI_GPU_SNOOP_OVERRIDE -<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE;<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ inst_mask = adev->aid_mask;<o:p></o:p></pre>
<pre>+ for_each_inst(i, inst_mask) {<o:p></o:p></pre>
<pre>+ for (j = 0; j < 5; j++) { /* DAGB instances */<o:p></o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, i,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j*distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15); /* SDMA client is BIT15 */<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, i,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE, j*distance, tmp);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, i,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j*distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15);<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, i,<o:p></o:p></pre>
<pre>+ regDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE, j*distance, tmp);<o:p></o:p></pre>
<pre>+ }<o:p></o:p></pre>
<pre>+ }<o:p></o:p></pre>
<pre>+}<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre> static void mmhub_v1_8_init_cache_regs(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> {<o:p></o:p></pre>
<pre> uint32_t tmp, inst_mask;<o:p></o:p></pre>
<pre>@@ -418,6 +444,7 @@ static int mmhub_v1_8_gart_enable(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> mmhub_v1_8_init_system_aperture_regs(adev);<o:p></o:p></pre>
<pre> mmhub_v1_8_init_tlb_regs(adev);<o:p></o:p></pre>
<pre> mmhub_v1_8_init_cache_regs(adev);<o:p></o:p></pre>
<pre>+ mmhub_v1_8_set_snoop(adev);<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
</blockquote>
<p class="MsoNormal">Why only change mmhub_v1_7/8, not other mmhub_v2/3/4 versions? Maybe the setting is not needed for old ASICS, only set this in mmhub_v9_4.
<br>
[HK]: Currently, this change is critical for MI GFX9 series, so this patch is focused on that. For other ASICs a separate patch will be send later.<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre> mmhub_v1_8_enable_system_domain(adev);<o:p></o:p></pre>
<pre> mmhub_v1_8_disable_identity_aperture(adev);<o:p></o:p></pre>
<pre>diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></pre>
<pre>index ff1b58e44689..557119cd1ecc 100644<o:p></o:p></pre>
<pre>--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></pre>
<pre>+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></pre>
<pre>@@ -198,6 +198,35 @@ static void mmhub_v9_4_init_tlb_regs(struct amdgpu_device *adev, int hubid)<o:p></o:p></pre>
<pre> hubid * MMHUB_INSTANCE_REGISTER_OFFSET, tmp);<o:p></o:p></pre>
<pre> }<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>+/* Set snoop bit for SDMA so that SDMA writes probe-invalidates RW lines */<o:p></o:p></pre>
<pre>+static void mmhub_v9_4_set_snoop(struct amdgpu_device *adev, int hubid)<o:p></o:p></pre>
<pre>+{<o:p></o:p></pre>
<pre>+ uint32_t tmp;<o:p></o:p></pre>
<pre>+ int j;<o:p></o:p></pre>
</blockquote>
<p class="MsoNormal">loop index uses variable i<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial",sans-serif">[HK]: Yes, will change.<o:p></o:p></span></p>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre>+ uint32_t distance = mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE -<o:p></o:p></pre>
<pre>+ mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE;<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ for (j = 0; j < 4 - (2 * hubid); j++) {<o:p></o:p></pre>
<pre>+ /* DAGB instances 0 to 4 are in hub0 and 5 to 7 are in hub1 */<o:p></o:p></pre>
</blockquote>
<p>maybe define variable offset = hubid * MMHUB_INSTANCE_REGISTER_OFFSET + j * distance<br>
[HK]: Yes. I can change to offset = hubid * MMHUB_INSTANCE_REGISTER_OFFSET but (j * distance) would be inside the loop.<o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p>then use offset variable to remove the duplicate calculation.<o:p></o:p></p>
<p>Regards,<o:p></o:p></p>
<p>Philip<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE,<o:p></o:p></pre>
<pre>+ hubid * MMHUB_INSTANCE_REGISTER_OFFSET + j * distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15); /* SDMA client is BIT15 */<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE,<o:p></o:p></pre>
<pre>+ hubid * MMHUB_INSTANCE_REGISTER_OFFSET + j * distance, tmp);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+ tmp = RREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE,<o:p></o:p></pre>
<pre>+ hubid * MMHUB_INSTANCE_REGISTER_OFFSET + j * distance);<o:p></o:p></pre>
<pre>+ tmp |= (1 << 15);<o:p></o:p></pre>
<pre>+ WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></pre>
<pre>+ mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE,<o:p></o:p></pre>
<pre>+ hubid * MMHUB_INSTANCE_REGISTER_OFFSET + j * distance, tmp);<o:p></o:p></pre>
<pre>+ }<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+}<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre> static void mmhub_v9_4_init_cache_regs(struct amdgpu_device *adev, int hubid)<o:p></o:p></pre>
<pre> {<o:p></o:p></pre>
<pre> uint32_t tmp;<o:p></o:p></pre>
<pre>@@ -392,6 +421,7 @@ static int mmhub_v9_4_gart_enable(struct amdgpu_device *adev)<o:p></o:p></pre>
<pre> if (!amdgpu_sriov_vf(adev))<o:p></o:p></pre>
<pre> mmhub_v9_4_init_cache_regs(adev, i);<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>+ mmhub_v9_4_set_snoop(adev, i);<o:p></o:p></pre>
<pre> mmhub_v9_4_enable_system_domain(adev, i);<o:p></o:p></pre>
<pre> if (!amdgpu_sriov_vf(adev))<o:p></o:p></pre>
<pre> mmhub_v9_4_disable_identity_aperture(adev, i);<o:p></o:p></pre>
<pre>diff --git a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h<o:p></o:p></pre>
<pre>index c488d4a50cf4..b2252deabc17 100644<o:p></o:p></pre>
<pre>--- a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h<o:p></o:p></pre>
<pre>+++ b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_offset.h<o:p></o:p></pre>
<pre>@@ -203,6 +203,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB0_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB0_WR_MISC_CREDIT 0x0058<o:p></o:p></pre>
<pre> #define mmDAGB0_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE 0x005b<o:p></o:p></pre>
<pre>+#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x005c<o:p></o:p></pre>
<pre>+#define mmDAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB0_WRCLI_ASK_PENDING 0x005d<o:p></o:p></pre>
<pre> #define mmDAGB0_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB0_WRCLI_GO_PENDING 0x005e<o:p></o:p></pre>
<pre>@@ -455,6 +459,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB1_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB1_WR_MISC_CREDIT 0x00d8<o:p></o:p></pre>
<pre> #define mmDAGB1_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE 0x00db<o:p></o:p></pre>
<pre>+#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x00dc<o:p></o:p></pre>
<pre>+#define mmDAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB1_WRCLI_ASK_PENDING 0x00dd<o:p></o:p></pre>
<pre> #define mmDAGB1_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB1_WRCLI_GO_PENDING 0x00de<o:p></o:p></pre>
<pre>@@ -707,6 +715,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB2_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB2_WR_MISC_CREDIT 0x0158<o:p></o:p></pre>
<pre> #define mmDAGB2_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE 0x015b<o:p></o:p></pre>
<pre>+#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x015c<o:p></o:p></pre>
<pre>+#define mmDAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB2_WRCLI_ASK_PENDING 0x015d<o:p></o:p></pre>
<pre> #define mmDAGB2_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB2_WRCLI_GO_PENDING 0x015e<o:p></o:p></pre>
<pre>@@ -959,6 +971,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB3_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB3_WR_MISC_CREDIT 0x01d8<o:p></o:p></pre>
<pre> #define mmDAGB3_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE 0x01db<o:p></o:p></pre>
<pre>+#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x01dc<o:p></o:p></pre>
<pre>+#define mmDAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB3_WRCLI_ASK_PENDING 0x01dd<o:p></o:p></pre>
<pre> #define mmDAGB3_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB3_WRCLI_GO_PENDING 0x01de<o:p></o:p></pre>
<pre>@@ -1211,6 +1227,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB4_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB4_WR_MISC_CREDIT 0x0258<o:p></o:p></pre>
<pre> #define mmDAGB4_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE 0x025b<o:p></o:p></pre>
<pre>+#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x025c<o:p></o:p></pre>
<pre>+#define mmDAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB4_WRCLI_ASK_PENDING 0x025d<o:p></o:p></pre>
<pre> #define mmDAGB4_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB4_WRCLI_GO_PENDING 0x025e<o:p></o:p></pre>
<pre>@@ -4793,6 +4813,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB5_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB5_WR_MISC_CREDIT 0x3058<o:p></o:p></pre>
<pre> #define mmDAGB5_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE 0x305b<o:p></o:p></pre>
<pre>+#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x305c<o:p></o:p></pre>
<pre>+#define mmDAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB5_WRCLI_ASK_PENDING 0x305d<o:p></o:p></pre>
<pre> #define mmDAGB5_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB5_WRCLI_GO_PENDING 0x305e<o:p></o:p></pre>
<pre>@@ -5045,6 +5069,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB6_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB6_WR_MISC_CREDIT 0x30d8<o:p></o:p></pre>
<pre> #define mmDAGB6_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE 0x30db<o:p></o:p></pre>
<pre>+#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x30dc<o:p></o:p></pre>
<pre>+#define mmDAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB6_WRCLI_ASK_PENDING 0x30dd<o:p></o:p></pre>
<pre> #define mmDAGB6_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB6_WRCLI_GO_PENDING 0x30de<o:p></o:p></pre>
<pre>@@ -5297,6 +5325,10 @@<o:p></o:p></pre>
<pre> #define mmDAGB7_WR_DATA_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB7_WR_MISC_CREDIT 0x3158<o:p></o:p></pre>
<pre> #define mmDAGB7_WR_MISC_CREDIT_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE 0x315b<o:p></o:p></pre>
<pre>+#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_BASE_IDX 1<o:p></o:p></pre>
<pre>+#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE 0x315c<o:p></o:p></pre>
<pre>+#define mmDAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB7_WRCLI_ASK_PENDING 0x315d<o:p></o:p></pre>
<pre> #define mmDAGB7_WRCLI_ASK_PENDING_BASE_IDX 1<o:p></o:p></pre>
<pre> #define mmDAGB7_WRCLI_GO_PENDING 0x315e<o:p></o:p></pre>
<pre>diff --git a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h<o:p></o:p></pre>
<pre>index 2969fbf282b7..5069d2fd467f 100644<o:p></o:p></pre>
<pre>--- a/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h<o:p></o:p></pre>
<pre>+++ b/drivers/gpu/drm/amd/include/asic_reg/mmhub/mmhub_9_4_1_sh_mask.h<o:p></o:p></pre>
<pre>@@ -1532,6 +1532,12 @@<o:p></o:p></pre>
<pre> //DAGB0_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB0_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB0_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB0_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB0_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB0_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB0_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB0_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -3207,6 +3213,12 @@<o:p></o:p></pre>
<pre> //DAGB1_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB1_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB1_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB1_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB1_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB1_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB1_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB1_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -4882,6 +4894,12 @@<o:p></o:p></pre>
<pre> //DAGB2_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB2_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB2_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB2_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB2_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB2_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB2_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB2_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -6557,6 +6575,12 @@<o:p></o:p></pre>
<pre> //DAGB3_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB3_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB3_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB3_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB3_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB3_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB3_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB3_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -8232,6 +8256,12 @@<o:p></o:p></pre>
<pre> //DAGB4_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB4_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB4_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB4_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB4_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB4_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB4_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB4_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -28737,6 +28767,12 @@<o:p></o:p></pre>
<pre> //DAGB5_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB5_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB5_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB5_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB5_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB5_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB5_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB5_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -30412,6 +30448,12 @@<o:p></o:p></pre>
<pre> //DAGB6_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB6_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB6_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB6_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB6_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB6_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB6_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB6_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
<pre>@@ -32087,6 +32129,12 @@<o:p></o:p></pre>
<pre> //DAGB7_WRCLI_DBUS_GO_PENDING<o:p></o:p></pre>
<pre> #define DAGB7_WRCLI_DBUS_GO_PENDING__BUSY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB7_WRCLI_DBUS_GO_PENDING__BUSY_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB7_WRCLI_GPU_SNOOP_OVERRIDE<o:p></o:p></pre>
<pre>+#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre>+//DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE<o:p></o:p></pre>
<pre>+#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE__SHIFT 0x0<o:p></o:p></pre>
<pre>+#define DAGB7_WRCLI_GPU_SNOOP_OVERRIDE_VALUE__ENABLE_MASK 0xFFFFFFFFL<o:p></o:p></pre>
<pre> //DAGB7_DAGB_DLY<o:p></o:p></pre>
<pre> #define DAGB7_DAGB_DLY__DLY__SHIFT 0x0<o:p></o:p></pre>
<pre> #define DAGB7_DAGB_DLY__CLI__SHIFT 0x8<o:p></o:p></pre>
</blockquote>
</div>
</div>
</body>
</html>