From 116b38f8c6db88197b23abfc4df098e55cb9a6ca Mon Sep 17 00:00:00 2001 From: Anthony PERARD Date: Tue, 23 Jan 2024 16:31:41 +0000 Subject: [PATCH] retry, actually do stuff in domain conf instead of libxl driver conf --- src/conf/domain_conf.h | 1 + src/libxl/libxl_conf.c | 14 ++++++-------- src/libxl/libxl_conf.h | 3 --- src/libxl/libxl_domain.c | 1 + src/libxl/xen_common.c | 2 ++ src/libxl/xen_xl.c | 3 +++ 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index d176bda5f8..56414f0fd4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3034,6 +3034,7 @@ struct _virDomainDef { virDomainClockDef clock; + int vkb_device; // -1: default, 0: false, 1: true size_t ngraphics; virDomainGraphicsDef **graphics; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 5f7ca5d55f..75daed1fdf 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -717,13 +717,16 @@ libxlMakeDomBuildInfo(virDomainDef *def, libxl_defbool_set(&b_info->u.hvm.sdl.enable, 0); #ifdef LIBXL_HAVE_BUILDINFO_VKB_DEVICE - if (cfg->has_vkb_device) - libxl_defbool_set(&b_info->u.hvm.vkb_device, cfg->vkb_device); + if (def->vkb_device != -1) + libxl_defbool_set(&b_info->u.hvm.vkb_device, def->vkb_device); + // maybe just disable it by default, and let libxlMakeVfbList() add + // the ones needed. #endif for (i = 0; i < def->ninputs; i++) { char **usbdevice; + // maybe reenable vkb_device, if bus == VIR_DOMAIN_INPUT_BUS_XEN if (def->inputs[i]->bus != VIR_DOMAIN_INPUT_BUS_USB) continue; @@ -1570,6 +1573,7 @@ libxlMakeVfbList(virPortAllocatorRange *graphicsports, libxl_device_vkb *x_vkbs; size_t i; + // handle vkb_device here? if (nvfbs == 0) return 0; @@ -1864,12 +1868,6 @@ int libxlDriverConfigLoadFile(libxlDriverConfig *cfg, if (virConfGetValueBool(conf, "nested_hvm", &cfg->nested_hvm) < 0) return -1; - r = virConfGetValueBool(conf, "vkb_device", &cfg->vkb_device); - if (r == 1) - cfg->has_vkb_device = true; - if (r < 0) - return -1; - return 0; } diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h index c24a665649..7087b41079 100644 --- a/src/libxl/libxl_conf.h +++ b/src/libxl/libxl_conf.h @@ -101,9 +101,6 @@ struct _libxlDriverConfig { virFirmware **firmwares; size_t nfirmwares; - - bool has_vkb_device; - bool vkb_device; }; G_DEFINE_AUTOPTR_CLEANUP_FUNC(libxlDriverConfig, virObjectUnref); diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 670fd2881e..ef4e4a012d 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -266,6 +266,7 @@ libxlDomainDefPostParse(virDomainDef *def, } /* add implicit input devices */ + // maybe remove that when vkb_device if (xenDomainDefAddImplicitInputDevice(def) < 0) return -1; diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c index d5a0399613..3163cb0d9b 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -655,6 +655,8 @@ xenParseVfb(virConf *conf, virDomainDef *def) int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM; virDomainGraphicsDef *graphics = NULL; + // handle vkb_device here? + if (hvm) { if (xenConfigGetBool(conf, "vnc", &val, 0) < 0) goto cleanup; diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c index f175359307..e44d5b3f47 100644 --- a/src/libxl/xen_xl.c +++ b/src/libxl/xen_xl.c @@ -196,6 +196,9 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps) return -1; } } + + if (xenConfigGetBool(conf, "vkb_device", &def->vkb_device, -1) < 0) + return -1; } else { if (xenConfigCopyStringOpt(conf, "bootloader", &def->os.bootloader) < 0) return -1; -- 2.39.5