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

RE: [Xen-devel] Disk IO using QEMU


  • To: "Alkesh Shah" <salkesh@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
  • 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
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • 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


 


Rackspace

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