[SPARC]: Respect vm_page_prot in io_remap_page_range().
Make sure the callers do a pgprot_noncached() on vma->vm_page_prot. Pointed out by Hugh Dickens. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1589,7 +1589,10 @@ static void sun4c_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
|
||||
|
||||
static inline void sun4c_mapioaddr(unsigned long physaddr, unsigned long virt_addr)
|
||||
{
|
||||
unsigned long page_entry;
|
||||
unsigned long page_entry, pg_iobits;
|
||||
|
||||
pg_iobits = _SUN4C_PAGE_PRESENT | _SUN4C_READABLE | _SUN4C_WRITEABLE |
|
||||
_SUN4C_PAGE_IO | _SUN4C_PAGE_NOCACHE;
|
||||
|
||||
page_entry = ((physaddr >> PAGE_SHIFT) & SUN4C_PFN_MASK);
|
||||
page_entry |= ((pg_iobits | _SUN4C_PAGE_PRIV) & ~(_SUN4C_PAGE_PRESENT));
|
||||
@@ -2134,6 +2137,13 @@ void __init sun4c_paging_init(void)
|
||||
printk("SUN4C: %d mmu entries for the kernel\n", cnt);
|
||||
}
|
||||
|
||||
static pgprot_t sun4c_pgprot_noncached(pgprot_t prot)
|
||||
{
|
||||
prot |= __pgprot(_SUN4C_PAGE_IO | _SUN4C_PAGE_NOCACHE);
|
||||
|
||||
return prot;
|
||||
}
|
||||
|
||||
/* Load up routines and constants for sun4c mmu */
|
||||
void __init ld_mmu_sun4c(void)
|
||||
{
|
||||
@@ -2156,10 +2166,9 @@ void __init ld_mmu_sun4c(void)
|
||||
BTFIXUPSET_INT(page_readonly, pgprot_val(SUN4C_PAGE_READONLY));
|
||||
BTFIXUPSET_INT(page_kernel, pgprot_val(SUN4C_PAGE_KERNEL));
|
||||
page_kernel = pgprot_val(SUN4C_PAGE_KERNEL);
|
||||
pg_iobits = _SUN4C_PAGE_PRESENT | _SUN4C_READABLE | _SUN4C_WRITEABLE |
|
||||
_SUN4C_PAGE_IO | _SUN4C_PAGE_NOCACHE;
|
||||
|
||||
/* Functions */
|
||||
BTFIXUPSET_CALL(pgprot_noncached, sun4c_pgprot_noncached, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(___xchg32, ___xchg32_sun4c, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(do_check_pgt_cache, sun4c_check_pgt_cache, BTFIXUPCALL_NORM);
|
||||
|
||||
|
Reference in New Issue
Block a user