qemu/include
Daniel Henrique Barboza e0eb84d4f5 spapr_numa.c: FORM2 NUMA affinity support
The main feature of FORM2 affinity support is the separation of NUMA
distances from ibm,associativity information. This allows for a more
flexible and straightforward NUMA distance assignment without relying on
complex associations between several levels of NUMA via
ibm,associativity matches. Another feature is its extensibility. This base
support contains the facilities for NUMA distance assignment, but in the
future more facilities will be added for latency, performance, bandwidth
and so on.

This patch implements the base FORM2 affinity support as follows:

- the use of FORM2 associativity is indicated by using bit 2 of byte 5
of ibm,architecture-vec-5. A FORM2 aware guest can choose to use FORM1
or FORM2 affinity. Setting both forms will default to FORM2. We're not
advertising FORM2 for pseries-6.1 and older machine versions to prevent
guest visible changes in those;

- ibm,associativity-reference-points has a new semantic. Instead of
being used to calculate distances via NUMA levels, it's now used to
indicate the primary domain index in the ibm,associativity domain of
each resource. In our case it's set to {0x4}, matching the position
where we already place logical_domain_id;

- two new RTAS DT artifacts are introduced: ibm,numa-lookup-index-table
and ibm,numa-distance-table. The index table is used to list all the
NUMA logical domains of the platform, in ascending order, and allows for
spartial NUMA configurations (although QEMU ATM doesn't support that).
ibm,numa-distance-table is an array that contains all the distances from
the first NUMA node to all other nodes, then the second NUMA node
distances to all other nodes and so on;

- get_max_dist_ref_points(), get_numa_assoc_size() and get_associativity()
now checks for OV5_FORM2_AFFINITY and returns FORM2 values if the guest
selected FORM2 affinity during CAS.

Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210920174947.556324-7-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-09-30 12:26:06 +10:00
..
authz Prefer 'on' | 'off' over 'yes' | 'no' for bool options 2021-01-29 17:07:53 +00:00
block hw/nvme: fix verification of select field in namespace attachment 2021-09-24 08:43:52 +02:00
chardev chardev: add some comments about the class methods 2021-09-14 16:57:11 +04:00
crypto crypto: Make QCryptoTLSCreds* structures private 2021-06-29 18:30:24 +01:00
disas Drop the deprecated lm32 target 2021-05-12 18:20:25 +02:00
exec include/exec: Move cpu_signal_handler declaration 2021-09-21 19:36:44 -07:00
fpu Remove leading underscores from QEMU defines 2021-06-21 05:49:01 +02:00
hw spapr_numa.c: FORM2 NUMA affinity support 2021-09-30 12:26:06 +10:00
io io: add qio_channel_readv_full_all_eof & qio_channel_readv_full_all helpers 2021-02-10 09:23:28 +00:00
libdecnumber include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
migration vfio: Support for RamDiscardManager in the vIOMMU case 2021-07-08 15:54:45 -04:00
monitor monitor: allow register hmp commands 2021-07-09 18:21:33 +02:00
net vhost_net: do not assume nvqs is always 2 2021-09-04 17:34:05 -04:00
qapi qapi: introduce forwarding visitor 2021-07-23 18:17:17 +02:00
qemu host-utils: introduce uabs64() 2021-09-29 19:37:38 +10:00
qom qom: export more functions for use with non-UserCreatable objects 2021-07-06 08:33:51 +02:00
scsi scsi: inline sg_io_sense_from_errno() into the callers. 2021-03-06 11:42:56 +01:00
semihosting semihosting: Move include/hw/semihosting/ -> include/semihosting/ 2021-03-10 15:34:12 +00:00
standard-headers linux-headers: Update 2021-07-09 11:01:06 +10:00
sysemu arm/hvf: Add a WFI handler 2021-09-21 16:28:26 +01:00
tcg tcg: Remove tcg_global_reg_new defines 2021-09-14 12:00:20 -07:00
ui ui/gtk-egl: Wait for the draw signal for dmabuf blobs 2021-09-15 08:41:59 +02:00
user Remove leading underscores from QEMU defines 2021-06-21 05:49:01 +02:00
elf.h linux-user: elf: s390x: Prepare for Vector enhancements facility 2021-06-21 08:48:21 +02:00
glib-compat.h configure: bump min required glib version to 2.56 2021-06-02 09:11:32 +02:00
qemu-common.h qemu-common.h: Update copyright string to 2021 2021-03-09 22:19:24 +01:00
qemu-io.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
trace-tcg.h