From: Dave Hansen <dave.han...@linux.intel.com> When MPX can not free an entire bounds table, it will instead try to zap unused parts of a bounds table to free the backing memory. This decreases RSS (resident set size) without decreasing the virtual space allocated for bounds tables.
Signed-off-by: Dave Hansen <dave.han...@linux.intel.com> --- b/arch/x86/include/asm/trace/mpx.h | 22 ++++++++++++++++++++++ b/arch/x86/mm/mpx.c | 1 + 2 files changed, 23 insertions(+) diff -puN arch/x86/include/asm/trace/mpx.h~mpx-trace_unmap_zap arch/x86/include/asm/trace/mpx.h --- a/arch/x86/include/asm/trace/mpx.h~mpx-trace_unmap_zap 2015-03-27 14:35:05.577798421 -0700 +++ b/arch/x86/include/asm/trace/mpx.h 2015-03-27 14:35:05.582798647 -0700 @@ -53,6 +53,28 @@ TRACE_EVENT(bounds_exception_mpx, __entry->bndstatus) ); +TRACE_EVENT(mpx_unmap_zap, + + TP_PROTO(unsigned long start, + unsigned long end), + TP_ARGS(start, end), + + TP_STRUCT__entry( + __field(unsigned long, start) + __field(unsigned long, end) + ), + + TP_fast_assign( + __entry->start = start; + __entry->end = end; + ), + + TP_printk("[0x%p:0x%p]", + (void *)__entry->start, + (void *)__entry->end + ) +); + #else /* diff -puN arch/x86/mm/mpx.c~mpx-trace_unmap_zap arch/x86/mm/mpx.c --- a/arch/x86/mm/mpx.c~mpx-trace_unmap_zap 2015-03-27 14:35:05.579798511 -0700 +++ b/arch/x86/mm/mpx.c 2015-03-27 14:35:05.583798692 -0700 @@ -670,6 +670,7 @@ static int zap_bt_entries(struct mm_stru len = min(vma->vm_end, end) - addr; zap_page_range(vma, addr, len, NULL); + trace_mpx_unmap_zap(addr, addr+len); vma = vma->vm_next; addr = vma->vm_start; _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/