From: Yongkui Guo Date: Mon, 30 Jan 2023 10:20:32 +0000 (+0800) Subject: Add support for Alibaba cloud on aarch64 X-Git-Url: http://git.annexia.org/?p=virt-what.git;a=commitdiff_plain;h=805604762468b754ea60e5dc176fa26f68d211b8 Add support for Alibaba cloud on aarch64 This assumes you are running RHEL or another tenant which supports ACPI. It probably won't work for guests using device tree. Also we assume that the hypervisor is KVM. Since the hypervisor indicates that it is RHEL 7, this is very likely to be true, but hard to prove since there is no CPUID on Arm. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2165285 --- diff --git a/configure.ac b/configure.ac index 3a875c0..a28a716 100644 --- a/configure.ac +++ b/configure.ac @@ -34,6 +34,7 @@ AM_CONDITIONAL([HOST_CPU_IA64], [ test "x$host_cpu" = "xia64" ]) dnl List of tests. tests="\ + alibaba-cloud-arm \ alibaba-cloud-x86 \ aws-baremetal-x86 \ aws-kvm-arm \ @@ -84,6 +85,7 @@ AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([virt-what],[chmod +x virt-what]) AC_CONFIG_FILES([Makefile tests/Makefile + tests/alibaba-cloud-arm/Makefile tests/alibaba-cloud-x86/Makefile tests/aws-baremetal-x86/Makefile tests/aws-kvm-arm/Makefile diff --git a/tests/alibaba-cloud-arm/Makefile.am b/tests/alibaba-cloud-arm/Makefile.am new file mode 100644 index 0000000..09ce078 --- /dev/null +++ b/tests/alibaba-cloud-arm/Makefile.am @@ -0,0 +1,28 @@ +# Makefile for virt-what +# Copyright (C) 2008-2023 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +CLEANFILES = *~ + +TESTS = test.sh + +EXTRA_DIST = \ + test.sh \ + proc/cpuinfo \ + proc/self/status \ + sbin/dmidecode \ + sbin/uname \ + sbin/virt-what-cpuid-helper diff --git a/tests/alibaba-cloud-arm/proc/cpuinfo b/tests/alibaba-cloud-arm/proc/cpuinfo new file mode 100644 index 0000000..03dbb22 --- /dev/null +++ b/tests/alibaba-cloud-arm/proc/cpuinfo @@ -0,0 +1,18 @@ +processor : 0 +BogoMIPS : 50.00 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x3 +CPU part : 0xd0c +CPU revision : 1 + +processor : 1 +BogoMIPS : 50.00 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x3 +CPU part : 0xd0c +CPU revision : 1 + diff --git a/tests/alibaba-cloud-arm/proc/self/status b/tests/alibaba-cloud-arm/proc/self/status new file mode 100644 index 0000000..08c63e9 --- /dev/null +++ b/tests/alibaba-cloud-arm/proc/self/status @@ -0,0 +1,57 @@ +Name: cat +Umask: 0022 +State: R (running) +Tgid: 6341 +Ngid: 0 +Pid: 6341 +PPid: 1588 +TracerPid: 0 +Uid: 0 0 0 0 +Gid: 0 0 0 0 +FDSize: 256 +Groups: 0 +NStgid: 6341 +NSpid: 6341 +NSpgid: 6341 +NSsid: 1588 +VmPeak: 2352 kB +VmSize: 2352 kB +VmLck: 0 kB +VmPin: 0 kB +VmHWM: 768 kB +VmRSS: 768 kB +RssAnon: 80 kB +RssFile: 688 kB +RssShmem: 0 kB +VmData: 348 kB +VmStk: 132 kB +VmExe: 24 kB +VmLib: 1728 kB +VmPTE: 44 kB +VmSwap: 0 kB +HugetlbPages: 0 kB +CoreDumping: 0 +THP_enabled: 1 +Threads: 1 +SigQ: 0/29002 +SigPnd: 0000000000000000 +ShdPnd: 0000000000000000 +SigBlk: 0000000000000000 +SigIgn: 0000000000000000 +SigCgt: 0000000000000000 +CapInh: 0000000000000000 +CapPrm: 000001ffffffffff +CapEff: 000001ffffffffff +CapBnd: 000001ffffffffff +CapAmb: 0000000000000000 +NoNewPrivs: 0 +Seccomp: 0 +Seccomp_filters: 0 +Speculation_Store_Bypass: thread vulnerable +SpeculationIndirectBranch: unknown +Cpus_allowed: 3 +Cpus_allowed_list: 0-1 +Mems_allowed: 00000000,00000001 +Mems_allowed_list: 0 +voluntary_ctxt_switches: 0 +nonvoluntary_ctxt_switches: 0 diff --git a/tests/alibaba-cloud-arm/sbin/dmidecode b/tests/alibaba-cloud-arm/sbin/dmidecode new file mode 100755 index 0000000..89fa9a3 --- /dev/null +++ b/tests/alibaba-cloud-arm/sbin/dmidecode @@ -0,0 +1,116 @@ +#!/bin/sh - +cat <<'EOF' +# dmidecode 3.3 +Getting SMBIOS data from sysfs. +SMBIOS 3.0.0 present. +Table at 0x2348C0000. + +Handle 0x0100, DMI type 1, 27 bytes +System Information + Manufacturer: Alibaba Cloud + Product Name: Alibaba Cloud ECS + Version: virt-rhel7.6.0 + Serial Number: 8c43355a-242e-42c2-bdf7-9fae99316221 + UUID: 8c43355a-242e-42c2-bdf7-9fae99316221 + Wake-up Type: Power Switch + SKU Number: Not Specified + Family: Red Hat Enterprise Linux + +Handle 0x0300, DMI type 3, 21 bytes +Chassis Information + Manufacturer: Alibaba Cloud + Type: Other + Lock: Not Present + Version: virt-rhel7.6.0 + 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 + Contained Elements: 0 + +Handle 0x0400, DMI type 4, 42 bytes +Processor Information + Socket Designation: CPU 0 + Type: Central Processor + Family: Other + Manufacturer: Alibaba Cloud + ID: 00 00 00 00 00 00 00 00 + Version: virt-rhel7.6.0 + Voltage: Unknown + External Clock: Unknown + Max Speed: 2000 MHz + Current Speed: 2000 MHz + Status: Populated, Enabled + Upgrade: Other + L1 Cache Handle: Not Provided + L2 Cache Handle: Not Provided + L3 Cache Handle: Not Provided + Serial Number: Not Specified + Asset Tag: Not Specified + Part Number: Not Specified + Core Count: 2 + Core Enabled: 2 + Thread Count: 1 + Characteristics: None + +Handle 0x1000, DMI type 16, 23 bytes +Physical Memory Array + Location: Other + Use: System Memory + Error Correction Type: Multi-bit ECC + Maximum Capacity: 8 GB + Error Information Handle: Not Provided + Number Of Devices: 1 + +Handle 0x1100, DMI type 17, 40 bytes +Memory Device + Array Handle: 0x1000 + Error Information Handle: Not Provided + Total Width: Unknown + Data Width: Unknown + Size: 8 GB + Form Factor: DIMM + Set: None + Locator: DIMM 0 + Bank Locator: Not Specified + Type: RAM + Type Detail: Other + Speed: Unknown + Manufacturer: Alibaba Cloud + Serial Number: Not Specified + Asset Tag: Not Specified + Part Number: Not Specified + Rank: Unknown + Configured Memory Speed: Unknown + Minimum Voltage: Unknown + Maximum Voltage: Unknown + Configured Voltage: Unknown + +Handle 0x2000, DMI type 32, 11 bytes +System Boot Information + Status: No errors detected + +Handle 0x0000, DMI type 0, 26 bytes +BIOS Information + Vendor: EFI Development Kit II / OVMF + Version: 0.0.0 + Release Date: 02/06/2015 + Address: 0xE8000 + Runtime Size: 96 kB + ROM Size: 64 kB + Characteristics: + BIOS characteristics not supported + Targeted content distribution is supported + UEFI is supported + System is a virtual machine + BIOS Revision: 0.0 + +Handle 0xFEFF, DMI type 127, 4 bytes +End Of Table + +EOF diff --git a/tests/alibaba-cloud-arm/sbin/uname b/tests/alibaba-cloud-arm/sbin/uname new file mode 100755 index 0000000..bd33a2d --- /dev/null +++ b/tests/alibaba-cloud-arm/sbin/uname @@ -0,0 +1,2 @@ +#!/bin/sh - +echo aarch64 diff --git a/tests/alibaba-cloud-arm/sbin/virt-what-cpuid-helper b/tests/alibaba-cloud-arm/sbin/virt-what-cpuid-helper new file mode 100755 index 0000000..08e2934 --- /dev/null +++ b/tests/alibaba-cloud-arm/sbin/virt-what-cpuid-helper @@ -0,0 +1,3 @@ +#!/bin/sh - +# Arm, so no cpuid. +# No output, exits with 0. diff --git a/tests/alibaba-cloud-arm/test.sh b/tests/alibaba-cloud-arm/test.sh new file mode 100755 index 0000000..1e73609 --- /dev/null +++ b/tests/alibaba-cloud-arm/test.sh @@ -0,0 +1,33 @@ +# Test for Alibaba Cloud +# Copyright (C) 2018-2023 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)" +expected="alibaba_cloud +kvm" + +if [ "$output" != "$expected" ]; then + echo "$0: test failed because output did not match expected" + echo "Expected output was:" + echo "----------------------------------------" + echo "$expected" + echo "----------------------------------------" + echo "But the actual output of the program was:" + echo "----------------------------------------" + echo "$output" + echo "----------------------------------------" + exit 1 +fi diff --git a/virt-what.in b/virt-what.in index 1a1101d..01e9aca 100644 --- a/virt-what.in +++ b/virt-what.in @@ -354,6 +354,11 @@ if ! "$skip_qemu_kvm"; then # This is for AWS Graviton (Arm) systems which don't have CPUID. echo kvm skip_lkvm=true + elif echo "$dmi" | grep -q 'Manufacturer: Alibaba Cloud' && + echo "$dmi" | grep -q 'System is a virtual machine'; then + # This is for Alibaba Arm systems which don't have CPUID. + echo kvm + skip_lkvm=true elif echo "$dmi" | grep -q 'Manufacturer: QEMU'; then # The test for KVM above failed, so now we know we're # not using KVM acceleration.