SMP: Back out deferred IRQ locking. This was accidentally merged into master and it looks like it is going to be more work than I thought to get it working again. Changes will go to the irqlock branch.

This commit is contained in:
Gregory Nutt
2016-12-24 19:53:37 -06:00
parent 3af6b2a9a6
commit efb86382c3
16 changed files with 39 additions and 409 deletions
-22
View File
@@ -529,28 +529,6 @@ _xtensa_context_restore:
xtensa_context_restore:
ENTRY(16)
#ifdef CONFIG_SMP
/* Since this function does not return, it is only necessary preserve the
* processor state state are pointer across the following C call.
*/
s32i a2, sp, LOCAL_OFFSET(1)
/* In the SMP configuration, critical section management uses a
* "voting" algorithm with current task on each CPU casting its
* "vote" by the state of the TCB irqcount flag. That irqcount
* for the current task on this CPU will be different is a
* context switch occurrred.
*
* REVISIT: This should be the very last thing that is done before the
* 'rfe'. Ideally, you will like to have all of the registers restored
* (or protected on the stack) when the IRQ lock is unlocked.
*/
call4 irq_restore_lock
l32i a2, sp, LOCAL_OFFSET(1)
#endif
#ifndef __XTENSA_CALL0_ABI__
/* Force a spill of the live registers of the thread that has been
* suspended.
@@ -52,7 +52,6 @@
#include "group/group.h"
#include "sched/sched.h"
#include "irq/irq.h"
/****************************************************************************
* Public Functions
@@ -130,17 +129,6 @@ uint32_t *xtensa_irq_dispatch(int irq, uint32_t *regs)
(void)group_addrenv(NULL);
#endif
#ifdef CONFIG_SMP
/* In the SMP configuration, critical section management uses a
* "voting" algorithm with current task on each CPU casting its
* "vote" by the state of the TCB irqcount flag. That irqcount
* for the current task on this CPU will be different is a
* context switch occurrred.
*/
irq_restore_lock();
#endif
}
#endif