From: "Andreas Färber" <afaerber@suse.de>
To: Jason Baron <jbaron@redhat.com>
Cc: kwolf@redhat.com, aliguori@us.ibm.com, armbru@redhat.com,
qemu-stable@nongnu.org, qemu-devel@nongnu.org, agraf@suse.de,
alex.williamson@redhat.com, avi@redhat.com, pbonzini@redhat.com,
Bruce Rogers <brogers@suse.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] ahci: Fix ahci cdrom read corruptions for reads > 128k
Date: Fri, 27 Jul 2012 13:28:27 +0200 [thread overview]
Message-ID: <50127B5B.2070500@suse.de> (raw)
In-Reply-To: <eddaedb0e77d6169026f2c81c4a33da8b7f564e5.1343330684.git.jbaron@redhat.com>
Hi Jason,
Am 26.07.2012 21:40, schrieb Jason Baron:
> While testing q35, which has its cdrom attached to the ahci controller, I found
> that the Fedora 17 install would panic on boot. The panic occurs while
> squashfs is trying to read from the cdrom. The errors are:
>
> [ 8.622711] SQUASHFS error: xz_dec_run error, data probably corrupt
> [ 8.625180] SQUASHFS error: squashfs_read_data failed to read block
> 0x20be48a
>
> I was also able to produce corrupt data reads using an installed piix based
> qemu machine, using 'dd'. I found that the corruptions were only occuring when
> the read size was greater than 128k. For example, the following command
> results in corrupted reads:
>
> dd if=/dev/sr0 of=/tmp/blah bs=256k iflag=direct
>
> The > 128k size reads exercise a different code path than 128k and below. In
> ide_atapi_cmd_read_dma_cb() s->io_buffer_size is capped at 128k. Thus,
> ide_atapi_cmd_read_dma_cb() is called a second time when the read is > 128k.
> However, ahci_dma_rw_buf() restart the read from offset 0, instead of at 128k.
> Thus, resulting in a corrupted read.
>
> To fix this, I've introduced 'io_buffer_offset' field in IDEState to keep
> track of the offset. I've also modified ahci_populate_sglist() to take a new
> 3rd offset argument, so that the sglist is property initialized.
>
> I've tested this patch using 'dd' testing, and Fedora 17 now correctly boots
> and installs on q35 with the cdrom ahci controller.
>
> Signed-off-by: Jason Baron <jbaron@redhat.com>
Tested-by: Andreas Färber <afaerber@suse.de>
This also fixes my test case of running the "Check Installation Media"
boot menu option on, e.g., openSUSE-12.1-GNOME-LiveCD-x86_64.iso with
ich9-ahci (BNC#725008).
Thanks a lot for finding the root cause!
If you resubmit, please cc qemu-stable@nongnu.org, I would very much
like to backport this bugfix to stable-0.15 branch.
Regards,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2012-07-27 11:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-26 19:40 [Qemu-devel] [PATCH 0/2] ahci: fix cdrom read corruption Jason Baron
2012-07-26 19:40 ` [Qemu-devel] [PATCH 1/2] ahci: Fix ahci cdrom read corruptions for reads > 128k Jason Baron
2012-07-27 7:59 ` Kevin Wolf
2012-07-27 14:50 ` Jason Baron
2012-07-27 11:28 ` Andreas Färber [this message]
2012-07-26 19:40 ` [Qemu-devel] [PATCH 2/2] ahci: Fix sglist memleak in ahci_dma_rw_buf() Jason Baron
2012-07-27 7:16 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50127B5B.2070500@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=armbru@redhat.com \
--cc=avi@redhat.com \
--cc=brogers@suse.com \
--cc=jbaron@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.