x86/mm/pat: Remove pat_enabled() checks
Now that we emulate a PAT table when PAT is disabled, there's no need for those checks anymore as the PAT abstraction will handle those cases too. Based on a conglomerate patch from Toshi Kani. Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Toshi Kani <toshi.kani@hp.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Elliott@hp.com Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Luis R. Rodriguez <mcgrof@suse.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: arnd@arndb.de Cc: hch@lst.de Cc: hmh@hmh.eng.br Cc: jgross@suse.com Cc: konrad.wilk@oracle.com Cc: linux-mm <linux-mm@kvack.org> Cc: linux-nvdimm@lists.01.org Cc: stefan.bader@canonical.com Cc: yigal@plexistor.com Link: http://lkml.kernel.org/r/1433436928-31903-4-git-send-email-bp@alien8.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
9cd25aac1f
commit
7202fdb1b3
arch/x86/mm
|
@ -77,13 +77,13 @@ void __iomem *
|
||||||
iomap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot)
|
iomap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* For non-PAT systems, promote PAGE_KERNEL_WC to PAGE_KERNEL_UC_MINUS.
|
* For non-PAT systems, translate non-WB request to UC- just in
|
||||||
* PAGE_KERNEL_WC maps to PWT, which translates to uncached if the
|
* case the caller set the PWT bit to prot directly without using
|
||||||
* MTRR is UC or WC. UC_MINUS gets the real intention, of the
|
* pgprot_writecombine(). UC- translates to uncached if the MTRR
|
||||||
* user, which is "WC if the MTRR is WC, UC if you can't do that."
|
* is UC or WC. UC- gets the real intention, of the user, which is
|
||||||
|
* "WC if the MTRR is WC, UC if you can't do that."
|
||||||
*/
|
*/
|
||||||
if (!pat_enabled() && pgprot_val(prot) ==
|
if (!pat_enabled() && pgprot2cachemode(prot) != _PAGE_CACHE_MODE_WB)
|
||||||
(__PAGE_KERNEL | cachemode2protval(_PAGE_CACHE_MODE_WC)))
|
|
||||||
prot = __pgprot(__PAGE_KERNEL |
|
prot = __pgprot(__PAGE_KERNEL |
|
||||||
cachemode2protval(_PAGE_CACHE_MODE_UC_MINUS));
|
cachemode2protval(_PAGE_CACHE_MODE_UC_MINUS));
|
||||||
|
|
||||||
|
|
|
@ -292,11 +292,8 @@ EXPORT_SYMBOL_GPL(ioremap_uc);
|
||||||
*/
|
*/
|
||||||
void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size)
|
void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size)
|
||||||
{
|
{
|
||||||
if (pat_enabled())
|
|
||||||
return __ioremap_caller(phys_addr, size, _PAGE_CACHE_MODE_WC,
|
return __ioremap_caller(phys_addr, size, _PAGE_CACHE_MODE_WC,
|
||||||
__builtin_return_address(0));
|
__builtin_return_address(0));
|
||||||
else
|
|
||||||
return ioremap_nocache(phys_addr, size);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ioremap_wc);
|
EXPORT_SYMBOL(ioremap_wc);
|
||||||
|
|
||||||
|
|
|
@ -1572,9 +1572,6 @@ int set_memory_wc(unsigned long addr, int numpages)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!pat_enabled())
|
|
||||||
return set_memory_uc(addr, numpages);
|
|
||||||
|
|
||||||
ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE,
|
ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE,
|
||||||
_PAGE_CACHE_MODE_WC, NULL);
|
_PAGE_CACHE_MODE_WC, NULL);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
|
@ -438,12 +438,8 @@ int reserve_memtype(u64 start, u64 end, enum page_cache_mode req_type,
|
||||||
|
|
||||||
if (!pat_enabled()) {
|
if (!pat_enabled()) {
|
||||||
/* This is identical to page table setting without PAT */
|
/* This is identical to page table setting without PAT */
|
||||||
if (new_type) {
|
if (new_type)
|
||||||
if (req_type == _PAGE_CACHE_MODE_WC)
|
|
||||||
*new_type = _PAGE_CACHE_MODE_UC_MINUS;
|
|
||||||
else
|
|
||||||
*new_type = req_type;
|
*new_type = req_type;
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -947,11 +943,8 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
|
||||||
|
|
||||||
pgprot_t pgprot_writecombine(pgprot_t prot)
|
pgprot_t pgprot_writecombine(pgprot_t prot)
|
||||||
{
|
{
|
||||||
if (pat_enabled())
|
|
||||||
return __pgprot(pgprot_val(prot) |
|
return __pgprot(pgprot_val(prot) |
|
||||||
cachemode2protval(_PAGE_CACHE_MODE_WC));
|
cachemode2protval(_PAGE_CACHE_MODE_WC));
|
||||||
else
|
|
||||||
return pgprot_noncached(prot);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(pgprot_writecombine);
|
EXPORT_SYMBOL_GPL(pgprot_writecombine);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue