xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Keir Fraser <keir.xen@gmail.com>
To: Mukesh Rathor <mukesh.rathor@oracle.com>,
	"Xen-devel@lists.xensource.com" <Xen-devel@lists.xensource.com>
Subject: Re: PV hybrid: vmlaunch failure help...
Date: Fri, 04 Mar 2011 07:42:07 +0000	[thread overview]
Message-ID: <C996484F.141FE%keir.xen@gmail.com> (raw)
In-Reply-To: <20110303192123.01342340@mantra.us.oracle.com>

On 04/03/2011 03:21, "Mukesh Rathor" <mukesh.rathor@oracle.com> wrote:

> Hi all,
> 
> I'm trying to see if I can run PV guest in a very lightweight HVM
> container. I've done some basic prototype to intercept PV guest creation
> and try to start it in vmx container. But the vmlaunch fails with the
> generic code, exit reason 0x80000021, guest state invalid. I've been trying
> to debug it for many days now and to no avail.
> 
> It's unfortunate that there's no flow diagram or more specific error codes
> to point to the field in problem in case vmlaunch fails.

I was going to look into this feature myself, it's good someone else has
picked it up so I don't have to. :-)

For this particular vmentry failure, Vol.3B Section 23.3.1 lists all the
guest-state checks carried out on vmentry. There are quite a few of them,
but you simply need to check your state dump against every check until you
find a mismatch. I believe someone had a function that implemented all/most
of these checks in a diagnostic helper function -- I can't find the patch
just now unfortunately.

 -- Keir

> I'm trying to enter vmx in IA32-e mode. I've got PG/PE/PAE all set to 1.
> Ive the CS.L set to 1. I'm not loading EFER MSR as according to the
> Intel Manual, Vol 3, section 23.3.2, the LME/LMA are automatically set
> if entering in the IA32-e mode. Is this correct?
> 
> I experimented with setting GDTR or leaving base to NULL, didn't help. If
> I'm loading the CS fields, do I still need to set the GDTR? How about TR,
> IDTR and LDTR, do they need to be set for entry? I've been playing
> around setting/unsetting them, but keep getting the stupid invalid
> guest state error no matter what. Oh yes, I'm on westmere.
> 
> Will appreciate any help.
> 
> thanks a lot,
> Mukesh
> 
> 
> *** Guest State ***
> CR0: actual=0x0000000080010039, shadow=0x0000000080010039,
> gh_mask=ffffffffffffffff
> CR4: actual=0x0000000000002060, shadow=0x0000000000002060,
> gh_mask=ffffffffffffffff
> CR3: actual=0x00000001047ca000, target_count=0
>      target0=0000000000000000, target1=0000000000000000
>      target2=0000000000000000, target3=0000000000000000
> RSP = 0xffffffff82c97000 (0xffffffff82c97000)  RIP = 0xffffffff81b13200
> (0xffffffff81b13200)
> RFLAGS=0x0000000000000002 (0x0000000000000002)  DR7 = 0x0000000000000000
> Sysenter RSP=0000000000000000 CS:RIP=0000:0000000000000000
> (XEN) CS: sel=0x0010, attr=0x0a09b, limit=0xffffffff, base=0x0000000000000000
> (XEN) DS: sel=0x0018, attr=0x0c093, limit=0xffffffff, base=0x0000000000000000
> (XEN) SS: sel=0x0018, attr=0x0c093, limit=0xffffffff, base=0x0000000000000000
> (XEN) ES: sel=0x0000, attr=0x00000, limit=0xffffffff, base=0x0000000000000000
> (XEN) FS: sel=0x0000, attr=0x00000, limit=0xffffffff, base=0x0000000000000000
> (XEN) GS: sel=0x0000, attr=0x00000, limit=0xffffffff, base=0x0000000000000000
> (XEN) GDTR:                           limit=0xffffffff,
> base=0xffffffff81a4c490
> (XEN) LDTR: sel=0x0000, attr=0x00082, limit=0x00000000,
> base=0x0000000000000000
> (XEN) IDTR:                           limit=0x00000000,
> base=0x0000000000000000
> (XEN) TR: sel=0x0000, attr=0x0008b, limit=0x000000ff, base=0x0000000000000000
> Guest EFER = 0x0000000000000000
> Guest PAT = 0x0000000000000000
> TSC Offset = ffffffb472a10c04
> DebugCtl=0000000000000000 DebugExceptions=0000000000000000
> Interruptibility=0000 ActivityState=0000
> MSRs: entry_load:0 exit_load:0 exit_store:0
> 
> *** Host State ***
> RSP = 0xffff82c48049ffa0  RIP = 0xffff82c4801b4710
> CS=e008 DS=0000 ES=0000 FS=0000 GS=0000 SS=0000 TR=e040
> FSBase=0000000000000000 GSBase=0000000000000000 TRBase=ffff82c480292a80
> GDTBase=ffff82c4800f3000 IDTBase=ffff82c4804de1e0
> CR0=000000008005003b CR3=00000001047ca000 CR4=00000000000026f0
> Sysenter RSP=ffff82c48049ffd0 CS:RIP=e008:ffff82c4801ee2f0
> Host PAT = 0x0000000000000000
> 
> *** Control State ***
> PinBased=0000001f CPUBased=2481e7fa SecondaryExec=00000020
> EntryControls=000013fb ExitControls=0003efff
> ExceptionBitmap=000440c0
> VMEntry: intr_info=00000000 errcode=00000000 ilen=00000000
> VMExit: intr_info=00000000 errcode=00000000 ilen=00000000
>         reason=80000021 qualification=00000000
> IDTVectoring: info=00000000 errcode=00000000
> TPR Threshold = 0x00
> EPT pointer = 0x0000000000000000
> Virtual processor ID = 0x0001
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

  reply	other threads:[~2011-03-04  7:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-04  3:21 PV hybrid: vmlaunch failure help Mukesh Rathor
2011-03-04  7:42 ` Keir Fraser [this message]
2011-03-05  2:29   ` Mukesh Rathor
2011-03-04  9:37 ` Jan Beulich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=C996484F.141FE%keir.xen@gmail.com \
    --to=keir.xen@gmail.com \
    --cc=Xen-devel@lists.xensource.com \
    --cc=mukesh.rathor@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).