"Roy, Patrick" <[email protected]> writes:

....

> +static int kvm_gmem_folio_zap_direct_map(struct folio *folio)
> +{
> +     if (kvm_gmem_folio_no_direct_map(folio))
> +             return 0;
> +
> +     int r = set_direct_map_valid_noflush(folio_page(folio, 0), 
> folio_nr_pages(folio),
> +                                      false);
> +
> +     if (!r) {
> +             unsigned long addr = (unsigned long) folio_address(folio);
> +             folio->private = (void *) ((u64) folio->private & 
> KVM_GMEM_FOLIO_NO_DIRECT_MAP);
> +             flush_tlb_kernel_range(addr, addr + folio_size(folio));
> +     }
> +
> +     return r;
> +}

These 'noflush' functions are actually doing flush_tlb_kernel

[-]  ∘ flush_tlb_kernel_range
 |-[-]  ← __change_memory_common
 |  `-[-]  ← set_memory_valid
 |     `-   ← set_direct_map_valid_noflush

-aneesh

Reply via email to