RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1882202 - Host SMBIOS information is not available on some machines
Summary: Host SMBIOS information is not available on some machines
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: libvirt
Version: 9.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Virtualization Maintenance
QA Contact: Meina Li
URL:
Whiteboard:
Depends On: 1885816
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-09-24 03:29 UTC by Lili Zhu
Modified: 2022-03-24 07:27 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-03-24 07:27:24 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Full uneditted output of "dmidecode" (14.21 KB, text/plain)
2020-10-01 16:08 UTC, Lili Zhu
no flags Details

Description Lili Zhu 2020-09-24 03:29:59 UTC
Description of problem:
Host SMBIOS information is not available on some machines

Version-Release number of selected component (if applicable):
libvirt-6.6.0-6.module+el8.3.0+8125+aefcf088.x86_64
qemu-kvm-5.1.0-8.module+el8.3.0+8141+3cd9cd43.x86_64

How reproducible:
100%

Steps to Reproduce:
1. try to get the hypervisor sysinfo
# virsh sysinfo
error: failed to get sysinfo
error: unsupported configuration: Host SMBIOS information is not available

2. try get host's SMBIOS table contents using dmidecode
# dmidecode -q -t 0,1,2,3,4,11,17
BIOS Information
Vendor: Lenovo
Version: -[IVE114P-1.10]-
Release Date: 10/20/2017
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Serial services are supported (int 14h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.10
Firmware Revision: 1.40

System Information
Manufacturer: Lenovo
Product Name: ThinkSystem SR630 -[7X02CTO1WW]-
Version: 07
Serial Number: J30038ZR
UUID: d9175ce4-dd1f-11e7-863f-7ed30ae5c917
Wake-up Type: Power Switch
SKU Number: none
Family: ThinkSystem
......

Expected results:
can get the host SMBIOS infomation via virsh cmd

Additional Info:
Can get the host SMBIOS information on the same host with rhel7 os
# rpm -q libvirt
libvirt-4.5.0-36.el7_9.2.x86_64

# virsh sysinfo
<sysinfo type='smbios'>
  <bios>
    <entry name='vendor'>Lenovo</entry>
    <entry name='version'>-[IVE114P-1.10]-</entry>
    <entry name='date'>10/20/2017</entry>
    <entry name='release'>1.10</entry>
  </bios>
  <system>
    <entry name='manufacturer'>Lenovo</entry>
    <entry name='product'>ThinkSystem SR630 -[7X02CTO1WW]-</entry>
    <entry name='version'>07</entry>
    <entry name='serial'>J30038ZR</entry>
    <entry name='uuid'>d9175ce4-dd1f-11e7-863f-7ed30ae5c917</entry>
    <entry name='sku'>none</entry>
    <entry name='family'>ThinkSystem</entry>
  </system>
  <baseBoard>
    <entry name='manufacturer'>Lenovo</entry>
    <entry name='product'>-[7X02CTO1WW]-</entry>
    <entry name='version'>none</entry>
    <entry name='serial'>79N00J5</entry>
    <entry name='asset'>none</entry>
    <entry name='location'>none</entry>
  </baseBoard>
  <chassis>
    <entry name='manufacturer'>Lenovo</entry>
    <entry name='version'>none</entry>
    <entry name='serial'>J30038ZR</entry>
    <entry name='asset'>none</entry>
    <entry name='sku'>Default string</entry>
  </chassis>
  <processor>
    <entry name='socket_destination'>CPU 1</entry>
    <entry name='type'>Central Processor</entry>
    <entry name='family'>Xeon</entry>
    <entry name='manufacturer'>Intel(R) Corporation</entry>
    <entry name='signature'>Type 0, Family 6, Model 85, Stepping 4</entry>
    <entry name='version'>Intel(R) Xeon(R) Bronze 3106 CPU @ 1.70GHz</entry>
    <entry name='external_clock'>100 MHz</entry>
    <entry name='max_speed'>1700 MHz</entry>
    <entry name='status'>Populated, Enabled</entry>
    <entry name='serial_number'>Not Specified</entry>
    <entry name='part_number'>Not Specified</entry>
  </processor>
  <processor>
    <entry name='socket_destination'>CPU 2</entry>
    <entry name='type'>Central Processor</entry>
    <entry name='family'>&lt;OUT OF SPEC&gt;</entry>
    <entry name='manufacturer'>Not Specified</entry>
    <entry name='version'>Not Specified</entry>
    <entry name='external_clock'>Unknown</entry>
    <entry name='max_speed'>1700 MHz</entry>
    <entry name='status'>Unpopulated</entry>
    <entry name='serial_number'>Not Specified</entry>
    <entry name='part_number'>Not Specified</entry>
  </processor>
  <memory_device>
    <entry name='size'>16384 MB</entry>
    <entry name='form_factor'>DIMM</entry>
    <entry name='locator'>DIMM 5</entry>
    <entry name='bank_locator'>CPU 1</entry>
    <entry name='type'>DDR4</entry>
    <entry name='type_detail'>Synchronous</entry>
    <entry name='speed'>2666 MT/s</entry>
    <entry name='manufacturer'>Samsung</entry>
    <entry name='serial_number'>37095CCF</entry>
    <entry name='part_number'>M393A2K40BB2-CTD</entry>
  </memory_device>
</sysinfo>

# dmidecode -q -t 0,1,2,3,4,11,17
BIOS Information
        Vendor: Lenovo
        Version: -[IVE114P-1.10]-
        Release Date: 10/20/2017
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 16 MB
        Characteristics:
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                Serial services are supported (int 14h)
                ACPI is supported
                USB legacy is supported
                BIOS boot specification is supported
                Targeted content distribution is supported
                UEFI is supported
        BIOS Revision: 1.10
        Firmware Revision: 1.40

System Information
        Manufacturer: Lenovo
        Product Name: ThinkSystem SR630 -[7X02CTO1WW]-
        Version: 07
        Serial Number: J30038ZR
        UUID: d9175ce4-dd1f-11e7-863f-7ed30ae5c917
        Wake-up Type: Power Switch
        SKU Number: none
        Family: ThinkSystem
.....

Comment 1 Lili Zhu 2020-09-25 15:36:46 UTC
In function virSysinfoParseOEMStrings(), when execute the 2nd cycle
of the loop, it will report the following error

(gdb) p err
$26 = 0x7fff84125530 "No OEM string number 2\nNo OEM string number 2\nNo OEM string number 2\nNo OEM string number 2\nNo OEM string number 2\n"
(gdb) bt
#0  0x00007ffff7494272 in virSysinfoDMIDecodeOEMString (str=0x7fff9a7fb888, i=2) at ../../src/util/virsysinfo.c:952
#1  0x00007ffff7494272 in virSysinfoParseOEMStrings (stringsRet=<optimized out>, base=<optimized out>)
    at ../../src/util/virsysinfo.c:1010
#2  0x00007ffff7494272 in virSysinfoReadDMI () at ../../src/util/virsysinfo.c:1257
#3  0x00007fffa0caf3f3 in qemuStateInitialize () at /usr/lib64/libvirt/connection-driver/libvirt_driver_qemu.so
#4  0x00007ffff764207f in virStateInitialize
    (opaque=0x55555581d830, callback=0x55555557c880 <daemonInhibitCallback>, root=0x0, mandatory=<optimized out>, privileged=true) at ../../src/libvirt.c:654
#5  0x00007ffff764207f in virStateInitialize
    (privileged=<optimized out>, mandatory=false, root=0x0, callback=0x55555557c880 <daemonInhibitCallback>, opaque=0x55555581d830) at ../../src/libvirt.c:636
#6  0x000055555557c8e4 in daemonRunStateInit ()
#7  0x00007ffff749894b in virThreadHelper (data=<optimized out>) at ../../src/util/virthread.c:233
#8  0x00007ffff3c3e14a in start_thread (arg=<optimized out>) at pthread_create.c:479
#9  0x00007ffff3553f23 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Comment 2 Ján Tomko 2020-09-25 16:26:56 UTC
Can you, please, attach the full output of the 'OEM Strings' section:

   dmidecode -q -t 0,1,2,3,4,11,17 | awk -v RS='' '/OEM Strings/'

as well as:

   dmidecode --dump --oem-string count

Comment 3 Lili Zhu 2020-09-26 01:42:05 UTC
(In reply to Ján Tomko from comment #2)
> Can you, please, attach the full output of the 'OEM Strings' section:
> 
>    dmidecode -q -t 0,1,2,3,4,11,17 | awk -v RS='' '/OEM Strings/'
> 
# dmidecode -q -t 0,1,2,3,4,11,17 | awk -v RS='' '/OEM Strings/'
OEM Strings
	String 1: $MV Min UEFI Version -[IVE112K-1.02]-
OEM Strings
	String 1: $SI Integrated BaseBoard Mgmt Cont 1.40 -[CDI314F]-
OEM Strings
	String 1: $ET Embedded Deployment Tool 1.10 -[PDL110O]-
OEM Strings
	String 1: $MR MRC Version -[144.R09]-
OEM Strings
	String 1: $ME ME Firmware Version -[4.0.3.211]-

> as well as:
> 
>    dmidecode --dump --oem-string count
# dmidecode --dump --oem-string 1
$MV Min UEFI Version -[IVE112K-1.02]-
$SI Integrated BaseBoard Mgmt Cont 1.40 -[CDI314F]-
$ET Embedded Deployment Tool 1.10 -[PDL110O]-
$MR MRC Version -[144.R09]-
$ME ME Firmware Version -[4.0.3.211]-

# dmidecode --dump --oem-string 2
No OEM string number 2
No OEM string number 2
No OEM string number 2
No OEM string number 2
No OEM string number 2

Comment 4 Daniel Berrangé 2020-09-30 11:56:52 UTC
Can you just attach the full uneditted output of  "dmidecode" to this BZ.

I looks suspiciously like there are multiple OEM String sections each with 1 string, instead of 1 section with multiple strings.

Comment 6 Lili Zhu 2020-10-01 16:08:57 UTC
Created attachment 1718209 [details]
Full uneditted output of  "dmidecode"

Comment 7 Daniel Berrangé 2020-10-02 08:54:32 UTC
This confirms my suspicion that there are multiple OEM String  tables, each with only 1 string. 

I don't know how we can deal with this in libvirt - it quite possibly needs work in dmicode to deal with it, as the comment #3 shows we're unable to query individual strings.

Comment 8 Daniel Berrangé 2020-10-02 10:49:39 UTC
Can you just confirm the output of

   "dmidecode --dump --oem-string count"

note, I really do mean the word "count" here, not a number

Comment 9 Lili Zhu 2020-10-03 01:30:12 UTC
(In reply to Daniel Berrangé from comment #8)
> Can you just confirm the output of
> 
>    "dmidecode --dump --oem-string count"
> 
> note, I really do mean the word "count" here, not a number

# dmidecode --dump --oem-string count
1
1
1
1
1

Comment 10 Daniel Berrangé 2020-10-05 11:49:45 UTC
So there are multiple problems I see here

 * Libvirt's initial parsing of OEM strings appears to break due to an embedded newline. This causes it to try using the -oem-string option
 * dmidecode's  -oem-string option is useless when the SMBIOS data has multiple OEM string sections

On the libvirt side, I think we need ot be more robust - if we can't parse OEM strings, then we need to just log an error and carry on, not discard the entire SMBIOS data record.

We likely need a bug reported against dmidecode to make it possible to handle multiple sections of OEM strings reliably.

Comment 11 Lili Zhu 2020-10-07 03:43:16 UTC
(In reply to Daniel Berrangé from comment #10)
> So there are multiple problems I see here
> 
>  * Libvirt's initial parsing of OEM strings appears to break due to an
> embedded newline. This causes it to try using the -oem-string option
>  * dmidecode's  -oem-string option is useless when the SMBIOS data has
> multiple OEM string sections
> 
> On the libvirt side, I think we need ot be more robust - if we can't parse
> OEM strings, then we need to just log an error and carry on, not discard the
> entire SMBIOS data record.
> 
> We likely need a bug reported against dmidecode to make it possible to
> handle multiple sections of OEM strings reliably.

Filed bug 1885816 for dmidecode

Comment 12 John Ferlan 2021-09-08 13:30:34 UTC
Bulk update: Move RHEL-AV bugs to RHEL9. If necessary to resolve in RHEL8, then clone to the current RHEL8 release.

Comment 14 RHEL Program Management 2022-03-24 07:27:24 UTC
After evaluating this issue, there are no plans to address it further or fix it in an upcoming release.  Therefore, it is being closed.  If plans change such that this issue will be fixed in an upcoming release, then the bug can be reopened.


Note You need to log in before you can comment on or make changes to this bug.