mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
dtrace_gethrtime_init: pin to master while examining other CPUs
Also use pc_cpumask to be future-friendly. Reviewed by: jhb MFC after: 2 weeks
This commit is contained in:
parent
0e777d8457
commit
7becfa95b9
2 changed files with 10 additions and 8 deletions
|
|
@ -405,6 +405,7 @@ dtrace_gethrtime_init_cpu(void *arg)
|
|||
static void
|
||||
dtrace_gethrtime_init(void *arg)
|
||||
{
|
||||
struct pcpu *pc;
|
||||
uint64_t tsc_f;
|
||||
cpumask_t map;
|
||||
int i;
|
||||
|
|
@ -437,15 +438,14 @@ dtrace_gethrtime_init(void *arg)
|
|||
nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f;
|
||||
|
||||
/* The current CPU is the reference one. */
|
||||
sched_pin();
|
||||
tsc_skew[curcpu] = 0;
|
||||
|
||||
CPU_FOREACH(i) {
|
||||
if (i == curcpu)
|
||||
continue;
|
||||
|
||||
map = 0;
|
||||
map |= (1 << curcpu);
|
||||
map |= (1 << i);
|
||||
pc = pcpu_find(i);
|
||||
map = PCPU_GET(cpumask) | pc->pc_cpumask;
|
||||
|
||||
smp_rendezvous_cpus(map, dtrace_gethrtime_init_sync,
|
||||
dtrace_gethrtime_init_cpu,
|
||||
|
|
@ -453,6 +453,7 @@ dtrace_gethrtime_init(void *arg)
|
|||
|
||||
tsc_skew[i] = tgt_cpu_tsc - hst_cpu_tsc;
|
||||
}
|
||||
sched_unpin();
|
||||
}
|
||||
|
||||
SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL);
|
||||
|
|
|
|||
|
|
@ -405,6 +405,7 @@ dtrace_gethrtime_init_cpu(void *arg)
|
|||
static void
|
||||
dtrace_gethrtime_init(void *arg)
|
||||
{
|
||||
struct pcpu *pc;
|
||||
uint64_t tsc_f;
|
||||
cpumask_t map;
|
||||
int i;
|
||||
|
|
@ -437,15 +438,14 @@ dtrace_gethrtime_init(void *arg)
|
|||
nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f;
|
||||
|
||||
/* The current CPU is the reference one. */
|
||||
sched_pin();
|
||||
tsc_skew[curcpu] = 0;
|
||||
|
||||
CPU_FOREACH(i) {
|
||||
if (i == curcpu)
|
||||
continue;
|
||||
|
||||
map = 0;
|
||||
map |= (1 << curcpu);
|
||||
map |= (1 << i);
|
||||
pc = pcpu_find(i);
|
||||
map = PCPU_GET(cpumask) | pc->pc_cpumask;
|
||||
|
||||
smp_rendezvous_cpus(map, dtrace_gethrtime_init_sync,
|
||||
dtrace_gethrtime_init_cpu,
|
||||
|
|
@ -453,6 +453,7 @@ dtrace_gethrtime_init(void *arg)
|
|||
|
||||
tsc_skew[i] = tgt_cpu_tsc - hst_cpu_tsc;
|
||||
}
|
||||
sched_unpin();
|
||||
}
|
||||
|
||||
SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL);
|
||||
|
|
|
|||
Loading…
Reference in a new issue