From patchwork Thu Dec 2 10:43:59 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [PATCH 00/12] AHCI emulation support v4 Date: Thu, 02 Dec 2010 00:43:59 -0000 From: Gerd Hoffmann X-Patchwork-Id: 73981 Message-Id: <4CF7786F.4060501@redhat.com> To: Alexander Graf Cc: Kevin Wolf , Joerg Roedel , QEMU-devel Developers , Stefan Hajnoczi , tj@kernel.org, Roland Elek , Sebastian Herbszt On 12/02/10 00:29, Alexander Graf wrote: > > On 24.11.2010, at 12:44, Gerd Hoffmann wrote: > >> On 11/23/10 15:34, Alexander Graf wrote: >>> This patch adds support for AHCI emulation. I have tested and verified it works >>> in Linux, OpenBSD, Windows Vista and Windows 7. >> >> Also seabios ;) >> http://cgit.freedesktop.org/~kraxel/seabios/log/?h=ahci > > I broke that one with v7 of the ahci patchset apparently. Sorry about that :). Since Linux and Windows still happily boot, it's probably something missing on your side :(. No. DMA is broken (probably non-ncq only). Commit c29947bbb0978d312074ec73be968bfab1b6c977 broke your way of kicking dma. /me papered over it with the attached patch. The RightWay[tm] to fix it is probably to put a "bmdma_cmd_writeb(bm, 0, 0)" to the approximate place. Or refactor ide dma in a way that you don't need to kick it in such a hackish way in the first place. cheers, Gerd diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 7a415db..a36a2ef 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1164,6 +1164,7 @@ static void ahci_dma_start(IDEState *s, BlockDriverCompletionFunc *dma_cb) bm->cur_addr = 0; bm->sector_num = ide_get_sector(s); bm->nsector = s->nsector; + bm->cmd = 0; bmdma_cmd_writeb(bm, 0, 1); }