From: Yehuda Yitschak <yehuday@marvell.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Shadi Ammouri <shadi@marvell.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Yuval Caduri <cyuval@marvell.com>,
Eric Auger <eric.auger@linaro.org>
Subject: Re: [Qemu-devel] Assigning an eth port to a guest VM
Date: Mon, 15 Jun 2015 17:45:23 +0000 [thread overview]
Message-ID: <1434390323396.66541@marvell.com> (raw)
In-Reply-To: <1434388545.4927.411.camel@redhat.com>
________________________________________
From: Alex Williamson <alex.williamson@redhat.com>
Sent: Monday, June 15, 2015 8:15 PM
To: Yehuda Yitschak
Cc: Eric Auger; qemu-devel@nongnu.org; Yuval Caduri; Shadi Ammouri
Subject: Re: Assigning an eth port to a guest VM
On Mon, 2015-06-15 at 16:52 +0000, Yehuda Yitschak wrote:
>> ________________________________________
>> From: Eric Auger <eric.auger@linaro.org>
>> Sent: Monday, June 15, 2015 4:42 PM
>> To: Yehuda Yitschak; qemu-devel@nongnu.org
>> Cc: Yuval Caduri; Shadi Ammouri
>> Subject: Re: Assigning an eth port to a guest VM
>>
>> Hi Yehuda,
>> On 06/15/2015 01:01 PM, Yehuda Yitschak wrote:
>> >> Cc: Eric Auger
>> >>
>> >>> -----Original Message-----
>> >>> From: Yehuda Yitschak
>> >>> Sent: Monday, June 15, 2015 9:35
>> >>> To: qemu-devel@nongnu.org
>> >>> Cc: Yuval Caduri; Shadi Ammouri
>> >>> Subject: Assigning an eth port to a guest VM
>> >>>
>> >>> Hello
>> >>>
>> >>> I would to ask your advice on how to assign a semi-virtualized Ethernet port
>> >>> to a guest VM
>> >>>
>> >>> The eth port's HW partially supports virtualization since the data path MMIO
>> >>> registers (which controls rx/tx operation) are duplicated per VM.
>> >>> So for the run-time operation the guest can directly access the MMIO
>> >>> registers, using VFIO-PLATFORM, and enjoy the performance benefit.
>> >>>
>> >>> However for the initial setup and occasional configuration the guest need to
>> >>> access control path registers which are shared for all guests.
>> >>> AFAIK this is usually done with HW emulation using trap & emulate with
>> >>> QEMU.
>> >>> So, to the best of my knowledge I need a mix of VFIO and HW emulation to
>> >>> get the port to work with device assignment , right ?
>> > Yes to me you're correct.
>> >>>
>> >>> Are there any standard methods for achieving this ?
>> >>> Is there an example for such an existing HW in QEMU ?
>> > Not yet unfortunately. To my knowledge the only platform devices that
>> > were assigned with QEMU VFIO platform were standalone duplicated
>> > devices, PL330, Calxeda Xgmac, SATA. So you are a trailblazer on that
>> > track.
>>
>> Thanks. It's good to know the diagnosis :-)
>>
>> BTW - i thought SR-IOV uses a somewhat similar concept. AFAIK each virtual function (VF) gets
>> a set of registers enabling it to perform data path but most of the configuration and management
>> operations are controlled by the host using the Physical Function PF driver.
>> Are you familiar with that ?
>> i know SR-IOV is not related to VFIO-PLATFORM but if the mixed of direct access and emulation
>> exists there as well then maybe i can borrow some concepts
> The difference for SR-IOV is that emulation of shared resources is done
> almost entirely in the hardware. the PF configures the VFs and may
>interact with them to some degree at runtime, but VFs are largely
>separate devices from a software perspective.
> The first question I would have for your device is whether there is
> IOMMU isolation between the individual "functions".
Yes. IOMMU isolation is possible.
> If not, there's really nothing vfio can help with and they probably ought to be used
> more as a macvtap interface. If there is isolation, then I'd assume
> we'd configure the device for direct access to the duplicated registers
> and trap to QEMU for the emulation portion. For things were the
> emulation portion needs to interact with the "PF", interfaces would need
> to be created in the kernel.
Can you give a short example of such an interface ?
Do you mean a special device or ioctl to handle the emulation request from QEMU/VFIO ?
> The vfio-platform pieces specific to your
> device might be the logical place for that interaction with the PF to
> occur, ie. emulation at the vfio-platform interface rather than in QEMU
> itself. Thanks,
That sounds simpler than adding QEMU to the mix.
However for that to happen we need to trap into the vfio-platfrom driver, right ?
is that possible ?
Thanks a lot
Yehuda
>
> Alex
next prev parent reply other threads:[~2015-06-15 17:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-15 11:01 [Qemu-devel] Assigning an eth port to a guest VM Yehuda Yitschak
2015-06-15 13:42 ` Eric Auger
2015-06-15 16:52 ` Yehuda Yitschak
2015-06-15 16:59 ` Eric Auger
2015-06-15 17:15 ` Alex Williamson
2015-06-15 17:45 ` Yehuda Yitschak [this message]
2015-06-15 17:55 ` Eric Auger
2015-06-15 18:31 ` Alex Williamson
2015-06-16 11:21 ` Yehuda Yitschak
2015-06-16 14:43 ` Alex Williamson
2015-06-17 17:16 ` Yehuda Yitschak
-- strict thread matches above, loose matches on Subject: below --
2015-06-15 6:35 Yehuda Yitschak
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=1434390323396.66541@marvell.com \
--to=yehuday@marvell.com \
--cc=alex.williamson@redhat.com \
--cc=cyuval@marvell.com \
--cc=eric.auger@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=shadi@marvell.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).