powerpc: Update page-in counter for CMM
A new field has been added to the VPA as a method for the client OS to communicate to firmware the number of page-ins it is performing when running collaborative memory overcommit. The hypervisor will use this information to better determine if a partition is experiencing memory pressure and needs more memory allocated to it. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
1ef8014deb
commit
409001948d
3 changed files with 13 additions and 3 deletions
|
@ -133,7 +133,8 @@ struct lppaca {
|
|||
//=============================================================================
|
||||
// CACHE_LINE_4-5 0x0180 - 0x027F Contains PMC interrupt data
|
||||
//=============================================================================
|
||||
u8 pmc_save_area[256]; // PMC interrupt Area x00-xFF
|
||||
u32 page_ins; // CMO Hint - # page ins by OS x00-x04
|
||||
u8 pmc_save_area[252]; // PMC interrupt Area x04-xFF
|
||||
} __attribute__((__aligned__(0x400)));
|
||||
|
||||
extern struct lppaca lppaca[];
|
||||
|
|
|
@ -37,6 +37,7 @@ struct lppaca lppaca[] = {
|
|||
.end_of_quantum = 0xfffffffffffffffful,
|
||||
.slb_count = 64,
|
||||
.vmxregs_in_use = 0,
|
||||
.page_ins = 0,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <linux/kprobes.h>
|
||||
#include <linux/kdebug.h>
|
||||
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/mmu.h>
|
||||
|
@ -318,9 +319,16 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
|
|||
goto do_sigbus;
|
||||
BUG();
|
||||
}
|
||||
if (ret & VM_FAULT_MAJOR)
|
||||
if (ret & VM_FAULT_MAJOR) {
|
||||
current->maj_flt++;
|
||||
else
|
||||
#ifdef CONFIG_PPC_SMLPAR
|
||||
if (firmware_has_feature(FW_FEATURE_CMO)) {
|
||||
preempt_disable();
|
||||
get_lppaca()->page_ins++;
|
||||
preempt_enable();
|
||||
}
|
||||
#endif
|
||||
} else
|
||||
current->min_flt++;
|
||||
up_read(&mm->mmap_sem);
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue