From: John Snow <jsnow@redhat.com>
To: Hannes Reinecke <hare@suse.de>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] SATA CD-ROM booting failure with latest OVMF
Date: Wed, 08 Jul 2015 18:53:13 -0400 [thread overview]
Message-ID: <559DA9D9.1050704@redhat.com> (raw)
In-Reply-To: <5596990C.5090204@suse.de>
On 07/03/2015 10:15 AM, Hannes Reinecke wrote:
> Hi all,
>
> I've updated OVMF to use the SATA controller, so that I could
> finally use the Q35 machine specification with OVMF.
>
> However, upon doing so I found that the (SATA) CD-ROM wouldn't work
> anymore; directories on the CD-ROM can be read, but the file listing
> contained only garbage.
>
> After some _very_ tedious debugging I've found this to be an issue
> with the ahci driver in qemu; ATAPI PIO transfers seem to be
> slightly buggy. Enabling 'atapi_dma' transfers in atapi driver (even
> for PIO mode) makes everything work again.
>
> I still fail to see _why_ this is be the case; the logfiles
> in both cases are pretty identical. Originally I thought that
> somehow the big qemu lock plays a role here, but OVMF accesses
> the ahci HBA only ever _after_ all transfers are complete.
> And again, access patterns are identical in both cases.
>
> So if anyone has another idea here ...
>
> Cheers,
>
> Hannes
>
I wrote some quick and very hacky CDROM tests to help suss this out, and
the problem is that PIO transfers that go through the ATAPI layer don't
increment the sglist offset variable that AHCI uses. (s->io_buffer_offset.)
Instead of trying to increment it everywhere (like I was trying to do
previously) I figured I could consolidate it back in ahci_commit_buf.
Pro: All DMA, including DMA masquerading as PIO, now works.
Cons: It only works for AHCI, but nobody else apparently uses or cares
about io_buffer_offset.
If I make all of the PIO hooks in AHCI call back to to core.c's
dma_commit_buf I can probably route all DMA (and fake PIO style DMA) for
all HBAs through dma_commit_buf and roll the pointer forward there.
Anyway, Here's the branch with some fixes in it:
https://github.com/jnsnow/qemu/commits/ahci-sig-dev
I'll try to polish up the tests and the core fix before Friday so that
it's in a reviewable state and propose it for inclusion for 2.4 RC1.
Thanks for the report,
--js
PS: The signature fix for OVMF you wrote is now in master, too. Anything
else? :D
prev parent reply other threads:[~2015-07-08 22:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-03 14:15 [Qemu-devel] SATA CD-ROM booting failure with latest OVMF Hannes Reinecke
2015-07-04 5:28 ` John Snow
2015-07-08 22:53 ` John Snow [this message]
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=559DA9D9.1050704@redhat.com \
--to=jsnow@redhat.com \
--cc=agraf@suse.de \
--cc=hare@suse.de \
--cc=qemu-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).