Hi;

With very recent kernels libata throws lots of errors while booting and it 
makes booting really really slow, while searching the solution i found 
following bug reports [1],[2] and following commit [3].

Following diff against kvm-userspace HEAD solves this issue for kvm. This 
chunk of code is directly copied from qemu CVS so according to CVS logs 
credit belongs to Brandon Philips.

diff --git a/qemu/hw/ide.c b/qemu/hw/ide.c
index 190f074..6967d33 100644
--- a/qemu/hw/ide.c
+++ b/qemu/hw/ide.c
@@ -586,7 +586,8 @@ static void ide_transfer_start(IDEState *s, uint8_t *buf, 
int size,
     s->end_transfer_func = end_transfer_func;
     s->data_ptr = buf;
     s->data_end = buf + size;
-    s->status |= DRQ_STAT;
+    if (!(s->status & ERR_STAT))
+        s->status |= DRQ_STAT;
 }
 
 static void ide_transfer_stop(IDEState *s)
@@ -1805,6 +1806,7 @@ static void ide_ioport_write(void *opaque, uint32_t 
addr, uint32_t val)
             /* overlapping commands not supported */
             if (s->feature & 0x02)
                 goto abort_cmd;
+            s->status = READY_STAT;
             s->atapi_dma = s->feature & 1;
             s->nsector = 1;
             ide_transfer_start(s, s->io_buffer, ATAPI_PACKET_SIZE, 



[1] https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/120316
[2] https://bugzilla.novell.com/show_bug.cgi?id=291775
[3] http://cvs.savannah.gnu.org/viewvc/qemu/hw/ide.c?root=qemu&r1=1.63&r2=1.64

Cheers
-- 
S.Çağlar Onur <[EMAIL PROTECTED]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to