From 9df1e7d8148750ee9c1abae740f6f581192384dd Mon Sep 17 00:00:00 2001 From: Narayana Murty N Date: Wed, 4 Oct 2023 01:58:41 -0400 Subject: [PATCH] util:hostcpu: Report physical address size based on Architecture The function virHostCPUGetPhysAddrSize was introduced with commit be1b7d5b18e fails on architectures other than x86 and SuperH. The commit 8417c1394cd4d fixed the issue only for s390 but the problem is still seen on other architectures like ppc which does not report Physical address size in their cpuinfo output. command: systemctl restart libvirtd.service Output : dnsmasq[2377]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses dnsmasq-dhcp[2377]: read /var/lib/libvirt/dnsmasq/default.hostsfile libvirtd[3163]: libvirt version: 9.8.0 libvirtd[3163]: hostname: xxxxxxxxxx libvirtd[3163]: internal error: Missing or invalid CPU address size in /proc/cpuinfo libvirtd.service: Deactivated successfully. This patch fixes this issue by returning the size=0 for architectures other than x86 and SuperH. Signed-off-by: Narayana Murty N Reviewed-by: Michal Privoznik --- src/util/virarch.h | 3 +++ src/util/virhostcpu.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/util/virarch.h b/src/util/virarch.h index 81b1b27a57..747f77c48e 100644 --- a/src/util/virarch.h +++ b/src/util/virarch.h @@ -103,6 +103,9 @@ typedef enum { #define ARCH_IS_MIPS64(arch) ((arch) == VIR_ARCH_MIPS64 ||\ (arch) == VIR_ARCH_MIPS64EL) +#define ARCH_IS_SH4(arch) ((arch) == VIR_ARCH_SH4 ||\ + (arch) == VIR_ARCH_SH4EB) + typedef enum { VIR_ARCH_LITTLE_ENDIAN, VIR_ARCH_BIG_ENDIAN, diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c index 0389012ef7..4027547e1e 100644 --- a/src/util/virhostcpu.c +++ b/src/util/virhostcpu.c @@ -1650,7 +1650,7 @@ virHostCPUGetPhysAddrSize(const virArch hostArch, { g_autoptr(FILE) cpuinfo = NULL; - if (ARCH_IS_S390(hostArch)) { + if (!(ARCH_IS_X86(hostArch) || ARCH_IS_SH4(hostArch))) { /* Ensure size is set to 0 as physical address size is unknown */ *size = 0; return 0;