FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 10-13-2010, 08:24 AM
Stefan Bader
 
Default drm/nouveau: Fix fbcon corruption with font width not divisible by 8

On 10/13/2010 04:37 AM, Ben Hutchings wrote:
> From: Marcin Kościelnicki <koriakin@0x04.net>
>
> commit c82b88d578847909797945824851a6a9a84f9c20 upstream.
>
> NV50 is nice and has a switch that autoaligns stuff for us. Pre-NV50,
> we need to align input bitmap width manually.
>
> Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
> Signed-off-by: Francisco Jerez <currojerez@riseup.net>
> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> drivers/gpu/drm/nouveau/nv04_fbcon.c | 6 +++---
> drivers/gpu/drm/nouveau/nv50_fbcon.c | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
ACK
> diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
> index 3da90c2..813b25c 100644
> --- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
> @@ -118,8 +118,8 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
> return;
> }
>
> - width = ALIGN(image->width, 32);
> - dsize = (width * image->height) >> 5;
> + width = ALIGN(image->width, 8);
> + dsize = ALIGN(width * image->height, 32) >> 5;
>
> if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
> info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
> @@ -136,8 +136,8 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
> ((image->dx + image->width) & 0xffff));
> OUT_RING(chan, bg);
> OUT_RING(chan, fg);
> - OUT_RING(chan, (image->height << 16) | image->width);
> OUT_RING(chan, (image->height << 16) | width);
> + OUT_RING(chan, (image->height << 16) | image->width);
> OUT_RING(chan, (image->dy << 16) | (image->dx & 0xffff));
>
> while (dsize) {
> diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c
> index 993c712..25a3cd8 100644
> --- a/drivers/gpu/drm/nouveau/nv50_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c
> @@ -233,7 +233,7 @@ nv50_fbcon_accel_init(struct fb_info *info)
> BEGIN_RING(chan, NvSub2D, 0x0808, 3);
> OUT_RING(chan, 0);
> OUT_RING(chan, 0);
> - OUT_RING(chan, 0);
> + OUT_RING(chan, 1);
> BEGIN_RING(chan, NvSub2D, 0x081c, 1);
> OUT_RING(chan, 1);
> BEGIN_RING(chan, NvSub2D, 0x0840, 4);



--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 10-13-2010, 09:23 AM
Stefan Bader
 
Default drm/nouveau: Fix fbcon corruption with font width not divisible by 8

Patch depends on this simple change which I pulled into the drm33 tree:

Author: Matt Turner <mattst88@gmail.com>
Date: Wed Feb 24 23:27:10 2010 -0500

drm/nouveau: use ALIGN instead of open coding it

CC: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04
index fd01caa..3da90c2 100644
--- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
@@ -118,7 +118,7 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_i
return;
}

- width = (image->width + 31) & ~31;
+ width = ALIGN(image->width, 32);
dsize = (width * image->height) >> 5;

if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50
index 0f57cdf..993c712 100644
--- a/drivers/gpu/drm/nouveau/nv50_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c
@@ -109,7 +109,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_i
return;
}

- width = (image->width + 31) & ~31;
+ width = ALIGN(image->width, 32);
dwords = (width * image->height) >> 5;

BEGIN_RING(chan, NvSub2D, 0x0814, 2);
diff --git a/drivers/gpu/drm/nouveau/nv50_instmem.c b/drivers/gpu/drm/nouveau/nv
index f0dc4e3..de1f5b0 100644
--- a/drivers/gpu/drm/nouveau/nv50_instmem.c
+++ b/drivers/gpu/drm/nouveau/nv50_instmem.c
@@ -390,7 +390,7 @@ nv50_instmem_populate(struct drm_device *dev, struct nouveau
if (gpuobj->im_backing)
return -EINVAL;

- *sz = (*sz + (NV50_INSTMEM_PAGE_SIZE-1)) & ~(NV50_INSTMEM_PAGE_SIZE-1);
+ *sz = ALIGN(*sz, NV50_INSTMEM_PAGE_SIZE);
if (*sz == 0)
return -EINVAL;



--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 

Thread Tools




All times are GMT. The time now is 07:43 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org