xen/vga: add the xen EFI video mode support
authorJan Beulich <jbeulich@suse.com>
Thu, 9 Feb 2012 03:33:51 +0000 (11:33 +0800)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 24 Sep 2012 13:28:57 +0000 (09:28 -0400)
In order to add xen EFI frambebuffer video support, it is required to add
xen-efi's new video type (XEN_VGATYPE_EFI_LFB) case and handle it in the
function xen_init_vga and set the video type to VIDEO_TYPE_EFI to enable
efi video mode.

The original patch from which this was broken out from:
 http://marc.info/?i=4E099AA6020000780004A4C6@nat28.tlf.novell.com

Signed-off-by: Jan Beulich <JBeulich@novell.com>
Signed-off-by: Tang Liang <liang.tang@oracle.com>
[v2: The original author is Jan Beulich and Liang Tang ported it to upstream]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/xen/vga.c
include/xen/interface/xen.h

index 1cd7f4d..6722e37 100644 (file)
@@ -35,6 +35,7 @@ void __init xen_init_vga(const struct dom0_vga_console_info *info, size_t size)
                        info->u.text_mode_3.font_height;
                break;
 
+       case XEN_VGATYPE_EFI_LFB:
        case XEN_VGATYPE_VESA_LFB:
                if (size < offsetof(struct dom0_vga_console_info,
                                    u.vesa_lfb.gbl_caps))
@@ -54,6 +55,12 @@ void __init xen_init_vga(const struct dom0_vga_console_info *info, size_t size)
                screen_info->blue_pos = info->u.vesa_lfb.blue_pos;
                screen_info->rsvd_size = info->u.vesa_lfb.rsvd_size;
                screen_info->rsvd_pos = info->u.vesa_lfb.rsvd_pos;
+
+               if (info->video_type == XEN_VGATYPE_EFI_LFB) {
+                       screen_info->orig_video_isVGA = VIDEO_TYPE_EFI;
+                       break;
+               }
+
                if (size >= offsetof(struct dom0_vga_console_info,
                                     u.vesa_lfb.gbl_caps)
                    + sizeof(info->u.vesa_lfb.gbl_caps))
index 1e0df6b..886a5d8 100644 (file)
@@ -454,6 +454,7 @@ struct dom0_vga_console_info {
        uint8_t video_type;
 #define XEN_VGATYPE_TEXT_MODE_3 0x03
 #define XEN_VGATYPE_VESA_LFB    0x23
+#define XEN_VGATYPE_EFI_LFB     0x70
 
        union {
                struct {