Thomas De Schampheleire wrote:
Hi,
1257 /*
1258 * Take the CPU out of interrupt participation so we won't
find
1259 * bound kernel threads. If the architecture cannot
completely
1260 * shut off interrupts on the CPU, don't quiesce it, but don't
1261 * run anything but interrupt thread... this is indicated by
1262 * the CPU_OFFLINE flag being on but the CPU_QUIESCE flag
being
1263 * off.
1264 */
1265 intr_enable = cp->cpu_flags & CPU_ENABLE;
1266 if (intr_enable)
1267 no_quiesce = cpu_intr_disable(cp);
If I understand this correctly, if the cpu was flagged 'enable', then
interrupts are disabled. If it was not, interrupts are not disabled,
but I suppose it is assumed that when enable is not on interrupts are
already disabled, right?
I think the code is saying that if interrupts are presently enabled,
then try
to disable them. If cpu_intr_disable() fails, then you cannot consider the
CPU quiesced...since interrupts will still be enabled.
However, the cpu_intr_disable() function does not seem to clear the
'enable' flag. Shouldn't this happen somewhere?
cpu_intr_disable() calls cpu_disable_intr() which clears the flag.
Now I have your attention, would you care to take a look at another
thread of mine, titled
"modgetsymvalue, modules, sbdp_cpu_poweroff()" ? It was posted to this
same mailing list.
Sure. I'll respond separately.
Thanks,
-Eric
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code