* Rusty Russell ([EMAIL PROTECTED]) wrote:
> So I'd prefer a generic way of disabling the VGA stuff...

Heh, me too, like the patch at the bottom. I toyed with putting it into
vgacon directly since we'll need in on x86_64 too, like so:

static int vgacon_disabled;
void vgacon_disable(void)
{
        vgacon_disabled = 1;
}
EXPORT_SYMBOL_GPL(vgacon_disable);

vgacon_startup()
...
-       if (ORIG_VIDEO_ISVGA == VIDEO_TYPE_VLFB)
+       if (vgacon_disabled || ORIG_VIDEO_ISVGA == VIDEO_TYPE_VLFB)
...

but opted for the more arch specific way:

diff -r e1974f36aa13 arch/i386/kernel/setup.c
--- a/arch/i386/kernel/setup.c  Wed Jan 10 18:19:52 2007 -0800
+++ b/arch/i386/kernel/setup.c  Thu Jan 11 18:32:22 2007 -0800
@@ -69,6 +69,9 @@ unsigned long init_pg_tables_end __initd
 unsigned long init_pg_tables_end __initdata = ~0UL;
 
 int disable_pse __devinitdata = 0;
+
+/* use to runtime disable vga_con */
+int vgacon_enabled = 1;
 
 /*
  * Machine setup..
@@ -643,7 +646,7 @@ void __init setup_arch(char **cmdline_p)
 
 #ifdef CONFIG_VT
 #if defined(CONFIG_VGA_CONSOLE)
-       if (!efi_enabled || (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY))
+       if (vgacon_enabled && (!efi_enabled || (efi_mem_type(0xa0000) != 
EFI_CONVENTIONAL_MEMORY)))
                conswitchp = &vga_con;
 #elif defined(CONFIG_DUMMY_CONSOLE)
        conswitchp = &dummy_con;
diff -r e1974f36aa13 arch/i386/paravirt-xen/enlighten.c
--- a/arch/i386/paravirt-xen/enlighten.c        Wed Jan 10 18:19:52 2007 -0800
+++ b/arch/i386/paravirt-xen/enlighten.c        Thu Jan 11 18:37:40 2007 -0800
@@ -7,6 +7,7 @@
 #include <linux/start_kernel.h>
 #include <linux/sched.h>
 #include <linux/bootmem.h>
+#include <linux/console.h>
 
 #include <xen/interface/xen.h>
 #include <xen/features.h>
@@ -779,6 +780,9 @@ static asmlinkage void __init xen_start_
        new_cpu_data.hard_math = 1;
        identify_cpu(&new_cpu_data);
 
+       /* prepare for xen console */
+       vgacon_enabled = 0;
+
        /* Poke various useful things into boot_params */
        LOADER_TYPE = (9 << 4) | 0;
        INITRD_START = xen_start_info->mod_start ? 
__pa(xen_start_info->mod_start) : 0;
diff -r e1974f36aa13 include/asm-i386/setup.h
--- a/include/asm-i386/setup.h  Wed Jan 10 18:19:52 2007 -0800
+++ b/include/asm-i386/setup.h  Thu Jan 11 18:36:42 2007 -0800
@@ -77,6 +77,8 @@ void __init add_memory_region(unsigned l
 void __init add_memory_region(unsigned long long start,
                              unsigned long long size, int type);
 
+extern int vgacon_enabled;
+
 #endif /* __ASSEMBLY__ */
 
 #endif  /*  __KERNEL__  */
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/virtualization

Reply via email to