Skip to content

Commit

Permalink
emulators/xen-kernel: add fix for fetching video mode
Browse files Browse the repository at this point in the history
Sponsored by: Citrix Systems R&D
Approved by: bapt (implicit)
  • Loading branch information
Roger Pau Monné authored and Roger Pau Monné committed Mar 14, 2023
1 parent 0df5691 commit 7326a17
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 2 deletions.
5 changes: 3 additions & 2 deletions emulators/xen-kernel/Makefile
@@ -1,6 +1,6 @@
PORTNAME= xen
PORTVERSION= 4.17.0
PORTREVISION= 0
PORTREVISION= 1
CATEGORIES= emulators
MASTER_SITES= http://downloads.xenproject.org/release/xen/${PORTVERSION}/
PKGNAMESUFFIX= -kernel
Expand Down Expand Up @@ -34,7 +34,8 @@ EXTRA_PATCHES+= ${PATCHDIR}/xsa425.patch:-p1 \
# clang build fixes
EXTRA_PATCHES+= ${PATCHDIR}/0001-xen-x86-Remove-the-use-of-K-R-functions.patch:-p1
# 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>

Expand Down
@@ -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

0 comments on commit 7326a17

Please sign in to comment.