x86: PAT: add pgprot_writecombine() interface for drivers - v3
Impact: New mm functionality. Add pgprot_writecombine. pgprot_writecombine will be aliased to pgprot_noncached when not supported by the architecture. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
committed by
H. Peter Anvin
parent
8a7b12f70f
commit
2520bd3123
@@ -168,6 +168,9 @@
|
|||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
#define pgprot_writecombine pgprot_writecombine
|
||||||
|
extern pgprot_t pgprot_writecombine(pgprot_t prot);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ZERO_PAGE is a global shared page that is always zero: used
|
* ZERO_PAGE is a global shared page that is always zero: used
|
||||||
* for zero-mapped memory areas etc..
|
* for zero-mapped memory areas etc..
|
||||||
|
@@ -832,6 +832,14 @@ void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pgprot_t pgprot_writecombine(pgprot_t prot)
|
||||||
|
{
|
||||||
|
if (pat_enabled)
|
||||||
|
return __pgprot(pgprot_val(prot) | _PAGE_CACHE_WC);
|
||||||
|
else
|
||||||
|
return pgprot_noncached(prot);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT)
|
#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT)
|
||||||
|
|
||||||
/* get Nth element of the linked list */
|
/* get Nth element of the linked list */
|
||||||
|
@@ -129,6 +129,10 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres
|
|||||||
#define move_pte(pte, prot, old_addr, new_addr) (pte)
|
#define move_pte(pte, prot, old_addr, new_addr) (pte)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef pgprot_writecombine
|
||||||
|
#define pgprot_writecombine pgprot_noncached
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When walking page tables, get the address of the next boundary,
|
* When walking page tables, get the address of the next boundary,
|
||||||
* or the end address of the range if that comes earlier. Although no
|
* or the end address of the range if that comes earlier. Although no
|
||||||
|
Reference in New Issue
Block a user