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

Reply via email to