qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Ryan Harper <ryanh@us.ibm.com>
To: Alexander Graf <agraf@suse.de>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	QEMU-devel Developers <qemu-devel@nongnu.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Joerg Roedel <Joerg.Roedel@amd.com>,
	"tj@kernel.org" <tj@kernel.org>,
	Roland Elek <elek.roland@gmail.com>,
	Sebastian Herbszt <herbszt@gmx.de>
Subject: Re: [Qemu-devel] [PATCH 00/10] AHCI emulation support v2
Date: Thu, 18 Nov 2010 14:06:20 -0600	[thread overview]
Message-ID: <20101118200620.GW22381@us.ibm.com> (raw)
In-Reply-To: <D17ADFDD-6147-408C-8A83-FA46AC69784D@suse.de>

* Alexander Graf <agraf@suse.de> [2010-11-18 12:49]:
> 
> On 18.11.2010, at 14:26, Kevin Wolf <kwolf@redhat.com> wrote:
> 
> > Hi Alex,
> > 
> > Am 18.11.2010 04:27, schrieb Alexander Graf:
> >> This patch adds support for AHCI emulation. I have tested and verified it works
> >> in Linux, OpenBSD, Windows Vista and Windows 7. This AHCI emulation supports
> >> NCQ, so multiple read or write requests can be outstanding at the same time.
> >> 
> >> The code is however not fully optimized yet. I'm fairly sure that there are
> >> low hanging performance fruits to be found still :). In my simple benchmarks
> >> I achieved about 2/3rd of virtio performance.
> >> 
> >> Also, this AHCI emulation layer does not support legacy mode. So if you're
> >> using a disk with this emulation, you do not get it exposed using the legacy
> >> IDE interfaces.
> >> 
> >> Another nitpick is CD-ROM support in Windows. Somehow it doesn't detect a
> >> CD-ROM drive attached to AHCI. At least it doesn't list it.
> >> 
> >> To attach an AHCI disk to your VM, please use
> >> 
> >>  -drive file=...,if=sata
> >> 
> >> This should do the trick for x86. On other platforms, you might need to add
> >> the ahci host controller using -device.
> >> 
> >> 
> >> This patch set is based on work done during the Google Summer of Code. I was
> >> mentoring a student, Roland Elek, who wrote most of the AHCI emulation code
> >> based on a patch from Chong Qiao. A bunch of other people were also involved,
> >> so everybody who I didn't mention - thanks a lot!
> > 
> > I'm not completely sure about the relationship between the AHCI
> > emulation and our existing IDE emulation. First thing I noticed is that
> > AHCI wants to be independent and resides in hw/ instead of hw/ide/, but
> > it still include ide/internal.h. Do you think it would make sense to
> > move AHCI into hw/ide?
> 
> Both ahci and ide implement ata. I guess the best thing to do would be to completely refactor all ide code into ata and pata code, then add ahci (sata) to the game. Estimated working time: ~1 month. :)
> 
> As I would rather have something working we can base on in the tree, so whoever volunteers for the refactoring (hint!) knows how to design the interfaces, I am not sure how much is reasonable within this patch set.
> 
> Moving the file to ide/ does sound like a good idea however.
> 
> > 
> > Then I believe that core.c is now a mixture of some generic ATA code
> > (that is also used by SATA) and the Legacy IDE code. SATA doesn't seem
> > to interact with the generic code through clean interfaces, but by
> > accessing internal data structures and calls to somewhere in the middle
> > of the existing IDE emultion. I think we should get a clean abstraction
> > there and have a clean split between SATA, PATA and common code, with
> > each of them sitting in its own file in hw/ide.
> > 
> > I haven't reviewed the patches in detail but just had a quick look at
> > them, so my impressions might be wrong. If so, please correct me.
> 
> No, you're completely right. We're in a chicken and egg situation. We don't have ahci, but the ide code is ugly. We would probably do a bad job at refactoring the ata code if we don't know which interfaces to design for.
> 
> So IMHO the only way we can really go is to implement sata, take the uglyness it adds to the already ugly ide code and use all of that for a working state we can start to refactor from.
> 
> So yes, while I agree with your obversations, I do not believe we will
> get there until at least 0.16 or so. And I'd rather like to see a fast
> default block driver in gueast sooner than later :)
> 

Speaking of fast, do you have any numbers around ACHI vs IDE (not that I
need any convincing that we can do better than IDE); just curious.

> 
> Alex
> 
> > 

-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ryanh@us.ibm.com

  reply	other threads:[~2010-11-18 20:06 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-18  3:27 [Qemu-devel] [PATCH 00/10] AHCI emulation support v2 Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 01/10] ide: split ide command interpretation off Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 02/10] ide: fix whitespace gap in ide_exec_cmd Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 03/10] ide: add support for ide bus ops Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 04/10] ide: add DMA hooks to " Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 05/10] ide: add ncq identify data for ahci sata drives Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 06/10] pci: add storage class for sata Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 07/10] pci: add ich7 pci id Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 08/10] ahci: add ahci emulation Alexander Graf
2010-11-18  8:01   ` [Qemu-devel] " Gerd Hoffmann
2010-11-18 18:05     ` Alexander Graf
2010-11-19  9:12       ` Gerd Hoffmann
2010-11-19 10:08         ` Roedel, Joerg
2010-11-18  3:27 ` [Qemu-devel] [PATCH 09/10] ahci: add -drive support Alexander Graf
2010-11-18  3:27 ` [Qemu-devel] [PATCH 10/10] ahci: spawn controller on demand Alexander Graf
2010-11-18 10:00 ` [Qemu-devel] Re: [PATCH 00/10] AHCI emulation support v2 Stefan Hajnoczi
2010-11-18 13:26 ` [Qemu-devel] " Kevin Wolf
2010-11-18 18:43   ` Alexander Graf
2010-11-18 20:06     ` Ryan Harper [this message]
2010-11-18 23:24       ` Alexander Graf
2010-11-19  9:12         ` Stefan Hajnoczi
2010-11-21  2:32           ` Alexander Graf
2010-11-19  9:15     ` Kevin Wolf
2010-11-19 11:56       ` Gerd Hoffmann
2010-11-19 12:27         ` Kevin Wolf
2010-11-19 13:08       ` Alexander Graf
2010-11-19 13:46         ` Kevin Wolf
2010-11-21  2:19           ` Alexander Graf
2010-11-22  8:45             ` Kevin Wolf
2010-11-19 14:36         ` Gerd Hoffmann

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=20101118200620.GW22381@us.ibm.com \
    --to=ryanh@us.ibm.com \
    --cc=Joerg.Roedel@amd.com \
    --cc=agraf@suse.de \
    --cc=elek.roland@gmail.com \
    --cc=herbszt@gmx.de \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=tj@kernel.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).