[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.