
On 08/05/2017 01:14 PM, Laine Stump wrote:
On 08/03/2017 02:33 AM, Moshe Levi wrote:
Hi Laine,
I have a few question before I can give my opinion. I the Mellanox Card Dual Port that support one PCI with 2 PF is ConnectX-3 and ConnectX-3 Pro. (maybe others cards I will check this) The ConnectX-4 Dual Port and above is implemented with 2 PCI devices per 2 PF. So is the "multiple netdevs for a single PCI device" hardware model completely deprecated, and will never show up again in new products?
If that's the case, maybe I shouldn't burden libvirt's config with all this new config that will only be used for legacy hardware. Perhaps a better approach would be to stick with the current config, and make it work properly for VFIO device assignment when a ConnectX-3 card is configured in single port mode - even that doesn't work correctly now[*] but it's a more easily solved problem, and can be done with no config changes.
Opinions about this? If it's a deadend and the existing legacy hardware can be used in a reasonable manner by setting it to single port mode, I don't want to add externally-visible knobs to libvirt.
[*]If a VF is configured to be "port 2 only", libvirt would still try to get/set the MAC and vlan tag with a netlink message to the *port 1* netdev of the PF, so it would be saving/setting the wrong (nonexistent?) VF netdev.
I just tried this and find I was partially mistaken. For example, lets say that I have a PF with netdevs p2p1 (port 1) and p2p2 (port 2), and I set it up to have the first 4 VFs on port 1 and the 2nd 4 on port 2. It turns out that I can set the MAC/vlan tag using either p2p1 *or* p2p2 and it will be set in the correct place. However, if I try to *get* the current MAC/vlan tag for a VF that uses port 2 via the PF netdev for port 1, then I will just get back 0. This might seem confusing/misleading, but it actually makes the job of fixing device assignment for single port mode a bit simpler!
I did send patches yesterday (any reviews/testing appreciated!) that make everything work properly when saving/setting/restoring the VF netdev MAC/vlan tags on dual port cards used for macvtap passthrough:
https://www.redhat.com/archives/libvir-list/2017-August/msg00170.html
Those don't fix the situation when doing VFIO device assignment, but they do at least make macvtap passthrough work correctly (for all VF netdevs, even when the netdevs are dual port!), and are the first step in getting it right for VFIO.