--- arch/x86_64/mm/pat.c | 22 ++++++++++++++++++++++ include/asm-x86_64/pat.h | 3 +++ 2 files changed, 25 insertions(+) Index: linux/arch/x86_64/mm/pat.c =================================================================== --- linux.orig/arch/x86_64/mm/pat.c +++ linux/arch/x86_64/mm/pat.c @@ -301,3 +301,25 @@ int io_remap_pfn_range(struct vm_area_st return err ? err : remap_pfn_range(vma, vaddr, pfn, size, prot); } EXPORT_SYMBOL(io_remap_pfn_range); + +void *get_pages_mattr(gfp_t mask, unsigned order, unsigned long attr) +{ + int err; + void *p = (void *)__get_free_pages(mask, order); + if (!p) + return NULL; + err = reserve_mattr(__pa(p), __pa(p) + (order<