On Thu, Mar 29, 2012 at 5:31 PM, Stefan Hajnoczi
<stefa...@linux.vnet.ibm.com> wrote:
> IDE PIO mode is currently implemented using synchronous I/O functions.  
> There's
> no need to do this because the IDE interface is actually designed with polling
> and interrupts in mind - we can do asynchronous I/O and let the guest know 
> when
> the operation has completed.  The benefit of asynchronous I/O is that the 
> guest
> can continue executing code and is more responsive.
>
> The second aim of this conversion is to avoid calling bdrv_read()/bdrv_write()
> since they do not work with I/O throttling.  This means guests should now boot
> IDE drives successfully when I/O throttling is enabled.
>
> Note that ATAPI is not converted yet and still uses bdrv_read() in two
> locations.  A future patch will have to convert ATAPI so CD-ROMs also do
> asynchronous I/O.
>
> I have tested both Windows 7 Home Premium and Red Hat Enterprise Linux 6.0
> guests with these patches.  In Windows, use the device manager to disable DMA
> on the IDE channels.  Under recent Linux kernels, use the libata.dma=0 kernel
> parameter.
>
> Chris and Richard: Please test this to confirm that it fixes the hang you
> reported.
>
> v2:
>  * Keep aiocb and cancel request on reset [mjt]
>
> Stefan Hajnoczi (2):
>  ide: convert ide_sector_read() to asynchronous I/O
>  ide: convert ide_sector_write() to asynchronous I/O
>
>  hw/ide/core.c     |  137 +++++++++++++++++++++++++++++++++++++---------------
>  hw/ide/internal.h |    3 +
>  2 files changed, 100 insertions(+), 40 deletions(-)
>
> --
> 1.7.9.1
>
>
Zhi Yong Wu <wu...@linux.vnet.ibm.com>


-- 
Regards,

Zhi Yong Wu

Reply via email to