From 280c5c31dec6ca5e7c97cb503ac1b129aea3dac7 Mon Sep 17 00:00:00 2001 From: Roman Bogorodskiy Date: Sun, 11 May 2025 18:20:20 +0200 Subject: [PATCH] domain_capabilities: add console capabilities Currently, domain capabilities do not include information about the supported console device types. While most of the drivers support 'pty' console type, it's not the case for bhyve. Without this information, management software cannot always generate compatible domain configuration. To address that, extend domain capabilities like that: ... pty type2 ... ... Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/conf/domain_capabilities.c | 12 ++++++++++++ src/conf/domain_capabilities.h | 8 ++++++++ src/conf/schemas/domaincaps.rng | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 27551f6102..f7cce92ca1 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -689,6 +689,17 @@ virDomainCapsDevicePanicFormat(virBuffer *buf, } +static void +virDomainCapsDeviceConsoleFormat(virBuffer *buf, + const virDomainCapsDeviceConsole *console) +{ + FORMAT_PROLOGUE(console); + + ENUM_PROCESS(console, type, virDomainChrTypeToString); + + FORMAT_EPILOGUE(console); +} + /** * virDomainCapsFeatureGICFormat: * @buf: target buffer @@ -871,6 +882,7 @@ virDomainCapsFormat(const virDomainCaps *caps) virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto); virDomainCapsDeviceNetFormat(&buf, &caps->net); virDomainCapsDevicePanicFormat(&buf, &caps->panic); + virDomainCapsDeviceConsoleFormat(&buf, &caps->console); virBufferAdjustIndent(&buf, -2); virBufferAddLit(&buf, "\n"); diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 69dd1a15c1..60d5fe77de 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -265,6 +265,13 @@ struct _virDomainCapsDevicePanic { virDomainCapsEnum model; /* virDomainPanicModel */ }; +typedef struct _virDomainCapsDeviceConsole virDomainCapsDeviceConsole; +struct _virDomainCapsDeviceConsole { + virTristateBool supported; + virDomainCapsEnum type; /* virDomainChrType */ +}; + + typedef enum { VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0, VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO, @@ -304,6 +311,7 @@ struct _virDomainCaps { virDomainCapsDeviceCrypto crypto; virDomainCapsDeviceNet net; virDomainCapsDevicePanic panic; + virDomainCapsDeviceConsole console; /* add new domain devices here */ virDomainCapsFeatureGIC gic; diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng index 595dbcd634..8bc34691c7 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -237,6 +237,9 @@ + + + @@ -317,6 +320,13 @@ + + + + + + + -- 2.47.3