提交 0a3d31b7 编写于 作者: T Toshihiro HANAWA 提交者: Hirokazu Takata

m32r: Fix IPI function calls for SMP

This patch fixes the m32r SMP kernel after 2.6.27.

A part of the following patch breaks m32r SMP operation.
> m32r: convert to generic helpers for IPI function calls
> commit 7b7426c8

In the above patch, a CALL_FUNC_SINGLE_IPI was newly introduced,
but the its IPI vector number was wrong in the patch code.

The m32r SMP kernel hanged-up during boot operation, because
the CPU_BOOT_IPI was called instead of CALL_FUNC_SINGLE_IPI
(CPU_BOOT_IPI had no side effect at that time because the 2nd
core had already been started up),
as a result, csd_unlock() was not called, then a dead lock
occurred in csd_lock_wait() after the detection of Compact Flash
memory as IDE generic disk.
Signed-off-by: NToshihiro HANAWA <hanawa@ccs.tsukuba.ac.jp>
Signed-off-by: NHirokazu Takata <takata@linux-m32r.org>
上级 6b6fabce
...@@ -104,8 +104,8 @@ static void set_eit_vector_entries(void) ...@@ -104,8 +104,8 @@ static void set_eit_vector_entries(void)
eit_vector[186] = (unsigned long)smp_call_function_interrupt; eit_vector[186] = (unsigned long)smp_call_function_interrupt;
eit_vector[187] = (unsigned long)smp_ipi_timer_interrupt; eit_vector[187] = (unsigned long)smp_ipi_timer_interrupt;
eit_vector[188] = (unsigned long)smp_flush_cache_all_interrupt; eit_vector[188] = (unsigned long)smp_flush_cache_all_interrupt;
eit_vector[189] = (unsigned long)smp_call_function_single_interrupt; eit_vector[189] = 0; /* CPU_BOOT_IPI */
eit_vector[190] = 0; eit_vector[190] = (unsigned long)smp_call_function_single_interrupt;
eit_vector[191] = 0; eit_vector[191] = 0;
#endif #endif
_flush_cache_copyback_all(); _flush_cache_copyback_all();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册