|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN PATCH v2 2/2] x86/hvm: introduce config option for stdvga emulation
Introduce config option X86_HVM_STDVGA and make stdvga emulation driver
configurable so it can be disabled on systems that don't need it.
Suggested-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@xxxxxxxx>
CC: Jan Beulich <jbeulich@xxxxxxxx>
---
changes in v2:
- updated description
- renamed config option X86_STDVGA -> X86_HVM_STDVGA & moved related
Kconfig changes to this patch
- reverted changes to has_vvga() macro
- moved emulation_flags_ok() checks to this patch
---
xen/arch/x86/Kconfig | 10 ++++++++++
xen/arch/x86/domain.c | 4 ++--
xen/arch/x86/hvm/Makefile | 2 +-
xen/arch/x86/include/asm/domain.h | 8 ++++++--
xen/arch/x86/include/asm/hvm/io.h | 4 ++++
5 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index ed0ece85c7..35c8ace8ef 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -155,6 +155,16 @@ config X86_HVM_PMTIMER
Build pmtimer driver that emulates ACPI PM timer for HVM/PVH guests.
If unsure, say Y.
+
+config X86_HVM_STDVGA
+ bool "Standard VGA card emulation support"
+ default y
+ help
+ Build stdvga driver that emulates standard VGA card with VESA BIOS
+ Extensions for HVM/PVH guests.
+
+ If unsure, say Y.
+
endmenu
config XEN_SHSTK
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index b340818ee2..aefa1fc136 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -742,9 +742,9 @@ int arch_sanitise_domain_config(struct
xen_domctl_createdomain *config)
static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
{
- const uint32_t disabled_emu_mask = X86_EMU_PM;
+ const uint32_t disabled_emu_mask = X86_EMU_PM | X86_EMU_VGA;
-#if defined(CONFIG_X86_HVM_PMTIMER)
+#if defined(CONFIG_X86_HVM_PMTIMER) && defined(CONFIG_X86_HVM_STDVGA)
/* This doesn't catch !CONFIG_HVM case but it is better than nothing */
BUILD_BUG_ON(X86_EMU_ALL != XEN_X86_EMU_ALL);
#endif
diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
index 3af8963218..80ec425aa8 100644
--- a/xen/arch/x86/hvm/Makefile
+++ b/xen/arch/x86/hvm/Makefile
@@ -22,7 +22,7 @@ obj-$(CONFIG_X86_HVM_PMTIMER) += pmtimer.o
obj-y += quirks.o
obj-y += rtc.o
obj-y += save.o
-obj-y += stdvga.o
+obj-$(CONFIG_X86_HVM_STDVGA) += stdvga.o
obj-y += vioapic.o
obj-y += vlapic.o
obj-y += vm_event.o
diff --git a/xen/arch/x86/include/asm/domain.h
b/xen/arch/x86/include/asm/domain.h
index 8550473997..106b438779 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -466,7 +466,6 @@ struct arch_domain
#define X86_EMU_RTC XEN_X86_EMU_RTC
#define X86_EMU_IOAPIC XEN_X86_EMU_IOAPIC
#define X86_EMU_PIC XEN_X86_EMU_PIC
-#define X86_EMU_VGA XEN_X86_EMU_VGA
#define X86_EMU_IOMMU XEN_X86_EMU_IOMMU
#define X86_EMU_USE_PIRQ XEN_X86_EMU_USE_PIRQ
#define X86_EMU_VPCI XEN_X86_EMU_VPCI
@@ -476,7 +475,6 @@ struct arch_domain
#define X86_EMU_RTC 0
#define X86_EMU_IOAPIC 0
#define X86_EMU_PIC 0
-#define X86_EMU_VGA 0
#define X86_EMU_IOMMU 0
#define X86_EMU_USE_PIRQ 0
#define X86_EMU_VPCI 0
@@ -488,6 +486,12 @@ struct arch_domain
#define X86_EMU_PM 0
#endif
+#ifdef CONFIG_X86_HVM_STDVGA
+#define X86_EMU_VGA XEN_X86_EMU_VGA
+#else
+#define X86_EMU_VGA 0
+#endif
+
#define X86_EMU_PIT XEN_X86_EMU_PIT
/* This must match XEN_X86_EMU_ALL in xen.h */
diff --git a/xen/arch/x86/include/asm/hvm/io.h
b/xen/arch/x86/include/asm/hvm/io.h
index f2b8431fac..c02fad876c 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -108,7 +108,11 @@ struct vpci_arch_msix_entry {
int pirq;
};
+#ifdef CONFIG_X86_HVM_STDVGA
void stdvga_init(struct domain *d);
+#else
+static inline void stdvga_init(struct domain *d) {}
+#endif
extern void hvm_dpci_msi_eoi(struct domain *d, int vector);
--
2.25.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |