> call_data is neither local nor static to the function, so the modification
> of the storage location would seem to be mandatory for the compiler
> before the call to core_send_ipi(),
Ah, yes. call_data is static but is scoped in the file, not the function.
And if you add OOO to the mix, I guess that the wb() becomes
necessary.
> I take it that you've observed a problem with this on your system?:
No. I had a bug that was freezing one of my cpus, so the other one was
eventually getting stuck in an endless loop in smp_call_function(). I
added a little debugging so it prink()ed when that happens, and then I
got to thinking about how smp_call_function() worked...
Personally, I think the kernel ought to not go into endless loops
without saying something useful on the console. Hanging in
smp_call_function() is always the symptom, not the bug, but still,
it's nice to print what is known instead of being silent.
Unfortunately, I see quite a few opportunities for endless loops in
device drivers (grrr). Makes you wonder how Windows works at all with
all those shitty but closed-source drivers.
-- greg
|