emulators/xen-kernel: add fix for fetching video mode
Sponsored by: Citrix Systems R&D Approved by: bapt (implicit)
This commit is contained in:
parent
0df5691294
commit
7326a17b98
2 changed files with 61 additions and 2 deletions
|
@ -1,6 +1,6 @@
|
||||||
PORTNAME= xen
|
PORTNAME= xen
|
||||||
PORTVERSION= 4.17.0
|
PORTVERSION= 4.17.0
|
||||||
PORTREVISION= 0
|
PORTREVISION= 1
|
||||||
CATEGORIES= emulators
|
CATEGORIES= emulators
|
||||||
MASTER_SITES= http://downloads.xenproject.org/release/xen/${PORTVERSION}/
|
MASTER_SITES= http://downloads.xenproject.org/release/xen/${PORTVERSION}/
|
||||||
PKGNAMESUFFIX= -kernel
|
PKGNAMESUFFIX= -kernel
|
||||||
|
@ -34,7 +34,8 @@ EXTRA_PATCHES+= ${PATCHDIR}/xsa425.patch:-p1 \
|
||||||
# clang build fixes
|
# clang build fixes
|
||||||
EXTRA_PATCHES+= ${PATCHDIR}/0001-xen-x86-Remove-the-use-of-K-R-functions.patch:-p1
|
EXTRA_PATCHES+= ${PATCHDIR}/0001-xen-x86-Remove-the-use-of-K-R-functions.patch:-p1
|
||||||
# Support for fetching video mode from PVH dom0
|
# Support for fetching video mode from PVH dom0
|
||||||
EXTRA_PATCHES+= ${PATCHDIR}/0001-x86-platform-introduce-hypercall-to-get-initial-vide.patch:-p1
|
EXTRA_PATCHES+= ${PATCHDIR}/0001-x86-platform-introduce-hypercall-to-get-initial-vide.patch:-p1 \
|
||||||
|
${PATCHDIR}/0001-x86-platform-make-XENPF_get_dom0_console-actually-us.patch:-p1
|
||||||
|
|
||||||
.include <bsd.port.options.mk>
|
.include <bsd.port.options.mk>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
From 7d43e4b2aa42b826e3d373b8e802ba925cc73088 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Date: Mon, 13 Mar 2023 15:14:38 +0100
|
||||||
|
Subject: [PATCH] x86/platform: make XENPF_get_dom0_console actually usable
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
struct dom0_vga_console_info has been extended in the past, and it may
|
||||||
|
be extended again. The use in PV Dom0's start info already covers for
|
||||||
|
that by supplying the size of the provided data. For the recently
|
||||||
|
introduced platform-op size needs providing similarly. Go the easiest
|
||||||
|
available route and simply supply size via the hypercall return value.
|
||||||
|
|
||||||
|
While there also add a build-time check that possibly future growth of
|
||||||
|
the struct won't affect xen_platform_op_t's size.
|
||||||
|
|
||||||
|
Fixes: 4dd160583c79 ("x86/platform: introduce hypercall to get initial video console settings")
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
|
||||||
|
---
|
||||||
|
xen/arch/x86/platform_hypercall.c | 2 ++
|
||||||
|
xen/include/public/platform.h | 6 +++++-
|
||||||
|
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c
|
||||||
|
index 08ab2fea62..85c69c5be5 100644
|
||||||
|
--- a/xen/arch/x86/platform_hypercall.c
|
||||||
|
+++ b/xen/arch/x86/platform_hypercall.c
|
||||||
|
@@ -841,6 +841,8 @@ ret_t do_platform_op(
|
||||||
|
|
||||||
|
#ifdef CONFIG_VIDEO
|
||||||
|
case XENPF_get_dom0_console:
|
||||||
|
+ BUILD_BUG_ON(sizeof(op->u.dom0_console) > sizeof(op->u.pad));
|
||||||
|
+ ret = sizeof(op->u.dom0_console);
|
||||||
|
if ( !fill_console_start_info(&op->u.dom0_console) )
|
||||||
|
{
|
||||||
|
ret = -ENODEV;
|
||||||
|
diff --git a/xen/include/public/platform.h b/xen/include/public/platform.h
|
||||||
|
index 14784dfa77..60caa5ce7e 100644
|
||||||
|
--- a/xen/include/public/platform.h
|
||||||
|
+++ b/xen/include/public/platform.h
|
||||||
|
@@ -605,7 +605,11 @@ struct xenpf_symdata {
|
||||||
|
typedef struct xenpf_symdata xenpf_symdata_t;
|
||||||
|
DEFINE_XEN_GUEST_HANDLE(xenpf_symdata_t);
|
||||||
|
|
||||||
|
-/* Fetch the video console information and mode setup by Xen. */
|
||||||
|
+/*
|
||||||
|
+ * Fetch the video console information and mode setup by Xen. A non-
|
||||||
|
+ * negative return value indicates the size of the (part of the) structure
|
||||||
|
+ * which was filled.
|
||||||
|
+ */
|
||||||
|
#define XENPF_get_dom0_console 64
|
||||||
|
typedef struct dom0_vga_console_info xenpf_dom0_console_t;
|
||||||
|
DEFINE_XEN_GUEST_HANDLE(xenpf_dom0_console_t);
|
||||||
|
--
|
||||||
|
2.39.0
|
||||||
|
|
Loading…
Reference in a new issue