1 | #ifndef __FLUSHTLB_H__ |
---|
2 | #define __FLUSHTLB_H__ |
---|
3 | |
---|
4 | #include <xen/sched.h> |
---|
5 | |
---|
6 | /* TLB flushes can be either local (current vcpu only) or domain wide (on |
---|
7 | all vcpus). |
---|
8 | TLB flushes can be either all-flush or range only. |
---|
9 | |
---|
10 | vTLB flushing means flushing VCPU virtual TLB + machine TLB + machine VHPT. |
---|
11 | */ |
---|
12 | |
---|
13 | /* Local all flush of vTLB. */ |
---|
14 | void vcpu_flush_vtlb_all(struct vcpu *v); |
---|
15 | |
---|
16 | /* Local range flush of machine TLB only (not full VCPU virtual TLB!!!) */ |
---|
17 | void vcpu_flush_tlb_vhpt_range (u64 vadr, u64 log_range); |
---|
18 | |
---|
19 | /* Global all flush of vTLB */ |
---|
20 | void domain_flush_vtlb_all(struct domain *d); |
---|
21 | |
---|
22 | /* Global range-flush of vTLB. */ |
---|
23 | void domain_flush_vtlb_range (struct domain *d, u64 vadr, u64 addr_range); |
---|
24 | |
---|
25 | #ifdef CONFIG_XEN_IA64_TLB_TRACK |
---|
26 | struct tlb_track_entry; |
---|
27 | void __domain_flush_vtlb_track_entry(struct domain* d, |
---|
28 | const struct tlb_track_entry* entry); |
---|
29 | /* Global entry-flush of vTLB */ |
---|
30 | void domain_flush_vtlb_track_entry(struct domain* d, |
---|
31 | const struct tlb_track_entry* entry); |
---|
32 | #endif |
---|
33 | |
---|
34 | /* Flush vhpt and mTLB on every dirty cpus. */ |
---|
35 | void domain_flush_tlb_vhpt(struct domain *d); |
---|
36 | |
---|
37 | /* Flush v-tlb on cpus set in mask for current domain. */ |
---|
38 | void flush_tlb_mask(cpumask_t mask); |
---|
39 | |
---|
40 | /* Flush local machine TLB. */ |
---|
41 | void local_flush_tlb_all (void); |
---|
42 | |
---|
43 | #define tlbflush_filter(x,y) ((void)0) |
---|
44 | |
---|
45 | #endif |
---|