Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jan 2006 13:14:03 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        Joseph Koshy <joseph.koshy@gmail.com>
Cc:        freebsd-sparc64@freebsd.org
Subject:   Re: Command to start and stop a cpu
Message-ID:  <200601171314.05251.jhb@freebsd.org>
In-Reply-To: <84dead720601170928r567711d3t31cd297acb755989@mail.gmail.com>
References:  <20060116185354.GA22674@SDF.LONESTAR.ORG> <200601171206.48133.jhb@freebsd.org> <84dead720601170928r567711d3t31cd297acb755989@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 17 January 2006 12:28, Joseph Koshy wrote:
> > I think that is x86-only though.  I don't think there is
> > support for that on sparc64.
>
> SCHED_4BSD uses hlt_cpus_mask.

Yes, but only i386 and amd64 actually set it and use it to keep CPUs idle:

% kgrep hlt_cpus_mask
amd64/amd64/mp_machdep.c:       mask = hlt_cpus_mask;
amd64/amd64/mp_machdep.c:       hlt_cpus_mask = mask;
amd64/amd64/mp_machdep.c:               hlt_cpus_mask |= logical_cpus_mask;
amd64/amd64/mp_machdep.c:               hlt_cpus_mask &= ~logical_cpus_mask;
amd64/amd64/mp_machdep.c:               hlt_cpus_mask |= hyperthreading_cpus_mask;
amd64/amd64/mp_machdep.c:       if ((hlt_cpus_mask & all_cpus) == all_cpus)
amd64/amd64/mp_machdep.c:               hlt_cpus_mask &= ~(1<<0);
amd64/amd64/mp_machdep.c:               hlt_cpus_mask &= ~hyperthreading_cpus_mask;
amd64/amd64/mp_machdep.c:               hlt_cpus_mask |= hyperthreading_cpus_mask;
amd64/amd64/mp_machdep.c:           (hlt_cpus_mask & logical_cpus_mask) == logical_cpus_mask)
amd64/amd64/mp_machdep.c:       if ((hlt_cpus_mask & all_cpus) == all_cpus)
amd64/amd64/mp_machdep.c:               hlt_cpus_mask &= ~(1<<0);
amd64/amd64/mp_machdep.c:                       hlt_cpus_mask |= logical_cpus_mask;
amd64/amd64/mp_machdep.c:                               hlt_cpus_mask |= hyperthreading_cpus_mask;
amd64/amd64/mp_machdep.c:       retval = mask & hlt_cpus_mask;
amd64/amd64/mp_machdep.c:       while (mask & hlt_cpus_mask)
i386/i386/mp_machdep.c: mask = hlt_cpus_mask;
i386/i386/mp_machdep.c: hlt_cpus_mask = mask;
i386/i386/mp_machdep.c:         hlt_cpus_mask |= logical_cpus_mask;
i386/i386/mp_machdep.c:         hlt_cpus_mask &= ~logical_cpus_mask;
i386/i386/mp_machdep.c:         hlt_cpus_mask |= hyperthreading_cpus_mask;
i386/i386/mp_machdep.c: if ((hlt_cpus_mask & all_cpus) == all_cpus)
i386/i386/mp_machdep.c:         hlt_cpus_mask &= ~(1<<0);
i386/i386/mp_machdep.c:         hlt_cpus_mask &= ~hyperthreading_cpus_mask;
i386/i386/mp_machdep.c:         hlt_cpus_mask |= hyperthreading_cpus_mask;
i386/i386/mp_machdep.c:     (hlt_cpus_mask & logical_cpus_mask) == logical_cpus_mask)
i386/i386/mp_machdep.c: if ((hlt_cpus_mask & all_cpus) == all_cpus)
i386/i386/mp_machdep.c:         hlt_cpus_mask &= ~(1<<0);
i386/i386/mp_machdep.c:                 hlt_cpus_mask |= logical_cpus_mask;
i386/i386/mp_machdep.c:                         hlt_cpus_mask |= hyperthreading_cpus_mask;
i386/i386/mp_machdep.c: retval = mask & hlt_cpus_mask;
i386/i386/mp_machdep.c: while (mask & hlt_cpus_mask)
kern/subr_smp.c:cpumask_t hlt_cpus_mask;
kern/sched_4bsd.c:      dontuse = me | stopped_cpus | hlt_cpus_mask;
kern/sched_4bsd.c:                          (idle_cpus_mask & ~(hlt_cpus_mask | me)))
kern/kern_pmc.c:        return ((hlt_cpus_mask & (1 << cpu)) != 0);
sys/smp.h:extern cpumask_t hlt_cpus_mask;

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601171314.05251.jhb>