<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Hi Zongmin,<br>
<br>
well what seems to happen here is that the ASIC is not correctly
initialized.<br>
<br>
Alex knows that better than me, but I think the issue on SI was just
that the BIOS was somehow buggy didn't correctly initialized the
register.<br>
<br>
What you have here is most likely something completely different and
you are just working around the symptoms.<br>
<br>
Regards,<br>
Christian.<br>
<br>
<div class="moz-cite-prefix">Am 16.12.21 um 10:35 schrieb 周宗敏:<br>
</div>
<blockquote type="cite" cite="mid:10btoflyx2v-10buydfdywo@nsmail6.0">
<p>Hi Christian,</p>
<p><br>
</p>
<p>I'm testing for GPU passthrough feature, so I pass through
this GPU to virtual machine to use. It based on arm64 system.</p>
<br>
<p>As far as i know, Alex had dealt with a similar problems on
dri/radeon/si.c . Maybe they have a same reason to cause it?</p>
<p>the history commit message is below:</p>
<p><a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcommit%2F%3Fid%3D0ca223b029a261e82fb2f50c52eb85d510f4260e&data=04%7C01%7Cchristian.koenig%40amd.com%7C4101c805880a478e13d308d9c0777e78%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637752441782176211%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=s%2B1S%2B9HwwZMV9jvitYCGufFpd2Dqjplo9lGOK4xJI3c%3D&reserved=0" originalsrc="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0ca223b029a261e82fb2f50c52eb85d510f4260e" shash="Uw6H+SfHbLGDTfEYbmDncPmGhABuG7ZOWnZ/ODDtNFOSh0YS1SyvpSvq4OxipuBIdu2euBKZFiOuTmbzoiZmwb6wE0FoAvZfrgEkJotb/FnfiSBF5KMeQZKApezqezbfxgmCLNnFmdlxsWf6fScDCYiN3Ifk2S4p82jpXyUYJbY=" _src="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0ca223b029a261e82fb2f50c52eb85d510f4260e" moz-do-not-send="true">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0ca223b029a261e82fb2f50c52eb85d510f4260e</a></p>
<p><img src="/nsmail/js/ueditor/php/upload/image/20211216/1639647221165090.png" title="1639647221165090.png" alt="image.png" moz-do-not-send="true"></p>
<p><br>
</p>
<p>Thanks very much.</p>
<p> <br>
</p>
<p>----</p>
<p> </p>
<p><strong>主 题:</strong><span id="subject">Re: 回复: Re: [PATCH]
drm/amdgpu: fixup bad vram size on gmc v8</span> <br>
<strong>日 期:</strong><span id="date">2021-12-16 16:15</span>
<br>
<strong>发件人:</strong><span id="from">Christian König</span>
<br>
<strong>收件人:</strong><span id="to">周宗敏Alex Deucher</span>
</p>
<p><br>
</p>
<p>Hi Zongmin,<br>
<br>
that strongly sounds like the ASIC is not correctly
initialized when trying to read the register.<br>
<br>
What board and environment are you using this GPU with? Is
that a normal x86 system?<br>
<br>
Regards,<br>
Christian.<br>
<br>
</p>
<p>Am 16.12.21 um 04:11 schrieb 周宗敏:<br>
</p>
<blockquote type="cite" cite="mid:q0npc15ith-q0npc15iti@nsmail6.0">
<ol class=" list-paddingleft-2" style="list-style-type:
decimal;">
<li>
<p>the problematic boards that I have tested is [AMD/ATI]
Lexa PRO [Radeon RX 550/550X] ; and the vbios
version : 113-RXF9310-C09-BT</p>
</li>
<li>
<p>When an exception occurs I can see the following changes
in the values of vram size get from
RREG32(mmCONFIG_MEMSIZE) ,</p>
<p>it seems to have garbage in the upper 16 bits </p>
<p><img src="/nsmail/js/ueditor/php/upload/image/20211216/1639623655693645.png" title="1639623655693645.png" alt="image.png" moz-do-not-send="true"><br>
</p>
<p><br>
</p>
</li>
<li>
<p>and then I can also see some dmesg like below:</p>
<p>when vram size register have garbage,we may see error
message like below:</p>
<p>amdgpu 0000:09:00.0: VRAM: 4286582784M 0x000000F400000000
- 0x000FF8F4FFFFFFFF (4286582784M used)</p>
<p>the correct message should like below:</p>
<p>amdgpu 0000:09:00.0: VRAM: 4096M 0x000000F400000000 -
0x000000F4FFFFFFFF (4096M used)</p>
<p><br>
</p>
<p>if you have any problems,please send me mail.</p>
<p>thanks very much.</p>
<p><br>
</p>
</li>
</ol>
<p>---- </p>
<p><strong>主 题:</strong><span id="subject">Re: [PATCH]
drm/amdgpu: fixup bad vram size on gmc v8</span>
<br>
<strong>日 期:</strong><span id="date">2021-12-16 04:23</span>
<br>
<strong>发件人:</strong><span id="from">Alex Deucher</span>
<br>
<strong>收件人:</strong><span id="to">Zongmin Zhou</span>
</p>
<p><br>
</p>
<p>On Wed, Dec 15, 2021 at 10:31 AM Zongmin Zhou<zhouzongmin@kylinos.cn>wrote:<br>
><br>
> Some boards(like RX550) seem to have garbage
in the upper<br>
> 16 bits of the vram size register. Check for<br>
> this and clamp the size properly. Fixes<br>
> boards reporting bogus amounts of vram.<br>
><br>
> after add this patch,the maximum GPU VRAM size
is 64GB,<br>
> otherwise only 64GB vram size will be used.<br>
<br>
Can you provide some examples of problematic boards
and possibly a<br>
vbios image from the problematic board? What
values are you seeing?<br>
It would be nice to see what the boards are
reporting and whether the<br>
lower 16 bits are actually correct or if it is some
other issue. This<br>
register is undefined until the asic has been
initialized. The vbios<br>
programs it as part of it's asic init sequence
(either via vesa/gop or<br>
the OS driver).<br>
<br>
Alex<br>
<br>
<br>
><br>
> Signed-off-by: Zongmin Zhou<zhouzongmin@kylinos.cn><br>
> ---<br>
> drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c |
13 ++++++++++---<br>
> 1 file changed, 10 insertions(+), 3
deletions(-)<br>
><br>
> diff --git
a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c<br>
> index 492ebed2915b..63b890f1e8af 100644<br>
> ---
a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c<br>
> +++
b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c<br>
> @@ -515,10 +515,10 @@ static void
gmc_v8_0_mc_program(struct amdgpu_device *adev)<br>
> static int gmc_v8_0_mc_init(struct
amdgpu_device *adev)<br>
> {<br>
> int r;<br>
> + u32 tmp;<br>
><br>
> adev->gmc.vram_width =
amdgpu_atombios_get_vram_width(adev);<br>
> if (!adev->gmc.vram_width) {<br>
> - u32 tmp;<br>
> int chansize, numchan;<br>
><br>
> /* Get VRAM informations
*/<br>
> @@ -562,8 +562,15 @@ static int
gmc_v8_0_mc_init(struct amdgpu_device *adev)<br>
> adev->gmc.vram_width =
numchan * chansize;<br>
> }<br>
> /* size in MB on si */<br>
> - adev->gmc.mc_vram_size =
RREG32(mmCONFIG_MEMSIZE) * 1024ULL * 1024ULL;<br>
> - adev->gmc.real_vram_size =
RREG32(mmCONFIG_MEMSIZE) * 1024ULL * 1024ULL;<br>
> + tmp = RREG32(mmCONFIG_MEMSIZE);<br>
> + /* some boards may have garbage in
the upper 16 bits */<br>
> + if (tmp & 0xffff0000) {<br>
> + DRM_INFO("Probable bad
vram size: 0x%08x\n", tmp);<br>
> + if (tmp & 0xffff)<br>
> + tmp &= 0xffff;<br>
> + }<br>
> + adev->gmc.mc_vram_size = tmp *
1024ULL * 1024ULL;<br>
> + adev->gmc.real_vram_size =
adev->gmc.mc_vram_size;<br>
><br>
> if (!(adev->flags &
AMD_IS_APU)) {<br>
> r =
amdgpu_device_resize_fb_bar(adev);<br>
> --<br>
> 2.25.1<br>
><br>
><br>
> No virus found<br>
> Checked by Hillstone
Network AntiVirus<br>
</zhouzongmin@kylinos.cn></zhouzongmin@kylinos.cn></p>
</blockquote>
<p><br>
</p>
</blockquote>
<br>
</body>
</html>