From: Vincent Sanders The vga16fb driver uses a direct ioremap on 0xa00000 to gain access to the vga card. This is wrong on architectures other than x86, every other driver uses VGA_MAP_MEM macro from vga.h to ensure the correct memory mapping. --- 25-akpm/drivers/video/vga16fb.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/video/vga16fb.c~vga16fb-mapping-fix drivers/video/vga16fb.c --- 25/drivers/video/vga16fb.c~vga16fb-mapping-fix 2004-04-11 03:14:32.004577984 -0700 +++ 25-akpm/drivers/video/vga16fb.c 2004-04-11 03:14:32.009577224 -0700 @@ -1347,7 +1347,7 @@ int __init vga16fb_init(void) /* XXX share VGA_FB_PHYS and I/O region with vgacon and others */ - vga16fb.screen_base = ioremap(VGA_FB_PHYS, VGA_FB_PHYS_LEN); + vga16fb.screen_base = ioremap(VGA_MAP_MEM(VGA_FB_PHYS), VGA_FB_PHYS_LEN); if (!vga16fb.screen_base) { printk(KERN_ERR "vga16fb: unable to map device\n"); ret = -ENOMEM; @@ -1372,6 +1372,8 @@ int __init vga16fb_init(void) vga16fb.par = &vga16_par; vga16fb.flags = FBINFO_FLAG_DEFAULT; + vga16fb.fix.smem_start = VGA_MAP_MEM(vga16fb.fix.smem_start); + i = (vga16fb_defined.bits_per_pixel == 8) ? 256 : 16; ret = fb_alloc_cmap(&vga16fb.cmap, i, 0); if (ret) { _