On Wed, Nov 02, 2016 at 16:34:31 -0400, Jason J. Herne wrote:
Implement getModels for s390. It returns an empty list. This means
libvirt
supports all models Qemu knows about.
Implement compare for s390. Required to test the guest against the host for
guest cpu model runnability checking. We always return IDENTICAL to bypass
Libvirt's checking. s390 will rely on Qemu to perform the runnability checking.
Implement update for s390. required to support use of cpu "host-model" mode.
Signed-off-by: Jason J. Herne <jjherne(a)linux.vnet.ibm.com>
---
src/cpu/cpu_s390.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c
index fb352a0..0f94084 100644
--- a/src/cpu/cpu_s390.c
+++ b/src/cpu/cpu_s390.c
@@ -71,16 +71,43 @@ s390DataFree(virCPUDataPtr data)
VIR_FREE(data);
}
+static int
+s390GetModels(char ***models ATTRIBUTE_UNUSED)
+{
+ return 0;
+}
This is almost an equivalent of not defining the function at all. Except
that your code leaves models uninitialized. Keeping
cpuArchDriver.getModels == NULL will do a better job (see cpu.c):
if (!driver->getModels) {
if (models)
*models = NULL;
return 0;
}
+
+static virCPUCompareResult
+virCPUs390Compare(virCPUDefPtr host ATTRIBUTE_UNUSED,
+ virCPUDefPtr cpu ATTRIBUTE_UNUSED,
+ bool failMessages ATTRIBUTE_UNUSED)
+{
+ return VIR_CPU_COMPARE_IDENTICAL;
+}
+
+static int
+virCPUs390Update(virCPUDefPtr guest ATTRIBUTE_UNUSED,
+ const virCPUDef *host ATTRIBUTE_UNUSED)
+{
+ /*
+ * - host-passthrough not yet supported
Why is it not supported?
+ * - host-model needs no changes
It actually needs changes. The CPU definition with mode='host-model'
needs to be replaced with mode='custom' and model name and possibly
features need to be set too.
+ * - custom mode ... ???
Custom mode would need to be changed only when match='minimum' is used.
If that's not supported with s390, we should report an error. Hmm, which
reminds me, we should probably report what matches are supported in
domain capabilities.
Jirka