<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hi Alex,</p>
<p>In Catalyst driver source code, Stoney is listed as supported, I
don't know how well it is supported though. I think at least
people have run some graphic operations.</p>
<p>What kind of hangs happens in Stoney? Is it a graphic operation
hang? Or OpenCL? Or something else? How easily it is reproduced?</p>
<p>Stoney is similar to Carizzo. People has tried computes on
Carrizo till Fiji in fglrx.<br>
</p>
<p>At least, we need to limit this change for Stoney only unless it
is reported in other ASICs too.</p>
<p> This change can affect compute performance a lot. People are
evaluating even the AMDGPU PRO OpenCL on FIJI, as far as I know.<br>
</p>
<p>Thanks,</p>
<p>Alex Bin<br>
</p>
<br>
<div class="moz-cite-prefix">On 2017-06-07 12:32 PM, Deucher,
Alexander wrote:<br>
</div>
<blockquote type="cite"
cite="mid:BN6PR12MB1652FFCD2FC9C923271C1475F7C80@BN6PR12MB1652.namprd12.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">> -----Original Message-----<br>
> From: Xie, AlexBin<br>
> Sent: Wednesday, June 07, 2017 12:31 PM<br>
> To: Alex Deucher; <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
> Cc: Deucher, Alexander<br>
> Subject: Re: [PATCH 1/3] drm/amdgpu: fix mec queue
policy on single MEC<br>
> asics<br>
> <br>
> Hi Alex,<br>
> <br>
> In closed source driver, we assign compute queues to
all 4 pipes always.<br>
> There is no hangs.<br>
> <br>
> May I know which ASIC?<br>
<br>
It was reported on Stoney.<br>
<br>
Alex<br>
<br>
> <br>
> Assign all queues in first pipe first mec can slow
things down.<br>
> <br>
> Thanks,<br>
> <br>
> Alex Bin Xie<br>
> <br>
> <br>
> <br>
> On 2017-06-07 11:10 AM, Alex Deucher wrote:<br>
> > Fixes hangs on single MEC asics.<br>
> ><br>
> > Fixes: 2ed286fb434 (drm/amdgpu: new queue policy,
take first 2 queues of<br>
> each pipe v2)<br>
> > Signed-off-by: Alex Deucher
<a class="moz-txt-link-rfc2396E" href="mailto:alexander.deucher@amd.com"><alexander.deucher@amd.com></a><br>
> > ---<br>
> > drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 12
+++++++++---<br>
> > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 12
+++++++++---<br>
> > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 12
+++++++++---<br>
> > 3 files changed, 27 insertions(+), 9
deletions(-)<br>
> ><br>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> > index 4c04e9d..862bc72 100644<br>
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
> > @@ -2825,9 +2825,15 @@ static void<br>
> gfx_v7_0_compute_queue_acquire(struct amdgpu_device
*adev)<br>
> > if (mec >=
adev->gfx.mec.num_mec)<br>
> > break;<br>
> ><br>
> > - /* policy: amdgpu owns the first two
queues of the first MEC<br>
> */<br>
> > - if (mec == 0 && queue < 2)<br>
> > - set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + if (adev->gfx.mec.num_mec > 1) {<br>
> > + /* policy: amdgpu owns the
first two queues of the<br>
> first MEC */<br>
> > + if (mec == 0 && queue
< 2)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + } else {<br>
> > + /* policy: amdgpu owns all
queues in the first pipe */<br>
> > + if (mec == 0 && pipe
== 0)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + }<br>
> > }<br>
> ><br>
> > /* update the number of active compute rings
*/<br>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> > index ad2e0bb..1370b39 100644<br>
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
> > @@ -1464,9 +1464,15 @@ static void<br>
> gfx_v8_0_compute_queue_acquire(struct amdgpu_device
*adev)<br>
> > if (mec >=
adev->gfx.mec.num_mec)<br>
> > break;<br>
> ><br>
> > - /* policy: amdgpu owns the first two
queues of the first MEC<br>
> */<br>
> > - if (mec == 0 && queue < 2)<br>
> > - set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + if (adev->gfx.mec.num_mec > 1) {<br>
> > + /* policy: amdgpu owns the
first two queues of the<br>
> first MEC */<br>
> > + if (mec == 0 && queue
< 2)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + } else {<br>
> > + /* policy: amdgpu owns all
queues in the first pipe */<br>
> > + if (mec == 0 && pipe
== 0)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + }<br>
> > }<br>
> ><br>
> > /* update the number of active compute rings
*/<br>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
> > index cf15a350..9d675b3 100644<br>
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
> > @@ -873,9 +873,15 @@ static void<br>
> gfx_v9_0_compute_queue_acquire(struct amdgpu_device
*adev)<br>
> > if (mec >=
adev->gfx.mec.num_mec)<br>
> > break;<br>
> ><br>
> > - /* policy: amdgpu owns the first two
queues of the first MEC<br>
> */<br>
> > - if (mec == 0 && queue < 2)<br>
> > - set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + if (adev->gfx.mec.num_mec > 1) {<br>
> > + /* policy: amdgpu owns the
first two queues of the<br>
> first MEC */<br>
> > + if (mec == 0 && queue
< 2)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + } else {<br>
> > + /* policy: amdgpu owns all
queues in the first pipe */<br>
> > + if (mec == 0 && pipe
== 0)<br>
> > + set_bit(i,
adev->gfx.mec.queue_bitmap);<br>
> > + }<br>
> > }<br>
> ><br>
> > /* update the number of active compute rings
*/<br>
<br>
</div>
</span></font>
</blockquote>
<br>
</body>
</html>