From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grigori Goronzy Subject: Re: [PATCH] drm/radeon: adjust default radeon_vm_block_size Date: Sat, 19 Jul 2014 14:37:22 +0200 Message-ID: <53CA6682.7000005@chown.ath.cx> References: <1405676310-1699-1-git-send-email-deathsimple@vodafone.de> <53C97DA4.4000107@chown.ath.cx> <53CA5D0D.7060003@vodafone.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0274348707==" Return-path: Received: from pygmy.kinoho.net (pygmy.kinoho.net [134.0.27.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 288266E20A for ; Sat, 19 Jul 2014 05:37:34 -0700 (PDT) In-Reply-To: <53CA5D0D.7060003@vodafone.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============0274348707== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="FIVSB4mOCv20vDURJNtjuFGsFtF1RR1xO" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --FIVSB4mOCv20vDURJNtjuFGsFtF1RR1xO Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 19.07.2014 13:57, Christian K=C3=B6nig wrote: > Yeah, I'm still playing a bit with this. >=20 > You need to consider the page directory size as well. If we have 4GB > address space (32bits) and 12bits in the page, 12bits in the page table= s > then there are only 8bits for the page directory, right? > > Now 8bits for the page directory means we have 256 entries with 8bytes > for each entry that makes 2048 bytes for the page directory. But since > we allocate 4096 bytes for the page directory anyway we could support > 8GB address space as well. > Yes, that's right... good idea. Larger VM space should also help a bit with fragmentation under memory pressure, right? > How about the v2 I've just send out to the list? It also adjusts the > vm_size to a default of 8GB and let you get vm_block_sizes according to= > the following table: > Looks good, I think. > vm_size vm_block_size > 1GB =3D 9 > 2GB =3D 10 > 4GB =3D 11 > 8GB =3D 12 > 16GB =3D 12 > 32GB =3D 13 > 64GB =3D 13 > 128GB =3D 14 > 256GB =3D 14 > 512GB =3D 15 > 1TB =3D 15 >=20 > Regards, > Christian. >=20 > Am 18.07.2014 22:03, schrieb Grigori Goronzy: >> On 18.07.2014 11:38, Christian K=C3=B6nig wrote: >>> From: Christian K=C3=B6nig >>> >>> Signed-off-by: Christian K=C3=B6nig >>> --- >>> drivers/gpu/drm/radeon/radeon_device.c | 6 +++++- >>> drivers/gpu/drm/radeon/radeon_drv.c | 4 ++-- >>> 2 files changed, 7 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/radeon/radeon_device.c >>> b/drivers/gpu/drm/radeon/radeon_device.c >>> index 03686fa..a2960db 100644 >>> --- a/drivers/gpu/drm/radeon/radeon_device.c >>> +++ b/drivers/gpu/drm/radeon/radeon_device.c >>> @@ -1077,7 +1077,11 @@ static void radeon_check_arguments(struct >>> radeon_device *rdev) >>> /* defines number of bits in page table versus page directory, >>> * a page is 4KB so we have 12 bits offset, minimum 9 bits in t= he >>> * page table and the remaining bits are in the page directory = */ >>> - if (radeon_vm_block_size < 9) { >>> + if (radeon_vm_block_size =3D=3D -1) { >>> + radeon_vm_block_size =3D (ilog2(radeon_vm_size) + 10) / 2; >>> + radeon_vm_block_size =3D max(radeon_vm_block_size, 9); >>> + >>> + } else if (radeon_vm_block_size < 9) { >> Hm, that automatic calculation seems strange. Is there any particular >> reason why you haven chosen this? This will use vm_block_size=3D11 for= >> 4096 MB VM space. I have used vm_block_size=3D12 with good results. Th= is >> manages 16 MB of VM space per page table, which seems reasonable. I al= so >> see a noticeable CPU overhead reduction between 11 and 12. >> >> Grigori >> >>> dev_warn(rdev->dev, "VM page table size (%d) to small\n", >>> radeon_vm_block_size); >>> radeon_vm_block_size =3D 9; >>> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c >>> b/drivers/gpu/drm/radeon/radeon_drv.c >>> index cb14213..fef5320 100644 >>> --- a/drivers/gpu/drm/radeon/radeon_drv.c >>> +++ b/drivers/gpu/drm/radeon/radeon_drv.c >>> @@ -174,7 +174,7 @@ int radeon_aspm =3D -1; >>> int radeon_runtime_pm =3D -1; >>> int radeon_hard_reset =3D 0; >>> int radeon_vm_size =3D 4096; >>> -int radeon_vm_block_size =3D 9; >>> +int radeon_vm_block_size =3D -1; >>> int radeon_deep_color =3D 0; >>> MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch >>> registers"); >>> @@ -246,7 +246,7 @@ module_param_named(hard_reset, radeon_hard_reset,= >>> int, 0444); >>> MODULE_PARM_DESC(vm_size, "VM address space size in megabytes >>> (default 4GB)"); >>> module_param_named(vm_size, radeon_vm_size, int, 0444); >>> -MODULE_PARM_DESC(vm_block_size, "VM page table size in bits >>> (default 9)"); >>> +MODULE_PARM_DESC(vm_block_size, "VM page table size in bits (default= >>> depending on vm_size)"); >>> module_param_named(vm_block_size, radeon_vm_block_size, int, 0444);= >>> MODULE_PARM_DESC(deep_color, "Deep Color support (1 =3D enable, 0= =3D >>> disable (default))"); >>> >> >=20 --FIVSB4mOCv20vDURJNtjuFGsFtF1RR1xO Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlPKZoIACgkQB4i2VYtEHqnk6QCaA8UYsb/s4l/Bhe5xFiTUEvN8 uS4AniFraZ8IQ6KkCw8Yawco9uI31p8R =jm/N -----END PGP SIGNATURE----- --FIVSB4mOCv20vDURJNtjuFGsFtF1RR1xO-- --===============0274348707== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel --===============0274348707==--