tlb.c (306e060435d7a3aef8f6f033e43b0f581638adce) | tlb.c (10bcc80e9dbced128e3b4aa86e4737e5486a45d0) |
---|---|
1#include <linux/init.h> 2 3#include <linux/mm.h> 4#include <linux/spinlock.h> 5#include <linux/smp.h> 6#include <linux/interrupt.h> 7#include <linux/export.h> 8#include <linux/cpu.h> --- 215 unchanged lines hidden (view full) --- 224 * nothing, though.) 225 */ 226 __flush_tlb_all(); 227 } 228#endif 229 this_cpu_write(cpu_tlbstate.is_lazy, false); 230 231 /* | 1#include <linux/init.h> 2 3#include <linux/mm.h> 4#include <linux/spinlock.h> 5#include <linux/smp.h> 6#include <linux/interrupt.h> 7#include <linux/export.h> 8#include <linux/cpu.h> --- 215 unchanged lines hidden (view full) --- 224 * nothing, though.) 225 */ 226 __flush_tlb_all(); 227 } 228#endif 229 this_cpu_write(cpu_tlbstate.is_lazy, false); 230 231 /* |
232 * The membarrier system call requires a full memory barrier 233 * before returning to user-space, after storing to rq->curr. 234 * Writing to CR3 provides that full memory barrier. | 232 * The membarrier system call requires a full memory barrier and 233 * core serialization before returning to user-space, after 234 * storing to rq->curr. Writing to CR3 provides that full 235 * memory barrier and core serializing instruction. |
235 */ 236 if (real_prev == next) { 237 VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) != 238 next->context.ctx_id); 239 240 /* 241 * We don't currently support having a real mm loaded without 242 * our cpu set in mm_cpumask(). We have all the bookkeeping --- 482 unchanged lines hidden --- | 236 */ 237 if (real_prev == next) { 238 VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) != 239 next->context.ctx_id); 240 241 /* 242 * We don't currently support having a real mm loaded without 243 * our cpu set in mm_cpumask(). We have all the bookkeeping --- 482 unchanged lines hidden --- |