From: Alexander Graf <agraf@suse.de>
To: QEMU-devel Developers <qemu-devel@nongnu.org>
Cc: Joerg Roedel <Joerg.Roedel@amd.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Stefan Hajnoczi <stefanha@gmail.com>,
tj@kernel.org, Roland Elek <elek.roland@gmail.com>,
Sebastian Herbszt <herbszt@gmx.de>
Subject: [Qemu-devel] [PATCH 00/10] AHCI emulation support v2
Date: Thu, 18 Nov 2010 04:27:45 +0100 [thread overview]
Message-ID: <1290050875-23848-1-git-send-email-agraf@suse.de> (raw)
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!
v1 -> v2:
- rename IDEExtender to IDEBusOps and make a pointer (kraxel)
- make dma hooks explicit by putting them into ops struct (stefanha)
- use qdev buses (kraxel)
- minor cleanups
- dprintf overhaul
- add reset function
Alex
Alexander Graf (8):
ide: split ide command interpretation off
ide: fix whitespace gap in ide_exec_cmd
ide: add DMA hooks to bus ops
pci: add storage class for sata
pci: add ich7 pci id
ahci: add ahci emulation
ahci: add -drive support
ahci: spawn controller on demand
Roland Elek (2):
ide: add support for ide bus ops
ide: add ncq identify data for ahci sata drives
Makefile.objs | 1 +
Makefile.target | 4 +
blockdev.c | 6 +-
blockdev.h | 1 +
default-configs/i386-softmmu.mak | 1 +
default-configs/x86_64-softmmu.mak | 1 +
hw/ahci.c | 1280 ++++++++++++++++++++++++++++++++++++
hw/ide/core.c | 800 ++++++++++++-----------
hw/ide/internal.h | 34 +-
hw/pc.c | 5 +
hw/pci.h | 1 +
hw/pci_ids.h | 1 +
qemu-common.h | 2 +-
13 files changed, 1754 insertions(+), 383 deletions(-)
create mode 100644 hw/ahci.c
next reply other threads:[~2010-11-18 3:28 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-18 3:27 Alexander Graf [this message]
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
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=1290050875-23848-1-git-send-email-agraf@suse.de \
--to=agraf@suse.de \
--cc=Joerg.Roedel@amd.com \
--cc=elek.roland@gmail.com \
--cc=herbszt@gmx.de \
--cc=kraxel@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).