<html>
<head>
<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>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
<p><font size="2"><span style="font-size:10pt">This doesn't work on 32bit systems since totalram is a long (IIRC) and
<br>
so this will certainly overflow.</span></font></p>
<p>-- can you be more specific, how could the overflow happen?</p>
<p><br>
</p>
<p><font size="2"><span style="font-size:10pt">Additional if I remember correctly we didn't ended the discussion on
<br>
what to do here with a conclusion.</span></font></p>
<p>-- ok, since it happens in anther mail list, we should stop talking about it here, you can send out your ideas there.<br>
</p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>发件人:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> 代表 Christian König <deathsimple@vodafone.de><br>
<b>发送时间:</b> 2016年7月21日 16:53:05<br>
<b>收件人:</b> Wang, Qingqing; amd-gfx@lists.freedesktop.org<br>
<b>主题:</b> Re: [PATCH] drm/amdgpu: adjust gtt memory size</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Am 21.07.2016 um 09:46 schrieb Ken Wang:<br>
> Change-Id: If00d5b97ba9e30f9b7f68fdfc134a0f8b3ad2add<br>
> Signed-off-by: Ken Wang <Qingqing.Wang@amd.com><br>
> ---<br>
>   drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 7 ++++++-<br>
>   drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 7 ++++++-<br>
>   2 files changed, 12 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c<br>
> index a3b6048..0b095d5 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c<br>
> @@ -336,6 +336,11 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)<br>
>   {<br>
>        u32 tmp;<br>
>        int chansize, numchan;<br>
> +     u64 sysmem_size;<br>
> +     struct sysinfo si;<br>
> +<br>
> +     si_meminfo(&si);<br>
> +     sysmem_size = si.totalram * si.mem_unit;<br>
<br>
This doesn't work on 32bit systems since totalram is a long (IIRC) and <br>
so this will certainly overflow.<br>
<br>
Additional if I remember correctly we didn't ended the discussion on <br>
what to do here with a conclusion.<br>
<br>
Regards,<br>
Christian.<br>
<br>
>   <br>
>        /* Get VRAM informations */<br>
>        tmp = RREG32(mmMC_ARB_RAMCFG);<br>
> @@ -392,7 +397,7 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)<br>
>         * size equal to the 1024 or vram, whichever is larger.<br>
>         */<br>
>        if (amdgpu_gart_size == -1)<br>
> -             adev->mc.gtt_size = max((1024ULL << 20), adev->mc.mc_vram_size);<br>
> +             adev->mc.gtt_size = max((1024ULL << 20), min(adev->mc.mc_vram_size, sysmem_size/2));<br>
>        else<br>
>                adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20;<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 02b6872..790bf7a 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c<br>
> @@ -413,6 +413,11 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)<br>
>   {<br>
>        u32 tmp;<br>
>        int chansize, numchan;<br>
> +     u64 sysmem_size;<br>
> +     struct sysinfo si;<br>
> +<br>
> +     si_meminfo(&si);<br>
> +     sysmem_size = si.totalram * si.mem_unit;<br>
>   <br>
>        /* Get VRAM informations */<br>
>        tmp = RREG32(mmMC_ARB_RAMCFG);<br>
> @@ -469,7 +474,7 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)<br>
>         * size equal to the 1024 or vram, whichever is larger.<br>
>         */<br>
>        if (amdgpu_gart_size == -1)<br>
> -             adev->mc.gtt_size = max((1024ULL << 20), adev->mc.mc_vram_size);<br>
> +             adev->mc.gtt_size = max((1024ULL << 20), min(adev->mc.mc_vram_size, sysmem_size/2));<br>
>        else<br>
>                adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20;<br>
>   <br>
<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
amd-gfx@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font>
</body>
</html>