|
@@ -341,6 +341,25 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
|
|
|
|
|
|
#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
|
|
#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
|
|
|
|
|
|
|
|
+static inline int is_new_memtype_allowed(unsigned long flags,
|
|
|
|
+ unsigned long new_flags)
|
|
|
|
+{
|
|
|
|
+ /*
|
|
|
|
+ * Certain new memtypes are not allowed with certain
|
|
|
|
+ * requested memtype:
|
|
|
|
+ * - request is uncached, return cannot be write-back
|
|
|
|
+ * - request is write-combine, return cannot be write-back
|
|
|
|
+ */
|
|
|
|
+ if ((flags == _PAGE_CACHE_UC_MINUS &&
|
|
|
|
+ new_flags == _PAGE_CACHE_WB) ||
|
|
|
|
+ (flags == _PAGE_CACHE_WC &&
|
|
|
|
+ new_flags == _PAGE_CACHE_WB)) {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
+
|
|
#ifndef __ASSEMBLY__
|
|
#ifndef __ASSEMBLY__
|
|
/* Indicate that x86 has its own track and untrack pfn vma functions */
|
|
/* Indicate that x86 has its own track and untrack pfn vma functions */
|
|
#define __HAVE_PFNMAP_TRACKING
|
|
#define __HAVE_PFNMAP_TRACKING
|