[ARM] mm 6: allow mem_types table to specify extended pte attributes
Add prot_pte_ext to the mem_types table to allow the extended pte attributes to be passed to set_pte_ext(), thereby permitting us to specify memory type information for the hardware PTE entries. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
b29e9f5e64
commit
c172cc92c8
@@ -55,7 +55,8 @@ static int remap_area_pte(pmd_t *pmd, unsigned long addr, unsigned long end,
|
|||||||
if (!pte_none(*pte))
|
if (!pte_none(*pte))
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|
||||||
set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), 0);
|
set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot),
|
||||||
|
type->prot_pte_ext);
|
||||||
phys_addr += PAGE_SIZE;
|
phys_addr += PAGE_SIZE;
|
||||||
} while (pte++, addr += PAGE_SIZE, addr != end);
|
} while (pte++, addr += PAGE_SIZE, addr != end);
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -18,6 +18,7 @@ static inline pmd_t *pmd_off_k(unsigned long virt)
|
|||||||
|
|
||||||
struct mem_type {
|
struct mem_type {
|
||||||
unsigned int prot_pte;
|
unsigned int prot_pte;
|
||||||
|
unsigned int prot_pte_ext;
|
||||||
unsigned int prot_l1;
|
unsigned int prot_l1;
|
||||||
unsigned int prot_sect;
|
unsigned int prot_sect;
|
||||||
unsigned int domain;
|
unsigned int domain;
|
||||||
|
@@ -391,7 +391,8 @@ static void __init alloc_init_pte(pmd_t *pmd, unsigned long addr,
|
|||||||
|
|
||||||
pte = pte_offset_kernel(pmd, addr);
|
pte = pte_offset_kernel(pmd, addr);
|
||||||
do {
|
do {
|
||||||
set_pte_ext(pte, pfn_pte(pfn, __pgprot(type->prot_pte)), 0);
|
set_pte_ext(pte, pfn_pte(pfn, __pgprot(type->prot_pte)),
|
||||||
|
type->prot_pte_ext);
|
||||||
pfn++;
|
pfn++;
|
||||||
} while (pte++, addr += PAGE_SIZE, addr != end);
|
} while (pte++, addr += PAGE_SIZE, addr != end);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user