diff options
author | 2009-06-19 10:59:09 +0200 | |
---|---|---|
committer | 2009-06-21 10:13:32 +0200 | |
commit | 99bd0c0fc4b04da54cb311953ef9489931c19c63 (patch) | |
tree | eaa2f95cd53b6f0c676c44885099e746e20e3265 /include/linux/kernel.h | |
parent | mm: page_alloc: clear PG_locked before checking flags on free (diff) | |
download | wireguard-linux-99bd0c0fc4b04da54cb311953ef9489931c19c63.tar.xz wireguard-linux-99bd0c0fc4b04da54cb311953ef9489931c19c63.zip |
x86: Set cpu_llc_id on AMD CPUs
This counts when building sched domains in case NUMA information
is not available.
( See cpu_coregroup_mask() which uses llc_shared_map which in turn is
created based on cpu_llc_id. )
Currently Linux builds domains as follows:
(example from a dual socket quad-core system)
CPU0 attaching sched-domain:
domain 0: span 0-7 level CPU
groups: 0 1 2 3 4 5 6 7
...
CPU7 attaching sched-domain:
domain 0: span 0-7 level CPU
groups: 7 0 1 2 3 4 5 6
Ever since that is borked for multi-core AMD CPU systems.
This patch fixes that and now we get a proper:
CPU0 attaching sched-domain:
domain 0: span 0-3 level MC
groups: 0 1 2 3
domain 1: span 0-7 level CPU
groups: 0-3 4-7
...
CPU7 attaching sched-domain:
domain 0: span 4-7 level MC
groups: 7 4 5 6
domain 1: span 0-7 level CPU
groups: 4-7 0-3
This allows scheduler to assign tasks to cores on different sockets
(i.e. that don't share last level cache) for performance reasons.
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
LKML-Reference: <20090619085909.GJ5218@alberich.amd.com>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/kernel.h')
0 files changed, 0 insertions, 0 deletions