[PATCH] kvm tools: Beautify debug output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



1. print mem debug info into debugfd instead guest console
2. always print page table info

Signed-off-by: Asias He <asias.hejun@xxxxxxxxx>
---
 tools/kvm/include/kvm/kvm.h |  2 +-
 tools/kvm/kvm.c             | 11 ++++++-----
 tools/kvm/x86/kvm-cpu.c     | 12 +++++++++---
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h
index acb0818..ad53ca7 100644
--- a/tools/kvm/include/kvm/kvm.h
+++ b/tools/kvm/include/kvm/kvm.h
@@ -114,7 +114,7 @@ bool load_bzimage(struct kvm *kvm, int fd_kernel, int fd_initrd, const char *ker
 /*
  * Debugging
  */
-void kvm__dump_mem(struct kvm *kvm, unsigned long addr, unsigned long size);
+void kvm__dump_mem(struct kvm *kvm, unsigned long addr, unsigned long size, int debug_fd);
 
 extern const char *kvm_exit_reasons[];
 
diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c
index a6b3c23..cfd30dd 100644
--- a/tools/kvm/kvm.c
+++ b/tools/kvm/kvm.c
@@ -444,7 +444,7 @@ int kvm_timer__exit(struct kvm *kvm)
 }
 firmware_exit(kvm_timer__exit);
 
-void kvm__dump_mem(struct kvm *kvm, unsigned long addr, unsigned long size)
+void kvm__dump_mem(struct kvm *kvm, unsigned long addr, unsigned long size, int debug_fd)
 {
 	unsigned char *p;
 	unsigned long n;
@@ -456,10 +456,11 @@ void kvm__dump_mem(struct kvm *kvm, unsigned long addr, unsigned long size)
 	p = guest_flat_to_host(kvm, addr);
 
 	for (n = 0; n < size; n += 8) {
-		if (!host_ptr_in_ram(kvm, p + n))
-			break;
-
-		printf("  0x%08lx: %02x %02x %02x %02x  %02x %02x %02x %02x\n",
+		if (!host_ptr_in_ram(kvm, p + n)) {
+			dprintf(debug_fd, " 0x%08lx: <unknown>\n", addr + n);
+			continue;
+		}
+		dprintf(debug_fd, " 0x%08lx: %02x %02x %02x %02x  %02x %02x %02x %02x\n",
 			addr + n, p[n + 0], p[n + 1], p[n + 2], p[n + 3],
 				  p[n + 4], p[n + 5], p[n + 6], p[n + 7]);
 	}
diff --git a/tools/kvm/x86/kvm-cpu.c b/tools/kvm/x86/kvm-cpu.c
index b6190ed..5cc4e1e 100644
--- a/tools/kvm/x86/kvm-cpu.c
+++ b/tools/kvm/x86/kvm-cpu.c
@@ -364,7 +364,8 @@ void kvm_cpu__show_code(struct kvm_cpu *vcpu)
 
 	dprintf(debug_fd, "\n Stack:\n");
 	dprintf(debug_fd,   " ------\n");
-	kvm__dump_mem(vcpu->kvm, vcpu->regs.rsp, 32);
+	dprintf(debug_fd, " rsp: [<%016lx>] \n", (unsigned long) vcpu->regs.rsp);
+	kvm__dump_mem(vcpu->kvm, vcpu->regs.rsp, 32, debug_fd);
 }
 
 void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu)
@@ -374,8 +375,12 @@ void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu)
 	u64 *pte3;
 	u64 *pte4;
 
-	if (!is_in_protected_mode(vcpu))
+	if (!is_in_protected_mode(vcpu)) {
+		dprintf(debug_fd, "\n Page Tables:\n");
+		dprintf(debug_fd, " ------\n");
+		dprintf(debug_fd, " Not in protected mode\n");
 		return;
+	}
 
 	if (ioctl(vcpu->vcpu_fd, KVM_GET_SREGS, &vcpu->sregs) < 0)
 		die("KVM_GET_SREGS failed");
@@ -396,7 +401,8 @@ void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu)
 	if (!host_ptr_in_ram(vcpu->kvm, pte1))
 		return;
 
-	dprintf(debug_fd, "Page Tables:\n");
+	dprintf(debug_fd, "\n Page Tables:\n");
+	dprintf(debug_fd, " ------\n");
 	if (*pte2 & (1 << 7))
 		dprintf(debug_fd, " pte4: %016llx   pte3: %016llx"
 			"   pte2: %016llx\n",
-- 
1.8.1

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux