From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 06/15] xen/trace: add ptpage alloc/release tracepoints Date: Tue, 21 Jun 2011 09:55:11 -0400 Message-ID: <20110621135511.GB28229@dumpdata.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jeremy Fitzhardinge Cc: Jeremy Fitzhardinge , Xen Devel , Ingo Molnar , Steven Rostedt , Linux Kernel Mailing List List-Id: xen-devel@lists.xenproject.org On Mon, Jun 20, 2011 at 03:15:02PM -0700, Jeremy Fitzhardinge wrote: > From: Jeremy Fitzhardinge > > Signed-off-by: Jeremy Fitzhardinge > --- > arch/x86/xen/mmu.c | 10 ++++++++-- > include/trace/events/xen.h | 33 +++++++++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c > index 90101c5..84c796f 100644 > --- a/arch/x86/xen/mmu.c > +++ b/arch/x86/xen/mmu.c > @@ -1473,8 +1473,11 @@ static void __init xen_release_pmd_init(unsigned long pfn) > static void xen_alloc_ptpage(struct mm_struct *mm, unsigned long pfn, unsigned level) > { > struct page *page = pfn_to_page(pfn); > + int pinned = PagePinned(virt_to_page(mm->pgd)); Why not use 'bool' as you > + ^ this above has a space right after it. > + trace_xen_mmu_alloc_ptpage(mm, pfn, level, pinned); > > - if (PagePinned(virt_to_page(mm->pgd))) { > + if (pinned) { > SetPagePinned(page); > > if (!PageHighMem(page)) { > @@ -1503,8 +1506,11 @@ static void xen_alloc_pmd(struct mm_struct *mm, unsigned long pfn) > static void xen_release_ptpage(unsigned long pfn, unsigned level) > { > struct page *page = pfn_to_page(pfn); > + bool pinned = PagePinned(page); ..do here? > > - if (PagePinned(page)) { > + trace_xen_mmu_release_ptpage(pfn, level, pinned); > + > + if (pinned) { > if (!PageHighMem(page)) { > if (level == PT_PTE && USE_SPLIT_PTLOCKS) > pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, pfn); > diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h > index 5c4e967..16edcb7 100644 > --- a/include/trace/events/xen.h > +++ b/include/trace/events/xen.h > @@ -347,6 +347,39 @@ TRACE_EVENT(xen_mmu_ptep_modify_prot_commit, > (int)sizeof(pteval_t) * 2, (unsigned long long)__entry->pteval) > ); > > +TRACE_EVENT(xen_mmu_alloc_ptpage, > + TP_PROTO(struct mm_struct *mm, unsigned long pfn, unsigned level, bool pinned), > + TP_ARGS(mm, pfn, level, pinned), > + TP_STRUCT__entry( > + __field(struct mm_struct *, mm) > + __field(unsigned long, pfn) > + __field(unsigned, level) > + __field(bool, pinned) > + ), > + TP_fast_assign(__entry->mm = mm; > + __entry->pfn = pfn; > + __entry->level = level; > + __entry->pinned = pinned), > + TP_printk("mm %p pfn %lx level %d %spinned", > + __entry->mm, __entry->pfn, __entry->level, > + __entry->pinned ? "" : "un") > + ); > + > +TRACE_EVENT(xen_mmu_release_ptpage, > + TP_PROTO(unsigned long pfn, unsigned level, bool pinned), > + TP_ARGS(pfn, level, pinned), > + TP_STRUCT__entry( > + __field(unsigned long, pfn) > + __field(unsigned, level) > + __field(bool, pinned) > + ), > + TP_fast_assign(__entry->pfn = pfn; > + __entry->level = level; > + __entry->pinned = pinned), > + TP_printk("pfn %lx level %d %spinned", > + __entry->pfn, __entry->level, > + __entry->pinned ? "" : "un") > + ); > > #endif /* _TRACE_XEN_H */ > > -- > 1.7.5.4