shmobj: support large page
Change-Id: I104c1b8551b87f5cbfedb13262e77c00c38e9643
This commit is contained in:
committed by
Masamichi Takagi
parent
d2db639853
commit
47aec70f5f
@@ -884,7 +884,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
}
|
||||
|
||||
for (i = 0; i < PT_ENTRIES; ++i) {
|
||||
if (phys_base != NOPHYS) {
|
||||
if (phys_base != NOPHYS && pgsize != PTL2_SIZE) {
|
||||
phys = phys_base + (i * pgsize / PT_ENTRIES);
|
||||
page = phys_to_page(phys);
|
||||
if (page) {
|
||||
@@ -2227,7 +2227,8 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
int ihk_mc_pt_split(page_table_t pt, struct process_vm *vm, void *addr)
|
||||
int ihk_mc_pt_split(page_table_t pt, struct process_vm *vm,
|
||||
struct vm_range *range, void *addr)
|
||||
{
|
||||
int error;
|
||||
pte_t *ptep;
|
||||
@@ -2236,7 +2237,6 @@ int ihk_mc_pt_split(page_table_t pt, struct process_vm *vm, void *addr)
|
||||
intptr_t phys;
|
||||
struct page *page;
|
||||
|
||||
|
||||
retry:
|
||||
ptep = ihk_mc_pt_lookup_pte(pt, addr, 0, &pgaddr, &pgsize, NULL);
|
||||
if (ptep && !pte_is_null(ptep) && (pgaddr != addr)) {
|
||||
@@ -2245,8 +2245,8 @@ retry:
|
||||
phys = pte_get_phys(ptep);
|
||||
page = phys_to_page(phys);
|
||||
}
|
||||
if (page && (page_is_in_memobj(page)
|
||||
|| page_is_multi_mapped(page))) {
|
||||
if (!is_splitable(page, range->memobj ?
|
||||
range->memobj->flags : 0)) {
|
||||
error = -EINVAL;
|
||||
kprintf("ihk_mc_pt_split:NYI:page break down\n");
|
||||
goto out;
|
||||
@@ -3009,3 +3009,10 @@ int patch_process_vm(struct process_vm *vm, void *udst, const void *ksrc, size_t
|
||||
dkprintf("patch_process_vm(%p,%p,%p,%lx):%d\n", vm, udst, ksrc, siz, 0);
|
||||
return 0;
|
||||
} /* patch_process_vm() */
|
||||
|
||||
int split_contiguous_pages(pte_t *ptep, size_t pgsize,
|
||||
uint32_t memobj_flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user