https://bugzilla.redhat.com/show_bug.cgi?id=1426162
Turns out, some aarch64 systems have SMBIOS info. That means we
can use dmidecode to fetch some information. If that fails, fall
back to the old behaviour.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/util/virsysinfo.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index b371e8dd26..83da3897ce 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -192,6 +192,14 @@ void virSysinfoDefFree(virSysinfoDefPtr def)
}
+static bool
+virSysinfoDefEmpty(const virSysinfoDef *def)
+{
+ return !(def->bios || def->system || def->nbaseBoard ||
+ def->chassis || def->nprocessor || def->nmemory ||
def->oemStrings);
+}
+
+
static int
virSysinfoParsePPCSystem(const char *base, virSysinfoSystemDefPtr *sysdef)
{
@@ -433,6 +441,16 @@ virSysinfoReadARM(void)
virSysinfoDefPtr ret = NULL;
char *outbuf = NULL;
+ /* Some ARM systems have DMI tables available. */
+ if ((ret = virSysinfoReadDMI())) {
+ if (!virSysinfoDefEmpty(ret))
+ return ret;
+ virSysinfoDefFree(ret);
+ }
+
+ /* Well, we've tried. Fall back to parsing cpuinfo */
+ virResetLastError();
+
if (VIR_ALLOC(ret) < 0)
goto no_memory;
--
2.21.0