[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: propagate VESA capabilities to dom0
# HG changeset patch # User Keir Fraser <keir@xxxxxxxxxxxxx> # Date 1192186541 -3600 # Node ID ef4119637f52648c096e899801f1ca82dbbc04d2 # Parent 723b9837db1bfb66f6e18961019742d77f133021 x86: propagate VESA capabilities to dom0 Linux has been using the VESA capabilities field for quite a while, so Xen should also supply it. At once, in case needed in the future, also propagate the mode attributes field. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> --- xen/arch/x86/boot/video.S | 3 +++ xen/arch/x86/setup.c | 3 +++ xen/drivers/video/vesa.c | 2 +- xen/include/public/xen-compat.h | 2 +- xen/include/public/xen.h | 6 ++++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff -r 723b9837db1b -r ef4119637f52 xen/arch/x86/boot/video.S --- a/xen/arch/x86/boot/video.S Fri Oct 12 11:42:56 2007 +0100 +++ b/xen/arch/x86/boot/video.S Fri Oct 12 11:55:41 2007 +0100 @@ -44,6 +44,7 @@ #define PARAM_LFB_COLORS 0x1c #define PARAM_VESAPM_SEG 0x24 #define PARAM_VESAPM_OFF 0x26 +#define PARAM_VESA_ATTRIB 0x28 #define _param(param) bootsym(boot_vid_info)+(param) video: xorw %ax, %ax @@ -129,6 +130,8 @@ mopar_gr: movl %eax, _param(PARAM_LFB_COLORS) movl 35(%di), %eax movl %eax, _param(PARAM_LFB_COLORS+4) + movw 0(%di), %ax + movw %ax, _param(PARAM_VESA_ATTRIB) # get video mem size leaw vesa_glob_info, %di diff -r 723b9837db1b -r ef4119637f52 xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Fri Oct 12 11:42:56 2007 +0100 +++ b/xen/arch/x86/setup.c Fri Oct 12 11:55:41 2007 +0100 @@ -308,6 +308,7 @@ struct boot_video_info { u8 rsvd_pos; /* 0x23 */ u16 vesapm_seg; /* 0x24 */ u16 vesapm_off; /* 0x26 */ + u16 vesa_attrib; /* 0x28 */ }; static void __init parse_video_info(void) @@ -340,6 +341,8 @@ static void __init parse_video_info(void vga_console_info.u.vesa_lfb.blue_size = bvi->blue_size; vga_console_info.u.vesa_lfb.rsvd_pos = bvi->rsvd_pos; vga_console_info.u.vesa_lfb.rsvd_size = bvi->rsvd_size; + vga_console_info.u.vesa_lfb.gbl_caps = bvi->capabilities; + vga_console_info.u.vesa_lfb.mode_attrs = bvi->vesa_attrib; } } diff -r 723b9837db1b -r ef4119637f52 xen/drivers/video/vesa.c --- a/xen/drivers/video/vesa.c Fri Oct 12 11:42:56 2007 +0100 +++ b/xen/drivers/video/vesa.c Fri Oct 12 11:55:41 2007 +0100 @@ -46,7 +46,7 @@ void __init vesa_early_init(void) { unsigned int vram_vmode; - /* XXX vga_compat = !(boot_video_info.capabilities & 2); */ + vga_compat = !(vesa_lfb_info.capabilities & 2); if ( (vlfb_info.bits_per_pixel < 8) || (vlfb_info.bits_per_pixel > 32) ) return; diff -r 723b9837db1b -r ef4119637f52 xen/include/public/xen-compat.h --- a/xen/include/public/xen-compat.h Fri Oct 12 11:42:56 2007 +0100 +++ b/xen/include/public/xen-compat.h Fri Oct 12 11:55:41 2007 +0100 @@ -27,7 +27,7 @@ #ifndef __XEN_PUBLIC_XEN_COMPAT_H__ #define __XEN_PUBLIC_XEN_COMPAT_H__ -#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030205 +#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030206 #if defined(__XEN__) || defined(__XEN_TOOLS__) /* Xen is built with matching headers and implements the latest interface. */ diff -r 723b9837db1b -r ef4119637f52 xen/include/public/xen.h --- a/xen/include/public/xen.h Fri Oct 12 11:42:56 2007 +0100 +++ b/xen/include/public/xen.h Fri Oct 12 11:55:41 2007 +0100 @@ -565,6 +565,12 @@ typedef struct dom0_vga_console_info { uint8_t green_pos, green_size; uint8_t blue_pos, blue_size; uint8_t rsvd_pos, rsvd_size; +#if __XEN_INTERFACE_VERSION__ >= 0x00030206 + /* VESA capabilities (offset 0xa, VESA command 0x4f00). */ + uint32_t gbl_caps; + /* Mode attributes (offset 0x0, VESA command 0x4f01). */ + uint16_t mode_attrs; +#endif } vesa_lfb; } u; } dom0_vga_console_info_t; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |