diff options
author | Cliff Wickman <cpw@sgi.com> | 2010-06-02 17:22:02 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-06-08 15:13:48 -0400 |
commit | 450a007eebaf430426ea8f89bbc3f287949905b2 (patch) | |
tree | bb44fa25f4855f82e84a788bbdb8cda5a05a7a4f /arch/x86/include | |
parent | 7fba1bcd4844a4a8619a03bf51cabc92aea365a8 (diff) |
x86, UV: BAU broadcast to the local hub
Make the Broadcast Assist Unit driver use the BAU for TLB
shootdowns of cpu's on the local uvhub.
It was previously thought that IPI might be faster to the cpu's
on the local hub. But the IPI operation would have to follow
the completion of the BAU broadcast anyway. So we broadcast to
the local uvhub in all cases except when the current cpu was the
only local cpu in the mask.
This simplifies uv_flush_send_and_wait() in that it returns
either all shootdowns complete, or none.
Adjust the statistics to account for shootdowns on the local
uvhub.
Signed-off-by: Cliff Wickman <cpw@sgi.com>
Cc: gregkh@suse.de
LKML-Reference: <E1OJvNy-0004aq-G7@eag09.americas.sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include')
-rw-r--r-- | arch/x86/include/asm/uv/uv_bau.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h index c19b870ea58a..7f6ea611cb71 100644 --- a/arch/x86/include/asm/uv/uv_bau.h +++ b/arch/x86/include/asm/uv/uv_bau.h | |||
@@ -346,6 +346,11 @@ struct ptc_stats { | |||
346 | unsigned long s_time; /* time spent in sending side */ | 346 | unsigned long s_time; /* time spent in sending side */ |
347 | unsigned long s_retriesok; /* successful retries */ | 347 | unsigned long s_retriesok; /* successful retries */ |
348 | unsigned long s_ntargcpu; /* total number of cpu's targeted */ | 348 | unsigned long s_ntargcpu; /* total number of cpu's targeted */ |
349 | unsigned long s_ntargself; /* times the sending cpu was targeted */ | ||
350 | unsigned long s_ntarglocals; /* targets of cpus on the local blade */ | ||
351 | unsigned long s_ntargremotes; /* targets of cpus on remote blades */ | ||
352 | unsigned long s_ntarglocaluvhub; /* targets of the local hub */ | ||
353 | unsigned long s_ntargremoteuvhub; /* remotes hubs targeted */ | ||
349 | unsigned long s_ntarguvhub; /* total number of uvhubs targeted */ | 354 | unsigned long s_ntarguvhub; /* total number of uvhubs targeted */ |
350 | unsigned long s_ntarguvhub16; /* number of times target hubs >= 16*/ | 355 | unsigned long s_ntarguvhub16; /* number of times target hubs >= 16*/ |
351 | unsigned long s_ntarguvhub8; /* number of times target hubs >= 8 */ | 356 | unsigned long s_ntarguvhub8; /* number of times target hubs >= 8 */ |