On Tue, 26 Feb 2002, John Baldwin wrote:

> The critical section stuff currently in current is part of the original
> preemption patches I wrote at Usenix last year.  They aren't in the tree
> because they aren't stable yet.  We still have problems on the alpha and
> problems with IPI deadlocks on SMP machines that need to be worked out.  Since
> this API is still very much in flux I'd prefer to keep it simple for now and
> not make the code overly complex with optimizations until after we have settled
> on the design.

The change is mostly part of the design change needed to un-break fast
interrupt handlers.  critical_enter() mask not mask hardware
interrupts for the same reason than splhigh() must not mask them:
there is too much MI code that thinks it is critical and short but
really isn't (e.g., everything under spinlocks in -current).  Changing
cpu_critical_enter() to a null version to prevent spinlocks masking
interrupts doesn't work very well because it is used for other things
that really do need to mask interrupts.  Having 2 levels for
cpu_critical_enter() (on that masks normal interrupts and one that
masks fast interrupts) would work but I think there are already too
many levels of critical_enter()s.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to