Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/uvm/pmap Don't kcpuset_clone every pmap_tlb_shootdown_by...
details: https://anonhg.NetBSD.org/src/rev/57e95b4ee643
branches: trunk
changeset: 974704:57e95b4ee643
user: skrll <skrll%NetBSD.org@localhost>
date: Sun Aug 09 06:26:49 2020 +0000
description:
Don't kcpuset_clone every pmap_tlb_shootdown_bystanders. Instead allocate
a kcpuset_t per cpu_info and use that.
diffstat:
sys/arch/mips/include/cpu.h | 3 ++-
sys/arch/mips/mips/cpu_subr.c | 5 +++--
sys/uvm/pmap/pmap_tlb.c | 11 +++++------
3 files changed, 10 insertions(+), 9 deletions(-)
diffs (82 lines):
diff -r d06bf9b03068 -r 57e95b4ee643 sys/arch/mips/include/cpu.h
--- a/sys/arch/mips/include/cpu.h Sun Aug 09 05:51:04 2020 +0000
+++ b/sys/arch/mips/include/cpu.h Sun Aug 09 06:26:49 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.129 2020/07/26 08:08:41 simonb Exp $ */
+/* $NetBSD: cpu.h,v 1.130 2020/08/09 06:26:49 skrll Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -151,6 +151,7 @@
#define CPUF_RUNNING 0x04 /* CPU is running */
#define CPUF_PAUSED 0x08 /* CPU is paused */
#define CPUF_USERPMAP 0x20 /* CPU has a user pmap activated */
+ kcpuset_t *ci_shootdowncpus;
kcpuset_t *ci_multicastcpus;
kcpuset_t *ci_watchcpus;
kcpuset_t *ci_ddbcpus;
diff -r d06bf9b03068 -r 57e95b4ee643 sys/arch/mips/mips/cpu_subr.c
--- a/sys/arch/mips/mips/cpu_subr.c Sun Aug 09 05:51:04 2020 +0000
+++ b/sys/arch/mips/mips/cpu_subr.c Sun Aug 09 06:26:49 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu_subr.c,v 1.56 2020/07/21 06:01:10 simonb Exp $ */
+/* $NetBSD: cpu_subr.c,v 1.57 2020/08/09 06:26:49 skrll Exp $ */
/*-
* Copyright (c) 2010, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.56 2020/07/21 06:01:10 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.57 2020/08/09 06:26:49 skrll Exp $");
#include "opt_cputype.h"
#include "opt_ddb.h"
@@ -291,6 +291,7 @@
*/
ipi_init(ci);
+ kcpuset_create(&ci->ci_shootdowncpus, true);
kcpuset_create(&ci->ci_multicastcpus, true);
kcpuset_create(&ci->ci_watchcpus, true);
kcpuset_create(&ci->ci_ddbcpus, true);
diff -r d06bf9b03068 -r 57e95b4ee643 sys/uvm/pmap/pmap_tlb.c
--- a/sys/uvm/pmap/pmap_tlb.c Sun Aug 09 05:51:04 2020 +0000
+++ b/sys/uvm/pmap/pmap_tlb.c Sun Aug 09 06:26:49 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_tlb.c,v 1.33 2020/04/14 05:43:57 skrll Exp $ */
+/* $NetBSD: pmap_tlb.c,v 1.34 2020/08/09 06:26:49 skrll Exp $ */
/*-
* Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.33 2020/04/14 05:43:57 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.34 2020/08/09 06:26:49 skrll Exp $");
/*
* Manages address spaces in a TLB.
@@ -643,8 +643,9 @@
UVMHIST_FUNC(__func__);
UVMHIST_CALLARGS(maphist, "pm %#jx", (uintptr_t)pm, 0, 0, 0);
- kcpuset_t *pm_active;
- kcpuset_clone(&pm_active, pm->pm_active);
+ const struct cpu_info * const ci = curcpu();
+ kcpuset_t *pm_active = ci->ci_shootdowncpus;
+ kcpuset_copy(pm_active, pm->pm_active);
kcpuset_remove(pm_active, cpu_tlb_info(curcpu())->ti_kcpuset);
const bool kernel_p = (pm == pmap_kernel());
bool ipi_sent = false;
@@ -719,8 +720,6 @@
TLBINFO_UNLOCK(ti);
}
- kcpuset_destroy(pm_active);
-
UVMHIST_LOG(maphist, " <-- done (ipi_sent=%jd)", ipi_sent, 0, 0, 0);
return ipi_sent;
Home |
Main Index |
Thread Index |
Old Index