Hi Boris, On 8/28/17 5:51 AM, Borislav Petkov wrote: [..] > +static int __init early_set_memory_enc_dec(resource_size_t paddr, >> + unsigned long size, bool enc) >> +{ >> + unsigned long vaddr, vaddr_end, vaddr_next; >> + unsigned long psize, pmask; >> + int split_page_size_mask; >> + pte_t *kpte; >> + int level; >> + >> + vaddr = (unsigned long)__va(paddr); >> + vaddr_next = vaddr; >> + vaddr_end = vaddr + size; >> + >> + /* >> + * We are going to change the physical page attribute from C=1 to C=0 >> + * or vice versa. Flush the caches to ensure that data is written into >> + * memory with correct C-bit before we change attribute. >> + */ >> + clflush_cache_range(__va(paddr), size); >> + >> + for (; vaddr < vaddr_end; vaddr = vaddr_next) { >> + kpte = lookup_address(vaddr, &level); >> + if (!kpte || pte_none(*kpte)) >> + return 1; > Return before flushing TLBs? Perhaps you mean > > ret = 1; > goto out; > > here and out does > > __flush_tlb_all(); > return ret; thanks, good catch. I will fix in next rev. -Brijesh -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html