Commit b8d7044b authored by Haozhong Zhang's avatar Haozhong Zhang Committed by Radim Krčmář
Browse files

x86/mm: add a function to check if a pfn is UC/UC-/WC

Rendering aborted due to complexity issues. If this is valid markdown, please feel free to open an issue and attach the original markdown to the issue.

parent 05992edc
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -22,4 +22,6 @@ int io_reserve_memtype(resource_size_t start, resource_size_t end,


void io_free_memtype(resource_size_t start, resource_size_t end);
void io_free_memtype(resource_size_t start, resource_size_t end);


bool pat_pfn_immune_to_uc_mtrr(unsigned long pfn);

#endif /* _ASM_X86_PAT_H */
#endif /* _ASM_X86_PAT_H */
+19 −0
Original line number Original line Diff line number Diff line
@@ -677,6 +677,25 @@ static enum page_cache_mode lookup_memtype(u64 paddr)
	return rettype;
	return rettype;
}
}


/**
 * pat_pfn_immune_to_uc_mtrr - Check whether the PAT memory type
 * of @pfn cannot be overridden by UC MTRR memory type.
 *
 * Only to be called when PAT is enabled.
 *
 * Returns true, if the PAT memory type of @pfn is UC, UC-, or WC.
 * Returns false in other cases.
 */
bool pat_pfn_immune_to_uc_mtrr(unsigned long pfn)
{
	enum page_cache_mode cm = lookup_memtype(PFN_PHYS(pfn));

	return cm == _PAGE_CACHE_MODE_UC ||
	       cm == _PAGE_CACHE_MODE_UC_MINUS ||
	       cm == _PAGE_CACHE_MODE_WC;
}
EXPORT_SYMBOL_GPL(pat_pfn_immune_to_uc_mtrr);

/**
/**
 * io_reserve_memtype - Request a memory type mapping for a region of memory
 * io_reserve_memtype - Request a memory type mapping for a region of memory
 * @start: start (physical address) of the region
 * @start: start (physical address) of the region