handle_interrupt_gicv3: don't take runq_lock
To avoid dead-lock with the function taking the lock with ihk_mc_spinlock_lock_noirq(). Change-Id: If689e8cc5fff81f627bcf98bfa7df7d4c13f4209
This commit is contained in:
@ -311,7 +311,7 @@ void handle_interrupt_gicv3(struct pt_regs *regs)
|
||||
uint64_t irqnr;
|
||||
const int from_user = interrupt_from_user(regs);
|
||||
struct cpu_local_var *v = get_this_cpu_local_var();
|
||||
unsigned long irqflags;
|
||||
//unsigned long irqflags;
|
||||
int do_check = 0;
|
||||
|
||||
irqnr = gic_read_iar();
|
||||
@ -326,14 +326,14 @@ void handle_interrupt_gicv3(struct pt_regs *regs)
|
||||
}
|
||||
set_cputime(from_user ? CPUTIME_MODE_K2U : CPUTIME_MODE_K2K_OUT);
|
||||
|
||||
irqflags = ihk_mc_spinlock_lock(&v->runq_lock);
|
||||
//irqflags = ihk_mc_spinlock_lock(&v->runq_lock);
|
||||
/* For migration by IPI or by timesharing */
|
||||
if (v->flags &
|
||||
(CPU_FLAG_NEED_MIGRATE | CPU_FLAG_NEED_RESCHED)) {
|
||||
v->flags &= ~CPU_FLAG_NEED_RESCHED;
|
||||
do_check = 1;
|
||||
}
|
||||
ihk_mc_spinlock_unlock(&v->runq_lock, irqflags);
|
||||
//ihk_mc_spinlock_unlock(&v->runq_lock, irqflags);
|
||||
|
||||
if (do_check) {
|
||||
check_signal(0, regs, 0);
|
||||
|
||||
Reference in New Issue
Block a user