[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/5] dbg_rw_guest_mem: Conditionally enable debug log output
On Tue, 7 Jan 2014 19:25:46 -0500 Don Slutz <dslutz@xxxxxxxxxxx> wrote: > If dbg_debug is non-zero, output debug. > > Include put_gfn debug logging. > > Here is a smaple output at dbg_debug == 2: > > (XEN) [2014-01-07 03:20:09] gmem:addr:8f56 buf:00000000006e2020 > len:$1 domid:1 toaddr:0 dp:ffff83083e5fe000 (XEN) [2014-01-07 > 03:20:09] vaddr:8f56 domid:1 (XEN) [2014-01-07 03:20:09] X: > vaddr:8f56 domid:1 mfn:64331a (XEN) [2014-01-07 03:20:09] R: > addr:8f56 pagecnt=1 domid:1 gfn:8 (XEN) [2014-01-07 03:20:09] > gmem:exit:len:$0 (XEN) [2014-01-07 03:20:09] gmem:addr:8f57 > buf:00000000006e2020 len:$1 domid:1 toaddr:0 dp:ffff83083e5fe000 > (XEN) [2014-01-07 03:20:09] vaddr:8f57 domid:1 (XEN) [2014-01-07 > 03:20:09] X: vaddr:8f57 domid:1 mfn:64331a (XEN) [2014-01-07 > 03:20:09] R: addr:8f57 pagecnt=1 domid:1 gfn:8 (XEN) [2014-01-07 > 03:20:09] gmem:exit:len:$0 (XEN) [2014-01-07 03:20:09] > gmem:addr:6ae9168b buf:00000000006e2020 len:$2 domid:1 toaddr:0 > dp:ffff83083e5fe000 (XEN) [2014-01-07 03:20:09] vaddr:6ae9168b > domid:1 (XEN) [2014-01-07 03:20:09] X: vaddr:6ae9168b domid:1 > mfn:ffffffffffffffff (XEN) [2014-01-07 03:20:09] R: domid:1 gfn:6ae91 > (XEN) [2014-01-07 03:20:09] gmem:exit:len:$2 > > Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> Acked-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> > --- > xen/arch/x86/debug.c | 54 > +++++++++++++++++++++++++--------------------------- 1 file changed, > 26 insertions(+), 28 deletions(-) > > diff --git a/xen/arch/x86/debug.c b/xen/arch/x86/debug.c > index ba6a64d..777e5ba 100644 > --- a/xen/arch/x86/debug.c > +++ b/xen/arch/x86/debug.c > @@ -30,16 +30,9 @@ > * gdbsx, etc.. > */ > > -#ifdef XEN_KDB_CONFIG > -#include "../kdb/include/kdbdefs.h" > -#include "../kdb/include/kdbproto.h" > -#define DBGP(...) {(kdbdbg) ? kdbp(__VA_ARGS__):0;} > -#define DBGP1(...) {(kdbdbg>1) ? kdbp(__VA_ARGS__):0;} > -#define DBGP2(...) {(kdbdbg>2) ? kdbp(__VA_ARGS__):0;} > -#else > -#define DBGP1(...) ((void)0) > -#define DBGP2(...) ((void)0) > -#endif > +static volatile int dbg_debug; > +#define DBGP(...) {(dbg_debug) ? printk(__VA_ARGS__) : 0;} > +#define DBGP1(...) {(dbg_debug > 1) ? printk(__VA_ARGS__) : 0;} > > /* Returns: mfn for the given (hvm guest) vaddr */ > static unsigned long > @@ -50,27 +43,28 @@ dbg_hvm_va2mfn(dbgva_t vaddr, struct domain *dp, > int toaddr, uint32_t pfec = PFEC_page_present; > p2m_type_t gfntype; > > - DBGP2("vaddr:%lx domid:%d\n", vaddr, dp->domain_id); > + DBGP1("vaddr:%lx domid:%d\n", vaddr, dp->domain_id); > > *gfn = paging_gva_to_gfn(dp->vcpu[0], vaddr, &pfec); > if ( *gfn == INVALID_GFN ) > { > - DBGP2("kdb:bad gfn from gva_to_gfn\n"); > + DBGP1("kdb:bad gfn from gva_to_gfn\n"); > return INVALID_MFN; > } > > mfn = mfn_x(get_gfn(dp, *gfn, &gfntype)); > if ( p2m_is_readonly(gfntype) && toaddr ) > { > - DBGP2("kdb:p2m_is_readonly: gfntype:%x\n", gfntype); > + DBGP1("kdb:p2m_is_readonly: gfntype:%x\n", gfntype); > mfn = INVALID_MFN; > } > > - DBGP2("X: vaddr:%lx domid:%d mfn:%lx\n", vaddr, dp->domain_id, > mfn); > + DBGP1("X: vaddr:%lx domid:%d mfn:%lx\n", vaddr, dp->domain_id, > mfn); > if ( mfn == INVALID_MFN ) > { > put_gfn(dp, *gfn); > + DBGP1("R: domid:%d gfn:%lx\n", dp->domain_id, *gfn); > *gfn = INVALID_GFN; > } > > @@ -100,7 +94,7 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, > uint64_t pgd3val) unsigned long cr3 = (pgd3val ? pgd3val : > dp->vcpu[0]->arch.cr3); unsigned long mfn = cr3 >> PAGE_SHIFT; > > - DBGP2("vaddr:%lx domid:%d cr3:%lx pgd3:%lx\n", vaddr, > dp->domain_id, > + DBGP1("vaddr:%lx domid:%d cr3:%lx pgd3:%lx\n", vaddr, > dp->domain_id, cr3, pgd3val); > > if ( pgd3val == 0 ) > @@ -109,11 +103,11 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, > uint64_t pgd3val) l4e = l4t[l4_table_offset(vaddr)]; > unmap_domain_page(l4t); > mfn = l4e_get_pfn(l4e); > - DBGP2("l4t:%p l4to:%lx l4e:%lx mfn:%lx\n", l4t, > - l4_table_offset(vaddr), l4e, mfn); > + DBGP1("l4t:%p l4to:%lx l4e:%" PRIpte " mfn:%lx\n", > + l4t, l4_table_offset(vaddr), l4e_get_intpte(l4e), mfn); > if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) ) > { > - DBGP1("l4 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, > cr3); > + DBGP("l4 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, > cr3); return INVALID_MFN; > } > > @@ -121,12 +115,12 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, > uint64_t pgd3val) l3e = l3t[l3_table_offset(vaddr)]; > unmap_domain_page(l3t); > mfn = l3e_get_pfn(l3e); > - DBGP2("l3t:%p l3to:%lx l3e:%lx mfn:%lx\n", l3t, > - l3_table_offset(vaddr), l3e, mfn); > + DBGP1("l3t:%p l3to:%lx l3e:%" PRIpte " mfn:%lx\n", > + l3t, l3_table_offset(vaddr), l3e_get_intpte(l3e), mfn); > if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || > (l3e_get_flags(l3e) & _PAGE_PSE) ) > { > - DBGP1("l3 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, > cr3); > + DBGP("l3 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, > cr3); return INVALID_MFN; > } > } > @@ -135,20 +129,20 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, > uint64_t pgd3val) l2e = l2t[l2_table_offset(vaddr)]; > unmap_domain_page(l2t); > mfn = l2e_get_pfn(l2e); > - DBGP2("l2t:%p l2to:%lx l2e:%lx mfn:%lx\n", l2t, > l2_table_offset(vaddr), > - l2e, mfn); > + DBGP1("l2t:%p l2to:%lx l2e:%" PRIpte " mfn:%lx\n", > + l2t, l2_table_offset(vaddr), l2e_get_intpte(l2e), mfn); > if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || > (l2e_get_flags(l2e) & _PAGE_PSE) ) > { > - DBGP1("l2 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, > cr3); > + DBGP("l2 PAGE not present. vaddr:%lx cr3:%lx\n", vaddr, cr3); > return INVALID_MFN; > } > l1t = map_domain_page(mfn); > l1e = l1t[l1_table_offset(vaddr)]; > unmap_domain_page(l1t); > mfn = l1e_get_pfn(l1e); > - DBGP2("l1t:%p l1to:%lx l1e:%lx mfn:%lx\n", l1t, > l1_table_offset(vaddr), > - l1e, mfn); > + DBGP1("l1t:%p l1to:%lx l1e:%" PRIpte " mfn:%lx\n", > + l1t, l1_table_offset(vaddr), l1e_get_intpte(l1e), mfn); > > return mfn_valid(mfn) ? mfn : INVALID_MFN; > } > @@ -186,7 +180,11 @@ dbg_rw_guest_mem(dbgva_t addr, dbgbyte_t *buf, > int len, struct domain *dp, > unmap_domain_page(va); > if ( gfn != INVALID_GFN ) > + { > put_gfn(dp, gfn); > + DBGP1("R: addr:%lx pagecnt=%ld domid:%d gfn:%lx\n", > + addr, pagecnt, dp->domain_id, gfn); > + } > > addr += pagecnt; > buf += pagecnt; > @@ -210,7 +208,7 @@ dbg_rw_mem(dbgva_t addr, dbgbyte_t *buf, int len, > domid_t domid, int toaddr, struct domain *dp = > get_domain_by_id(domid); int hyp = (domid == DOMID_IDLE); > > - DBGP2("gmem:addr:%lx buf:%p len:$%d domid:%x toaddr:%x dp:%p\n", > + DBGP1("gmem:addr:%lx buf:%p len:$%d domid:%x toaddr:%x dp:%p\n", > addr, buf, len, domid, toaddr, dp); > if ( hyp ) > { > @@ -226,7 +224,7 @@ dbg_rw_mem(dbgva_t addr, dbgbyte_t *buf, int len, > domid_t domid, int toaddr, put_domain(dp); > } > > - DBGP2("gmem:exit:len:$%d\n", len); > + DBGP1("gmem:exit:len:$%d\n", len); > return len; > } > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |