diff options
-rw-r--r-- | arch/x86/mm/Makefile_32 | 1 | ||||
-rw-r--r-- | arch/x86/mm/Makefile_64 | 1 | ||||
-rw-r--r-- | arch/x86/mm/pageattr.c | 51 | ||||
-rw-r--r-- | include/asm-x86/cacheflush.h | 1 |
4 files changed, 14 insertions, 40 deletions
diff --git a/arch/x86/mm/Makefile_32 b/arch/x86/mm/Makefile_32 index af0d39bea6c5..ffa6d46a1e73 100644 --- a/arch/x86/mm/Makefile_32 +++ b/arch/x86/mm/Makefile_32 @@ -4,7 +4,6 @@ obj-y := init_32.o pgtable_32.o fault_32.o ioremap.o extable.o pageattr.o mmap.o -obj-$(CONFIG_CPA_DEBUG) += pageattr-test.o obj-$(CONFIG_NUMA) += discontig_32.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_HIGHMEM) += highmem_32.o diff --git a/arch/x86/mm/Makefile_64 b/arch/x86/mm/Makefile_64 index b564b5a760da..27a090c86e9b 100644 --- a/arch/x86/mm/Makefile_64 +++ b/arch/x86/mm/Makefile_64 @@ -7,4 +7,3 @@ obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_NUMA) += numa_64.o obj-$(CONFIG_K8_NUMA) += k8topology_64.o obj-$(CONFIG_ACPI_NUMA) += srat_64.o -obj-$(CONFIG_CPA_DEBUG) += pageattr-test.o diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index e5910ac37e59..e4d2b6930e61 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -210,7 +210,8 @@ repeat: * Modules and drivers should use the set_memory_* APIs instead. */ -int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) +static int change_page_attr_addr(unsigned long address, int numpages, + pgprot_t prot) { int err = 0, kernel_map = 0, i; @@ -252,36 +253,6 @@ int change_page_attr_addr(unsigned long address, int numpages, pgprot_t prot) } /** - * change_page_attr - Change page table attributes in the linear mapping. - * @page: First page to change - * @numpages: Number of pages to change - * @prot: New protection/caching type (PAGE_*) - * - * Returns 0 on success, otherwise a negated errno. - * - * This should be used when a page is mapped with a different caching policy - * than write-back somewhere - some CPUs do not like it when mappings with - * different caching policies exist. This changes the page attributes of the - * in kernel linear mapping too. - * - * Caller must call global_flush_tlb() later to make the changes active. - * - * The caller needs to ensure that there are no conflicting mappings elsewhere - * (e.g. in user space) * This function only deals with the kernel linear map. - * - * For MMIO areas without mem_map use change_page_attr_addr() instead. - * - * Modules and drivers should use the set_pages_* APIs instead. - */ -int change_page_attr(struct page *page, int numpages, pgprot_t prot) -{ - unsigned long addr = (unsigned long)page_address(page); - - return change_page_attr_addr(addr, numpages, prot); -} -EXPORT_UNUSED_SYMBOL(change_page_attr); /* to be removed in 2.6.27 */ - -/** * change_page_attr_set - Change page table attributes in the linear mapping. * @addr: Virtual address in linear mapping. * @numpages: Number of pages to change @@ -294,15 +265,14 @@ EXPORT_UNUSED_SYMBOL(change_page_attr); /* to be removed in 2.6.27 */ * different caching policies exist. This changes the page attributes of the * in kernel linear mapping too. * - * Caller must call global_flush_tlb() later to make the changes active. - * * The caller needs to ensure that there are no conflicting mappings elsewhere * (e.g. in user space) * This function only deals with the kernel linear map. * * This function is different from change_page_attr() in that only selected bits * are impacted, all other bits remain as is. */ -int change_page_attr_set(unsigned long addr, int numpages, pgprot_t prot) +static int change_page_attr_set(unsigned long addr, int numpages, + pgprot_t prot) { pgprot_t current_prot; int level; @@ -332,15 +302,14 @@ int change_page_attr_set(unsigned long addr, int numpages, pgprot_t prot) * different caching policies exist. This changes the page attributes of the * in kernel linear mapping too. * - * Caller must call global_flush_tlb() later to make the changes active. - * * The caller needs to ensure that there are no conflicting mappings elsewhere * (e.g. in user space) * This function only deals with the kernel linear map. * * This function is different from change_page_attr() in that only selected bits * are impacted, all other bits remain as is. */ -int change_page_attr_clear(unsigned long addr, int numpages, pgprot_t prot) +static int change_page_attr_clear(unsigned long addr, int numpages, + pgprot_t prot) { pgprot_t current_prot; int level; @@ -549,3 +518,11 @@ void kernel_map_pages(struct page *page, int numpages, int enable) __flush_tlb_all(); } #endif + +/* + * The testcases use internal knowledge of the implementation that shouldn't + * be exposed to the rest of the kernel. Include these directly here. + */ +#ifdef CONFIG_CPA_DEBUG +#include "pageattr-test.c" +#endif diff --git a/include/asm-x86/cacheflush.h b/include/asm-x86/cacheflush.h index a95afaf1240d..d15ff359d3e3 100644 --- a/include/asm-x86/cacheflush.h +++ b/include/asm-x86/cacheflush.h @@ -27,7 +27,6 @@ void global_flush_tlb(void); int __deprecated_for_modules change_page_attr(struct page *page, int numpages, pgprot_t prot); -int change_page_attr_addr(unsigned long addr, int numpages, pgprot_t prot); int set_pages_uc(struct page *page, int numpages); int set_pages_wb(struct page *page, int numpages); |