summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sysctl.c
diff options
context:
space:
mode:
authormjg <mjg@FreeBSD.org>2017-12-31 03:06:29 +0000
committerLuiz Souza <luiz@netgate.com>2018-02-21 15:15:33 -0300
commit2546f9b8e48cef95bc882b68d42e05ca3f33078d (patch)
tree1ca675983c2ea928aeb45af42d4902ae56e8cf0a /sys/kern/kern_sysctl.c
parent4fdf0fa3bcd504bb021d3d74993bae954a87fc11 (diff)
downloadFreeBSD-src-2546f9b8e48cef95bc882b68d42e05ca3f33078d.zip
FreeBSD-src-2546f9b8e48cef95bc882b68d42e05ca3f33078d.tar.gz
MFC r323234,r323305,r323306,r324044:
Start annotating global _padalign locks with __exclusive_cache_line While these locks are guarnteed to not share their respective cache lines, their current placement leaves unnecessary holes in lines which preceeded them. For instance the annotation of vm_page_queue_free_mtx allows 2 neighbour cachelines (previously separate by the lock) to be collapsed into 1. The annotation is only effective on architectures which have it implemented in their linker script (currently only amd64). Thus locks are not converted to their not-padaligned variants as to not affect the rest. ============= Annotate global process locks with __exclusive_cache_line ============= Annotate Giant with __exclusive_cache_line ============= Annotate sysctlmemlock with __exclusive_cache_line. (cherry picked from commit dc9eed165c25d9af290b93f577ad7ac9d7b3788c)
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r--sys/kern/kern_sysctl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index 829f955..6182615 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -88,7 +88,7 @@ static MALLOC_DEFINE(M_SYSCTLTMP, "sysctltmp", "sysctl temp output buffer");
* sysctl requests larger than a single page via an exclusive lock.
*/
static struct rmlock sysctllock;
-static struct sx sysctlmemlock;
+static struct sx __exclusive_cache_line sysctlmemlock;
#define SYSCTL_WLOCK() rm_wlock(&sysctllock)
#define SYSCTL_WUNLOCK() rm_wunlock(&sysctllock)
OpenPOWER on IntegriCloud