On 2/2/2022 5:21 AM, Christoph Hellwig wrote: >> +static inline int set_mce_nospec(unsigned long pfn) >> { >> unsigned long decoy_addr; >> int rc; >> @@ -117,10 +113,7 @@ static inline int set_mce_nospec(unsigned long pfn, bool unmap) >> */ >> decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63)); >> >> - if (unmap) >> - rc = set_memory_np(decoy_addr, 1); >> - else >> - rc = set_memory_uc(decoy_addr, 1); >> + rc = set_memory_np(decoy_addr, 1); >> if (rc) >> pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn); >> return rc; >> @@ -130,7 +123,7 @@ static inline int set_mce_nospec(unsigned long pfn, bool unmap) >> /* Restore full speculative operation to the pfn. */ >> static inline int clear_mce_nospec(unsigned long pfn) >> { >> - return set_memory_wb((unsigned long) pfn_to_kaddr(pfn), 1); >> + return _set_memory_present((unsigned long) pfn_to_kaddr(pfn), 1); >> } > > Wouldn't it make more sense to move these helpers out of line rather > than exporting _set_memory_present? Do you mean to move return change_page_attr_set(&addr, numpages, __pgprot(_PAGE_PRESENT), 0); into clear_mce_nospec() for the x86 arch and get rid of _set_memory_present? If so, sure I'll do that. > >> /* >> - * _set_memory_prot is an internal helper for callers that have been passed >> + * __set_memory_prot is an internal helper for callers that have been passed > > This looks unrelated to the patch. My bad, will remove the remnant. thanks! -jane