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

RE: [Xen-devel] Can anyone explain this communication mechanisms in case of full virtualization.

  • To: "aditya shevalkar" <aditya27783@xxxxxxxxxxx>, "xen devel" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: "Petersson, Mats" <Mats.Petersson@xxxxxxx>
  • Date: Mon, 19 Feb 2007 12:55:50 +0100
  • Delivery-date: Mon, 19 Feb 2007 03:55:24 -0800
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AcdUFoSnQ6B6/UBUTEeNDus0cKHX2wAAswRg
  • Thread-topic: [Xen-devel] Can anyone explain this communication mechanisms in case of full virtualization.


> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 
> aditya shevalkar
> Sent: 19 February 2007 11:08
> To: xen devel
> Subject: [Xen-devel] Can anyone explain this communication 
> mechanisms in case of full virtualization.
> For the communication between guest OS(windows OS) and xen 
> VMM in full virtualization how does the following 
> Concepts are used/implemented or what are the equivalent of 
> these concepts in case of full virtualization:

Let's set the scenario that we're NOT using para-virtual drivers - i.e.
using a "shrink wrapped Microsoft Windows CD/DVD" - because using
para-virtual drivers pretty much confuses the situation, and that's
making it MUCH harder to explain. 

> Event channels,
Windows doesn't use event-channels in communicating with the VMM. 

Qemu-dm uses event-channels to synchronously receive device-IO
"instructions", and asynchronously "fire" interrupts to the guest via
the VMM (the VMM checks the event-channel and issues a "virtual
interrupt" which is part of the Virtualization Technology (AMD-V/Intel

> Shared memory,
Shared memory is used to implement graphics display. The way that works
is that QEMU-DM sets up an area of memory, which is mapped to the
address of the graphics cards memory. QEMU-DM also has a "scanner"
process that checks if the "video memory" has changed, and if so,
updates the displayed data. 

Windows itself isn't aware that this is shared-memory in any sense
(other than the same sense that video-memory is "shared" with the
graphics processor in the graphics card in general, although for the
video-card that is emulated by qemu, this is at such a low level of
sophistication that it can be ignored). 

QEMU-DM also shares ALL of the guest-memory [1], using

>      Grant Tables,
There is no grant-table usage in Windows. 

I'm not sure if qemu-dm uses grant-tables. I have a feeling the answer
is no - I couldn't find anything obvious. 

> XenStore,
XenStore isn't used by Windows. 

QEMU-DM uses XenStore to get configuration data from the store (as
stored by xend).

>      Xen daemon,

Xend is used to create, pause, restart and destroy the domain. Via the
emulated power-management functions in QEMU-DM, the guest is also able
to "shutdown" and "reboot", which is signaled to xend for further action
(such as destroying the domain or restarting it). 

Xend also populates xenstore entries for the domain, so that later on
qemu-dm can get the data out, and so that we can perform XM commands
that require xenstore data (for example xm list). 

>      Device data(I/O).
> (    How does this IO data is transferred between guest OS windows XP 
>      and Xen VMM in case of full virtualization).

VMM intercepts I/O operations (either IOIO or MMIO). The data in this
case can be in:
1. In a CPU register (these are saved when the guest is exiting back to
VMM). Depending on the operation, it's possible that VMM has to
interpret the machine-code in the guest to understand which operation it
was that was being performed - for example a page-fault cause by MMIO to
a virtual device, would need to be interpreted, as there are literally
hundreds of different combinations of memory access instructions that
could cause this (including "read-modify-write" operations, for example
"add %eax, (mmio_addr)" - in which case we ALSO need to know the MMIO
content to figure out the new value). 

2. In guest memory. For example IOIO instructions INS/OUTS or MMIO
instructions MOVS would have a memory address assoicated with the data
to be sent to the device. In case of these instructions. the data is
pointed to by specific registers for each instruction, so it's easy for
the code to figure out what the address of the data is.

[1] In the current unstable release of Xen, there is a slightly
different, dynamic mapping, scheme, where the guest memory is mapped in
"as necessary", rather than "all at all times". This is helpful for
several reasons, most importantly because QEMU-DM don't have enough
address space to map much over 2.5GB in 32-bit mode (qemu-dm itself uses
some, and Linux limits the guest memory to 3GB in total). 


> Specially Shared memory,grant tables and xen store.
> Does all these concepts applicable to full virtualization case also?
> Are their any other mechanisms for the communication(direct 
> or indirect).
> Thanks and Regards,
> Aditya.
> __________________________________________________________
> Yahoo! India Answers: Share what you know. Learn something new
> http://in.answers.yahoo.com/
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

Xen-devel mailing list



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