> Most of 2.2 still runs inside the giant lock. There are still
> big SMP improvements over 2.0: the scheduler and the interrupt/bottom half
> system are fine grained locked, interrupts may be processed on another
> CPU if the current CPU is busy in the kernel (and it'll even be forwarded
> to this CPU if it is a hardware interrupt).
Does this mean that the same interrupt could be serviced by two
different CPUs at the same time (when the first CPU is not yet
finished with its interrupt handler while the same interrupt happens
again)?
Quote:> Bottom halves only still run
> one at a time though, because that is a fundamental property of them ("
> bhs are atomic to themselves")
One at a time in the sense "one bottomhalf will never be executed by
more than one CPU at the same moment" or in the sense of "there is
always only one bottomhalf active, not even two different bottom
halves on two different CPUs"?
To summarize the critical situation I think I know about (scenario:
driver which registered one interrupt and uses several bottom halves):
(- interrupt could be running on more than one CPU at once?)
- bottom half could be interrupted by an interrupt
(- bottom half could be running on more than one CPU at once?)
- syscalls could be interrupted by interrupts
- syscalls could be interrupted by bottom halves
- syscalls could be running on more than one CPU at once
Anything I forgot?
Martin.