Commit ba62e915 authored by Thomas Gleixner's avatar Thomas Gleixner

Merge branch 'rt/x86' into rt/base

parents 040e6a4c 3f87904e
......@@ -186,10 +186,10 @@ static inline int atomic_add_return(int i, atomic_t *v)
#ifdef CONFIG_M386
no_xadd: /* Legacy 386 processor */
local_irq_save(flags);
raw_local_irq_save(flags);
__i = atomic_read(v);
atomic_set(v, i + __i);
local_irq_restore(flags);
raw_local_irq_restore(flags);
return i + __i;
#endif
}
......
......@@ -2164,8 +2164,10 @@ static int __init timer_irq_works(void)
*/
/* jiffies wrap? */
if (time_after(jiffies, t1 + 4))
if (time_after(jiffies, t1 + 4) &&
time_before(jiffies, t1 + 16))
return 1;
return 0;
}
......@@ -2526,7 +2528,8 @@ static void ack_apic_level(unsigned int irq)
irq_complete_move(&desc);
#ifdef CONFIG_GENERIC_PENDING_IRQ
/* If we are moving the irq we need to mask it */
if (unlikely(desc->status & IRQ_MOVE_PENDING)) {
if (unlikely(desc->status & IRQ_MOVE_PENDING) &&
!(desc->status & IRQ_INPROGRESS)) {
do_unmask_irq = 1;
mask_IO_APIC_irq_desc(desc);
}
......
......@@ -454,7 +454,7 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
/* Boost up -- we can execute copied instructions directly */
reset_current_kprobe();
regs->ip = (unsigned long)p->ainsn.insn;
preempt_enable_no_resched();
preempt_enable();
return;
}
#endif
......@@ -480,7 +480,7 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
arch_disarm_kprobe(p);
regs->ip = (unsigned long)p->addr;
reset_current_kprobe();
preempt_enable_no_resched();
preempt_enable();
break;
#endif
case KPROBE_HIT_ACTIVE:
......@@ -576,7 +576,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
}
} /* else: not a kprobe fault; let the kernel handle it */
preempt_enable_no_resched();
preempt_enable();
return 0;
}
......@@ -876,7 +876,7 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs)
}
reset_current_kprobe();
out:
preempt_enable_no_resched();
preempt_enable();
/*
* if somebody else is singlestepping across a probe point, flags
......@@ -910,7 +910,7 @@ int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
restore_previous_kprobe(kcb);
else
reset_current_kprobe();
preempt_enable_no_resched();
preempt_enable();
break;
case KPROBE_HIT_ACTIVE:
case KPROBE_HIT_SSDONE:
......@@ -1051,7 +1051,7 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
memcpy((kprobe_opcode_t *)(kcb->jprobe_saved_sp),
kcb->jprobes_stack,
MIN_STACK_SIZE(kcb->jprobe_saved_sp));
preempt_enable_no_resched();
preempt_enable();
return 1;
}
return 0;
......
......@@ -104,6 +104,7 @@ static __cpuinit void check_tsc_warp(void)
*/
void __cpuinit check_tsc_sync_source(int cpu)
{
unsigned long flags;
int cpus = 2;
/*
......@@ -129,8 +130,11 @@ void __cpuinit check_tsc_sync_source(int cpu)
/*
* Wait for the target to arrive:
*/
local_save_flags(flags);
local_irq_enable();
while (atomic_read(&start_count) != cpus-1)
cpu_relax();
local_irq_restore(flags);
/*
* Trigger the target to continue into the measurement too:
*/
......
......@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot)
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
BUG_ON(!pte_none(*(kmap_pte-idx)));
WARN_ON(!pte_none(*(kmap_pte-idx)));
set_pte(kmap_pte-idx, mk_pte(page, prot));
return (void *)vaddr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment