VIR_DEBUG("Host CPU does not support invariant TSC");
}
- if (virHostCPUGetPhysAddrSize(&addrsz) == 0) {
+ if (virHostCPUGetPhysAddrSize(cpuData->arch, &addrsz) == 0) {
virCPUMaxPhysAddrDef *addr = g_new0(virCPUMaxPhysAddrDef, 1);
addr->bits = addrsz;
}
if (virQEMUCapsTypeIsAccelerated(type))
- virHostCPUGetPhysAddrSize(&physAddrSize);
+ virHostCPUGetPhysAddrSize(hostArch, &physAddrSize);
virQEMUCapsSetHostModel(qemuCaps, type, physAddrSize, cpu, migCPU, fullCPU);
}
int
-virHostCPUGetPhysAddrSize(unsigned int *size)
+virHostCPUGetPhysAddrSize(const virArch hostArch,
+ unsigned int *size)
{
g_autoptr(FILE) cpuinfo = NULL;
+ if (ARCH_IS_S390(hostArch)) {
+ /* Ensure size is set to 0 as physical address size is unknown */
+ *size = 0;
+ return 0;
+ }
+
if (!(cpuinfo = fopen(CPUINFO_PATH, "r"))) {
virReportSystemError(errno, _("Failed to open cpuinfo file '%1$s'"),
CPUINFO_PATH);
}
int
-virHostCPUGetPhysAddrSize(unsigned int *size G_GNUC_UNUSED)
+virHostCPUGetPhysAddrSize(const virArch hostArch G_GNUC_UNUSED,
+ unsigned int *size G_GNUC_UNUSED)
{
errno = ENOSYS;
return -1;
int virHostCPUGetSignature(char **signature);
-int virHostCPUGetPhysAddrSize(unsigned int *size);
+int virHostCPUGetPhysAddrSize(const virArch hostArch,
+ unsigned int *size);
int virHostCPUGetHaltPollTime(pid_t pid,
unsigned long long *haltPollSuccess,
</mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen15a-base</model>
- <maxphysaddr mode='passthrough' limit='64'/>
<feature policy='require' name='aen'/>
<feature policy='require' name='cmmnt'/>
<feature policy='require' name='vxpdeh'/>
</mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen15a-base</model>
- <maxphysaddr mode='passthrough' limit='64'/>
<feature policy='require' name='aen'/>
<feature policy='require' name='cmmnt'/>
<feature policy='require' name='vxpdeh'/>
</mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen15a-base</model>
- <maxphysaddr mode='passthrough' limit='64'/>
<feature policy='require' name='aen'/>
<feature policy='require' name='cmmnt'/>
<feature policy='require' name='vxpdeh'/>
</mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen16a-base</model>
- <maxphysaddr mode='passthrough' limit='64'/>
<feature policy='require' name='nnpa'/>
<feature policy='require' name='aen'/>
<feature policy='require' name='cmmnt'/>
}
int
-virHostCPUGetPhysAddrSize(unsigned int *size)
+virHostCPUGetPhysAddrSize(const virArch hostArch,
+ unsigned int *size)
{
- *size = 64;
+ if (ARCH_IS_S390(hostArch))
+ *size = 0;
+ else
+ *size = 64;
return 0;
}