From: Eric Auger <eric.auger@linaro.org>
To: Alexander Graf <agraf@suse.de>,
eric.auger@st.com, christoffer.dall@linaro.org,
qemu-devel@nongnu.org, kim.phillips@freescale.com,
a.rigo@virtualopensystems.com
Cc: peter.maydell@linaro.org, patches@linaro.org,
Kim Phillips <kim.phillips@linaro.org>,
stuart.yoder@freescale.com, alex.williamson@redhat.com,
christophe.barnichon@st.com, a.motakis@virtualopensystems.com,
kvmarm@lists.cs.columbia.edu
Subject: Re: [Qemu-devel] [RFC v3 03/10] vfio: add vfio-platform support
Date: Thu, 26 Jun 2014 09:47:28 +0200 [thread overview]
Message-ID: <53ABD010.3060705@linaro.org> (raw)
In-Reply-To: <53AB3D55.2000802@suse.de>
On 06/25/2014 11:21 PM, Alexander Graf wrote:
>
> On 02.06.14 09:49, Eric Auger wrote:
>> From: Kim Phillips <kim.phillips@linaro.org>
>>
>> Functions for which PCI and platform device support share are moved
>> into common.c. The common vfio_{get,put}_group() get an additional
>> argument, a pointer to a vfio_reset_handler(), for which to pass on
>> to qemu_register_reset, but only if it exists (the platform device
>> code currently passes a NULL as its reset_handler).
>>
>> For the platform device code, we basically use SysBusDevice
>> instead of PCIDevice. Since realize() returns void, unlike
>> PCIDevice's initfn, error codes are moved into the
>> error message text with %m.
>>
>> Currently only MMIO access is supported at this time.
>>
>> The perceived path for future QEMU development is:
>>
>> - add support for interrupts
>> - verify and test platform dev unmap path
>> - test existing PCI path for any regressions
>> - add support for creating platform devices on the qemu command line
>> - currently device address specification is hardcoded for test
>> development on Calxeda Midway's fff51000.ethernet device
>> - reset is not supported and registration of reset functions is
>> bypassed for platform devices.
>> - there is no standard means of resetting a platform device,
>> unsure if it suffices to be handled at device--VFIO binding time
>>
>> [1] http://www.spinics.net/lists/kvm-arm/msg08195.html
>>
>> Changes (v2 -> v3):
>> [work done by Eric Auger]
>>
>> This new version introduces 2 separate VFIO Device objects:
>> - VFIOPCIDevice
>> - VFIOPlatformDevice
>>
>> Both objects share a VFIODevice struct.
>>
>> Also a VFIORegion shared struct was created. It is embedded in
>> VFIOBAR struct. VFIOPlatformDevice uses VFIORegion directly.
>>
>> Introducing those base classes induced quite a lot of tiny
>> changes in the PCI code. Theoretically PCI and platform
>> devices can be supported simultaneously. PCI modifications
>> currently are not tested.
>>
>> The VFIODevice is not a QOM object due to the single inheritance
>> model limitation.
>>
>> The VFIODevice struct embeds an ops structure which is
>> specialized in each VFIO leaf device. This makes possible to call
>> device specific functions in common parts, hence achieving better
>> factorization.
>>
>> Reset handling typically is handled that way where a unique
>> generic ResetHandler (in common.c) is used for both derived
>> classes. It calls device specific methods.
>>
>> As in the original contribution, only MMIO is supported in that
>> patch file (in mmap mode). IRQ support comes in a subsequent patch.
>>
>> Signed-off-by: Kim Phillips <kim.phillips@linaro.org>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>> ---
>> hw/vfio/Makefile.objs | 2 +
>> hw/vfio/common.c | 849 ++++++++++++++++++++++++++++
>> hw/vfio/pci.c | 1316
>> ++++++++++----------------------------------
>> hw/vfio/platform.c | 267 +++++++++
>> hw/vfio/vfio-common.h | 143 +++++
>> linux-headers/linux/vfio.h | 1 +
>> 6 files changed, 1565 insertions(+), 1013 deletions(-)
>
> This patch is impossible to review. Please split it out into a part (or
> maybe even multiple patches) that separate pci specific VFIO support
> into its own file and then another set of patches implementing platform
> support.
Hi Alex,
OK I will reorganize the patch as you suggest.
Alex (both of you), do you think the general split direction looks
reasonable, ie. having this VFIODevice struct and VFIORegion struct? or
do you think it induces too many (and possibly cumbersome) changes in
the PCI code?
wrt VFIOPlatformDevice I changed the code to inherit from PlatformDevice
instead of SysBusDevice - maybe too early but future will say ... - .
Best Regards
Eric
>
>
> Alex
>
next prev parent reply other threads:[~2014-06-26 7:47 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-02 7:49 [Qemu-devel] [RFC v3 00/10] KVM platform device passthrough Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 01/10] hw/arm/virt: add a xgmac device Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 02/10] vfio: move hw/misc/vfio.c to hw/vfio/pci.c Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 03/10] vfio: add vfio-platform support Eric Auger
2014-06-25 21:21 ` Alexander Graf
2014-06-26 7:47 ` Eric Auger [this message]
2014-06-26 9:56 ` Alexander Graf
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 04/10] vfio: simplifed DPRINTF calls using device name Eric Auger
2014-06-25 21:22 ` Alexander Graf
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 05/10] vfio: Add initial IRQ support in platform device Eric Auger
2014-06-25 21:28 ` Alexander Graf
2014-06-25 21:40 ` Alex Williamson
2014-06-26 8:41 ` Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 06/10] virt: Assign a VFIO platform device with -device option Eric Auger
2014-06-25 21:30 ` Alexander Graf
2014-06-26 8:53 ` Eric Auger
2014-06-26 9:25 ` Alexander Graf
2014-06-26 9:30 ` Eric Auger
2014-06-25 22:28 ` Peter Maydell
2014-06-25 22:28 ` Alexander Graf
2014-06-26 7:39 ` Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 07/10] Add EXEC_FLAG to VFIO DMA mappings Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 08/10] Add AMBA devices support to VFIO Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 09/10] Always use eventfd as notifying mechanism Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 10/10] vfio: Add irqfd support in platform device Eric Auger
2014-06-25 21:35 ` Alexander Graf
2014-06-25 21:54 ` Alex Williamson
2014-06-25 22:02 ` Alexander Graf
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=53ABD010.3060705@linaro.org \
--to=eric.auger@linaro.org \
--cc=a.motakis@virtualopensystems.com \
--cc=a.rigo@virtualopensystems.com \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=christoffer.dall@linaro.org \
--cc=christophe.barnichon@st.com \
--cc=eric.auger@st.com \
--cc=kim.phillips@freescale.com \
--cc=kim.phillips@linaro.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=patches@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stuart.yoder@freescale.com \
/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).