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 ---