WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] Disk IO using QEMU

To: "Alkesh Shah" <salkesh@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: RE: [Xen-devel] Disk IO using QEMU
From: "Petersson, Mats" <Mats.Petersson@xxxxxxx>
Date: Thu, 19 Apr 2007 12:08:00 +0200
Delivery-date: Thu, 19 Apr 2007 03:06:51 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <4626ED86.5040803@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AceCOdIbXDCt+ZyYTKm/hoxo2dL+9wAL4YVw
Thread-topic: [Xen-devel] Disk IO using QEMU
 

> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Alkesh Shah
> Sent: 19 April 2007 05:18
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-devel] Disk IO using QEMU
> 
> Hi,
> 
> I am trying to understand how Disk I/O actually works in HVM. 
> From what 
> I understand, whenever a disk i/o takes place in a guest OS, a VMEXIT 
> occurs. The hypervisor than executes some handler, which sets up an 
> event pending bit for the event channel communicating with 
> the QEMU-DM 
> in the Domain 0. QEMU-DM than emulates these I/O instructions.
> 
> Specifically, I wanted to know -
> 1. The functions that are called in this process....  or the 
> files that 
> I need to look at in order to understand the exact flow.

The IO instruction is intercepted by the hardware in the processor,
which forms a IOIO vmexit, which ends up in the relevant part of
vmexit_handler in .../xen/arch/x86/hvm/{vmx/vmx.c,svm/svm.c}. Form there
it goes to generic hvm-code (hvm_send_pio or some such), which does some
parsing and then does the event stuff. 

In QEMU it comes in to .../tools/ioemu/target-i386-dm/helper2.c, which
then (after some function calls) does the IO operation - that's
essentially a function table of 65536 entries (times 3 for different
sized), and eventually ends up in .../tools/ioemu/hw/ide.c. 

> 2. Since, QEMU-DM handles both the display as well as the 
> disk I/O, is 
> the same event channel port used for communication between hypervisor 
> and qemu-dm for both display and disk i/o?

To quote Little Britain's Vicky Pollard, "Yeah, but no, but yeah, but
..." 

Yes, qemu-dm is responsible for the video output too. But it's (for most
parts) not using the event-channel to display the data - it's using a
shared memory buffer that is just compared to see if it's changed since
last time every few milliseconds. If it's changed, it gets redrawn. So
the event-channel used for IO operations isn't involved in the display
updates [other than when there is a mode-change or some other IO
operation to the graphics processor, but that's a rare occurrence
relatively speaking]. 

--
Mats
> 
> Thank you for you help.
> 
> Regards,
> Alkesh Shah
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 
> 
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>