Package: linux-2.6
Version: 2.6.32-13
Severity: normal
Tags: patch fixed-upstream
When a non-default console font size is selected (e.g. by running
setfont Uni3-Terminus20x10), nouveau displays corrupted glyphs
rendering the terminal useless.
This has been fixed by commit c82b88d578847909797945824851a6a9a84f9c20:
drm/nouveau: Fix fbcon corruption with font width not divisible by 8
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 koria...@0x04.net
Signed-off-by: Francisco Jerez curroje...@riseup.net
Signed-off-by: Ben Skeggs bske...@redhat.com
This does not apply as is, attached is a patch that can be applied
against 2.6.33.4 (I haven't looked at the Debian kernel yet). I
verified that the fix for nv50_fbcon.c works, but I cannot test the one
for nv04_fbcon.c due to lack of hardware. Note that the same patch has
been applied in Ubuntu, see also
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/544739.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (x86_64)
Kernel: Linux 2.6.34-nouveau (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages linux-image-2.6.32-5-amd64 depends on:
ii debconf [debconf 1.5.32 Debian configuration management sy
ii initramfs-tools 0.94.4 tools for generating an initramfs
ii linux-base 2.6.34-1~experimental.1 Linux image base package
ii module-init-tool 3.12~pre2-3 tools for managing Linux kernel mo
Versions of packages linux-image-2.6.32-5-amd64 recommends:
ii firmware-linux-f 2.6.34-1~experimental.1 Binary firmware for various driver
ii libc6-i686 2.10.2-9GNU C Library: Shared libraries [i
Versions of packages linux-image-2.6.32-5-amd64 suggests:
ii grub-legacy [grub]0.97-61GRand Unified Bootloader (Legacy v
pn linux-doc-2.6.32 none (no description available)
Versions of packages linux-image-2.6.32-5-amd64 is related to:
pn firmware-bnx2 none (no description available)
pn firmware-bnx2xnone (no description available)
pn firmware-ipw2x00 none (no description available)
pn firmware-ivtv none (no description available)
pn firmware-iwlwifi none (no description available)
pn firmware-linuxnone (no description available)
pn firmware-linux-nonfreenone (no description available)
pn firmware-qlogic none (no description available)
ii firmware-ralink 0.24 Binary firmware for Ralink RT2561,
pn xen-hypervisornone (no description available)
-- debconf information excluded
From a02fa11e84fb00c6489970570a3d4480f075e020 Mon Sep 17 00:00:00 2001
From: Sven Joachim svenj...@gmx.de
Date: Tue, 25 May 2010 22:24:47 +0200
Subject: [PATCH] drm/nouveau: Fix fbcon corruption with font width not divisible by 8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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 koria...@0x04.net
Signed-off-by: Francisco Jerez curroje...@riseup.net
Signed-off-by: Ben Skeggs bske...@redhat.com
Conflicts:
drivers/gpu/drm/nouveau/nv04_fbcon.c
---
drivers/gpu/drm/nouveau/nv04_fbcon.c |6 +++---
drivers/gpu/drm/nouveau/nv50_fbcon.c |2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
index fd01caa..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 = (image-width + 31) ~31;
- 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) 0x));
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 0x));
while (dsize) {
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c
index 0f57cdf..195c866 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