cvs commit: src/sys/i386/i386 local_apic.c

Robert Watson rwatson at
Wed Sep 27 15:08:36 PDT 2006

On Wed, 27 Sep 2006, John Baldwin wrote:

>>>>> from amd64 as well?
>>>> Yes, you are right - this is ULE specific bug. In fact, quick grep of the 
>>>> ULE code reveals that it doesn't honor hlt_cpus_mask, so that the problem 
>>>> is with ULE, not with the change in question.
>>> Well, hlt_cpus_mask is really an x86-specific hack. :)
>> x86 and amd64, which represent about 95% of FreeBSD.
> My point is that we need a notion of taking CPUs offline and online with 
> scheudler hooks, instead of exporting a simple x86-specific bitmask.  Right 
> now we don't notify the schedulers when a CPU goes offline so that they can 
> try to do sensible things with pinned and bound threads, etc.  Instead, they 
> just have to "notice" which is rediculously lame.

It's pretty clear that if we're going to take the hypervisor + dynamic 
reconfiguration thing seriously, we need a structured notion of adding and 
removing CPUs from the active CPU pool, including things like event handlers 
so that subsystems can shut down operations on the CPU.  For example, UMA 
needs a chance to drain per-CPU caches of various zones, services that have 
pinned threads on the CPU will need to decide how to deal with that, etc. 
It's work I'd very much like to see happen, and until it's done we basically 
need to make sure that CPUs either exist from boot and never cease existing, 
or don't exist at boot and are never used.

Robert N M Watson
Computer Laboratory
University of Cambridge

More information about the cvs-src mailing list