Lines Matching full:flush
16 /* Each gva in gva_list encodes up to 4096 pages to flush */
37 * pages to flush (in addition to the 'cur' page). in fill_gva_list()
63 struct hv_tlb_flush *flush; in hyperv_flush_tlb_multi() local
75 flush = *this_cpu_ptr(hyperv_pcpu_input_arg); in hyperv_flush_tlb_multi()
77 if (unlikely(!flush)) { in hyperv_flush_tlb_multi()
87 flush->address_space = virt_to_phys(info->mm->pgd); in hyperv_flush_tlb_multi()
88 flush->address_space &= CR3_ADDR_MASK; in hyperv_flush_tlb_multi()
89 flush->flags = 0; in hyperv_flush_tlb_multi()
91 flush->address_space = 0; in hyperv_flush_tlb_multi()
92 flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES; in hyperv_flush_tlb_multi()
95 flush->processor_mask = 0; in hyperv_flush_tlb_multi()
97 flush->flags |= HV_FLUSH_ALL_PROCESSORS; in hyperv_flush_tlb_multi()
128 &flush->processor_mask); in hyperv_flush_tlb_multi()
131 /* nothing to flush if 'processor_mask' ends up being empty */ in hyperv_flush_tlb_multi()
132 if (!flush->processor_mask) { in hyperv_flush_tlb_multi()
139 * We can flush not more than max_gvas with one hypercall. Flush the in hyperv_flush_tlb_multi()
142 max_gvas = (PAGE_SIZE - sizeof(*flush)) / sizeof(flush->gva_list[0]); in hyperv_flush_tlb_multi()
145 flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY; in hyperv_flush_tlb_multi()
147 flush, NULL); in hyperv_flush_tlb_multi()
151 flush, NULL); in hyperv_flush_tlb_multi()
153 gva_n = fill_gva_list(flush->gva_list, 0, in hyperv_flush_tlb_multi()
156 gva_n, 0, flush, NULL); in hyperv_flush_tlb_multi()
176 struct hv_tlb_flush_ex *flush; in hyperv_flush_tlb_others_ex() local
182 flush = *this_cpu_ptr(hyperv_pcpu_input_arg); in hyperv_flush_tlb_others_ex()
189 flush->address_space = virt_to_phys(info->mm->pgd); in hyperv_flush_tlb_others_ex()
190 flush->address_space &= CR3_ADDR_MASK; in hyperv_flush_tlb_others_ex()
191 flush->flags = 0; in hyperv_flush_tlb_others_ex()
193 flush->address_space = 0; in hyperv_flush_tlb_others_ex()
194 flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES; in hyperv_flush_tlb_others_ex()
197 flush->hv_vp_set.valid_bank_mask = 0; in hyperv_flush_tlb_others_ex()
199 flush->hv_vp_set.format = HV_GENERIC_SET_SPARSE_4K; in hyperv_flush_tlb_others_ex()
200 nr_bank = cpumask_to_vpset_skip(&flush->hv_vp_set, cpus, in hyperv_flush_tlb_others_ex()
206 * We can flush not more than max_gvas with one hypercall. Flush the in hyperv_flush_tlb_others_ex()
210 (PAGE_SIZE - sizeof(*flush) - nr_bank * in hyperv_flush_tlb_others_ex()
211 sizeof(flush->hv_vp_set.bank_contents[0])) / in hyperv_flush_tlb_others_ex()
212 sizeof(flush->gva_list[0]); in hyperv_flush_tlb_others_ex()
215 flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY; in hyperv_flush_tlb_others_ex()
218 0, nr_bank, flush, NULL); in hyperv_flush_tlb_others_ex()
223 0, nr_bank, flush, NULL); in hyperv_flush_tlb_others_ex()
225 gva_n = fill_gva_list(flush->gva_list, nr_bank, in hyperv_flush_tlb_others_ex()
229 gva_n, nr_bank, flush, NULL); in hyperv_flush_tlb_others_ex()
240 pr_info("Using hypercall for remote TLB flush\n"); in hyperv_setup_mmu_ops()