From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 3/4] SVM: clean up svm_vmcb_dump() Date: Wed, 07 Jun 2017 08:07:21 -0600 Message-ID: <593824B902000078001606C8@prv-mh.provo.novell.com> References: <593822A3020000780016069F@prv-mh.provo.novell.com> <593822A3020000780016069F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part88B0E489.2__=" Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIbcL-0005JQ-Sm for xen-devel@lists.xenproject.org; Wed, 07 Jun 2017 14:07:26 +0000 In-Reply-To: <593822A3020000780016069F@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: Andrew Cooper , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part88B0E489.2__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline - constify parameter - use accessors - drop stray casts - adjust formatting Signed-off-by: Jan Beulich --- a/xen/arch/x86/hvm/svm/svmdebug.c +++ b/xen/arch/x86/hvm/svm/svmdebug.c @@ -26,60 +26,52 @@ static void svm_dump_sel(const char *nam name, s->sel, s->attr.bytes, s->limit, s->base); } =20 -/* This function can directly access fields which are covered by clean = bits. */ -void svm_vmcb_dump(const char *from, struct vmcb_struct *vmcb) +void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb) { printk("Dumping guest's current state at %s...\n", from); - printk("Size of VMCB =3D %d, paddr =3D %#lx, vaddr =3D %p\n", - (int) sizeof(struct vmcb_struct), virt_to_maddr(vmcb), vmcb); + printk("Size of VMCB =3D %zu, paddr =3D %"PRIpaddr", vaddr =3D %p\n", + sizeof(struct vmcb_struct), virt_to_maddr(vmcb), vmcb); =20 printk("cr_intercepts =3D %#x dr_intercepts =3D %#x " "exception_intercepts =3D %#x\n", - vmcb->_cr_intercepts, vmcb->_dr_intercepts,=20 - vmcb->_exception_intercepts); + vmcb_get_cr_intercepts(vmcb), vmcb_get_dr_intercepts(vmcb), + vmcb_get_exception_intercepts(vmcb)); printk("general1_intercepts =3D %#x general2_intercepts =3D %#x\n", - vmcb->_general1_intercepts, vmcb->_general2_intercepts); - printk("iopm_base_pa =3D %#Lx msrpm_base_pa =3D %#Lx tsc_offset =3D = %#Lx\n", - (unsigned long long)vmcb->_iopm_base_pa, - (unsigned long long)vmcb->_msrpm_base_pa, - (unsigned long long)vmcb->_tsc_offset); - printk("tlb_control =3D %#x vintr =3D %#Lx interrupt_shadow =3D = %#Lx\n", - vmcb->tlb_control, - (unsigned long long)vmcb->_vintr.bytes, - (unsigned long long)vmcb->interrupt_shadow); + vmcb_get_general1_intercepts(vmcb), vmcb_get_general2_intercept= s(vmcb)); + printk("iopm_base_pa =3D %#"PRIx64" msrpm_base_pa =3D %#"PRIx64" = tsc_offset =3D %#"PRIx64"\n", + vmcb_get_iopm_base_pa(vmcb), vmcb_get_msrpm_base_pa(vmcb), + vmcb_get_tsc_offset(vmcb)); + printk("tlb_control =3D %#x vintr =3D %#"PRIx64" interrupt_shadow =3D = %#"PRIx64"\n", + vmcb->tlb_control, vmcb_get_vintr(vmcb).bytes, + vmcb->interrupt_shadow); printk("eventinj %016"PRIx64", valid? %d, ec? %d, type %u, vector = %#x\n", vmcb->eventinj.bytes, vmcb->eventinj.fields.v, vmcb->eventinj.fields.ev, vmcb->eventinj.fields.type, vmcb->eventinj.fields.vector); - printk("exitcode =3D %#Lx exitintinfo =3D %#Lx\n", - (unsigned long long)vmcb->exitcode, - (unsigned long long)vmcb->exitintinfo.bytes); - printk("exitinfo1 =3D %#Lx exitinfo2 =3D %#Lx \n", - (unsigned long long)vmcb->exitinfo1, - (unsigned long long)vmcb->exitinfo2); - printk("np_enable =3D %Lx guest_asid =3D %#x\n", - (unsigned long long)vmcb->_np_enable, vmcb->_guest_asid); - printk("cpl =3D %d efer =3D %#Lx star =3D %#Lx lstar =3D %#Lx\n", - vmcb->_cpl, (unsigned long long)vmcb->_efer, - (unsigned long long)vmcb->star, (unsigned long long)vmcb->lstar= ); - printk("CR0 =3D 0x%016llx CR2 =3D 0x%016llx\n", - (unsigned long long)vmcb->_cr0, (unsigned long long)vmcb->_cr2)= ; - printk("CR3 =3D 0x%016llx CR4 =3D 0x%016llx\n",=20 - (unsigned long long)vmcb->_cr3, (unsigned long long)vmcb->_cr4)= ; - printk("RSP =3D 0x%016llx RIP =3D 0x%016llx\n",=20 - (unsigned long long)vmcb->rsp, (unsigned long long)vmcb->rip); - printk("RAX =3D 0x%016llx RFLAGS=3D0x%016llx\n", - (unsigned long long)vmcb->rax, (unsigned long long)vmcb->rflags= ); - printk("DR6 =3D 0x%016llx, DR7 =3D 0x%016llx\n",=20 - (unsigned long long)vmcb->_dr6, (unsigned long long)vmcb->_dr7)= ; - printk("CSTAR =3D 0x%016llx SFMask =3D 0x%016llx\n", - (unsigned long long)vmcb->cstar,=20 - (unsigned long long)vmcb->sfmask); - printk("KernGSBase =3D 0x%016llx PAT =3D 0x%016llx \n",=20 - (unsigned long long)vmcb->kerngsbase, - (unsigned long long)vmcb->_g_pat); - printk("H_CR3 =3D 0x%016llx CleanBits =3D %#x\n", - (unsigned long long)vmcb->_h_cr3, vmcb->cleanbits.bytes); + printk("exitcode =3D %#"PRIx64" exitintinfo =3D %#"PRIx64"\n", + vmcb->exitcode, vmcb->exitintinfo.bytes); + printk("exitinfo1 =3D %#"PRIx64" exitinfo2 =3D %#"PRIx64"\n", + vmcb->exitinfo1, vmcb->exitinfo2); + printk("np_enable =3D %#"PRIx64" guest_asid =3D %#x\n", + vmcb_get_np_enable(vmcb), vmcb_get_guest_asid(vmcb)); + printk("cpl =3D %d efer =3D %#"PRIx64" star =3D %#"PRIx64" lstar =3D = %#"PRIx64"\n", + vmcb_get_cpl(vmcb), vmcb_get_efer(vmcb), vmcb->star, vmcb->lsta= r); + printk("CR0 =3D 0x%016"PRIx64" CR2 =3D 0x%016"PRIx64"\n", + vmcb_get_cr0(vmcb), vmcb_get_cr2(vmcb)); + printk("CR3 =3D 0x%016"PRIx64" CR4 =3D 0x%016"PRIx64"\n", + vmcb_get_cr3(vmcb), vmcb_get_cr4(vmcb)); + printk("RSP =3D 0x%016"PRIx64" RIP =3D 0x%016"PRIx64"\n", + vmcb->rsp, vmcb->rip); + printk("RAX =3D 0x%016"PRIx64" RFLAGS=3D0x%016"PRIx64"\n", + vmcb->rax, vmcb->rflags); + printk("DR6 =3D 0x%016"PRIx64", DR7 =3D 0x%016"PRIx64"\n", + vmcb_get_dr6(vmcb), vmcb_get_dr7(vmcb)); + printk("CSTAR =3D 0x%016"PRIx64" SFMask =3D 0x%016"PRIx64"\n", + vmcb->cstar, vmcb->sfmask); + printk("KernGSBase =3D 0x%016"PRIx64" PAT =3D 0x%016"PRIx64"\n", + vmcb->kerngsbase, vmcb_get_g_pat(vmcb)); + printk("H_CR3 =3D 0x%016"PRIx64" CleanBits =3D %#x\n", + vmcb_get_h_cr3(vmcb), vmcb->cleanbits.bytes); =20 /* print out all the selectors */ printk(" sel attr limit base\n"); --- a/xen/include/asm-x86/hvm/svm/svmdebug.h +++ b/xen/include/asm-x86/hvm/svm/svmdebug.h @@ -22,7 +22,7 @@ #include #include =20 -void svm_vmcb_dump(const char *from, struct vmcb_struct *vmcb); +void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb); bool_t svm_vmcb_isvalid(const char *from, struct vmcb_struct *vmcb, bool_t verbose); =20 --=__Part88B0E489.2__= Content-Type: text/plain; name="SVM-dump-cleanup.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="SVM-dump-cleanup.patch" SVM: clean up svm_vmcb_dump()=0A=0A- constify parameter=0A- use = accessors=0A- drop stray casts=0A- adjust formatting=0A=0ASigned-off-by: = Jan Beulich =0A=0A--- a/xen/arch/x86/hvm/svm/svmdebug.c= =0A+++ b/xen/arch/x86/hvm/svm/svmdebug.c=0A@@ -26,60 +26,52 @@ static void = svm_dump_sel(const char *nam=0A name, s->sel, s->attr.bytes, = s->limit, s->base);=0A }=0A =0A-/* This function can directly access = fields which are covered by clean bits. */=0A-void svm_vmcb_dump(const = char *from, struct vmcb_struct *vmcb)=0A+void svm_vmcb_dump(const char = *from, const struct vmcb_struct *vmcb)=0A {=0A printk("Dumping guest's = current state at %s...\n", from);=0A- printk("Size of VMCB =3D %d, = paddr =3D %#lx, vaddr =3D %p\n",=0A- (int) sizeof(struct = vmcb_struct), virt_to_maddr(vmcb), vmcb);=0A+ printk("Size of VMCB =3D = %zu, paddr =3D %"PRIpaddr", vaddr =3D %p\n",=0A+ sizeof(struct = vmcb_struct), virt_to_maddr(vmcb), vmcb);=0A =0A printk("cr_intercepts = =3D %#x dr_intercepts =3D %#x "=0A "exception_intercepts =3D = %#x\n",=0A- vmcb->_cr_intercepts, vmcb->_dr_intercepts, =0A- = vmcb->_exception_intercepts);=0A+ vmcb_get_cr_intercepts(vm= cb), vmcb_get_dr_intercepts(vmcb),=0A+ vmcb_get_exception_interce= pts(vmcb));=0A printk("general1_intercepts =3D %#x general2_intercepts = =3D %#x\n",=0A- vmcb->_general1_intercepts, vmcb->_general2_inter= cepts);=0A- printk("iopm_base_pa =3D %#Lx msrpm_base_pa =3D %#Lx = tsc_offset =3D %#Lx\n",=0A- (unsigned long long)vmcb->_iopm_base_= pa,=0A- (unsigned long long)vmcb->_msrpm_base_pa,=0A- = (unsigned long long)vmcb->_tsc_offset);=0A- printk("tlb_control =3D %#x = vintr =3D %#Lx interrupt_shadow =3D %#Lx\n",=0A- vmcb->tlb_contro= l,=0A- (unsigned long long)vmcb->_vintr.bytes,=0A- = (unsigned long long)vmcb->interrupt_shadow);=0A+ vmcb_get_general= 1_intercepts(vmcb), vmcb_get_general2_intercepts(vmcb));=0A+ printk("iop= m_base_pa =3D %#"PRIx64" msrpm_base_pa =3D %#"PRIx64" tsc_offset =3D = %#"PRIx64"\n",=0A+ vmcb_get_iopm_base_pa(vmcb), vmcb_get_msrpm_ba= se_pa(vmcb),=0A+ vmcb_get_tsc_offset(vmcb));=0A+ printk("tlb_c= ontrol =3D %#x vintr =3D %#"PRIx64" interrupt_shadow =3D %#"PRIx64"\n",=0A+= vmcb->tlb_control, vmcb_get_vintr(vmcb).bytes,=0A+ = vmcb->interrupt_shadow);=0A printk("eventinj %016"PRIx64", valid? %d, = ec? %d, type %u, vector %#x\n",=0A vmcb->eventinj.bytes, = vmcb->eventinj.fields.v,=0A vmcb->eventinj.fields.ev, vmcb->even= tinj.fields.type,=0A vmcb->eventinj.fields.vector);=0A- = printk("exitcode =3D %#Lx exitintinfo =3D %#Lx\n",=0A- (unsigned = long long)vmcb->exitcode,=0A- (unsigned long long)vmcb->exitintin= fo.bytes);=0A- printk("exitinfo1 =3D %#Lx exitinfo2 =3D %#Lx \n",=0A- = (unsigned long long)vmcb->exitinfo1,=0A- (unsigned long = long)vmcb->exitinfo2);=0A- printk("np_enable =3D %Lx guest_asid =3D = %#x\n",=0A- (unsigned long long)vmcb->_np_enable, vmcb->_guest_as= id);=0A- printk("cpl =3D %d efer =3D %#Lx star =3D %#Lx lstar =3D = %#Lx\n",=0A- vmcb->_cpl, (unsigned long long)vmcb->_efer,=0A- = (unsigned long long)vmcb->star, (unsigned long long)vmcb->lstar);=0A= - printk("CR0 =3D 0x%016llx CR2 =3D 0x%016llx\n",=0A- = (unsigned long long)vmcb->_cr0, (unsigned long long)vmcb->_cr2);=0A- = printk("CR3 =3D 0x%016llx CR4 =3D 0x%016llx\n", =0A- (unsigned = long long)vmcb->_cr3, (unsigned long long)vmcb->_cr4);=0A- printk("RSP = =3D 0x%016llx RIP =3D 0x%016llx\n", =0A- (unsigned long = long)vmcb->rsp, (unsigned long long)vmcb->rip);=0A- printk("RAX =3D = 0x%016llx RFLAGS=3D0x%016llx\n",=0A- (unsigned long long)vmcb->r= ax, (unsigned long long)vmcb->rflags);=0A- printk("DR6 =3D 0x%016llx, = DR7 =3D 0x%016llx\n", =0A- (unsigned long long)vmcb->_dr6, = (unsigned long long)vmcb->_dr7);=0A- printk("CSTAR =3D 0x%016llx SFMask = =3D 0x%016llx\n",=0A- (unsigned long long)vmcb->cstar, =0A- = (unsigned long long)vmcb->sfmask);=0A- printk("KernGSBase =3D = 0x%016llx PAT =3D 0x%016llx \n", =0A- (unsigned long long)vmcb->k= erngsbase,=0A- (unsigned long long)vmcb->_g_pat);=0A- = printk("H_CR3 =3D 0x%016llx CleanBits =3D %#x\n",=0A- (unsigned = long long)vmcb->_h_cr3, vmcb->cleanbits.bytes);=0A+ printk("exitcode = =3D %#"PRIx64" exitintinfo =3D %#"PRIx64"\n",=0A+ vmcb->exitcode,= vmcb->exitintinfo.bytes);=0A+ printk("exitinfo1 =3D %#"PRIx64" = exitinfo2 =3D %#"PRIx64"\n",=0A+ vmcb->exitinfo1, vmcb->exitinfo2= );=0A+ printk("np_enable =3D %#"PRIx64" guest_asid =3D %#x\n",=0A+ = vmcb_get_np_enable(vmcb), vmcb_get_guest_asid(vmcb));=0A+ = printk("cpl =3D %d efer =3D %#"PRIx64" star =3D %#"PRIx64" lstar =3D = %#"PRIx64"\n",=0A+ vmcb_get_cpl(vmcb), vmcb_get_efer(vmcb), = vmcb->star, vmcb->lstar);=0A+ printk("CR0 =3D 0x%016"PRIx64" CR2 =3D = 0x%016"PRIx64"\n",=0A+ vmcb_get_cr0(vmcb), vmcb_get_cr2(vmcb));= =0A+ printk("CR3 =3D 0x%016"PRIx64" CR4 =3D 0x%016"PRIx64"\n",=0A+ = vmcb_get_cr3(vmcb), vmcb_get_cr4(vmcb));=0A+ printk("RSP =3D = 0x%016"PRIx64" RIP =3D 0x%016"PRIx64"\n",=0A+ vmcb->rsp, = vmcb->rip);=0A+ printk("RAX =3D 0x%016"PRIx64" RFLAGS=3D0x%016"PRIx64"\= n",=0A+ vmcb->rax, vmcb->rflags);=0A+ printk("DR6 =3D = 0x%016"PRIx64", DR7 =3D 0x%016"PRIx64"\n",=0A+ vmcb_get_dr6(vmcb)= , vmcb_get_dr7(vmcb));=0A+ printk("CSTAR =3D 0x%016"PRIx64" SFMask =3D = 0x%016"PRIx64"\n",=0A+ vmcb->cstar, vmcb->sfmask);=0A+ = printk("KernGSBase =3D 0x%016"PRIx64" PAT =3D 0x%016"PRIx64"\n",=0A+ = vmcb->kerngsbase, vmcb_get_g_pat(vmcb));=0A+ printk("H_CR3 =3D = 0x%016"PRIx64" CleanBits =3D %#x\n",=0A+ vmcb_get_h_cr3(vmcb), = vmcb->cleanbits.bytes);=0A =0A /* print out all the selectors */=0A = printk(" sel attr limit base\n");=0A--- a/xen/include/asm-x86/hvm= /svm/svmdebug.h=0A+++ b/xen/include/asm-x86/hvm/svm/svmdebug.h=0A@@ -22,7 = +22,7 @@=0A #include =0A #include =0A = =0A-void svm_vmcb_dump(const char *from, struct vmcb_struct *vmcb);=0A+void= svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb);=0A = bool_t svm_vmcb_isvalid(const char *from, struct vmcb_struct *vmcb,=0A = bool_t verbose);=0A =0A --=__Part88B0E489.2__= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --=__Part88B0E489.2__=--