From: Michal Privoznik <miso.privoznik(a)gmail.com>
The virNodeParseSocket() function tries to get socked ID from
'topology/physical_package_id' file. However, on some architectures
the file contains the -1 constant which makes in turn libvirt think
the info extraction was unsuccessful. If that's the case, we need to
overwrite the obtained integer with zero like we are doing for other
architectures.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
cfg.mk | 2 +-
src/nodeinfo.c | 6 ++++--
tests/nodeinfodata/linux-armv6l-raspberrypi.cpuinfo | 12 ++++++++++++
tests/nodeinfodata/linux-armv6l-raspberrypi.expected | 1 +
.../nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_id | 1 +
.../linux-raspberrypi/cpu/cpu0/topology/core_siblings | 1 +
.../linux-raspberrypi/cpu/cpu0/topology/core_siblings_list | 1 +
.../linux-raspberrypi/cpu/cpu0/topology/physical_package_id | 1 +
.../linux-raspberrypi/cpu/cpu0/topology/thread_siblings | 1 +
.../linux-raspberrypi/cpu/cpu0/topology/thread_siblings_list | 1 +
.../linux-raspberrypi/cpu/cpuidle/current_driver | 1 +
.../linux-raspberrypi/cpu/cpuidle/current_governor_ro | 1 +
tests/nodeinfodata/linux-raspberrypi/cpu/kernel_max | 1 +
tests/nodeinfodata/linux-raspberrypi/cpu/offline | 1 +
tests/nodeinfodata/linux-raspberrypi/cpu/online | 1 +
tests/nodeinfodata/linux-raspberrypi/cpu/possible | 1 +
tests/nodeinfodata/linux-raspberrypi/cpu/present | 1 +
tests/nodeinfotest.c | 1 +
18 files changed, 32 insertions(+), 3 deletions(-)
create mode 100644 tests/nodeinfodata/linux-armv6l-raspberrypi.cpuinfo
create mode 100644 tests/nodeinfodata/linux-armv6l-raspberrypi.expected
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_id
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings
create mode 100644
tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings_list
create mode 100644
tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/physical_package_id
create mode 100644
tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings
create mode 100644
tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings_list
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_driver
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_governor_ro
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/kernel_max
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/offline
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/online
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/possible
create mode 100644 tests/nodeinfodata/linux-raspberrypi/cpu/present
diff --git a/cfg.mk b/cfg.mk
index 1f07639..77409a3 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -1124,4 +1124,4 @@ exclude_file_name_regexp--sc_prohibit_mixed_case_abbreviations = \
^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
exclude_file_name_regexp--sc_prohibit_empty_first_line = \
-
^(README|daemon/THREADS\.txt|src/esx/README|docs/library.xen|tests/vmwareverdata/fusion-5.0.3.txt)$$
+
^(README|daemon/THREADS\.txt|src/esx/README|docs/library.xen|tests/vmwareverdata/fusion-5.0.3.txt|tests/nodeinfodata/linux-raspberrypi/cpu/offline)$$
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index 56690b8..4c96024 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -398,8 +398,10 @@ virNodeParseSocket(const char *dir,
if (arch == VIR_ARCH_PPC || arch == VIR_ARCH_PPCLE ||
arch == VIR_ARCH_PPC64 || arch == VIR_ARCH_PPC64LE ||
arch == VIR_ARCH_PPCEMB ||
- arch == VIR_ARCH_S390 || arch == VIR_ARCH_S390X) {
- /* ppc and s390(x) has -1 */
+ arch == VIR_ARCH_S390 || arch == VIR_ARCH_S390X ||
+ arch == VIR_ARCH_ARMV6L || arch == VIR_ARCH_ARMV7L ||
+ arch == VIR_ARCH_ARMV7B || arch == VIR_ARCH_AARCH64) {
+ /* arm, ppc and s390(x) has -1 */
if (ret < 0)
ret = 0;
}
diff --git a/tests/nodeinfodata/linux-armv6l-raspberrypi.cpuinfo
b/tests/nodeinfodata/linux-armv6l-raspberrypi.cpuinfo
new file mode 100644
index 0000000..8857da0
--- /dev/null
+++ b/tests/nodeinfodata/linux-armv6l-raspberrypi.cpuinfo
@@ -0,0 +1,12 @@
+Processor : ARMv6-compatible processor rev 7 (v6l)
+BogoMIPS : 697.95
+Features : swp half thumb fastmult vfp edsp java tls
+CPU implementer : 0x41
+CPU architecture: 7
+CPU variant : 0x0
+CPU part : 0xb76
+CPU revision : 7
+
+Hardware : BCM2708
+Revision : 1000003
+Serial : 000000008fbfc895
diff --git a/tests/nodeinfodata/linux-armv6l-raspberrypi.expected
b/tests/nodeinfodata/linux-armv6l-raspberrypi.expected
new file mode 100644
index 0000000..146bd07
--- /dev/null
+++ b/tests/nodeinfodata/linux-armv6l-raspberrypi.expected
@@ -0,0 +1 @@
+CPUs: 1/1, MHz: 697, Nodes: 1, Sockets: 1, Cores: 1, Threads: 1
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_id
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_id
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings_list
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings_list
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/core_siblings_list
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/physical_package_id
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/physical_package_id
new file mode 100644
index 0000000..3a2e3f4
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/physical_package_id
@@ -0,0 +1 @@
+-1
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings
@@ -0,0 +1 @@
+1
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings_list
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings_list
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpu0/topology/thread_siblings_list
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_driver
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_driver
new file mode 100644
index 0000000..621e94f
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_driver
@@ -0,0 +1 @@
+none
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_governor_ro
b/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_governor_ro
new file mode 100644
index 0000000..c35a724
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/cpuidle/current_governor_ro
@@ -0,0 +1 @@
+menu
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/kernel_max
b/tests/nodeinfodata/linux-raspberrypi/cpu/kernel_max
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/kernel_max
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/offline
b/tests/nodeinfodata/linux-raspberrypi/cpu/offline
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/offline
@@ -0,0 +1 @@
+
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/online
b/tests/nodeinfodata/linux-raspberrypi/cpu/online
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/online
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/possible
b/tests/nodeinfodata/linux-raspberrypi/cpu/possible
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/possible
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfodata/linux-raspberrypi/cpu/present
b/tests/nodeinfodata/linux-raspberrypi/cpu/present
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/nodeinfodata/linux-raspberrypi/cpu/present
@@ -0,0 +1 @@
+0
diff --git a/tests/nodeinfotest.c b/tests/nodeinfotest.c
index 650a674..3c76e5d 100644
--- a/tests/nodeinfotest.c
+++ b/tests/nodeinfotest.c
@@ -245,6 +245,7 @@ mymain(void)
{"test6", VIR_ARCH_X86_64},
{"test7", VIR_ARCH_X86_64},
{"test8", VIR_ARCH_X86_64},
+ {"raspberrypi", VIR_ARCH_ARMV6L},
};
if (virInitialize() < 0)
--
1.8.5.5