following patch solve my problem.
according to nouveau_class.h:
#define NV50_2D_SIFC_BITMAP_LINE_PACK_MODE
0x00000810#define NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_PACKED
0x00000000
#define NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_ALIGN_BYTE
0x00000001
#define NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_ALIGN_WORD
0x00000002
NV50_2D_SIFC_BITMAP_LINE_PACK_MODE should be byte aligned instead packed.
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c
b/drivers/gpu/drm/nouveau/nv50_fbcon.c
index e4f279e..b82315c 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);
___________________________________________________________
?????????????????
http://card.mail.cn.yahoo.com/