From: henanwxr <henanwxr@163.com>
To: xen-devel@lists.xensource.com
Subject: Confused by address translation when running guest os
Date: Sun, 22 May 2011 04:58:44 -0700 (PDT) [thread overview]
Message-ID: <1306065524652-4416590.post@n5.nabble.com> (raw)
1、Before do vmlaunch at the first time, CR0 in guest-state area is to paging
protect mode, and this is actual state of guest os, as follow:
GUEST_CR0=v->arch.hvm_vcpu.hw_cr[0]
which with vaule CR0.PE=1,CR0.PG=1
but in the view of guest its CR0 is set to non paging protect mode, as
follow:
v->arch.hvm_vcpu.guest_cr[0] which with vaule CR0.PE=1,CR0.PG=0
my question is:
Initially, when executing the codes of guest os(such as hvmloader), address
translate in which mode in hell? Is it in actual state of paging protect
mode? Or in view of guest os that non paging protect mode ? And why?
(1)If it is in actual state of paging protect mode, then the address
translation must walk through the page table, but we don not construct a
page table in advance?
(2)If it is in view of guest os that non paging protect mode, then it need
not a page table, I find the address translation is emulated within VMM,
liner address=physical address, as follow:
/arch/x86/hvm/emulate.c
static int hvmemul_linear_to_phys(…..
{
/* With no paging it's easy: linear == physical. */
if ( !(curr->arch.hvm_vcpu.guest_cr[0] & X86_CR0_PG) )
{
*paddr = addr;
return X86EMUL_OKAY;
}
………………………..
But every time when guest os access memory and fetch the instruction, does
the address translation should through the emulation of VMM? And should
generate VM exit? Which I am sure is that when VMM process I/O request of
guest os it should generate VM exit and call this function.
2、 How does EPT(Extended-Page-Table) work in question 1 above ?
3、When execute hvmloader, it will switch the processor to V86 mode, how
implement address translation since then?
4、 when virtual Bios load the guest os kernel, guest os will switch the
processor mode to non paging protect mode again, does the process of address
translation same as question 1?
5、 When guest os running normally, it is in paging protect mod, the process
of address translation is:
guest os liner address --> guest os physical address ( translate by guest
page table)
guest os physical address --> machine address (translate by EPT)
right ?
--
View this message in context: http://xen.1045712.n5.nabble.com/Confused-by-address-translation-when-running-guest-os-tp4416590p4416590.html
Sent from the Xen - Dev mailing list archive at Nabble.com.
next reply other threads:[~2011-05-22 11:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-22 11:58 henanwxr [this message]
2011-05-23 9:06 ` Confused by address translation when running guest os Tim Deegan
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=1306065524652-4416590.post@n5.nabble.com \
--to=henanwxr@163.com \
--cc=xen-devel@lists.xensource.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).