Am 21.07.2016 um 11:16 schrieb Wang, Qingqing: > > This doesn't work on 32bit systems since totalram is a long (IIRC) and > so this will certainly overflow. > > -- can you be more specific, how could the overflow happen? > Both values are 32bit on a 32bit system, so as soon as you have more than 4GB installed this will overflow. You need to cast the long to a 64bit value to avoid that. > > Additional if I remember correctly we didn't ended the discussion on > what to do here with a conclusion. > > -- ok, since it happens in anther mail list, we should stop talking > about it here, you can send out your ideas there. > Actually that discussion was held long ago internally but we never got a conclusion on this IIRC. So we should probably continue the discussion on this thread now. Regards, Christian. > ------------------------------------------------------------------------ > *å??件人:* amd-gfx <amd-gfx-bounces at lists.freedesktop.org> 代表 Christian > König <deathsimple at vodafone.de> > *å??é??æ?¶é?´:* 2016å¹´7æ??21æ?¥ 16:53:05 > *æ?¶ä»¶äºº:* Wang, Qingqing; amd-gfx at lists.freedesktop.org > *主é¢?:* Re: [PATCH] drm/amdgpu: adjust gtt memory size > Am 21.07.2016 um 09:46 schrieb Ken Wang: > > Change-Id: If00d5b97ba9e30f9b7f68fdfc134a0f8b3ad2add > > Signed-off-by: Ken Wang <Qingqing.Wang at amd.com> > > --- > > drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 7 ++++++- > > drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 7 ++++++- > > 2 files changed, 12 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > > index a3b6048..0b095d5 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > > @@ -336,6 +336,11 @@ static int gmc_v7_0_mc_init(struct > amdgpu_device *adev) > > { > > u32 tmp; > > int chansize, numchan; > > + u64 sysmem_size; > > + struct sysinfo si; > > + > > + si_meminfo(&si); > > + sysmem_size = si.totalram * si.mem_unit; > > This doesn't work on 32bit systems since totalram is a long (IIRC) and > so this will certainly overflow. > > Additional if I remember correctly we didn't ended the discussion on > what to do here with a conclusion. > > Regards, > Christian. > > > > > /* Get VRAM informations */ > > tmp = RREG32(mmMC_ARB_RAMCFG); > > @@ -392,7 +397,7 @@ static int gmc_v7_0_mc_init(struct amdgpu_device > *adev) > > * size equal to the 1024 or vram, whichever is larger. > > */ > > if (amdgpu_gart_size == -1) > > - adev->mc.gtt_size = max((1024ULL << 20), > adev->mc.mc_vram_size); > > + adev->mc.gtt_size = max((1024ULL << 20), > min(adev->mc.mc_vram_size, sysmem_size/2)); > > else > > adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20; > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > > index 02b6872..790bf7a 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > > @@ -413,6 +413,11 @@ static int gmc_v8_0_mc_init(struct > amdgpu_device *adev) > > { > > u32 tmp; > > int chansize, numchan; > > + u64 sysmem_size; > > + struct sysinfo si; > > + > > + si_meminfo(&si); > > + sysmem_size = si.totalram * si.mem_unit; > > > > /* Get VRAM informations */ > > tmp = RREG32(mmMC_ARB_RAMCFG); > > @@ -469,7 +474,7 @@ static int gmc_v8_0_mc_init(struct amdgpu_device > *adev) > > * size equal to the 1024 or vram, whichever is larger. > > */ > > if (amdgpu_gart_size == -1) > > - adev->mc.gtt_size = max((1024ULL << 20), > adev->mc.mc_vram_size); > > + adev->mc.gtt_size = max((1024ULL << 20), > min(adev->mc.mc_vram_size, sysmem_size/2)); > > else > > adev->mc.gtt_size = (uint64_t)amdgpu_gart_size << 20; > > > > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20160721/095189ba/attachment.html>