|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 2/2] x86/pvh: zero VGA information
PVH guests skip real mode VGA detection, and never have a VGA available, hence
the default VGA selection is not applicable, and at worse can cause confusion
when parsing Xen boot log.
Zero the boot_vid_info structure when Xen is booted from the PVH entry point.
This fixes Xen incorrectly reporting:
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
When booted as a PVH guest.
Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
xen/arch/x86/boot/video.h | 2 ++
xen/arch/x86/guest/xen/pvh-boot.c | 9 +++++++++
xen/arch/x86/setup.c | 1 -
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/boot/video.h b/xen/arch/x86/boot/video.h
index 6a7775d24292..1203515f9e5b 100644
--- a/xen/arch/x86/boot/video.h
+++ b/xen/arch/x86/boot/video.h
@@ -67,6 +67,8 @@ struct boot_video_info {
} vesapm;
uint16_t vesa_attrib; /* 0x28 */
};
+
+extern struct boot_video_info boot_vid_info;
#endif /* __ASSEMBLY__ */
#endif /* __BOOT_VIDEO_H__ */
diff --git a/xen/arch/x86/guest/xen/pvh-boot.c
b/xen/arch/x86/guest/xen/pvh-boot.c
index 9cbe87b61bdd..cc57ab2cbcde 100644
--- a/xen/arch/x86/guest/xen/pvh-boot.c
+++ b/xen/arch/x86/guest/xen/pvh-boot.c
@@ -15,6 +15,10 @@
#include <public/arch-x86/hvm/start_info.h>
+#ifdef CONFIG_VIDEO
+# include "../../boot/video.h"
+#endif
+
/* Initialised in head.S, before .bss is zeroed. */
bool __initdata pvh_boot;
uint32_t __initdata pvh_start_info_pa;
@@ -95,6 +99,11 @@ void __init pvh_init(multiboot_info_t **mbi, module_t **mod)
ASSERT(xen_guest);
get_memory_map();
+
+#ifdef CONFIG_VIDEO
+ /* No VGA available when booted from the PVH entry point. */
+ memset(&bootsym(boot_vid_info), 0, sizeof(boot_vid_info));
+#endif
}
void __init pvh_print_info(void)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 86cd8b999774..449a3476531e 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -646,7 +646,6 @@ static struct e820map __initdata boot_e820;
#ifdef CONFIG_VIDEO
# include "boot/video.h"
-extern struct boot_video_info boot_vid_info;
#endif
static void __init parse_video_info(void)
--
2.44.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |