From: Bjorn Helgaas VGA_MAP_MEM translates to ioremap() on some architectures. It makes sense to do this to vga_vram_base, because we're going to access memory between vga_vram_base and vga_vram_end. But it doesn't really make sense to map starting at vga_vram_end, because we aren't going to access memory starting there. On ia64, which always has to be different, ioremapping vga_vram_end gives you something completely incompatible with ioremapped vga_vram_start, so vga_vram_size ends up being nonsense. As a bonus, we often know the size up front, so we can use ioremap() correctly, rather than giving it a zero size. Signed-off-by: Bjorn Helgaas Cc: "Antonino A. Daplas" Cc: "Luck, Tony" Signed-off-by: Andrew Morton --- drivers/video/console/mdacon.c | 2 +- drivers/video/console/vgacon.c | 19 +++++++++---------- drivers/video/vga16fb.c | 2 +- include/asm-alpha/vga.h | 2 +- include/asm-arm/vga.h | 2 +- include/asm-i386/vga.h | 2 +- include/asm-ia64/vga.h | 2 +- include/asm-m32r/vga.h | 2 +- include/asm-mips/vga.h | 2 +- include/asm-powerpc/vga.h | 4 ++-- include/asm-sparc64/vga.h | 2 +- include/asm-x86_64/vga.h | 2 +- include/asm-xtensa/vga.h | 2 +- 13 files changed, 22 insertions(+), 23 deletions(-) diff -puN drivers/video/console/mdacon.c~vgacon-make-vga_map_mem-take-size-remove-extra-use drivers/video/console/mdacon.c --- devel/drivers/video/console/mdacon.c~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/drivers/video/console/mdacon.c 2006-04-05 19:33:15.000000000 -0700 @@ -313,8 +313,8 @@ static const char __init *mdacon_startup mda_num_columns = 80; mda_num_lines = 25; - mda_vram_base = VGA_MAP_MEM(0xb0000); mda_vram_len = 0x01000; + mda_vram_base = VGA_MAP_MEM(0xb0000, mda_vram_len); mda_index_port = 0x3b4; mda_value_port = 0x3b5; diff -puN drivers/video/console/vgacon.c~vgacon-make-vga_map_mem-take-size-remove-extra-use drivers/video/console/vgacon.c --- devel/drivers/video/console/vgacon.c~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/drivers/video/console/vgacon.c 2006-04-05 19:33:15.000000000 -0700 @@ -391,7 +391,7 @@ static const char __init *vgacon_startup static struct resource ega_console_resource = { .name = "ega", .start = 0x3B0, .end = 0x3BF }; vga_video_type = VIDEO_TYPE_EGAM; - vga_vram_end = 0xb8000; + vga_vram_size = 0x8000; display_desc = "EGA+"; request_resource(&ioport_resource, &ega_console_resource); @@ -401,7 +401,7 @@ static const char __init *vgacon_startup static struct resource mda2_console_resource = { .name = "mda", .start = 0x3BF, .end = 0x3BF }; vga_video_type = VIDEO_TYPE_MDA; - vga_vram_end = 0xb2000; + vga_vram_size = 0x2000; display_desc = "*MDA"; request_resource(&ioport_resource, &mda1_console_resource); @@ -418,7 +418,7 @@ static const char __init *vgacon_startup if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10) { int i; - vga_vram_end = 0xc0000; + vga_vram_size = 0x8000; if (!ORIG_VIDEO_ISVGA) { static struct resource ega_console_resource @@ -443,7 +443,7 @@ static const char __init *vgacon_startup * and COE=1 isn't necessarily a good idea) */ vga_vram_base = 0xa0000; - vga_vram_end = 0xb0000; + vga_vram_size = 0x10000; outb_p(6, VGA_GFX_I); outb_p(6, VGA_GFX_D); #endif @@ -475,7 +475,7 @@ static const char __init *vgacon_startup static struct resource cga_console_resource = { .name = "cga", .start = 0x3D4, .end = 0x3D5 }; vga_video_type = VIDEO_TYPE_CGA; - vga_vram_end = 0xba000; + vga_vram_size = 0x2000; display_desc = "*CGA"; request_resource(&ioport_resource, &cga_console_resource); @@ -483,9 +483,8 @@ static const char __init *vgacon_startup } } - vga_vram_base = VGA_MAP_MEM(vga_vram_base); - vga_vram_end = VGA_MAP_MEM(vga_vram_end); - vga_vram_size = vga_vram_end - vga_vram_base; + vga_vram_base = VGA_MAP_MEM(vga_vram_base, vga_vram_size); + vga_vram_end = vga_vram_base + vga_vram_size; /* * Find out if there is a graphics card present. @@ -1020,14 +1019,14 @@ static int vgacon_do_font_op(struct vgas char *charmap; if (vga_video_type != VIDEO_TYPE_EGAM) { - charmap = (char *) VGA_MAP_MEM(colourmap); + charmap = (char *) VGA_MAP_MEM(colourmap, 0); beg = 0x0e; #ifdef VGA_CAN_DO_64KB if (vga_video_type == VIDEO_TYPE_VGAC) beg = 0x06; #endif } else { - charmap = (char *) VGA_MAP_MEM(blackwmap); + charmap = (char *) VGA_MAP_MEM(blackwmap, 0); beg = 0x0a; } diff -puN drivers/video/vga16fb.c~vgacon-make-vga_map_mem-take-size-remove-extra-use drivers/video/vga16fb.c --- devel/drivers/video/vga16fb.c~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/drivers/video/vga16fb.c 2006-04-05 19:33:15.000000000 -0700 @@ -1351,7 +1351,7 @@ static int __init vga16fb_probe(struct d } /* XXX share VGA_FB_PHYS and I/O region with vgacon and others */ - info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS); + info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS, 0); if (!info->screen_base) { printk(KERN_ERR "vga16fb: unable to map device\n"); diff -puN include/asm-alpha/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-alpha/vga.h --- devel/include/asm-alpha/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-alpha/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -46,6 +46,6 @@ extern void scr_memcpyw(u16 *d, const u1 #define vga_readb(a) readb((u8 __iomem *)(a)) #define vga_writeb(v,a) writeb(v, (u8 __iomem *)(a)) -#define VGA_MAP_MEM(x) ((unsigned long) ioremap(x, 0)) +#define VGA_MAP_MEM(x,s) ((unsigned long) ioremap(x, s)) #endif diff -puN include/asm-arm/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-arm/vga.h --- devel/include/asm-arm/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-arm/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -4,7 +4,7 @@ #include #include -#define VGA_MAP_MEM(x) (PCIMEM_BASE + (x)) +#define VGA_MAP_MEM(x,s) (PCIMEM_BASE + (x)) #define vga_readb(x) (*((volatile unsigned char *)x)) #define vga_writeb(x,y) (*((volatile unsigned char *)y) = (x)) diff -puN include/asm-i386/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-i386/vga.h --- devel/include/asm-i386/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-i386/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -12,7 +12,7 @@ * access the videoram directly without any black magic. */ -#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) +#define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) diff -puN include/asm-ia64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-ia64/vga.h --- devel/include/asm-ia64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-ia64/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -17,7 +17,7 @@ extern unsigned long vga_console_iobase; extern unsigned long vga_console_membase; -#define VGA_MAP_MEM(x) ((unsigned long) ioremap_nocache(vga_console_membase + (x), 0)) +#define VGA_MAP_MEM(x,s) ((unsigned long) ioremap_nocache(vga_console_membase + (x), s)) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) diff -puN include/asm-m32r/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-m32r/vga.h --- devel/include/asm-m32r/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-m32r/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -14,7 +14,7 @@ * access the videoram directly without any black magic. */ -#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) +#define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) diff -puN include/asm-mips/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-mips/vga.h --- devel/include/asm-mips/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-mips/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -13,7 +13,7 @@ * access the videoram directly without any black magic. */ -#define VGA_MAP_MEM(x) (0xb0000000L + (unsigned long)(x)) +#define VGA_MAP_MEM(x,s) (0xb0000000L + (unsigned long)(x)) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) diff -puN include/asm-powerpc/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-powerpc/vga.h --- devel/include/asm-powerpc/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-powerpc/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -42,9 +42,9 @@ static inline u16 scr_readw(volatile con extern unsigned long vgacon_remap_base; #ifdef __powerpc64__ -#define VGA_MAP_MEM(x) ((unsigned long) ioremap((x), 0)) +#define VGA_MAP_MEM(x,s) ((unsigned long) ioremap((x), s)) #else -#define VGA_MAP_MEM(x) (x + vgacon_remap_base) +#define VGA_MAP_MEM(x,s) (x + vgacon_remap_base) #endif #define vga_readb(x) (*(x)) diff -puN include/asm-sparc64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-sparc64/vga.h --- devel/include/asm-sparc64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-sparc64/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -28,6 +28,6 @@ static inline u16 scr_readw(const u16 *a return *addr; } -#define VGA_MAP_MEM(x) (x) +#define VGA_MAP_MEM(x,s) (x) #endif diff -puN include/asm-x86_64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-x86_64/vga.h --- devel/include/asm-x86_64/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-x86_64/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -12,7 +12,7 @@ * access the videoram directly without any black magic. */ -#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) +#define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) diff -puN include/asm-xtensa/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use include/asm-xtensa/vga.h --- devel/include/asm-xtensa/vga.h~vgacon-make-vga_map_mem-take-size-remove-extra-use 2006-04-05 19:33:15.000000000 -0700 +++ devel-akpm/include/asm-xtensa/vga.h 2006-04-05 19:33:15.000000000 -0700 @@ -11,7 +11,7 @@ #ifndef _XTENSA_VGA_H #define _XTENSA_VGA_H -#define VGA_MAP_MEM(x) (unsigned long)phys_to_virt(x) +#define VGA_MAP_MEM(x,s) (unsigned long)phys_to_virt(x) #define vga_readb(x) (*(x)) #define vga_writeb(x,y) (*(y) = (x)) _