mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
qemu: S390 does not provide physical address size
Commit be1b7d5b18
introduced parsing /proc/cpuinfo for "address size"
which is not including on S390 and therefore reports an internal error.
Lets remove the parsing on S390.
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
aece25f665
commit
8417c1394c
@ -2795,7 +2795,7 @@ virCPUx86GetHost(virCPUDef *cpu,
|
||||
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;
|
||||
|
@ -3911,7 +3911,7 @@ virQEMUCapsInitHostCPUModel(virQEMUCaps *qemuCaps,
|
||||
}
|
||||
|
||||
if (virQEMUCapsTypeIsAccelerated(type))
|
||||
virHostCPUGetPhysAddrSize(&physAddrSize);
|
||||
virHostCPUGetPhysAddrSize(hostArch, &physAddrSize);
|
||||
|
||||
virQEMUCapsSetHostModel(qemuCaps, type, physAddrSize, cpu, migCPU, fullCPU);
|
||||
|
||||
|
@ -1646,10 +1646,17 @@ virHostCPUGetSignature(char **signature)
|
||||
}
|
||||
|
||||
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);
|
||||
@ -1669,7 +1676,8 @@ virHostCPUGetSignature(char **signature)
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -87,7 +87,8 @@ virHostCPUTscInfo *virHostCPUGetTscInfo(void);
|
||||
|
||||
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,
|
||||
|
@ -38,7 +38,6 @@
|
||||
</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'/>
|
||||
|
@ -38,7 +38,6 @@
|
||||
</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'/>
|
||||
|
@ -38,7 +38,6 @@
|
||||
</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'/>
|
||||
|
@ -38,7 +38,6 @@
|
||||
</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'/>
|
||||
|
@ -37,9 +37,13 @@ virHostCPUGetMicrocodeVersion(virArch hostArch G_GNUC_UNUSED)
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user