Daniel Henrique Barboza 0137bf0dab virhostcpu.c: fix 'die_id' parsing for Power hosts
Commit 7b79ee2f78 makes assumptions about die_id parsing in
the sysfs that aren't true for Power hosts. In both Power8
and Power9, running 5.6 and 4.18 kernel respectively,
'die_id' is set to -1:

$ cat /sys/devices/system/cpu/cpu0/topology/die_id
-1

This breaks virHostCPUGetDie() parsing because it is trying to
retrieve an unsigned integer, causing problems during VM start:

virFileReadValueUint:4128 : internal error: Invalid unsigned integer
value '-1' in file '/sys/devices/system/cpu/cpu0/topology/die_id'

This isn't necessarily a PowerPC only behavior. Linux kernel commit
0e344d8c70 added in the former Documentation/cputopology.txt, now
Documentation/admin-guide/cputopology.rst, that:

  To be consistent on all architectures, include/linux/topology.h
  provides default definitions for any of the above macros that are
  not defined by include/asm-XXX/topology.h:

  1) topology_physical_package_id: -1
  2) topology_die_id: -1
  (...)

This means that it might be expected that an architecture that
does not implement the die_id element will mark it as -1 in
sysfs.

It is not required to change die_id implementation from uInt to
Int because of that. Instead, let's change the parsing of the
die_id in virHostCPUGetDie() to read an integer value and, in
case it's -1, default it to zero like in case of file not found.
This is enough to solve the issue Power hosts are experiencing.

Fixes: 7b79ee2f78bbf2af76df2f6466919e19ae05aeeb
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2020-03-17 10:07:22 +01:00
..
2020-02-24 23:15:49 +01:00
2020-01-30 12:32:03 +01:00
2019-10-16 12:06:44 +02:00
2020-02-24 20:25:48 +01:00
2019-10-16 12:06:44 +02:00
2019-11-15 12:58:00 +01:00
2020-02-03 19:44:38 +01:00
2020-02-03 19:44:38 +01:00
2019-10-16 12:06:44 +02:00
2019-11-12 17:54:01 +01:00
2020-03-13 17:26:55 +01:00
2020-03-13 17:26:55 +01:00
2020-02-24 23:15:49 +01:00
2019-10-16 12:06:44 +02:00
2020-02-24 23:15:49 +01:00
2020-02-24 17:25:07 +00:00
2020-02-24 17:25:07 +00:00
2019-12-12 14:24:35 +01:00
2020-02-24 20:25:48 +01:00
2020-02-24 23:15:49 +01:00
2019-10-16 12:06:44 +02:00
2020-02-24 23:15:50 +01:00
2019-12-17 10:04:43 +01:00
2020-02-02 16:36:58 +01:00
2020-03-13 17:26:55 +01:00
2020-02-24 23:15:50 +01:00
2020-02-03 19:44:38 +01:00
2020-02-24 23:15:49 +01:00
2020-02-24 23:15:50 +01:00
2020-02-24 23:15:49 +01:00
2019-10-16 12:06:44 +02:00
2020-02-02 16:36:58 +01:00
2019-10-16 12:06:44 +02:00
2020-03-05 12:23:02 +00:00
2020-01-07 16:40:41 +01:00
2020-02-24 23:15:49 +01:00
2020-02-24 23:15:49 +01:00
2019-10-16 12:06:44 +02:00
2020-02-24 23:15:49 +01:00