On Fri, 2006-09-22 at 19:33 +0900, SUZUKI Kazuhiro wrote:
> [6/12] Add sal emulation.[mca-fw_emul.patch]
> case SAL_GET_STATE_INFO:
...
> +
> + spin_lock_irqsave(&sal_queue_lock, flags);
> +
...
> + ret = smp_call_function_single(e->cpuid,
> get_state_info_on, &arg, 0, 1);
Both SAL_GET_STATE_INFO and SAL_CLEAR_STATE_INFO use
smp_call_function_single() with interrupts disabled. This is dangerous
and can lead to deadlocks. Imagine if two processors called
smp_call_function_single() with interrupts disabled, possibly from
unrelated code paths. One processor would get the call_lock and send an
IPI to the second processor. However, the second processor is spinning
trying to get the call_lock with interrupts disabled.... hang. Thanks,
Alex
--
Alex Williamson HP Open Source & Linux Org.
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|