All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.