Revert "xpmem: Use correct process_vm in xpmem functions"

This reverts commit 0c63a2a3cd.

Change-Id: I7a67def6c45a67396b15cc55e96ffb5fc5898f28
This commit is contained in:
Masamichi Takagi
2020-06-16 10:39:23 +09:00
parent 7136384384
commit 29d27b7c8d
3 changed files with 62 additions and 57 deletions

View File

@@ -1414,9 +1414,10 @@ static void xpmem_detach_att(
XPMEM_DEBUG("call: apid=0x%lx, att=0x%p", ap->apid, att); XPMEM_DEBUG("call: apid=0x%lx, att=0x%p", ap->apid, att);
XPMEM_DEBUG("detaching att->vm=0x%p", (void *)att->vm); XPMEM_DEBUG("detaching current->vm=0x%p, att->vm=0x%p",
(void *)cpu_local_var(current)->vm, (void *)att->vm);
vm = att->vm; vm = cpu_local_var(current)->vm ? cpu_local_var(current)->vm : att->vm;
ihk_rwspinlock_read_lock_noirq(&vm->memory_range_lock); ihk_rwspinlock_read_lock_noirq(&vm->memory_range_lock);
@@ -1430,7 +1431,7 @@ static void xpmem_detach_att(
} }
att->flags |= XPMEM_FLAG_DESTROYING; att->flags |= XPMEM_FLAG_DESTROYING;
range = lookup_process_memory_range(vm, range = lookup_process_memory_range(cpu_local_var(current)->vm,
att->at_vaddr, att->at_vaddr + 1); att->at_vaddr, att->at_vaddr + 1);
if (!range || range->start > att->at_vaddr) { if (!range || range->start > att->at_vaddr) {
@@ -1467,7 +1468,8 @@ static void xpmem_detach_att(
XPMEM_DEBUG("xpmem_vm_munmap(): start=0x%lx, len=0x%lx", XPMEM_DEBUG("xpmem_vm_munmap(): start=0x%lx, len=0x%lx",
range->start, att->at_size); range->start, att->at_size);
ret = xpmem_vm_munmap(vm, (void *)range->start, att->at_size); ret = xpmem_vm_munmap(cpu_local_var(current)->vm, (void *)range->start,
att->at_size);
if (ret) { if (ret) {
ekprintf("%s: ERROR: xpmem_vm_munmap() failed %d\n", ekprintf("%s: ERROR: xpmem_vm_munmap() failed %d\n",
__FUNCTION__, ret); __FUNCTION__, ret);
@@ -1664,7 +1666,8 @@ int xpmem_remove_process_memory_range(
xpmem_att_ref(att); xpmem_att_ref(att);
ihk_rwspinlock_read_lock_noirq(&vm->memory_range_lock); ihk_rwspinlock_read_lock_noirq(
&cpu_local_var(current)->vm->memory_range_lock);
mcs_rwlock_writer_lock(&att->at_lock, &at_lock); mcs_rwlock_writer_lock(&att->at_lock, &at_lock);
@@ -1701,7 +1704,7 @@ int xpmem_remove_process_memory_range(
else { else {
remaining_vaddr = vmr->end; remaining_vaddr = vmr->end;
remaining_vmr = lookup_process_memory_range( remaining_vmr = lookup_process_memory_range(
vm, remaining_vaddr - 1, cpu_local_var(current)->vm, remaining_vaddr - 1,
remaining_vaddr); remaining_vaddr);
if (!remaining_vmr) { if (!remaining_vmr) {
ekprintf("%s: ERROR: vm_range is NULL\n", __FUNCTION__); ekprintf("%s: ERROR: vm_range is NULL\n", __FUNCTION__);
@@ -1722,7 +1725,7 @@ int xpmem_remove_process_memory_range(
} }
remaining_vmr = lookup_process_memory_range( remaining_vmr = lookup_process_memory_range(
vm, remaining_vaddr, cpu_local_var(current)->vm, remaining_vaddr,
remaining_vaddr + 1); remaining_vaddr + 1);
if (!remaining_vmr) { if (!remaining_vmr) {
ekprintf("%s: ERROR: vm_range is NULL\n", __FUNCTION__); ekprintf("%s: ERROR: vm_range is NULL\n", __FUNCTION__);
@@ -1746,7 +1749,8 @@ int xpmem_remove_process_memory_range(
out: out:
mcs_rwlock_writer_unlock(&att->at_lock, &at_lock); mcs_rwlock_writer_unlock(&att->at_lock, &at_lock);
ihk_rwspinlock_read_unlock_noirq(&vm->memory_range_lock); ihk_rwspinlock_read_unlock_noirq(
&cpu_local_var(current)->vm->memory_range_lock);
xpmem_att_deref(att); xpmem_att_deref(att);

View File

@@ -1,5 +1,5 @@
*** C1259T01 start ******************************* *** C1259T01 start *******************************
** xpmem_attach to Huge mapped memory range ** xpem_attach to Huge mapped memory range
** end of range is aligned with Large page size ** end of range is aligned with Large page size
pageshift: 21 pageshift: 21
** [ OK ] seg_addr (100000400000) is allocated until xpmem_attach ** [ OK ] seg_addr (100000400000) is allocated until xpmem_attach
@@ -13,7 +13,7 @@ pageshift: 34
*** C1259T01: PASSED *** C1259T01: PASSED
*** C1259T02 start ******************************* *** C1259T02 start *******************************
** xpmem_attach to Huge mapped memory range ** xpem_attach to Huge mapped memory range
** end of range is NOT aligned with Large page size ** end of range is NOT aligned with Large page size
pageshift: 21 pageshift: 21
** [ OK ] seg_addr (100000400000) is allocated until xpmem_attach ** [ OK ] seg_addr (100000400000) is allocated until xpmem_attach
@@ -27,15 +27,15 @@ pageshift: 34
*** C1259T02: PASSED *** C1259T02: PASSED
*** C1259T03 start ******************************* *** C1259T03 start *******************************
** xpmem_attach to small mapped memory range ** xpem_attach to small mapped memory range
pageshift: small page pageshift: small page
** [ OK ] xpmem_addr (100000210000) is allocated using small pages ** [ OK ] xpmem_addr (100000210000) is allocated using small pages
*** C1259T03: PASSED *** C1259T03: PASSED
*** C1259T04 start ******************************* *** C1259T04 start *******************************
** xpmem_attach to multi pagesize range ** xpem_attach to multi pagesize range
pageshift: 21 pageshift: 21
** [ OK ] xpmem_addr (100000600000) is allocated using large pages ** [ OK ] xpmem_addr (100000400000) is allocated using large pages
*** C1259T04: PASSED *** C1259T04: PASSED
*** C1259T05 start ******************************* *** C1259T05 start *******************************
@@ -43,12 +43,12 @@ pageshift: 21
XPMEM version = 26003 XPMEM version = 26003
==== test_base STARTS ==== ==== test_base STARTS ====
xpmem_proc1: mypid = 38514 xpmem_proc1: mypid = 10105
xpmem_proc1: sharing 262144 bytes xpmem_proc1: sharing 262144 bytes
xpmem_proc1: segid = 200009672 at 0x100000210000 xpmem_proc1: segid = 200002779 at 0x100000210000
xpmem_proc2: mypid = 38711 xpmem_proc2: mypid = 10303
xpmem_proc2: segid = 200009672 xpmem_proc2: segid = 200002779
xpmem_proc2: attached at 0x100000210000 xpmem_proc2: attached at 0x100000210000
xpmem_proc2: adding 1 to all elems xpmem_proc2: adding 1 to all elems
@@ -56,12 +56,13 @@ xpmem_proc1: verifying data...done
==== test_base PASSED ==== ==== test_base PASSED ====
==== test_two_attach STARTS ==== ==== test_two_attach STARTS ====
xpmem_proc1: mypid = 39028 xpmem_proc1: mypid = 10528
xpmem_proc1: sharing 262144 bytes xpmem_proc1: sharing 262144 bytes
xpmem_proc1: segid = 200009874 at 0x100000210000 xpmem_proc1: segid = 200002920 at 0x100000210000
xpmem_proc2: mypid = 39233 xpmem_proc2: line 228: 11049 Segmentation fault rm -f "$progdir/$file"
xpmem_proc2: segid = 200009874 xpmem_proc2: mypid = 10733
xpmem_proc2: segid = 200002920
xpmem_proc2: attached at 0x100000210000 xpmem_proc2: attached at 0x100000210000
xpmem_proc2: attached at 0x100000250000 xpmem_proc2: attached at 0x100000250000
xpmem_proc2: adding 1 to all elems using 0x100000210000 xpmem_proc2: adding 1 to all elems using 0x100000210000
@@ -71,14 +72,14 @@ xpmem_proc1: verifying data...done
==== test_two_attach PASSED ==== ==== test_two_attach PASSED ====
==== test_two_shares STARTS ==== ==== test_two_shares STARTS ====
xpmem_proc1: mypid = 39429 xpmem_proc1: mypid = 11064
xpmem_proc1: sharing 2 segments, 262144 bytes each xpmem_proc1: sharing 2 segments, 262144 bytes each
xpmem_proc1: segid[0] = 200009a05 at 0x100000210000 xpmem_proc1: segid[0] = 200002b38 at 0x100000210000
xpmem_proc1: segid[1] = 400009a05 at 0x100000250000 xpmem_proc1: segid[1] = 400002b38 at 0x100000250000
xpmem_proc2: mypid = 39625 xpmem_proc2: mypid = 11261
xpmem_proc2: segid[0] = 200009a05 xpmem_proc2: segid[0] = 200002b38
xpmem_proc2: segid[1] = 400009a05 xpmem_proc2: segid[1] = 400002b38
xpmem_proc2: data[0] attached at 0x100000210000 xpmem_proc2: data[0] attached at 0x100000210000
xpmem_proc2: data[1] attached at 0x100000250000 xpmem_proc2: data[1] attached at 0x100000250000
xpmem_proc2: adding 1 to all elems using 0x100000210000 xpmem_proc2: adding 1 to all elems using 0x100000210000
@@ -88,12 +89,12 @@ xpmem_proc1: verifying data...done
==== test_two_shares PASSED ==== ==== test_two_shares PASSED ====
==== test_fork STARTS ==== ==== test_fork STARTS ====
xpmem_proc1: mypid = 39831 xpmem_proc1: mypid = 11598
xpmem_proc1: sharing 262144 bytes xpmem_proc1: sharing 262144 bytes
xpmem_proc1: segid = 200009b97 at 0x100000210000 xpmem_proc1: segid = 200002d4e at 0x100000210000
xpmem_proc2: mypid = 40027 xpmem_proc2: mypid = 11803
xpmem_proc2: segid = 200009b97 xpmem_proc2: segid = 200002d4e
xpmem_proc2: attached at 0x100000220000 xpmem_proc2: attached at 0x100000220000
xpmem_proc2: reading to pin pages xpmem_proc2: reading to pin pages
xpmem_proc2: waiting for COW... xpmem_proc2: waiting for COW...
@@ -101,7 +102,7 @@ xpmem_proc2: waiting for COW...
xpmem_proc1: forking a child xpmem_proc1: forking a child
xpmem_proc1: adding 1 to all elems to induce COW xpmem_proc1: adding 1 to all elems to induce COW
xpmem_child: hello from pid 40224 xpmem_child: hello from pid 12004
xpmem_proc1: give control back to xpmem_proc2 xpmem_proc1: give control back to xpmem_proc2

View File

@@ -1,5 +1,5 @@
*** C1259T01 start ******************************* *** C1259T01 start *******************************
** xpmem_attach to Huge mapped memory range ** xpem_attach to Huge mapped memory range
** end of range is aligned with Large page size ** end of range is aligned with Large page size
pageshift: 21 pageshift: 21
** [ OK ] seg_addr (2aaaab000000) is allocated until xpmem_attach ** [ OK ] seg_addr (2aaaab000000) is allocated until xpmem_attach
@@ -10,7 +10,7 @@ pageshift: 30
*** C1259T01: PASSED *** C1259T01: PASSED
*** C1259T02 start ******************************* *** C1259T02 start *******************************
** xpmem_attach to Huge mapped memory range ** xpem_attach to Huge mapped memory range
** end of range is NOT aligned with Large page size ** end of range is NOT aligned with Large page size
pageshift: 21 pageshift: 21
** [ OK ] seg_addr (2aaaab000000) is allocated until xpmem_attach ** [ OK ] seg_addr (2aaaab000000) is allocated until xpmem_attach
@@ -21,15 +21,15 @@ pageshift: 30
*** C1259T02: PASSED *** C1259T02: PASSED
*** C1259T03 start ******************************* *** C1259T03 start *******************************
** xpmem_attach to small mapped memory range ** xpem_attach to small mapped memory range
pageshift: small page pageshift: small page
** [ OK ] xpmem_addr (2aaaaafee000) is allocated using small pages ** [ OK ] xpmem_addr (2aaaaafee000) is allocated using small pages
*** C1259T03: PASSED *** C1259T03: PASSED
*** C1259T04 start ******************************* *** C1259T04 start *******************************
** xpmem_attach to multi pagesize range ** xpem_attach to multi pagesize range
pageshift: 21 pageshift: 21
** [ OK ] xpmem_addr (2aaaab200000) is allocated using large pages ** [ OK ] xpmem_addr (2aaaab000000) is allocated using large pages
*** C1259T04: PASSED *** C1259T04: PASSED
*** C1259T05 start ******************************* *** C1259T05 start *******************************
@@ -37,12 +37,12 @@ pageshift: 21
XPMEM version = 26003 XPMEM version = 26003
==== test_base STARTS ==== ==== test_base STARTS ====
xpmem_proc1: mypid = 20070 xpmem_proc1: mypid = 13702
xpmem_proc1: sharing 16384 bytes xpmem_proc1: sharing 16384 bytes
xpmem_proc1: segid = 200004e66 at 0x2aaaaafee000 xpmem_proc1: segid = 200003586 at 0x2aaaaafee000
xpmem_proc2: mypid = 20490 xpmem_proc2: mypid = 14123
xpmem_proc2: segid = 200004e66 xpmem_proc2: segid = 200003586
xpmem_proc2: attached at 0x2aaaaafee000 xpmem_proc2: attached at 0x2aaaaafee000
xpmem_proc2: adding 1 to all elems xpmem_proc2: adding 1 to all elems
@@ -50,12 +50,12 @@ xpmem_proc1: verifying data...done
==== test_base PASSED ==== ==== test_base PASSED ====
==== test_two_attach STARTS ==== ==== test_two_attach STARTS ====
xpmem_proc1: mypid = 20913 xpmem_proc1: mypid = 14543
xpmem_proc1: sharing 16384 bytes xpmem_proc1: sharing 16384 bytes
xpmem_proc1: segid = 2000051b1 at 0x2aaaaafee000 xpmem_proc1: segid = 2000038cf at 0x2aaaaafee000
xpmem_proc2: mypid = 21336 xpmem_proc2: mypid = 14963
xpmem_proc2: segid = 2000051b1 xpmem_proc2: segid = 2000038cf
xpmem_proc2: attached at 0x2aaaaafee000 xpmem_proc2: attached at 0x2aaaaafee000
xpmem_proc2: attached at 0x2aaaaaff2000 xpmem_proc2: attached at 0x2aaaaaff2000
xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000 xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000
@@ -65,14 +65,14 @@ xpmem_proc1: verifying data...done
==== test_two_attach PASSED ==== ==== test_two_attach PASSED ====
==== test_two_shares STARTS ==== ==== test_two_shares STARTS ====
xpmem_proc1: mypid = 21758 xpmem_proc1: mypid = 15383
xpmem_proc1: sharing 2 segments, 16384 bytes each xpmem_proc1: sharing 2 segments, 16384 bytes each
xpmem_proc1: segid[0] = 2000054fe at 0x2aaaaafee000 xpmem_proc1: segid[0] = 200003c17 at 0x2aaaaafee000
xpmem_proc1: segid[1] = 4000054fe at 0x2aaaaaff2000 xpmem_proc1: segid[1] = 400003c17 at 0x2aaaaaff2000
xpmem_proc2: mypid = 22179 xpmem_proc2: mypid = 15807
xpmem_proc2: segid[0] = 2000054fe xpmem_proc2: segid[0] = 200003c17
xpmem_proc2: segid[1] = 4000054fe xpmem_proc2: segid[1] = 400003c17
xpmem_proc2: data[0] attached at 0x2aaaaafee000 xpmem_proc2: data[0] attached at 0x2aaaaafee000
xpmem_proc2: data[1] attached at 0x2aaaaaff2000 xpmem_proc2: data[1] attached at 0x2aaaaaff2000
xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000 xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000
@@ -82,23 +82,23 @@ xpmem_proc1: verifying data...done
==== test_two_shares PASSED ==== ==== test_two_shares PASSED ====
==== test_fork STARTS ==== ==== test_fork STARTS ====
xpmem_proc1: mypid = 22599 xpmem_proc1: mypid = 16227
xpmem_proc1: sharing 16384 bytes xpmem_proc1: sharing 16384 bytes
xpmem_proc1: segid = 200005847 at 0x2aaaaafee000 xpmem_proc1: segid = 200003f63 at 0x2aaaaafee000
xpmem_proc2: mypid = 23022 xpmem_proc2: mypid = 16647
xpmem_proc2: segid = 200005847 xpmem_proc2: segid = 200003f63
xpmem_proc2: attached at 0x2aaaaafef000 xpmem_proc2: attached at 0x2aaaaafef000
xpmem_proc2: reading to pin pages xpmem_proc2: reading to pin pages
xpmem_proc2: waiting for COW... xpmem_proc2: waiting for COW...
xpmem_proc1: forking a child xpmem_proc1: forking a child
xpmem_proc1: adding 1 to all elems to induce COW xpmem_proc1: adding 1 to all elems to induce COW
xpmem_proc1: give control back to xpmem_proc2 xpmem_proc1: give control back to xpmem_proc2
xpmem_child: hello from pid 23443
xpmem_child: hello from pid 17067
xpmem_proc2: adding 1 to all elems xpmem_proc2: adding 1 to all elems
xpmem_proc1: verifying data...done xpmem_proc1: verifying data...done