arm64: rusage: Fix counting contiguous PTEs

Change-Id: I7e89c25d49dc1f6efe1c27c76c66c6fedd22af1f
Refs: #1342
This commit is contained in:
Masamichi Takagi
2019-07-30 11:45:38 +09:00
parent 0c1cae45fe
commit 51cd7cbb6c
9 changed files with 559 additions and 23 deletions

View File

@ -2671,17 +2671,28 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
} }
phys = args->phys + (base - start); phys = args->phys + (base - start);
if (__page_offset(base, PTL1_CONT_SIZE) == 0) { //check head pte
/* Check if we can begin / end a series of contiguous PTEs */
if (__page_offset(base, PTL1_CONT_SIZE) == 0) {
uintptr_t next_addr = base + PTL1_CONT_SIZE; uintptr_t next_addr = base + PTL1_CONT_SIZE;
if (end < next_addr) { if (end < next_addr) {
next_addr = end; next_addr = end;
} }
// set contiguous bit until the next head pte /* Begin the series if physical address is also aligned and
// if phys is aligned and range does not end early. * the range covers the series. Don't start or end it if
* physical address is not aligned or the range ends early.
*/
if (__page_offset(phys | next_addr, PTL1_CONT_SIZE) == 0) { if (__page_offset(phys | next_addr, PTL1_CONT_SIZE) == 0) {
args->attr[0] |= PTE_CONT; args->attr[0] |= PTE_CONT;
if (rusage_memory_stat_add(args->range, phys,
PTL1_CONT_SIZE,
PTL1_CONT_SIZE)) {
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base, phys,
PTL1_CONT_SIZE, PTL1_CONT_SIZE);
}
} else { } else {
args->attr[0] &= ~PTE_CONT; args->attr[0] &= ~PTE_CONT;
} }
@ -2691,12 +2702,13 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
error = 0; error = 0;
// call memory_stat_rss_add() here because pgshift is resolved here // call memory_stat_rss_add() here because pgshift is resolved here
if (rusage_memory_stat_add(args->range, phys, PTL1_SIZE, PTL1_SIZE)) { if (!(args->attr[0] & PTE_CONT)) {
if (rusage_memory_stat_add(args->range, phys,
PTL1_SIZE, PTL1_SIZE)) {
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base, phys, PTL1_SIZE, PTL1_SIZE); phys, __func__, base, phys,
} else { PTL1_SIZE, PTL1_SIZE);
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", }
__func__, base, phys, PTL1_SIZE, PTL1_SIZE);
} }
out: out:
@ -2760,7 +2772,9 @@ retry:
phys = args->phys + (base - start); phys = args->phys + (base - start);
//check head pte /* Check if we can begin / end a series of
* contiguous PTEs
*/
if (__page_offset(base, tbl.cont_pgsize) == 0) { if (__page_offset(base, tbl.cont_pgsize) == 0) {
uintptr_t next_addr = base + uintptr_t next_addr = base +
tbl.cont_pgsize; tbl.cont_pgsize;
@ -2769,11 +2783,24 @@ retry:
next_addr = end; next_addr = end;
} }
// set contiguous bit until the /* Begin the series if physical address
// next head pte if phys is aligned * is also aligned and the range covers
// and range does not end early. * the series. Don't start or end it if
* physical address is not aligned or
* the range ends early.
*/
if (__page_offset(phys | next_addr, tbl.cont_pgsize) == 0) { if (__page_offset(phys | next_addr, tbl.cont_pgsize) == 0) {
args->attr[level-1] |= PTE_CONT; args->attr[level-1] |= PTE_CONT;
if (rusage_memory_stat_add(args->range,
phys,
tbl.cont_pgsize,
tbl.cont_pgsize)) {
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__,
base, phys,
tbl.cont_pgsize,
tbl.cont_pgsize);
}
} else { } else {
args->attr[level-1] &= ~PTE_CONT; args->attr[level-1] &= ~PTE_CONT;
} }
@ -2781,21 +2808,23 @@ retry:
ptl_set(ptep, phys | args->attr[level-1], ptl_set(ptep, phys | args->attr[level-1],
level); level);
error = 0; error = 0;
dkprintf("set_range_middle(%lx,%lx,%lx,%d):" dkprintf("set_range_middle(%lx,%lx,%lx,%d):"
"large page. %d %lx\n", "large page. %d %lx\n",
base, start, end, level, error, *ptep); base, start, end, level, error, *ptep);
// Call memory_stat_rss_add() here because pgshift is resolved here // Call memory_stat_rss_add() here because pgshift is resolved here
if (rusage_memory_stat_add(args->range, phys, if (!(args->attr[level-1] & PTE_CONT)) {
if (rusage_memory_stat_add(args->range,
phys,
tbl.pgsize, tbl.pgsize,
tbl.pgsize)) { tbl.pgsize)) {
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base, phys, phys, __func__, base,
tbl.pgsize, tbl.pgsize); phys,
} else { tbl.pgsize,
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", tbl.pgsize);
__func__, base, phys, }
tbl.pgsize, tbl.pgsize);
} }
goto out; goto out;
} }

14
test/issues/1342/1342.sh Executable file
View File

@ -0,0 +1,14 @@
echo "Don't forget to apply patch.mck and patch.ihk"
. $HOME/.mck_test_config
BOOTPARAM="-c 4-7 -m 512M@0"
. ../../common.sh
$BIN/mcexec ./get_rusage 0
$BIN/mcexec ./issue_1325
$BIN/mcexec ./get_rusage 0
$SBIN/ihkosctl 0 kmsg > ./log
cat ./log | perl match.pl > ./diff

14
test/issues/1342/Makefile Normal file
View File

@ -0,0 +1,14 @@
include $(HOME)/.mck_test_config.mk
CFLAGS=-g -O0 -Wall -I$(MCK_DIR)/include
LDFLAGS=-L$(MCK_DIR)/lib64 -lihk -Wl,-rpath=$(MCK_DIR)/lib64
all:
$(CC) $(CFLAGS) $(LDFLAGS) get_rusage.c -o get_rusage
$(CC) $(CFLAGS) issue_1325.c -o issue_1325
test: all
./1342.sh
clean:
rm -f get_rusage issue_1325

18
test/issues/1342/README Normal file
View File

@ -0,0 +1,18 @@
==========
How to run
==========
$ (cd <mckernel>; patch -p1 < test/issues/1342/patch.mck)
$ (cd <ihk>; patch -p1 < test/issues/1342/patch.ihk)
Build McKernel
$ make test
Check if "log" file contains "<address>+,..." and the size of "diff"
file is zero.
================
Test description
================
(1) Show memory_stat_rss[]
(2) malloc 350 MB, touch the region, free it
(3) malloc 400 MB, touch the region, free it
(4) Show memory_stat_rss[], expecting the amounts are the same as in
(1)

View File

@ -0,0 +1,109 @@
/* get_rusage.c COPYRIGHT FUJITSU LIMITED 2019 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ihklib.h>
#include <ihk/ihk_rusage.h>
static void usage(char *cmd)
{
printf("Usage:\n");
printf(" %s <os_number>\n", cmd);
}
int main(int argc, char *argv[])
{
int os_num = 0;
int ret = -1;
int i = 0;
int nonzero = 0;
struct ihk_os_rusage mck_rusage;
if (argc != 2) {
usage(argv[0]);
goto out;
}
os_num = atoi(argv[1]);
if (os_num < 0 || 63 < os_num) {
printf("Invalid argument 1 os_num.\n");
usage(argv[0]);
goto out;
}
memset(&mck_rusage, 0, sizeof(mck_rusage));
ret = ihk_os_getrusage(os_num, &mck_rusage, sizeof(mck_rusage));
if (ret) {
perror("ihk_os_getrusage()");
goto out;
}
printf("show rusage:\n");
nonzero = 0;
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
if (mck_rusage.memory_stat_rss[i] != 0) {
printf(" memory_stat_rss[%d] : 0x%lx\n", i,
mck_rusage.memory_stat_rss[i]);
nonzero = 1;
}
}
if (nonzero == 0) {
printf(" memory_stat_rss is all 0x0\n");
}
nonzero = 0;
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
if (mck_rusage.memory_stat_mapped_file[i] != 0) {
printf(" memory_stat_mapped_file[%d] : 0x%lx\n", i,
mck_rusage.memory_stat_mapped_file[i]);
nonzero = 1;
}
}
if (nonzero == 0) {
printf(" memory_stat_mapped_file is all 0x0\n");
}
printf(" memory_max_usage : 0x%lx\n", mck_rusage.memory_max_usage);
printf(" memory_kmem_usage : 0x%lx\n", mck_rusage.memory_kmem_usage);
printf(" memory_kmem_max_usage : 0x%lx\n",
mck_rusage.memory_kmem_max_usage);
nonzero = 0;
for (i = 0; i < IHK_MAX_NUM_NUMA_NODES; i++) {
if (mck_rusage.memory_numa_stat[i] != 0) {
printf(" memory_numa_stat[%d] : 0x%lx\n", i,
mck_rusage.memory_numa_stat[i]);
nonzero = 1;
}
}
if (nonzero == 0) {
printf(" memory_numa_stat is all 0x0\n");
}
printf(" cpuacct_stat_system : 0x%lx\n",
mck_rusage.cpuacct_stat_system);
printf(" cpuacct_stat_user : 0x%lx\n", mck_rusage.cpuacct_stat_user);
printf(" cpuacct_usage : 0x%lx\n", mck_rusage.cpuacct_usage);
nonzero = 0;
for (i = 0; i < IHK_MAX_NUM_CPUS; i++) {
if (mck_rusage.cpuacct_usage_percpu[i] != 0) {
printf(" cpuacct_usage_percpu[%d] : 0x%lx\n", i,
mck_rusage.cpuacct_usage_percpu[i]);
nonzero = 1;
}
}
if (nonzero == 0) {
printf(" cpuacct_usage_percpu is all 0x0\n");
}
printf(" num_threads : 0x%x\n", mck_rusage.num_threads);
printf(" max_num_threads : 0x%x\n", mck_rusage.max_num_threads);
out:
return ret;
}

View File

@ -0,0 +1,47 @@
/* issue_1325.c COPYRIGHT FUJITSU LIMITED 2019 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/* for 512MiB allocated McKernel failure sizes */
#define MALLOC1_SIZE (350 * 1024 * 1024)
#define MALLOC2_SIZE (400 * 1024 * 1024)
int main(int argc, char *argv[])
{
const long pgsize = sysconf(_SC_PAGESIZE);
char *p1 = NULL;
char *p2 = NULL;
size_t off = 0;
int ret = -1;
p1 = malloc(MALLOC1_SIZE);
if (p1 == NULL) {
printf("malloc1:allocate failed.\n");
goto err;
}
printf("malloc1:allocate 0x%lx\n", (unsigned long)p1);
for (off = 0; off < MALLOC1_SIZE; off += pgsize) {
*(p1 + off) = 'Z';
}
printf("malloc1:access ok, free\n");
free(p1);
p2 = malloc(MALLOC2_SIZE);
if (p2 == NULL) {
printf("malloc2:allocate failed.\n");
goto err;
}
printf("malloc2:allocate 0x%lx\n", (unsigned long)p2);
for (off = 0; off < MALLOC2_SIZE; off += pgsize) {
*(p2 + off) = 'Z';
}
printf("malloc2:access ok, free\n");
free(p2);
ret = 0;
err:
return ret;
}

20
test/issues/1342/match.pl Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/perl
while(<>) {
if(/\[\s+\d+\]\:\s([^+^ ]+)\+,/) {
$addr = $1;
$count{$addr}++;
#print $addr . "\n";
}
if(/\[\s+\d+\]\:\s([^-^ ]+)\-,/) {
$addr = $1;
$count{$addr}--;
#print $addr . "\n";
}
}
foreach $key (sort keys(%count)) {
if($count{$key} != 0) {
print $key.",count=".$count{$key}."\n";
}
}

View File

@ -0,0 +1,13 @@
diff --git a/linux/include/ihk/ihk_debug.h b/linux/include/ihk/ihk_debug.h
index 9b53dd7..90ea713 100644
--- a/linux/include/ihk/ihk_debug.h
+++ b/linux/include/ihk/ihk_debug.h
@@ -8,7 +8,7 @@
#ifndef IHK_DEBUG_H_INCLUDED
#define IHK_DEBUG_H_INCLUDED
-#define IHK_KMSG_SIZE 8192
+#define IHK_KMSG_SIZE (1UL<<21)
#define IHK_KMSG_HIGH_WATER_MARK (IHK_KMSG_SIZE / 2)
#define IHK_KMSG_NOTIFY_DELAY 400 /* Unit is us, 400 us would avoid overloading fwrite of ihkmond */

272
test/issues/1342/patch.mck Normal file
View File

@ -0,0 +1,272 @@
diff --git a/arch/arm64/kernel/memory.c b/arch/arm64/kernel/memory.c
index 30ec5eed..97d814b3 100644
--- a/arch/arm64/kernel/memory.c
+++ b/arch/arm64/kernel/memory.c
@@ -1715,7 +1715,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
}
tt[i] = pte;
if (pgsize == PTL3_SIZE) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
pte_is_fileoff(ptep, pgsize) ?
pte_get_off(&pte, pgsize) :
pte_get_phys(&pte),
@@ -1723,7 +1723,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
memory_stat_rss_add(PTL2_SIZE, PTL2_SIZE);
}
else if (pgsize == PTL2_SIZE) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
pte_is_fileoff(ptep, pgsize) ?
pte_get_off(&pte, pgsize) :
pte_get_phys(&pte),
@@ -1737,7 +1737,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
PFL_PDIR_TBL_ATTR;
ptl_set(ptep, d_table, table_level);
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n",
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n",
phys_base, __func__, pgsize, pgsize);
memory_stat_rss_sub(pgsize, pgsize);
@@ -2147,7 +2147,7 @@ static void unmap_free_stat(struct page *page, unsigned long phys,
if (!page || page_unmap(page)) {
ihk_mc_free_pages_user(phys_to_virt(phys),
free_size >> PAGE_SHIFT);
- dkprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
phys, func, phys, free_size, free_size);
memory_stat_rss_sub(free_size, free_size);
}
@@ -2689,7 +2689,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
if (rusage_memory_stat_add(args->range, phys,
PTL1_CONT_SIZE,
PTL1_CONT_SIZE)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base, phys,
PTL1_CONT_SIZE, PTL1_CONT_SIZE);
}
@@ -2705,7 +2705,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
if (!(args->attr[0] & PTE_CONT)) {
if (rusage_memory_stat_add(args->range, phys,
PTL1_SIZE, PTL1_SIZE)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base, phys,
PTL1_SIZE, PTL1_SIZE);
}
@@ -2795,7 +2795,7 @@ retry:
phys,
tbl.cont_pgsize,
tbl.cont_pgsize)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__,
base, phys,
tbl.cont_pgsize,
@@ -2819,7 +2819,7 @@ retry:
phys,
tbl.pgsize,
tbl.pgsize)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, base,
phys,
tbl.pgsize,
diff --git a/arch/x86_64/kernel/memory.c b/arch/x86_64/kernel/memory.c
index df545e1b..c99db31e 100644
--- a/arch/x86_64/kernel/memory.c
+++ b/arch/x86_64/kernel/memory.c
@@ -893,11 +893,11 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
pt->entry[i] = pte;
switch(pgsize) {
case PTL3_SIZE:
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL2_SIZE, PTL2_SIZE);
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL2_SIZE, PTL2_SIZE);
memory_stat_rss_add(PTL2_SIZE, PTL2_SIZE);
break;
case PTL2_SIZE:
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL1_SIZE, PTL1_SIZE);
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL1_SIZE, PTL1_SIZE);
memory_stat_rss_add(PTL1_SIZE, PTL1_SIZE);
break;
}
@@ -906,7 +906,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
*ptep = (virt_to_phys(pt) & PT_PHYSMASK) | PFL2_PDIR_ATTR;
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys_base, __FUNCTION__, pgsize, pgsize);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys_base, __FUNCTION__, pgsize, pgsize);
memory_stat_rss_sub(pgsize, pgsize);
/* Do not do this check for large pages as they don't come from the zeroobj
@@ -1410,7 +1410,7 @@ static int clear_range_l1(void *args0, pte_t *ptep, uint64_t base,
if (!args->memobj || !(args->memobj->flags & MF_XPMEM)) {
ihk_mc_free_pages_user(phys_to_virt(phys), 1);
dkprintf("%s: freeing regular page at 0x%lx\n", __FUNCTION__, base);
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
memory_stat_rss_sub(PTL1_SIZE, PTL1_SIZE);
} else {
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
@@ -1419,7 +1419,7 @@ static int clear_range_l1(void *args0, pte_t *ptep, uint64_t base,
ihk_mc_free_pages_user(phys_to_virt(phys), 1);
dkprintf("%s: freeing file-backed page at 0x%lx\n", __FUNCTION__, base);
/* Track page->count for !MF_PREMAP pages */
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
rusage_memory_stat_sub(args->memobj, PTL1_SIZE, PTL1_SIZE);
}
} else {
@@ -1479,7 +1479,7 @@ static int clear_range_l2(void *args0, pte_t *ptep, uint64_t base,
ihk_mc_free_pages_user(phys_to_virt(phys),
PTL2_SIZE/PTL1_SIZE);
dkprintf("%s: freeing large page at 0x%lx\n", __FUNCTION__, base);
- dkprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old),__FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
+ kprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old),__FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
memory_stat_rss_sub(PTL2_SIZE, PTL2_SIZE);
} else {
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
@@ -1489,7 +1489,7 @@ static int clear_range_l2(void *args0, pte_t *ptep, uint64_t base,
PTL2_SIZE/PTL1_SIZE);
dkprintf("%s: having unmapped page-struct, freeing large page at 0x%lx\n", __FUNCTION__, base);
/* Track page->count for !MF_PREMAP pages */
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
rusage_memory_stat_sub(args->memobj, PTL2_SIZE, PTL2_SIZE);
}
}
@@ -1563,7 +1563,7 @@ static int clear_range_l3(void *args0, pte_t *ptep, uint64_t base,
if (!args->memobj || !(args->memobj->flags & MF_XPMEM)) {
ihk_mc_free_pages_user(phys_to_virt(phys),
PTL3_SIZE/PTL1_SIZE);
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%ld,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%ld,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
memory_stat_rss_sub(PTL3_SIZE, PTL3_SIZE);
} else {
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
@@ -1572,7 +1572,7 @@ static int clear_range_l3(void *args0, pte_t *ptep, uint64_t base,
ihk_mc_free_pages_user(phys_to_virt(phys),
PTL3_SIZE/PTL1_SIZE);
/* Track page->count for !MF_PREMAP pages */
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
rusage_memory_stat_sub(args->memobj, PTL3_SIZE, PTL3_SIZE);
}
}
@@ -1895,7 +1895,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
error = 0;
// call memory_stat_rss_add() here because pgshift is resolved here
if (rusage_memory_stat_add(args->range, phys, PTL1_SIZE, PTL1_SIZE)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
} else {
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
}
@@ -1933,7 +1933,7 @@ retry:
base, start, end, error, *ptep);
// Call memory_stat_rss_add() here because pgshift is resolved here
if (rusage_memory_stat_add(args->range, phys, PTL2_SIZE, PTL2_SIZE)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
} else {
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
}
@@ -2022,7 +2022,7 @@ retry:
// Call memory_stat_rss_add() here because pgshift is resolved here
if (rusage_memory_stat_add(args->range, phys, PTL3_SIZE, PTL3_SIZE)) {
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
} else {
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
}
diff --git a/kernel/fileobj.c b/kernel/fileobj.c
index ed6dd1df..a3c7b6f5 100644
--- a/kernel/fileobj.c
+++ b/kernel/fileobj.c
@@ -300,7 +300,7 @@ int fileobj_create(int fd, struct memobj **objp, int *maxprotp, int flags,
goto error_cleanup;
}
// Track change in memobj->pages[] for MF_PREMAP pages (MPOL_SHM_PREMAP case)
- dkprintf("%lx+,%s: MF_PREMAP&&MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(mo->pages[j]), __FUNCTION__, virt_to_phys(mo->pages[j]), PAGE_SIZE, PAGE_SIZE);
+ kprintf("%lx+,%s: MF_PREMAP&&MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(mo->pages[j]), __FUNCTION__, virt_to_phys(mo->pages[j]), PAGE_SIZE, PAGE_SIZE);
rusage_memory_stat_mapped_file_add(PAGE_SIZE, PAGE_SIZE);
memset(mo->pages[j], 0, PAGE_SIZE);
@@ -390,7 +390,7 @@ static void fileobj_free(struct memobj *memobj)
/* Track change in page->count for !MF_PREMAP pages.
* It is decremented here or in clear_range()
*/
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
phys, __func__, phys, PAGE_SIZE, PAGE_SIZE);
rusage_memory_stat_mapped_file_sub(PAGE_SIZE,
PAGE_SIZE);
@@ -409,7 +409,7 @@ static void fileobj_free(struct memobj *memobj)
// Track change in fileobj->pages[] for MF_PREMAP pages
// Note that page_unmap() isn't called for MF_PREMAP in
// free_process_memory_range() --> ihk_mc_pt_free_range()
- dkprintf("%lx-,%s: memory_stat_rss_sub,phys=%lx,size=%ld,pgsize=%ld\n",
+ kprintf("%lx-,%s: memory_stat_rss_sub,phys=%lx,size=%ld,pgsize=%ld\n",
virt_to_phys(to_memobj(obj)->pages[i]),
__func__,
virt_to_phys(to_memobj(obj)->pages[i]),
@@ -595,7 +595,7 @@ static int fileobj_get_page(struct memobj *memobj, off_t off,
dkprintf("%s: MF_ZEROFILL: off: %lu -> 0x%lx allocated\n",
__FUNCTION__, off, virt_to_phys(virt));
// Track change in memobj->pages[] for MF_PREMAP pages (!MPOL_SHM_PREMAP case)
- dkprintf("%lx+,%s: MF_PREMAP&&!MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(virt), __FUNCTION__, virt_to_phys(virt), PAGE_SIZE, PAGE_SIZE);
+ kprintf("%lx+,%s: MF_PREMAP&&!MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(virt), __FUNCTION__, virt_to_phys(virt), PAGE_SIZE, PAGE_SIZE);
rusage_memory_stat_mapped_file_add(PAGE_SIZE, PAGE_SIZE);
}
}
diff --git a/kernel/process.c b/kernel/process.c
index b63dba69..7e1fce7c 100644
--- a/kernel/process.c
+++ b/kernel/process.c
@@ -1558,7 +1558,7 @@ static int remap_one_page(void *arg0, page_table_t pt, pte_t *ptep,
page = phys_to_page(phys);
if (page && page_unmap(page)) {
ihk_mc_free_pages_user(phys_to_virt(phys), pgsize/PAGE_SIZE);
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
rusage_memory_stat_sub(args->memobj, pgsize, pgsize);
}
@@ -2022,12 +2022,12 @@ retry:
* (5) Reach here
*/
if (rusage_memory_stat_add(range, phys, pgsize, pgsize)) {
- dkprintf("%lx+,%s: COW-source pointed-to by only fileobj, calling memory_stat_rss_add(),pgsize=%ld\n",
+ kprintf("%lx+,%s: COW-source pointed-to by only fileobj, calling memory_stat_rss_add(),pgsize=%ld\n",
phys, __FUNCTION__, pgsize);
}
if (page) {
if (page_unmap(page)) {
- dkprintf("%lx-,%s: cow,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
+ kprintf("%lx-,%s: cow,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
rusage_memory_stat_sub(range->memobj, pgsize, pgsize);
}
}
@@ -2048,8 +2048,8 @@ retry:
if (!(reason & PF_PATCH) &&
rusage_memory_stat_add(range, phys, pgsize, pgsize)) {
/* on-demand paging, phys pages are obtained by ihk_mc_alloc_aligned_pages_user() or get_page() */
- dkprintf("%lx+,%s: (on-demand paging && first map) || cow,calling memory_stat_rss_add(),phys=%lx,pgsize=%ld\n",
- phys, __FUNCTION__, phys, pgsize);
+ kprintf("%lx+,%s: paging or cow,calling memory_stat_rss_add(),base=%lx,phys=%lx,pgsize=%ld\n",
+ phys, __FUNCTION__, fault_addr, phys, pgsize);
} else {
dkprintf("%s: !calling memory_stat_rss_add(),phys=%lx,pgsize=%ld\n",
__FUNCTION__, phys, pgsize);
@@ -2087,7 +2087,7 @@ out:
__FUNCTION__, page_to_phys(page),
range->start, range->end, range->flag, fault_addr, reason);
if (page_unmap(page)) {
- dkprintf("%lx-,%s: out,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", page_to_phys(page), __FUNCTION__, pgsize, pgsize);
+ kprintf("%lx-,%s: out,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", page_to_phys(page), __FUNCTION__, pgsize, pgsize);
rusage_memory_stat_sub(range->memobj, pgsize, pgsize);
}
}