From mboxrd@z Thu Jan 1 00:00:00 1970 From: Don Slutz Subject: [PATCH 2/4] dbg_rw_guest_mem: Enable debug log output Date: Sat, 4 Jan 2014 12:52:14 -0500 Message-ID: <1388857936-664-3-git-send-email-dslutz@verizon.com> References: <1388857936-664-1-git-send-email-dslutz@verizon.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1388857936-664-1-git-send-email-dslutz@verizon.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Keir Fraser , Ian Campbell , Stefano Stabellini , George Dunlap , Ian Jackson , Don Slutz , Jan Beulich List-Id: xen-devel@lists.xenproject.org This also fixes the old debug output to compile and work if DBGP1 and DBGP2 are defined like DBGP3. Signed-off-by: Don Slutz --- xen/arch/x86/debug.c | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/debug.c b/xen/arch/x86/debug.c index eceb805..2e0a05a 100644 --- a/xen/arch/x86/debug.c +++ b/xen/arch/x86/debug.c @@ -41,6 +41,12 @@ #define DBGP2(...) ((void)0) #endif +#ifdef XEN_GDBSX_DEBUG3 +#define DBGP3(...) gdprintk(XENLOG_DEBUG, __VA_ARGS__) +#else +#define DBGP3(...) ((void)0) +#endif + /* Returns: mfn for the given (hvm guest) vaddr */ static unsigned long dbg_hvm_va2mfn(dbgva_t vaddr, struct domain *dp, int toaddr, @@ -60,6 +66,7 @@ dbg_hvm_va2mfn(dbgva_t vaddr, struct domain *dp, int toaddr, } mfn = mfn_x(get_gfn(dp, *gfn, &gfntype)); + DBGP3("L: vaddr:%lx domid:%d mfn:%lx\n", vaddr, dp->domain_id, mfn); if ( p2m_is_readonly(gfntype) && toaddr ) { DBGP2("kdb:p2m_is_readonly: gfntype:%x\n", gfntype); @@ -102,8 +109,8 @@ 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); + DBGP2("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); @@ -114,8 +121,8 @@ 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); + DBGP2("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) ) { @@ -128,8 +135,8 @@ 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); + DBGP2("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) ) { @@ -140,8 +147,8 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, uint64_t pgd3val) 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); + DBGP2("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; } @@ -162,8 +169,11 @@ dbg_rw_guest_mem(dbgva_t addr, dbgbyte_t *buf, int len, struct domain *dp, ? dbg_hvm_va2mfn(addr, dp, toaddr, &gfn) : dbg_pv_va2mfn(addr, dp, pgd3)); if ( mfn == INVALID_MFN ) { - if ( gfn != INVALID_GFN ) + if ( gfn != INVALID_GFN ) { put_gfn(dp, gfn); + DBGP3("R: addr:%lx pagecnt=%ld domid:%d mfn:%lx\n", + addr, pagecnt, dp->domain_id, mfn); + } break; } @@ -181,8 +191,11 @@ dbg_rw_guest_mem(dbgva_t addr, dbgbyte_t *buf, int len, struct domain *dp, } unmap_domain_page(va); - if ( gfn != INVALID_GFN ) + if ( gfn != INVALID_GFN ) { put_gfn(dp, gfn); + DBGP3("R: addr:%lx pagecnt=%ld domid:%d mfn:%lx\n", + addr, pagecnt, dp->domain_id, mfn); + } addr += pagecnt; buf += pagecnt; @@ -226,3 +239,11 @@ dbg_rw_mem(dbgva_t addr, dbgbyte_t *buf, int len, domid_t domid, int toaddr, return len; } +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ -- 1.8.4