diff options
author | ChengYang Fu <chengyangfu@gmail.com> | 2015-01-20 11:08:04 -0500 |
---|---|---|
committer | ChengYang Fu <chengyangfu@gmail.com> | 2015-01-20 11:08:04 -0500 |
commit | 75c984d66a06cc620cd3b77be2b238ab1be8f430 (patch) | |
tree | 230bc5daea8cfb88198efbfa39afb079da9602f7 /litmus/litmus.c | |
parent | 07d5680c4c476a4b68bd3cff134d99ca996b2481 (diff) |
add bank_proc.c for cache and bank coloring
Diffstat (limited to 'litmus/litmus.c')
-rw-r--r-- | litmus/litmus.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/litmus/litmus.c b/litmus/litmus.c index 88cc3e043b0b..6c2c82565281 100644 --- a/litmus/litmus.c +++ b/litmus/litmus.c | |||
@@ -392,11 +392,14 @@ static struct page *walk_page_table(unsigned long addr) | |||
392 | extern int isolate_lru_page(struct page *page); | 392 | extern int isolate_lru_page(struct page *page); |
393 | extern void putback_lru_page(struct page *page); | 393 | extern void putback_lru_page(struct page *page); |
394 | 394 | ||
395 | extern struct page *new_alloc_page(struct page *page, unsigned long node, int **x); | ||
396 | |||
397 | #if 0 | ||
395 | static struct page *new_alloc_page(struct page *page, unsigned long node, int **x) | 398 | static struct page *new_alloc_page(struct page *page, unsigned long node, int **x) |
396 | { | 399 | { |
397 | return alloc_pages_exact_node(node, GFP_HIGHUSER_MOVABLE, 0); | 400 | return alloc_pages_exact_node(node, GFP_HIGHUSER_MOVABLE, 0); |
398 | } | 401 | } |
399 | 402 | #endif | |
400 | asmlinkage long sys_set_page_color(int cpu) | 403 | asmlinkage long sys_set_page_color(int cpu) |
401 | { | 404 | { |
402 | long ret = 0; | 405 | long ret = 0; |
@@ -423,8 +426,8 @@ asmlinkage long sys_set_page_color(int cpu) | |||
423 | */ | 426 | */ |
424 | num_pages = (vma_itr->vm_end - vma_itr->vm_start) / PAGE_SIZE; | 427 | num_pages = (vma_itr->vm_end - vma_itr->vm_start) / PAGE_SIZE; |
425 | // print vma flags | 428 | // print vma flags |
426 | //printk(KERN_INFO "flags: 0x%lx\n", vma_itr->vm_flags); | 429 | printk(KERN_INFO "flags: 0x%lx\n", vma_itr->vm_flags); |
427 | //printk(KERN_INFO "start - end: 0x%lx - 0x%lx (%lu)\n", vma_itr->vm_start, vma_itr->vm_end, (vma_itr->vm_end - vma_itr->vm_start)/PAGE_SIZE); | 430 | printk(KERN_INFO "start - end: 0x%lx - 0x%lx (%lu)\n", vma_itr->vm_start, vma_itr->vm_end, (vma_itr->vm_end - vma_itr->vm_start)/PAGE_SIZE); |
428 | 431 | ||
429 | for (i = 0; i < num_pages; i++) { | 432 | for (i = 0; i < num_pages; i++) { |
430 | /* | 433 | /* |
@@ -447,7 +450,7 @@ asmlinkage long sys_set_page_color(int cpu) | |||
447 | //if (pfn_valid(__page_to_pfn(old_page))) | 450 | //if (pfn_valid(__page_to_pfn(old_page))) |
448 | if (!ret) { | 451 | if (!ret) { |
449 | //printk(KERN_INFO "page_mapcount = %d\n", page_mapcount(old_page)); | 452 | //printk(KERN_INFO "page_mapcount = %d\n", page_mapcount(old_page)); |
450 | printk(KERN_INFO "addr: %lu, pfn: %lu mapcount: %d\n", vma_itr->vm_start + PAGE_SIZE*i, __page_to_pfn(old_page), page_mapcount(old_page)); | 453 | printk(KERN_INFO "addr: %lu, pfn: %lu %08x mapcount: %d\n", vma_itr->vm_start + PAGE_SIZE*i, __page_to_pfn(old_page), page_to_phys(old_page), page_mapcount(old_page)); |
451 | list_add_tail(&old_page->lru, &pagelist); | 454 | list_add_tail(&old_page->lru, &pagelist); |
452 | inc_zone_page_state(old_page, NR_ISOLATED_ANON + !PageSwapBacked(old_page)); | 455 | inc_zone_page_state(old_page, NR_ISOLATED_ANON + !PageSwapBacked(old_page)); |
453 | nr_pages++; | 456 | nr_pages++; |
@@ -464,7 +467,7 @@ put_and_next: | |||
464 | 467 | ||
465 | ret = 0; | 468 | ret = 0; |
466 | if (!list_empty(&pagelist)) { | 469 | if (!list_empty(&pagelist)) { |
467 | ret = migrate_pages(&pagelist, new_alloc_page, 0, MIGRATE_ASYNC, MR_SYSCALL); | 470 | ret = migrate_pages(&pagelist, new_alloc_page, 4, MIGRATE_ASYNC, MR_SYSCALL); |
468 | if (ret) { | 471 | if (ret) { |
469 | printk(KERN_INFO "%ld pages not migrated.\n", ret); | 472 | printk(KERN_INFO "%ld pages not migrated.\n", ret); |
470 | putback_lru_pages(&pagelist); | 473 | putback_lru_pages(&pagelist); |