diff options
Diffstat (limited to 'arch/x86/mm/pageattr.c')
-rw-r--r-- | arch/x86/mm/pageattr.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index f7d5ca170c22..938df5e8402b 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
20 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
21 | #include <asm/proto.h> | 21 | #include <asm/proto.h> |
22 | #include <asm/pat.h> | ||
22 | 23 | ||
23 | /* | 24 | /* |
24 | * The current flushing context - we pass it instead of 5 arguments: | 25 | * The current flushing context - we pass it instead of 5 arguments: |
@@ -770,18 +771,34 @@ static inline int change_page_attr_clear(unsigned long addr, int numpages, | |||
770 | return change_page_attr_set_clr(addr, numpages, __pgprot(0), mask); | 771 | return change_page_attr_set_clr(addr, numpages, __pgprot(0), mask); |
771 | } | 772 | } |
772 | 773 | ||
773 | int set_memory_uc(unsigned long addr, int numpages) | 774 | int _set_memory_uc(unsigned long addr, int numpages) |
774 | { | 775 | { |
775 | return change_page_attr_set(addr, numpages, | 776 | return change_page_attr_set(addr, numpages, |
776 | __pgprot(_PAGE_CACHE_UC)); | 777 | __pgprot(_PAGE_CACHE_UC)); |
777 | } | 778 | } |
779 | |||
780 | int set_memory_uc(unsigned long addr, int numpages) | ||
781 | { | ||
782 | if (reserve_memtype(addr, addr + numpages * PAGE_SIZE, | ||
783 | _PAGE_CACHE_UC, NULL)) | ||
784 | return -EINVAL; | ||
785 | |||
786 | return _set_memory_uc(addr, numpages); | ||
787 | } | ||
778 | EXPORT_SYMBOL(set_memory_uc); | 788 | EXPORT_SYMBOL(set_memory_uc); |
779 | 789 | ||
780 | int set_memory_wb(unsigned long addr, int numpages) | 790 | int _set_memory_wb(unsigned long addr, int numpages) |
781 | { | 791 | { |
782 | return change_page_attr_clear(addr, numpages, | 792 | return change_page_attr_clear(addr, numpages, |
783 | __pgprot(_PAGE_CACHE_MASK)); | 793 | __pgprot(_PAGE_CACHE_MASK)); |
784 | } | 794 | } |
795 | |||
796 | int set_memory_wb(unsigned long addr, int numpages) | ||
797 | { | ||
798 | free_memtype(addr, addr + numpages * PAGE_SIZE); | ||
799 | |||
800 | return _set_memory_wb(addr, numpages); | ||
801 | } | ||
785 | EXPORT_SYMBOL(set_memory_wb); | 802 | EXPORT_SYMBOL(set_memory_wb); |
786 | 803 | ||
787 | int set_memory_x(unsigned long addr, int numpages) | 804 | int set_memory_x(unsigned long addr, int numpages) |