mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _ASM_X86_TLB_H |
|
#define _ASM_X86_TLB_H |
|
|
|
#define tlb_start_vma(tlb, vma) do { } while (0) |
|
#define tlb_end_vma(tlb, vma) do { } while (0) |
|
|
|
#define tlb_flush tlb_flush |
|
static inline void tlb_flush(struct mmu_gather *tlb); |
|
|
|
#include <asm-generic/tlb.h> |
|
|
|
static inline void tlb_flush(struct mmu_gather *tlb) |
|
{ |
|
unsigned long start = 0UL, end = TLB_FLUSH_ALL; |
|
unsigned int stride_shift = tlb_get_unmap_shift(tlb); |
|
|
|
if (!tlb->fullmm && !tlb->need_flush_all) { |
|
start = tlb->start; |
|
end = tlb->end; |
|
} |
|
|
|
flush_tlb_mm_range(tlb->mm, start, end, stride_shift, tlb->freed_tables); |
|
} |
|
|
|
/* |
|
* While x86 architecture in general requires an IPI to perform TLB |
|
* shootdown, enablement code for several hypervisors overrides |
|
* .flush_tlb_others hook in pv_mmu_ops and implements it by issuing |
|
* a hypercall. To keep software pagetable walkers safe in this case we |
|
* switch to RCU based table free (MMU_GATHER_RCU_TABLE_FREE). See the comment |
|
* below 'ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE' in include/asm-generic/tlb.h |
|
* for more details. |
|
*/ |
|
static inline void __tlb_remove_table(void *table) |
|
{ |
|
free_page_and_swap_cache(table); |
|
} |
|
|
|
#endif /* _ASM_X86_TLB_H */
|
|
|