Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
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 2114997

Summary: virt-what doesn't detect kvm for aarch64 in GCE
Product: Red Hat Enterprise Linux 9 Reporter: Craig Donnelly <cdonnell>
Component: virt-whatAssignee: Richard W.M. Jones <rjones>
Status: CLOSED ERRATA QA Contact: YongkuiGuo <yoguo>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 9.0CC: eric.auger, qzhang, rjones, virt-maint, ymao, yoguo
Target Milestone: rcKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: virt-what-1.22-2.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-11-15 11:12:59 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Craig Donnelly 2022-08-03 16:54:06 UTC
Description of problem:
subscription-manager has a requirement to offer automatic registration requirements in major cloud providers. Currently, we deliver `cloud-what` to determine which cloud a system is on to attempt a auto-registration for a given host. Our tooling also looks for input from virt-what to determine facts that are used for entitlements, and this auto-registration process (sub-man facts -> virt.{host_type,is_guest}). virt.host_type is defined with the output of `virt-what`.

In the process of testing subscription-manager auto-registration in GCE, it was found that virt-what returns nothing on ARM systems in GCE.

In my testing, there is information that indicates it is a KVM system, but not in the ways looked for by virt-what.

This issue will prevent automatic registration from working in GCE for ARM systems.

Version-Release number of selected component (if applicable):
virt-what-1.21-2.el9.2.aarch64

How reproducible:
100%

Steps to Reproduce:
1. Deploy RHEL 9 in GCE on aarch64
2. `virt-what`

Actual results:
[root@r9-arm facts]# virt-what;echo $?
0

Expected results:
$ virt-what
kvm
(if another valid new value is added, we will need to update code as well afaik)

Additional info:
Will attach dmidecode output and subscription-manager facts below:

[root@r9-arm ~]# dmidecode
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
16 structures occupying 588 bytes.
Table at 0xFFFE0000.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Google
        Version: Google
        Release Date: 06/20/2022
        Address: 0xE8000
        Runtime Size: 96 kB
        ROM Size: 64 kB
        Characteristics:
                BIOS characteristics not supported
                Targeted content distribution is supported
        BIOS Revision: 1.0

Handle 0x0097, DMI type 1, 27 bytes
System Information
        Manufacturer: Google
        Product Name: Google Compute Engine
        Version: Not Specified
        Serial Number: GoogleCloud-957EDC416C53B28F6DA35168B6F8648D
        UUID: 957edc41-6c53-b28f-6da3-5168b6f8648d
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Not Specified

Handle 0x0098, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: KVM
        Product Name: Google Compute Engine
        Version: Not Specified
        Serial Number: Board-GoogleCloud-957EDC416C53B28F6DA35168B6F8648D
        Asset Tag: 957EDC41-6C53-B28F-6DA3-5168B6F8648D
        Features:
                Board is a hosting board
        Location In Chassis: Not Specified
        Chassis Handle: 0x0099
        Type: Motherboard
        Contained Object Handles: 0

Handle 0x0099, DMI type 3, 20 bytes
Chassis Information
        Manufacturer: Google
        Type: Other
        Lock: Not Present
        Version: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: Unknown
        OEM Information: 0x00000000
        Height: Unspecified
        Number Of Power Cords: Unspecified

Handle 0x3001, DMI type 7, 17 bytes
Cache Information
        Socket Designation: L1 Cache
        Configuration: Disabled, Not Socketed, Level 1
        Operational Mode: Write Through
        Location: Internal
        Installed Size: 0 kB
        Maximum Size: 1 kB
        Supported SRAM Types: None
        Installed SRAM Type: None

Handle 0x3002, DMI type 7, 17 bytes
Cache Information
        Socket Designation: L2 Cache
        Configuration: Disabled, Not Socketed, Level 1
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 0 kB
        Maximum Size: 0 kB
        Supported SRAM Types: None
        Installed SRAM Type: None

Handle 0x3003, DMI type 7, 17 bytes
Cache Information
        Socket Designation: L3 Cache
        Configuration: Disabled, Not Socketed, Level 1
        Operational Mode: Varies With Memory Address
        Location: Internal
        Installed Size: 256 kB
        Maximum Size: 256 kB
        Supported SRAM Types: None
        Installed SRAM Type: None

Handle 0x1000, DMI type 4, 42 bytes
Processor Information
        Socket Designation: CPU 1
        Type: Central Processor
        Family: ARMv8
        Manufacturer: Google
        ID: 00 00 00 00 00 00 00 00
        Version: Not Specified
        Voltage: Unknown
        External Clock: Unknown
        Max Speed: 3000 MHz
        Current Speed: 3000 MHz
        Status: Populated, Enabled
        Upgrade: Other
        L1 Cache Handle: 0x3001
        L2 Cache Handle: 0x3002
        L3 Cache Handle: 0x3003
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 1
        Core Enabled: 1
        Thread Count: 1
        Characteristics:
                64-bit capable

Handle 0x0200, DMI type 16, 15 bytes
Physical Memory Array
        Location: Other
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 4 GB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x7000, DMI type 17, 21 bytes
Memory Device
        Array Handle: 0x0200
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: Not Specified
        Type: RAM
        Type Detail: Synchronous

Handle 0x0300, DMI type 19, 15 bytes
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000BFFFFFFF
        Range Size: 3 GB
        Physical Array Handle: 0x0200
        Partition Width: 1

Handle 0x0301, DMI type 19, 15 bytes
Memory Array Mapped Address
        Starting Address: 0x00100000000
        Ending Address: 0x0013FFFFFFF
        Range Size: 1 GB
        Physical Array Handle: 0x0200
        Partition Width: 1

Handle 0x4000, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000BFFFFFFF
        Range Size: 3 GB
        Physical Device Handle: 0x7000
        Memory Array Mapped Address Handle: 0x0300
        Partition Row Position: 1

Handle 0x4001, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00100000000
        Ending Address: 0x0013FFFFFFF
        Range Size: 1 GB
        Physical Device Handle: 0x7000
        Memory Array Mapped Address Handle: 0x0301
        Partition Row Position: 1

Handle 0x0100, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

[root@r9-arm ~]# subscription-manager facts
cpu.core(s)_per_socket: 1
cpu.cpu(s): 1
cpu.cpu_socket(s): 1
cpu.thread(s)_per_core: 1
cpu.topology_source: kernel /sys cpu sibling lists
distribution.id: Plow
distribution.name: Red Hat Enterprise Linux
distribution.version: 9.0
distribution.version.modifier: Unknown
dmi.baseboard.asset_tag: 957EDC41-6C53-B28F-6DA3-5168B6F8648D
dmi.baseboard.chassis_handle: 0x0099
dmi.baseboard.contained_object_handles: 0
dmi.baseboard.features: Board is a hosting board
dmi.baseboard.manufacturer: KVM
dmi.baseboard.product_name: Google Compute Engine
dmi.baseboard.serial_number: Board-GoogleCloud-957EDC416C53B28F6DA35168B6F8648D
dmi.baseboard.type: Motherboard
dmi.bios.address: 0xe8000
dmi.bios.bios_revision: 1.0
dmi.bios.release_date: 06/20/2022
dmi.bios.rom_size: 64 kB
dmi.bios.runtime_size: 96 kB
dmi.bios.vendor: Google
dmi.bios.version: Google
dmi.chassis.boot-up_state: Safe
dmi.chassis.lock: Not Present
dmi.chassis.manufacturer: Google
dmi.chassis.oem_information: 0x00000000
dmi.chassis.power_supply_state: Safe
dmi.chassis.thermal_state: Safe
dmi.chassis.type: Other
dmi.memory.array_handle: 0x0200
dmi.memory.data_width: 64 bits
dmi.memory.error_correction_type: Multi-bit ECC
dmi.memory.error_information_handle: Not Provided
dmi.memory.form_factor: DIMM
dmi.memory.location: Other
dmi.memory.locator: DIMM 0
dmi.memory.maximum_capacity: 4 GB
dmi.memory.number_of_devices: 1
dmi.memory.set: None
dmi.memory.size: 4 GB
dmi.memory.total_width: 64 bits
dmi.memory.type: RAM
dmi.memory.type_detail: Synchronous
dmi.memory.use: System Memory
dmi.meta.cpu_socket_count: 1
dmi.processor.characteristics: 64-bit capable
dmi.processor.core_count: 1
dmi.processor.core_enabled: 1
dmi.processor.current_speed: 3000 MHz
dmi.processor.family: ARMv8
dmi.processor.id: 00 00 00 00 00 00 00 00
dmi.processor.l1_cache_handle: 0x3001
dmi.processor.l2_cache_handle: 0x3002
dmi.processor.l3_cache_handle: 0x3003
dmi.processor.manufacturer: Google
dmi.processor.max_speed: 3000 MHz
dmi.processor.socket_designation: CPU 1
dmi.processor.status: Populated, Enabled
dmi.processor.thread_count: 1
dmi.processor.type: Central Processor
dmi.processor.upgrade: Other
dmi.system.manufacturer: Google
dmi.system.product_name: Google Compute Engine
dmi.system.serial_number: GoogleCloud-957EDC416C53B28F6DA35168B6F8648D
dmi.system.uuid: 957EDC41-6C53-B28F-6DA3-5168B6F8648D
dmi.system.wake-up_type: Power Switch
last_boot: 2022-08-03 13:58:24 UTC
lscpu.architecture: aarch64
lscpu.bios_vendor_id: Google
lscpu.bogomips: 50.00
lscpu.byte_order: Little Endian
lscpu.core(s)_per_socket: 1
lscpu.cpu(s): 1
lscpu.cpu_op-mode(s): 64-bit
lscpu.flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
lscpu.model: 1
lscpu.model_name: Neoverse-N1
lscpu.numa_node(s): 1
lscpu.numa_node0_cpu(s): 0
lscpu.on-line_cpu(s)_list: 0
lscpu.socket(s): 1
lscpu.stepping: r3p1
lscpu.thread(s)_per_core: 1
lscpu.vendor_id: ARM
lscpu.vulnerability_itlb_multihit: Not affected
lscpu.vulnerability_l1tf: Not affected
lscpu.vulnerability_mds: Not affected
lscpu.vulnerability_meltdown: Not affected
lscpu.vulnerability_spec_store_bypass: Mitigation; Speculative Store Bypass disabled via prctl
lscpu.vulnerability_spectre_v1: Mitigation; __user pointer sanitization
lscpu.vulnerability_spectre_v2: Mitigation; CSV2, BHB
lscpu.vulnerability_srbds: Not affected
lscpu.vulnerability_tsx_async_abort: Not affected
memory.memtotal: 3537600
memory.swaptotal: 0
net.interface.eth0.ipv4_address: 10.128.0.2
net.interface.eth0.ipv4_address_list: 10.128.0.2
net.interface.eth0.ipv4_broadcast: Unknown
net.interface.eth0.ipv4_broadcast_list: Unknown
net.interface.eth0.ipv4_netmask: 32
net.interface.eth0.ipv4_netmask_list: 32
net.interface.eth0.ipv6_address.link: fe80::1408:9bed:51ec:ae0d
net.interface.eth0.ipv6_address.link_list: fe80::1408:9bed:51ec:ae0d
net.interface.eth0.ipv6_netmask.link: 64
net.interface.eth0.ipv6_netmask.link_list: 64
net.interface.eth0.mac_address: 42:01:0a:80:00:02
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
net.interface.lo.ipv6_address.host: ::1
net.interface.lo.ipv6_address.host_list: ::1
net.interface.lo.ipv6_netmask.host: 128
net.interface.lo.ipv6_netmask.host_list: 128
network.fqdn: r9-arm.c.subscription-m.internal
network.hostname: r9-arm
network.ipv4_address: 10.128.0.2
network.ipv6_address: fe80::1408:9bed:51ec:ae0d
proc_cpuinfo.common.bogomips: 50.00
proc_cpuinfo.common.cpu_architecture: 8
proc_cpuinfo.common.cpu_implementer: 0x41
proc_cpuinfo.common.cpu_part: 0xd0c
proc_cpuinfo.common.cpu_revision: 1
proc_cpuinfo.common.cpu_variant: 0x3
proc_cpuinfo.common.features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
proc_stat.btime: 1659535104
system.certificate_version: 3.2
system.default_locale: en_US.UTF-8
uname.machine: aarch64
uname.nodename: r9-arm
uname.release: 5.14.0-70.17.1.el9_0.aarch64
uname.sysname: Linux
uname.version: #1 SMP Tue Jun 14 11:43:56 EDT 2022
virt.host_type: Not Applicable
virt.is_guest: False

Comment 3 Richard W.M. Jones 2022-08-03 18:06:03 UTC
This is fixed (as in, I added a test only) in:

http://git.annexia.org/?p=virt-what.git;a=commitdiff;h=54b726fa7c9687b692162488e8934a426f9fa6c3

So I should note a few things.  Firstly upstream virt-what did actually
detect GCE just fine.  It prints:

# virt-what
google_cloud

GCE isn't KVM!  It's their own thing.  I suspect it might even be baremetal.

However the version of virt-what in RHEL 9.0 is not very up to date
and doesn't have this check.  This was fixed by the rebase in RHEL 9.1
(bug 2074476).  I upgraded your GCE instance to virt-what-1.22-1.el9.aarch64
and detection now works there.

If a fix is required for RHEL 9.0 you will need to go through the usual
z-stream steps.

Comment 4 YongkuiGuo 2022-08-08 04:44:19 UTC
(In reply to Richard W.M. Jones from comment #3)
> This is fixed (as in, I added a test only) in:
> 
> http://git.annexia.org/?p=virt-what.git;a=commitdiff;
> h=54b726fa7c9687b692162488e8934a426f9fa6c3
> 
> So I should note a few things.  Firstly upstream virt-what did actually
> detect GCE just fine.  It prints:
> 
> # virt-what
> google_cloud
> 
> GCE isn't KVM!  It's their own thing.  I suspect it might even be baremetal.
> 
> However the version of virt-what in RHEL 9.0 is not very up to date
> and doesn't have this check.  This was fixed by the rebase in RHEL 9.1
> (bug 2074476).  I upgraded your GCE instance to virt-what-1.22-1.el9.aarch64
> and detection now works there.
> 
Hi rjones,

I tested in the RHEL9.1 aarch64 VM on GCE, and indeed the virt-what output is only 'google_cloud'.

[root@wshi-aarch64 ~]# virt-what
google_cloud
[root@wshi-aarch64 ~]# /usr/libexec/virt-what-cpuid-helper
[root@wshi-aarch64 ~]
[root@wshi-aarch64 ~]# rpm -q virt-what
virt-what-1.22-1.el9.aarch64


But the dmesg command prints the next line:

[    0.000000] smccc: KVM: hypervisor services detected (0x00000000 0x00000000 0x00000000 0x00000003)

So it seems like the hypervisor is KVM.

Comment 6 Richard W.M. Jones 2022-08-08 09:22:20 UTC
Does /proc/device-tree/hypervisor/compatible exist and what does it contain?

Comment 7 Richard W.M. Jones 2022-08-08 12:07:28 UTC
Because this is RHEL/aarch64, /proc/device-tree doesn't exist at all.

Because it's aarch64 there is no CPUID (or equivalent?)

I'm not sure if there is a good equivalent way to find out if KVM is
being used underneath on RHEL/aarch64.

Comment 13 Richard W.M. Jones 2022-08-08 16:20:15 UTC
Fixed in:
http://git.annexia.org/?p=virt-what.git;a=commitdiff;h=da3568b25a582603ba15690793c8867cc7c5d2a8

Note that we now print the following, because this *is* KVM-based:

# virt-what
google_cloud
kvm

Comment 17 YongkuiGuo 2022-08-11 08:05:24 UTC
Tested on GCE aarch64 env:

[root@wshi-aarch64 cloud-user]# virt-what
google_cloud
kvm
[root@wshi-aarch64 cloud-user]# rpm -q virt-what
virt-what-1.22-2.el9.aarch64

Comment 21 YongkuiGuo 2022-08-15 01:59:09 UTC
Verified this bug per comments 16 and 17.

Comment 23 errata-xmlrpc 2022-11-15 11:12:59 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (virt-what bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:8282