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
University of Cambridge