]> xenbits.xensource.com Git - libvirt.git/commitdiff
virSysinfoReadARM: Try reading DMI table
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 9 May 2019 14:10:37 +0000 (16:10 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 3 Jun 2019 15:59:38 +0000 (17:59 +0200)
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@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
src/util/virsysinfo.c
tests/sysinfodata/aarch64-gigabytesysinfo.expect

index b371e8dd2679d332f3456e2568ef415b470a2892..5be5e5133d71c0b0e68c6429dbe6edb55dfba21e 100644 (file)
@@ -192,6 +192,15 @@ void virSysinfoDefFree(virSysinfoDefPtr def)
 }
 
 
+static bool
+virSysinfoDefIsEmpty(const virSysinfoDef *def)
+{
+    return !(def->bios || def->system || def->nbaseBoard > 0 ||
+             def->chassis || def->nprocessor > 0 ||
+             def->nmemory > 0 || def->oemStrings);
+}
+
+
 static int
 virSysinfoParsePPCSystem(const char *base, virSysinfoSystemDefPtr *sysdef)
 {
@@ -433,6 +442,16 @@ virSysinfoReadARM(void)
     virSysinfoDefPtr ret = NULL;
     char *outbuf = NULL;
 
+    /* Some ARM systems have DMI tables available. */
+    if ((ret = virSysinfoReadDMI())) {
+        if (!virSysinfoDefIsEmpty(ret))
+            return ret;
+        virSysinfoDefFree(ret);
+    }
+
+    /* Well, we've tried. Fall back to parsing cpuinfo */
+    virResetLastError();
+
     if (VIR_ALLOC(ret) < 0)
         goto no_memory;
 
index 73ea466bc305b55b7ddf5d44056dbe0b1ec34026..a07dbc87dd2804cae868f3b7b08e3c0d37b249ce 100644 (file)
@@ -1 +1,141 @@
-<sysinfo type='smbios'/>
+<sysinfo type='smbios'>
+  <bios>
+    <entry name='vendor'>GIGABYTE</entry>
+    <entry name='version'>T49</entry>
+    <entry name='date'>02/02/2018</entry>
+    <entry name='release'>5.11</entry>
+  </bios>
+  <system>
+    <entry name='manufacturer'>GIGABYTE</entry>
+    <entry name='product'>R120-T34-00</entry>
+    <entry name='version'>0100</entry>
+    <entry name='serial'>01234567890ABC</entry>
+    <entry name='uuid'>01234567-89AB-CDEF-0123-4567890ABCDE</entry>
+    <entry name='sku'>01234567890123456789AB</entry>
+    <entry name='family'>Server</entry>
+  </system>
+  <baseBoard>
+    <entry name='manufacturer'>GIGABYTE</entry>
+    <entry name='product'>MT30-GS2-00</entry>
+    <entry name='version'>01234567</entry>
+    <entry name='serial'>01234567890</entry>
+    <entry name='asset'>01234567890123456789AB</entry>
+    <entry name='location'>Default string</entry>
+  </baseBoard>
+  <chassis>
+    <entry name='manufacturer'>GIGABYTE</entry>
+    <entry name='version'>01234567</entry>
+    <entry name='serial'>01234567890123456789AB</entry>
+    <entry name='asset'>01234567890123456789AB</entry>
+    <entry name='sku'>SYS_CHASSIS_SKU_NUMBER_1</entry>
+  </chassis>
+  <processor>
+    <entry name='socket_destination'>Socket</entry>
+    <entry name='type'>Central Processor</entry>
+    <entry name='family'>ARM</entry>
+    <entry name='manufacturer'>CN8880-1800BG2601-CP-Y-G</entry>
+    <entry name='signature'>Implementor 0x43, Variant 0x1, Architecture 15, Part 0x0a1, Revision 1</entry>
+    <entry name='version'>2.1</entry>
+    <entry name='external_clock'>156 MHz</entry>
+    <entry name='max_speed'>1800 MHz</entry>
+    <entry name='status'>Populated, Enabled</entry>
+    <entry name='serial_number'>CPU Serial#</entry>
+    <entry name='part_number'>CN88xx</entry>
+  </processor>
+  <memory_device>
+    <entry name='size'>16384 MB</entry>
+    <entry name='form_factor'>DIMM</entry>
+    <entry name='locator'>DIMM_P0_A0</entry>
+    <entry name='bank_locator'>P0_Node0_Channel0_Dimm0</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Registered (Buffered)</entry>
+    <entry name='speed'>2400 MT/s</entry>
+    <entry name='manufacturer'>Samsung</entry>
+    <entry name='serial_number'>01234567</entry>
+    <entry name='part_number'>M393A2K40BB1-CRC</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16 GB</entry>
+    <entry name='form_factor'>Unknown</entry>
+    <entry name='locator'>DIMM_P0_A1</entry>
+    <entry name='bank_locator'>P0_Node0_Channel0_Dimm1</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Unknown</entry>
+    <entry name='speed'>Unknown</entry>
+    <entry name='manufacturer'>NO DIMM</entry>
+    <entry name='serial_number'>NO DIMM</entry>
+    <entry name='part_number'>NO DIMM</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16384 MB</entry>
+    <entry name='form_factor'>DIMM</entry>
+    <entry name='locator'>DIMM_P0_B0</entry>
+    <entry name='bank_locator'>P0_Node0_Channel1_Dimm0</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Registered (Buffered)</entry>
+    <entry name='speed'>2400 MT/s</entry>
+    <entry name='manufacturer'>Samsung</entry>
+    <entry name='serial_number'>3405E86E</entry>
+    <entry name='part_number'>M393A2K40BB1-CRC</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16 GB</entry>
+    <entry name='form_factor'>Unknown</entry>
+    <entry name='locator'>DIMM_P0_B1</entry>
+    <entry name='bank_locator'>P0_Node0_Channel1_Dimm1</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Unknown</entry>
+    <entry name='speed'>Unknown</entry>
+    <entry name='manufacturer'>NO DIMM</entry>
+    <entry name='serial_number'>NO DIMM</entry>
+    <entry name='part_number'>NO DIMM</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16384 MB</entry>
+    <entry name='form_factor'>DIMM</entry>
+    <entry name='locator'>DIMM_P0_C0</entry>
+    <entry name='bank_locator'>P0_Node0_Channel2_Dimm0</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Registered (Buffered)</entry>
+    <entry name='speed'>2400 MT/s</entry>
+    <entry name='manufacturer'>Samsung</entry>
+    <entry name='serial_number'>01234567</entry>
+    <entry name='part_number'>M393A2K40BB1-CRC</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16 GB</entry>
+    <entry name='form_factor'>Unknown</entry>
+    <entry name='locator'>DIMM_P0_C1</entry>
+    <entry name='bank_locator'>P0_Node0_Channel2_Dimm1</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Unknown</entry>
+    <entry name='speed'>Unknown</entry>
+    <entry name='manufacturer'>NO DIMM</entry>
+    <entry name='serial_number'>NO DIMM</entry>
+    <entry name='part_number'>NO DIMM</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16384 MB</entry>
+    <entry name='form_factor'>DIMM</entry>
+    <entry name='locator'>DIMM_P0_D0</entry>
+    <entry name='bank_locator'>P0_Node0_Channel3_Dimm0</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Registered (Buffered)</entry>
+    <entry name='speed'>2400 MT/s</entry>
+    <entry name='manufacturer'>Samsung</entry>
+    <entry name='serial_number'>01234567</entry>
+    <entry name='part_number'>M393A2K40BB1-CRC</entry>
+  </memory_device>
+  <memory_device>
+    <entry name='size'>16 GB</entry>
+    <entry name='form_factor'>Unknown</entry>
+    <entry name='locator'>DIMM_P0_D1</entry>
+    <entry name='bank_locator'>P0_Node0_Channel3_Dimm1</entry>
+    <entry name='type'>DDR4</entry>
+    <entry name='type_detail'>Unknown</entry>
+    <entry name='speed'>Unknown</entry>
+    <entry name='manufacturer'>NO DIMM</entry>
+    <entry name='serial_number'>NO DIMM</entry>
+    <entry name='part_number'>NO DIMM</entry>
+  </memory_device>
+</sysinfo>