ContiguousPTE[11/12] modify ihk_mc_pt_virt_to_pagemap

Change-Id: Iff0c77cdd08a76b55c2635c6b0163ef2caade71d
This commit is contained in:
TOIDA,Suguru
2018-11-30 09:18:41 +09:00
committed by Masamichi Takagi
parent 7c231928ab
commit 410bf13367

View File

@@ -1205,9 +1205,15 @@ uint64_t ihk_mc_pt_virt_to_pagemap(struct page_table *pt, unsigned long virt)
} }
if (ptl3_type_block(ptep)) { if (ptl3_type_block(ptep)) {
paddr = ptl3_phys(ptep); paddr = ptl3_phys(ptep);
size = PTL3_SIZE; if (pte_is_contiguous(ptep)) {
mask = PTL3_MASK; size = PTL3_CONT_SIZE;
shift = PTL3_SHIFT; mask = PTL3_CONT_MASK;
shift = PTL3_CONT_SHIFT;
} else {
size = PTL3_SIZE;
mask = PTL3_MASK;
shift = PTL3_SHIFT;
}
goto out; goto out;
} }
@@ -1217,9 +1223,15 @@ uint64_t ihk_mc_pt_virt_to_pagemap(struct page_table *pt, unsigned long virt)
} }
if (ptl2_type_block(ptep)) { if (ptl2_type_block(ptep)) {
paddr = ptl2_phys(ptep); paddr = ptl2_phys(ptep);
size = PTL2_SIZE; if (pte_is_contiguous(ptep)) {
mask = PTL2_MASK; size = PTL2_CONT_SIZE;
shift = PTL2_SHIFT; mask = PTL2_CONT_MASK;
shift = PTL2_CONT_SHIFT;
} else {
size = PTL2_SIZE;
mask = PTL2_MASK;
shift = PTL2_SHIFT;
}
goto out; goto out;
} }
@@ -1228,9 +1240,15 @@ uint64_t ihk_mc_pt_virt_to_pagemap(struct page_table *pt, unsigned long virt)
return ret; return ret;
} }
paddr = ptl1_phys(ptep); paddr = ptl1_phys(ptep);
size = PTL1_SIZE; if (pte_is_contiguous(ptep)) {
mask = PTL1_MASK; size = PTL1_CONT_SIZE;
shift = PTL1_SHIFT; mask = PTL1_CONT_MASK;
shift = PTL1_CONT_SHIFT;
} else {
size = PTL1_SIZE;
mask = PTL1_MASK;
shift = PTL1_SHIFT;
}
out: out:
ret = PM_PFRAME(((paddr & mask) + (v & (size - 1))) >> PAGE_SHIFT); ret = PM_PFRAME(((paddr & mask) + (v & (size - 1))) >> PAGE_SHIFT);
ret |= PM_PSHIFT(shift) | PM_PRESENT; ret |= PM_PSHIFT(shift) | PM_PRESENT;