Kaynağa Gözat

blackfin: bf561: forgot CSYNC in get_core_lock_noflush

SMP kgdb runs into dead loop without this CSYNC when one core single
steps over get_core_lock_noflush and the other executes get_core_lock
as a slave node.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
Bob Liu 13 yıl önce
ebeveyn
işleme
a5e0d8652a
1 değiştirilmiş dosya ile 7 ekleme ve 0 silme
  1. 7 0
      arch/blackfin/mach-bf561/atomic.S

+ 7 - 0
arch/blackfin/mach-bf561/atomic.S

@@ -72,6 +72,13 @@ ENTRY(_get_core_lock_noflush)
 	SSYNC(r2);
 	jump .Lretry_corelock_noflush
 .Ldone_corelock_noflush:
+	/*
+	 * SMP kgdb runs into dead loop without NOP here, when one core
+	 * single steps over get_core_lock_noflush and the other executes
+	 * get_core_lock as a slave node.
+	 */
+	nop;
+	CSYNC(r2);
 	rts;
 ENDPROC(_get_core_lock_noflush)