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

Re: [PATCH v2 3/3] x86/svmdebug: Print sev and sev_es vmcb bits



On 3/12/24 09:05, Jan Beulich wrote:
On 11.03.2024 13:40, Vaishali Thakkar wrote:
While sev and sev_es bits are not yet enabled in xen,
including their status in the VMCB dump could be
informational.Therefore, print it via svmdebug.

Yet there are more bits there. I'm okay with leaving off printing of
them here, but it wants clarifying why some are printed and some are
not.

Well, the idea is to print the bits that are either enabled or has WIP
to enable them. (e.g. sev and sev_es) I didn't include other bits as
I'm not sure if there is any WIP to enable them. Particularly including
sev and sev_es is useful for us while working on the enablement of it.

Does a commit log like the following makes it clear for you?

" Currently only raw _np_ctrl is being printed. It can
  be informational to know about which particular bits
  are enabled. So, this commit adds the bit-by-bit decode
  for np, sev and sev_es bits.

  Note that while only np is enabled in certain scenarios
  at the moment, work for enabling sev and sev_es is in
  progress. And it's useful to have this information as
  part of svmdebug. "

I'm also fine with including other bits here if that's preferred.

--- a/xen/arch/x86/hvm/svm/svmdebug.c
+++ b/xen/arch/x86/hvm/svm/svmdebug.c
@@ -51,8 +51,11 @@ void svm_vmcb_dump(const char *from, const struct 
vmcb_struct *vmcb)
             vmcb->exitcode, vmcb->exit_int_info.raw);
      printk("exitinfo1 = %#"PRIx64" exitinfo2 = %#"PRIx64"\n",
             vmcb->exitinfo1, vmcb->exitinfo2);
-    printk("np_ctrl = %#"PRIx64" asid = %#x\n",
-           vmcb_get_np_ctrl(vmcb), vmcb_get_asid(vmcb));
+    printk("asid = %#x np_ctrl = %#"PRIx64" - %s%s%s\n",
+           vmcb_get_asid(vmcb), vmcb_get_np_ctrl(vmcb),
+           vmcb_get_np(vmcb)     ? "NP"     : "",
+           vmcb_get_sev(vmcb)    ? "SEV"    : "",
+           vmcb_get_sev_es(vmcb) ? "SEV_ES" : "");

Each of these three string literals needs a leading blank as separator.
In exchange the one in the format string immediately after '-' then
will want dropping. That'll still lead to slightly odd output if none
of the bits is set; imo it would be slightly less odd if you used

     printk("asid = %#x np_ctrl = %#"PRIx64":%s%s%s\n",

instead.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.