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>