fix REQ-37: remap_one_page: remove to check page size
This commit is contained in:
@@ -216,12 +216,13 @@ static inline void pte_make_null(pte_t *ptep, size_t pgsize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void pte_make_fileoff(off_t off,
|
static inline void pte_make_fileoff(off_t off,
|
||||||
enum ihk_mc_pt_attribute ptattr, size_t pgsize, pte_t *ptep)
|
enum ihk_mc_pt_attribute ptattr, pte_t *ptep)
|
||||||
{
|
{
|
||||||
uint64_t attr;
|
uint64_t attr;
|
||||||
|
|
||||||
attr = ptattr & ~PAGE_MASK;
|
attr = ptattr & ~PAGE_MASK;
|
||||||
|
|
||||||
|
#if 0
|
||||||
switch (pgsize) {
|
switch (pgsize) {
|
||||||
case PTL1_SIZE: attr |= PFL1_FILEOFF; break;
|
case PTL1_SIZE: attr |= PFL1_FILEOFF; break;
|
||||||
case PTL2_SIZE: attr |= PFL2_FILEOFF | PFL2_SIZE; break;
|
case PTL2_SIZE: attr |= PFL2_FILEOFF | PFL2_SIZE; break;
|
||||||
@@ -234,6 +235,9 @@ static inline void pte_make_fileoff(off_t off,
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
attr |= PFL1_FILEOFF;
|
||||||
|
#endif
|
||||||
*ptep = (off & PAGE_MASK) | attr;
|
*ptep = (off & PAGE_MASK) | attr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1252,7 +1252,7 @@ static int remap_one_page(void *arg0, page_table_t pt, pte_t *ptep,
|
|||||||
}
|
}
|
||||||
|
|
||||||
off = args->off + ((uintptr_t)pgaddr - args->start);
|
off = args->off + ((uintptr_t)pgaddr - args->start);
|
||||||
pte_make_fileoff(off, 0, pgsize, &apte);
|
pte_make_fileoff(off, 0, &apte);
|
||||||
|
|
||||||
pte_xchg(ptep, &apte);
|
pte_xchg(ptep, &apte);
|
||||||
flush_tlb_single((uintptr_t)pgaddr); /* XXX: TLB flush */
|
flush_tlb_single((uintptr_t)pgaddr); /* XXX: TLB flush */
|
||||||
@@ -1411,7 +1411,7 @@ static int invalidate_one_page(void *arg0, page_table_t pt, pte_t *ptep,
|
|||||||
pte_make_null(&apte, pgsize);
|
pte_make_null(&apte, pgsize);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pte_make_fileoff(page->offset, 0, pgsize, &apte);
|
pte_make_fileoff(page->offset, 0, &apte);
|
||||||
}
|
}
|
||||||
pte_xchg(ptep, &apte);
|
pte_xchg(ptep, &apte);
|
||||||
flush_tlb_single((uintptr_t)pgaddr); /* XXX: TLB flush */
|
flush_tlb_single((uintptr_t)pgaddr); /* XXX: TLB flush */
|
||||||
|
|||||||
Reference in New Issue
Block a user