[ 3.8.y.z extended stable ] Patch "drm/radeon: align VM PTBs (Page Table Blocks) to 32K" has been added to staging queue
Deucher, Alexander
Alexander.Deucher at amd.com
Thu Jul 25 19:34:25 UTC 2013
Please drop this patch for stable. It requires an additional patch which is still queued for 3.11 to function properly. I'll send an updated patch for stable trees later.
Alex
> -----Original Message-----
> From: Kamal Mostafa [mailto:kamal at canonical.com]
> Sent: Thursday, July 25, 2013 3:29 PM
> To: Deucher, Alexander
> Cc: Koenig, Christian; Kamal Mostafa; kernel-team at lists.ubuntu.com
> Subject: [ 3.8.y.z extended stable ] Patch "drm/radeon: align VM PTBs (Page
> Table Blocks) to 32K" has been added to staging queue
>
> This is a note to let you know that I have just added a patch titled
>
> drm/radeon: align VM PTBs (Page Table Blocks) to 32K
>
> to the linux-3.8.y-queue branch of the 3.8.y.z extended stable tree
> which can be found at:
>
>
> http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/l
> inux-3.8.y-queue
>
> This patch is scheduled to be released in version 3.8.13.6.
>
> If you, or anyone else, feels it should not be added to this tree, please
> reply to this email.
>
> For more information about the 3.8.y.z tree, see
> https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
>
> Thanks.
> -Kamal
>
> ------
>
> From 1b7f912462764e33f28081af8c5dd347de8d4f78 Mon Sep 17 00:00:00
> 2001
> From: Alex Deucher <alexander.deucher at amd.com>
> Date: Fri, 12 Jul 2013 15:56:02 -0400
> Subject: drm/radeon: align VM PTBs (Page Table Blocks) to 32K
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> commit 1c01103cb90197900beb534911de558d7a43d0b3 upstream.
>
> Covers requirements of all current asics.
>
> Reviewed-by: Christian König <christian.koenig at amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Kamal Mostafa <kamal at canonical.com>
> ---
> drivers/gpu/drm/radeon/radeon.h | 5 +++++
> drivers/gpu/drm/radeon/radeon_gart.c | 12 ++++++------
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon.h
> b/drivers/gpu/drm/radeon/radeon.h
> index aa2d2e2..5fa9174 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -673,6 +673,11 @@ struct radeon_ring {
> /* number of entries in page table */
> #define RADEON_VM_PTE_COUNT (1 << RADEON_VM_BLOCK_SIZE)
>
> +/* PTBs (Page Table Blocks) need to be aligned to 32K */
> +#define RADEON_VM_PTB_ALIGN_SIZE 32768
> +#define RADEON_VM_PTB_ALIGN_MASK (RADEON_VM_PTB_ALIGN_SIZE
> - 1)
> +#define RADEON_VM_PTB_ALIGN(a) (((a) +
> RADEON_VM_PTB_ALIGN_MASK) & ~RADEON_VM_PTB_ALIGN_MASK)
> +
> struct radeon_vm {
> struct list_head list;
> struct list_head va;
> diff --git a/drivers/gpu/drm/radeon/radeon_gart.c
> b/drivers/gpu/drm/radeon/radeon_gart.c
> index dfa0ca1..97709ce 100644
> --- a/drivers/gpu/drm/radeon/radeon_gart.c
> +++ b/drivers/gpu/drm/radeon/radeon_gart.c
> @@ -466,8 +466,8 @@ int radeon_vm_manager_init(struct radeon_device
> *rdev)
> size += rdev->vm_manager.max_pfn * 8;
> size *= 2;
> r = radeon_sa_bo_manager_init(rdev, &rdev-
> >vm_manager.sa_manager,
> -
> RADEON_GPU_PAGE_ALIGN(size),
> - RADEON_GPU_PAGE_SIZE,
> + RADEON_VM_PTB_ALIGN(size),
> + RADEON_VM_PTB_ALIGN_SIZE,
> RADEON_GEM_DOMAIN_VRAM);
> if (r) {
> dev_err(rdev->dev, "failed to allocate vm bo
> (%dKB)\n",
> @@ -621,10 +621,10 @@ int radeon_vm_alloc_pt(struct radeon_device
> *rdev, struct radeon_vm *vm)
> }
>
> retry:
> - pd_size =
> RADEON_GPU_PAGE_ALIGN(radeon_vm_directory_size(rdev));
> + pd_size =
> RADEON_VM_PTB_ALIGN(radeon_vm_directory_size(rdev));
> r = radeon_sa_bo_new(rdev, &rdev->vm_manager.sa_manager,
> &vm->page_directory, pd_size,
> - RADEON_GPU_PAGE_SIZE, false);
> + RADEON_VM_PTB_ALIGN_SIZE, false);
> if (r == -ENOMEM) {
> r = radeon_vm_evict(rdev, vm);
> if (r)
> @@ -952,8 +952,8 @@ static int radeon_vm_update_pdes(struct
> radeon_device *rdev,
> retry:
> r = radeon_sa_bo_new(rdev, &rdev-
> >vm_manager.sa_manager,
> &vm->page_tables[pt_idx],
> - RADEON_VM_PTE_COUNT * 8,
> - RADEON_GPU_PAGE_SIZE, false);
> +
> RADEON_VM_PTB_ALIGN(RADEON_VM_PTE_COUNT * 8),
> + RADEON_VM_PTB_ALIGN_SIZE, false);
>
> if (r == -ENOMEM) {
> r = radeon_vm_evict(rdev, vm);
> --
> 1.8.1.2
>
More information about the kernel-team
mailing list