diff mbox

[3.8.y.z,extended,stable] Patch "drm/radeon: align VM PTBs (Page Table Blocks) to 32K" has been added to staging queue

Message ID 1374780536-18281-1-git-send-email-kamal@canonical.com
State New
Headers show

Commit Message

Kamal Mostafa July 25, 2013, 7:28 p.m. UTC
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/linux-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(-)

--
1.8.1.2

Comments

Deucher, Alexander July 25, 2013, 7:34 p.m. UTC | #1
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

>
Kamal Mostafa July 25, 2013, 7:43 p.m. UTC | #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 mbox

Patch

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);