Message ID | 1374780536-18281-1-git-send-email-kamal@canonical.com |
---|---|
State | New |
Headers | show |
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@canonical.com] > Sent: Thursday, July 25, 2013 3:29 PM > To: Deucher, Alexander > Cc: Koenig, Christian; Kamal Mostafa; kernel-team@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@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@amd.com> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > Signed-off-by: Kamal Mostafa <kamal@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 >
On Thu, 2013-07-25 at 19:34 +0000, Deucher, Alexander wrote: > 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 Dropped from linux-3.8.y-queue. Thanks, Alex! -Kamal > > -----Original Message----- > > From: Kamal Mostafa [mailto:kamal@canonical.com] > > Sent: Thursday, July 25, 2013 3:29 PM > > To: Deucher, Alexander > > Cc: Koenig, Christian; Kamal Mostafa; kernel-team@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@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@amd.com> > > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > > Signed-off-by: Kamal Mostafa <kamal@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 > > >
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);