[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86: add a user configurable Kconfig option for the VGA
Allows for the conditional inclusion of VGA driver on the x86 platform rather than having it always enabled. The default configuration for the CONFIG_VGA option remains 'y' on x86, so the behavior out of the box remains unchanged. The addition of the option allows advanced users to enable/disable the inclusion of the VGA driver. Signed-off-by: Derek Straka <derek@xxxxxxxxxxx> --- xen/arch/x86/Kconfig | 1 - xen/arch/x86/efi/efi-boot.h | 7 +++++++ xen/arch/x86/setup.c | 5 +++++ xen/drivers/video/Kconfig | 3 ++- xen/include/asm-x86/setup.h | 5 +++++ xen/include/xen/console.h | 8 ++++++++ 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index 265fd79..9e10591 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -20,7 +20,6 @@ config X86 select HAS_PCI select HAS_PDX select NUMA - select VGA config ARCH_DEFCONFIG string diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h index 10985721..911fdfd 100644 --- a/xen/arch/x86/efi/efi-boot.h +++ b/xen/arch/x86/efi/efi-boot.h @@ -476,6 +476,7 @@ static void __init efi_arch_edd(void) boot_edd_info_nr = EDD_INFO_MAX; } +#ifdef CONFIG_VGA static void __init efi_arch_console_init(UINTN cols, UINTN rows) { vga_console_info.video_type = XEN_VGATYPE_TEXT_MODE_3; @@ -550,6 +551,12 @@ static void __init efi_arch_video_init(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop, (gop->Mode->FrameBufferSize + 0xffff) >> 16; } } +#else +static inline void __init efi_arch_video_init(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop, + UINTN info_size, + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *mode_info) {} +static inline void __init efi_arch_console_init(UINTN cols, UINTN rows) {} +#endif static void __init efi_arch_memory_setup(void) { diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 8ae897a..6358336 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -433,10 +433,12 @@ struct boot_video_info { u16 vesapm_off; /* 0x26 */ u16 vesa_attrib; /* 0x28 */ }; + extern struct boot_video_info boot_vid_info; static void __init parse_video_info(void) { +#ifdef CONFIG_VGA struct boot_video_info *bvi = &bootsym(boot_vid_info); /* The EFI loader fills vga_console_info directly. */ @@ -472,6 +474,7 @@ static void __init parse_video_info(void) vga_console_info.u.vesa_lfb.gbl_caps = bvi->capabilities; vga_console_info.u.vesa_lfb.mode_attrs = bvi->vesa_attrib; } +#endif } static void __init kexec_reserve_area(struct e820map *e820) @@ -672,6 +675,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) printk("Command line: %s\n", cmdline); +#ifdef CONFIG_VGA printk("Video information:\n"); /* Print VGA display mode information. */ @@ -694,6 +698,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) printk(" No VGA detected\n"); break; } +#endif /* Print VBE/DDC EDID information. */ if ( bootsym(boot_edid_caps) != 0x1313 ) diff --git a/xen/drivers/video/Kconfig b/xen/drivers/video/Kconfig index 0ffbbd9..0f208fe 100644 --- a/xen/drivers/video/Kconfig +++ b/xen/drivers/video/Kconfig @@ -3,7 +3,8 @@ config VIDEO bool config VGA - bool + bool "VGA" + default y if X86 select VIDEO config HAS_ARM_HDLCD diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h index c65b79c..02e9b12 100644 --- a/xen/include/asm-x86/setup.h +++ b/xen/include/asm-x86/setup.h @@ -28,8 +28,13 @@ void arch_init_memory(void); void subarch_init_memory(void); void init_IRQ(void); +#ifdef CONFIG_VGA void vesa_init(void); void vesa_mtrr_init(void); +#else +static inline void vesa_init(void) {} +static inline void vesa_mtrr_init(void) {} +#endif int construct_dom0( struct domain *d, diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h index ea06fd8..2e7c22c 100644 --- a/xen/include/xen/console.h +++ b/xen/include/xen/console.h @@ -19,7 +19,15 @@ void console_init_postirq(void); void console_endboot(void); int console_has(const char *device); +#ifdef CONFIG_VGA int fill_console_start_info(struct dom0_vga_console_info *); +#else +#include <xen/string.h> +static inline int fill_console_start_info(struct dom0_vga_console_info *ci) { + (void) memset(ci, 0, sizeof(*ci)); + return 1; +} +#endif unsigned long console_lock_recursive_irqsave(void); void console_unlock_recursive_irqrestore(unsigned long flags); -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |