From: Frantisek Sumsal Date: Wed, 1 Mar 2023 12:57:03 +0000 (+0100) Subject: virt: correctly detect QEMU emulated pSeries guests X-Git-Tag: v254-rc1~1136 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c7a6c742afef9284d5c06fc285cf66306cbce31;p=thirdparty%2Fsystemd.git virt: correctly detect QEMU emulated pSeries guests Resolves: #26629 --- diff --git a/src/basic/virt.c b/src/basic/virt.c index c2eae4c52d2..ca3edaf3b54 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -102,6 +102,7 @@ static Virtualization detect_vm_device_tree(void) { r = read_one_line_file("/proc/device-tree/hypervisor/compatible", &hvtype); if (r == -ENOENT) { _cleanup_closedir_ DIR *dir = NULL; + _cleanup_free_ char *compat = NULL; if (access("/proc/device-tree/ibm,partition-name", F_OK) == 0 && access("/proc/device-tree/hmc-managed?", F_OK) == 0 && @@ -123,6 +124,14 @@ static Virtualization detect_vm_device_tree(void) { return VIRTUALIZATION_QEMU; } + r = read_one_line_file("/proc/device-tree/compatible", &compat); + if (r < 0 && r != -ENOENT) + return r; + if (r >= 0 && streq(compat, "qemu,pseries")) { + log_debug("Virtualization %s found in /proc/device-tree/compatible", compat); + return VIRTUALIZATION_QEMU; + } + log_debug("No virtualization found in /proc/device-tree/*"); return VIRTUALIZATION_NONE; } else if (r < 0)