<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.apple-tab-span
{mso-style-name:apple-tab-span;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@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">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Yeah, that should do it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Alex<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org]
<b>On Behalf Of </b>StDenis, Tom<br>
<b>Sent:</b> Wednesday, June 29, 2016 5:48 AM<br>
<b>To:</b> Nicolai Hähnle; amd-gfx@lists.freedesktop.org<br>
<b>Subject:</b> Re: [PATCH 1/3] drm/amd/gfx: add instance field to select_se_sh<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">Ya I see that in <o:p></o:p></span></p>
<p style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">u32 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_BROADCAST_WRITES, 1);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">data = REG_SET_FIELD(data, GRBM_GFX_INDEX, INSTANCE_INDEX, instance);<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">So should I do something similar with 0xFFFFFFFF and change all the default "0" throughout the driver to that? So that becomes
<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">if (instance == 0xFFFFFFFF) {<br>
data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_BROADCAST_WRITES, 1);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">} else {<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_INDEX, instance);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">}<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">That's an easy change.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black">Tom<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<div>
<div>
<div class="MsoNormal" align="center" style="text-align:center;background:white">
<span style="font-family:"Calibri","sans-serif";color:black">
<hr size="2" width="98%" align="center">
</span></div>
<div id="x_divRplyFwdMsg">
<p class="MsoNormal" style="background:white"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"> Nicolai Hähnle <<a href="mailto:nhaehnle@gmail.com">nhaehnle@gmail.com</a>><br>
<b>Sent:</b> Wednesday, June 29, 2016 03:16<br>
<b>To:</b> Tom St Denis; <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Cc:</b> StDenis, Tom<br>
<b>Subject:</b> Re: [PATCH 1/3] drm/amd/gfx: add instance field to select_se_sh</span><span style="font-family:"Calibri","sans-serif";color:black">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="background:white"><span style="font-family:"Calibri","sans-serif";color:black"> <o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif";color:black">On 28.06.2016 16:43, Tom St Denis wrote:<br>
> Add ability to specify instance in select_se_sh callback.<br>
> Defaults to 0 all over the driver.<br>
><br>
> Signed-off-by: Tom St Denis <<a href="mailto:tom.stdenis@amd.com">tom.stdenis@amd.com</a>><br>
> ---<br>
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ++--<br>
> drivers/gpu/drm/amd/amdgpu/cik.c | 4 ++--<br>
> drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 25 +++++++++++++------------<br>
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 19 ++++++++++---------<br>
> drivers/gpu/drm/amd/amdgpu/vi.c | 4 ++--<br>
> 5 files changed, 29 insertions(+), 27 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> index 780a830b2bbd..d7efbd0ee983 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> @@ -1158,7 +1158,7 @@ struct amdgpu_cu_info {<br>
> struct amdgpu_gfx_funcs {<br>
> /* get the gpu clock counter */<br>
> uint64_t (*get_gpu_clock_counter)(struct amdgpu_device *adev);<br>
> - void (*select_se_sh)(struct amdgpu_device *adev, u32 se_num, u32 sh_num);<br>
> + void (*select_se_sh)(struct amdgpu_device *adev, u32 se_num, u32 sh_num, u32 instance);<br>
> };<br>
><br>
> struct amdgpu_gfx {<br>
> @@ -2295,7 +2295,7 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)<br>
> #define amdgpu_dpm_vblank_too_short(adev) (adev)->pm.funcs->vblank_too_short((adev))<br>
> #define amdgpu_dpm_enable_bapm(adev, e) (adev)->pm.funcs->enable_bapm((adev), (e))<br>
> #define amdgpu_gfx_get_gpu_clock_counter(adev) (adev)->gfx.funcs->get_gpu_clock_counter((adev))<br>
> -#define amdgpu_gfx_select_se_sh(adev, se, sh) (adev)->gfx.funcs->select_se_sh((adev), (se), (sh))<br>
> +#define amdgpu_gfx_select_se_sh(adev, se, sh, instance) (adev)->gfx.funcs->select_se_sh((adev), (se), (sh), (instance))<br>
><br>
> #define amdgpu_dpm_get_temperature(adev) \<br>
> ((adev)->pp_enabled ? \<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c<br>
> index ebc8c256286b..1799612b8299 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/cik.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/cik.c<br>
> @@ -1036,12 +1036,12 @@ static uint32_t cik_read_indexed_register(struct amdgpu_device *adev,<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> if (se_num != 0xffffffff || sh_num != 0xffffffff)<br>
> - amdgpu_gfx_select_se_sh(adev, se_num, sh_num);<br>
> + amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0);<br>
><br>
> val = RREG32(reg_offset);<br>
><br>
> if (se_num != 0xffffffff || sh_num != 0xffffffff)<br>
> - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
> return val;<br>
> }<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> index 9edec8a98ee2..44def1665f0c 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> @@ -1584,10 +1584,11 @@ static void gfx_v7_0_tiling_mode_table_init(struct amdgpu_device *adev)<br>
> * broadcast to all SEs or SHs (CIK).<br>
> */<br>
> static void gfx_v7_0_select_se_sh(struct amdgpu_device *adev,<br>
> - u32 se_num, u32 sh_num)<br>
> + u32 se_num, u32 sh_num, u32 instance)<br>
> {<br>
> u32 data = GRBM_GFX_INDEX__INSTANCE_BROADCAST_WRITES_MASK;<br>
><br>
> + data = REG_SET_FIELD(data, GRBM_GFX_INDEX, INSTANCE_INDEX, instance);<br>
<br>
INSTANCE_INDEX and INSTANCE_BROADCAST_WRITES have the same relationship <br>
as SH/SE_INDEX and SH/SE_BROADCAST_WRITES. It's actually kind of odd <br>
that the current code either sets both of SH/SE_BROADCAST_WRITES or none <br>
of them. It should logically be possible to broadcast writes to all SHs <br>
in one SE, for example.<br>
<br>
Nicolai<br>
<br>
> if ((se_num == 0xffffffff) && (sh_num == 0xffffffff))<br>
> data |= GRBM_GFX_INDEX__SH_BROADCAST_WRITES_MASK |<br>
> GRBM_GFX_INDEX__SE_BROADCAST_WRITES_MASK;<br>
> @@ -1660,13 +1661,13 @@ static void gfx_v7_0_setup_rb(struct amdgpu_device *adev)<br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {<br>
> for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {<br>
> - gfx_v7_0_select_se_sh(adev, i, j);<br>
> + gfx_v7_0_select_se_sh(adev, i, j, 0);<br>
> data = gfx_v7_0_get_rb_active_bitmap(adev);<br>
> active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *<br>
> rb_bitmap_width_per_sh);<br>
> }<br>
> }<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> adev->gfx.config.backend_enable_mask = active_rbs;<br>
> @@ -1747,7 +1748,7 @@ static void gfx_v7_0_gpu_init(struct amdgpu_device *adev)<br>
> * making sure that the following register writes will be broadcasted<br>
> * to all the shaders<br>
> */<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
><br>
> /* XXX SH_MEM regs */<br>
> /* where to put LDS, scratch, GPUVM in FSA64 space */<br>
> @@ -3381,7 +3382,7 @@ static void gfx_v7_0_wait_for_rlc_serdes(struct amdgpu_device *adev)<br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {<br>
> for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {<br>
> - gfx_v7_0_select_se_sh(adev, i, j);<br>
> + gfx_v7_0_select_se_sh(adev, i, j, 0);<br>
> for (k = 0; k < adev->usec_timeout; k++) {<br>
> if (RREG32(mmRLC_SERDES_CU_MASTER_BUSY) == 0)<br>
> break;<br>
> @@ -3389,7 +3390,7 @@ static void gfx_v7_0_wait_for_rlc_serdes(struct amdgpu_device *adev)<br>
> }<br>
> }<br>
> }<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> mask = RLC_SERDES_NONCU_MASTER_BUSY__SE_MASTER_BUSY_MASK |<br>
> @@ -3549,7 +3550,7 @@ static int gfx_v7_0_rlc_resume(struct amdgpu_device *adev)<br>
> WREG32(mmRLC_LB_CNTR_MAX, 0x00008000);<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> WREG32(mmRLC_LB_INIT_CU_MASK, 0xffffffff);<br>
> WREG32(mmRLC_LB_PARAMS, 0x00600408);<br>
> WREG32(mmRLC_LB_CNTL, 0x80000004);<br>
> @@ -3589,7 +3590,7 @@ static void gfx_v7_0_enable_cgcg(struct amdgpu_device *adev, bool enable)<br>
> tmp = gfx_v7_0_halt_rlc(adev);<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> WREG32(mmRLC_SERDES_WR_CU_MASTER_MASK, 0xffffffff);<br>
> WREG32(mmRLC_SERDES_WR_NONCU_MASTER_MASK, 0xffffffff);<br>
> tmp2 = RLC_SERDES_WR_CTRL__BPM_ADDR_MASK |<br>
> @@ -3640,7 +3641,7 @@ static void gfx_v7_0_enable_mgcg(struct amdgpu_device *adev, bool enable)<br>
> tmp = gfx_v7_0_halt_rlc(adev);<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> WREG32(mmRLC_SERDES_WR_CU_MASTER_MASK, 0xffffffff);<br>
> WREG32(mmRLC_SERDES_WR_NONCU_MASTER_MASK, 0xffffffff);<br>
> data = RLC_SERDES_WR_CTRL__BPM_ADDR_MASK |<br>
> @@ -3691,7 +3692,7 @@ static void gfx_v7_0_enable_mgcg(struct amdgpu_device *adev, bool enable)<br>
> tmp = gfx_v7_0_halt_rlc(adev);<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> WREG32(mmRLC_SERDES_WR_CU_MASTER_MASK, 0xffffffff);<br>
> WREG32(mmRLC_SERDES_WR_NONCU_MASTER_MASK, 0xffffffff);<br>
> data = RLC_SERDES_WR_CTRL__BPM_ADDR_MASK | RLC_SERDES_WR_CTRL__MGCG_OVERRIDE_1_MASK;<br>
> @@ -5055,7 +5056,7 @@ static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev)<br>
> mask = 1;<br>
> ao_bitmap = 0;<br>
> counter = 0;<br>
> - gfx_v7_0_select_se_sh(adev, i, j);<br>
> + gfx_v7_0_select_se_sh(adev, i, j, 0);<br>
> bitmap = gfx_v7_0_get_cu_active_bitmap(adev);<br>
> cu_info->bitmap[i][j] = bitmap;<br>
><br>
> @@ -5071,7 +5072,7 @@ static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev)<br>
> ao_cu_mask |= (ao_bitmap << (i * 16 + j * 8));<br>
> }<br>
> }<br>
> - gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v7_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> cu_info->number = active_cu_number;<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> index 9aa30bc06e4a..45c3ad52d21c 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> @@ -3447,10 +3447,11 @@ static void gfx_v8_0_tiling_mode_table_init(struct amdgpu_device *adev)<br>
> }<br>
><br>
> static void gfx_v8_0_select_se_sh(struct amdgpu_device *adev,<br>
> - u32 se_num, u32 sh_num)<br>
> + u32 se_num, u32 sh_num, u32 instance)<br>
> {<br>
> u32 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_BROADCAST_WRITES, 1);<br>
><br>
> + data = REG_SET_FIELD(data, GRBM_GFX_INDEX, INSTANCE_INDEX, instance);<br>
> if ((se_num == 0xffffffff) && (sh_num == 0xffffffff)) {<br>
> data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_BROADCAST_WRITES, 1);<br>
> data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_BROADCAST_WRITES, 1);<br>
> @@ -3499,13 +3500,13 @@ static void gfx_v8_0_setup_rb(struct amdgpu_device *adev)<br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {<br>
> for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {<br>
> - gfx_v8_0_select_se_sh(adev, i, j);<br>
> + gfx_v8_0_select_se_sh(adev, i, j, 0);<br>
> data = gfx_v8_0_get_rb_active_bitmap(adev);<br>
> active_rbs |= data << ((i * adev->gfx.config.max_sh_per_se + j) *<br>
> rb_bitmap_width_per_sh);<br>
> }<br>
> }<br>
> - gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> adev->gfx.config.backend_enable_mask = active_rbs;<br>
> @@ -3609,7 +3610,7 @@ static void gfx_v8_0_gpu_init(struct amdgpu_device *adev)<br>
> * making sure that the following register writes will be broadcasted<br>
> * to all the shaders<br>
> */<br>
> - gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
><br>
> WREG32(mmPA_SC_FIFO_SIZE,<br>
> (adev->gfx.config.sc_prim_fifo_size_frontend <<<br>
> @@ -3632,7 +3633,7 @@ static void gfx_v8_0_wait_for_rlc_serdes(struct amdgpu_device *adev)<br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> for (i = 0; i < adev->gfx.config.max_shader_engines; i++) {<br>
> for (j = 0; j < adev->gfx.config.max_sh_per_se; j++) {<br>
> - gfx_v8_0_select_se_sh(adev, i, j);<br>
> + gfx_v8_0_select_se_sh(adev, i, j, 0);<br>
> for (k = 0; k < adev->usec_timeout; k++) {<br>
> if (RREG32(mmRLC_SERDES_CU_MASTER_BUSY) == 0)<br>
> break;<br>
> @@ -3640,7 +3641,7 @@ static void gfx_v8_0_wait_for_rlc_serdes(struct amdgpu_device *adev)<br>
> }<br>
> }<br>
> }<br>
> - gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> mask = RLC_SERDES_NONCU_MASTER_BUSY__SE_MASTER_BUSY_MASK |<br>
> @@ -5409,7 +5410,7 @@ static void gfx_v8_0_send_serdes_cmd(struct amdgpu_device *adev,<br>
> {<br>
> uint32_t data;<br>
><br>
> - gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
><br>
> WREG32(mmRLC_SERDES_WR_CU_MASTER_MASK, 0xffffffff);<br>
> WREG32(mmRLC_SERDES_WR_NONCU_MASTER_MASK, 0xffffffff);<br>
> @@ -6501,7 +6502,7 @@ static void gfx_v8_0_get_cu_info(struct amdgpu_device *adev)<br>
> mask = 1;<br>
> ao_bitmap = 0;<br>
> counter = 0;<br>
> - gfx_v8_0_select_se_sh(adev, i, j);<br>
> + gfx_v8_0_select_se_sh(adev, i, j, 0);<br>
> bitmap = gfx_v8_0_get_cu_active_bitmap(adev);<br>
> cu_info->bitmap[i][j] = bitmap;<br>
><br>
> @@ -6517,7 +6518,7 @@ static void gfx_v8_0_get_cu_info(struct amdgpu_device *adev)<br>
> ao_cu_mask |= (ao_bitmap << (i * 16 + j * 8));<br>
> }<br>
> }<br>
> - gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
><br>
> cu_info->number = active_cu_number;<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c<br>
> index c628a09f84d7..c7762a554e6b 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/vi.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/vi.c<br>
> @@ -534,12 +534,12 @@ static uint32_t vi_read_indexed_register(struct amdgpu_device *adev, u32 se_num,<br>
><br>
> mutex_lock(&adev->grbm_idx_mutex);<br>
> if (se_num != 0xffffffff || sh_num != 0xffffffff)<br>
> - amdgpu_gfx_select_se_sh(adev, se_num, sh_num);<br>
> + amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0);<br>
><br>
> val = RREG32(reg_offset);<br>
><br>
> if (se_num != 0xffffffff || sh_num != 0xffffffff)<br>
> - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff);<br>
> + amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0);<br>
> mutex_unlock(&adev->grbm_idx_mutex);<br>
> return val;<br>
> }<br>
><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>