qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Jens Freimann <jfreimann@redhat.com>
Cc: "pkrempa@redhat.com" <pkrempa@redhat.com>,
	"berrange@redhat.com" <berrange@redhat.com>,
	Parav Pandit <parav@mellanox.com>,
	"mst@redhat.com" <mst@redhat.com>,
	"aadam@redhat.com" <aadam@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"dgilbert@redhat.com" <dgilbert@redhat.com>,
	"laine@redhat.com" <laine@redhat.com>,
	"ailan@redhat.com" <ailan@redhat.com>,
	"ehabkost@redhat.com" <ehabkost@redhat.com>
Subject: Re: [PATCH v5 02/11] pci: add option for net failover
Date: Thu, 24 Oct 2019 10:52:36 -0600	[thread overview]
Message-ID: <20191024105236.70403a2f@x1.home> (raw)
In-Reply-To: <20191024093754.tgdd7cp5riwcsytc@jenstp.localdomain>

On Thu, 24 Oct 2019 11:37:54 +0200
Jens Freimann <jfreimann@redhat.com> wrote:

> On Thu, Oct 24, 2019 at 05:03:46AM +0000, Parav Pandit wrote:
> >> @@ -2101,6 +2104,20 @@ static void pci_qdev_realize(DeviceState *qdev,
> >> Error **errp)
> >>          }
> >>      }
> >>
> >> +    if (pci_dev->net_failover_pair_id) {
> >> +        if (!pci_is_express(pci_dev)) {  
> >
> >I am testing and integrating this piece with mlx5 devices.
> >I see that pci_is_express() return true only for first PCI function.
> >Didn't yet dig the API.
> >Commenting out this check and below class check progresses further.  
> 
> First of all, thanks for testing this!
> Could you share your commandline please? I can't reproduce it.
> >
> >While reviewing, I realized that we shouldn't have this check for below reasons.
> >
> >1. It is user's responsibility to pass networking device.
> >But its ok to check the class, if PCI Device is passed.
> >So class comparison should be inside the pci_check().  
> 
> I'm not sure I understand this point, could you please elaborate?
> You're suggesting to move the check for the class into the check for
> pci_is_express?

Seems like the suggestion is that net_failover_pair_id should be an
option on the base class of PCIDevice (DeviceState?) and only if it's a
PCI device would we check the class code.  But there are dependencies
at the hotplug controller, which I think is why this is currently
specific to PCI.

However, it's an interesting point about pci_is_express().  This test
is really just meant to check whether the hotplug controller supports
this feature, which is only implemented in pciehp via this series.
There's a bit of a mismatch though that pcie_is_express() checks
whether the device is express, not whether the bus it sits on is
express.  I think we really want the latter, so maybe this should be:

pci_bus_is_express(pci_get_bus(dev)

For example this feature should work if I plug an e1000 (not e1000e)
into an express slot, but not if I plug an e1000e into a conventional
slot.
 
> >2. It is limiting to only consider PCI devices.
> >Automated and regression tests should be able validate this feature without PCI Device.
> >This will enhance the stability of feature in long run.
> >
> >3. net failover driver doesn't limit it to have it over only PCI device.
> >So similarly hypervisor should be limiting.  
> 
> I agree that we don't have to limit it to PCI(e) forever. But for this
> first shot I think we should and then extend it continually. There are
> more things we can support in the future like other hotplug types etc.

Yep, long term it seems very generic, but there's a dependency in the
hotplug controller and it is beneficial that PCI has a class code
feature that allows us to error if this is specified on a non-net
device.  Thanks,

Alex



  parent reply	other threads:[~2019-10-24 17:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23  8:27 [PATCH v5 0/11] add failover feature for assigned network devices Jens Freimann
2019-10-23  8:27 ` [PATCH v5 01/11] qdev/qbus: add hidden device support Jens Freimann
2019-10-23  8:27 ` [PATCH v5 02/11] pci: add option for net failover Jens Freimann
2019-10-23 18:06   ` Alex Williamson
2019-10-23 19:30     ` Jens Freimann
2019-10-23 20:02       ` Alex Williamson
2019-10-23 20:31         ` Jens Freimann
2019-10-23 21:15           ` Alex Williamson
2019-10-24 17:57             ` Laine Stump
2019-10-25 10:52     ` Jens Freimann
2019-10-25 14:56       ` Alex Williamson
2019-10-24  5:03   ` Parav Pandit
2019-10-24  9:37     ` Jens Freimann
2019-10-24 16:34       ` Parav Pandit
2019-10-24 17:06         ` Alex Williamson
2019-10-24 16:52       ` Alex Williamson [this message]
2019-10-24 20:08         ` Jens Freimann
2019-10-24 17:22   ` Dr. David Alan Gilbert
2019-10-24 19:56     ` Jens Freimann
2019-10-23  8:27 ` [PATCH v5 03/11] pci: mark devices partially unplugged Jens Freimann
2019-10-23  8:27 ` [PATCH v5 04/11] pci: mark device having guest unplug request pending Jens Freimann
2019-10-23  8:27 ` [PATCH v5 05/11] qapi: add unplug primary event Jens Freimann
2019-10-23 11:32   ` Eric Blake
2019-10-23  8:27 ` [PATCH v5 06/11] qapi: add failover negotiated event Jens Freimann
2019-10-24 17:32   ` Dr. David Alan Gilbert
2019-10-24 20:03     ` Jens Freimann
2019-10-25  5:35   ` Markus Armbruster
2019-10-25  7:51     ` Jens Freimann
2019-10-23  8:27 ` [PATCH v5 07/11] migration: allow unplug during migration for failover devices Jens Freimann
2019-10-23  8:27 ` [PATCH v5 08/11] migration: add new migration state wait-unplug Jens Freimann
2019-10-23  8:27 ` [PATCH v5 09/11] libqos: tolerate wait-unplug migration state Jens Freimann
2019-10-23  8:27 ` [PATCH v5 10/11] net/virtio: add failover support Jens Freimann
2019-10-23  8:27 ` [PATCH v5 11/11] vfio: unplug failover primary device before migration Jens Freimann
2019-10-23 18:28   ` Alex Williamson

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=20191024105236.70403a2f@x1.home \
    --to=alex.williamson@redhat.com \
    --cc=aadam@redhat.com \
    --cc=ailan@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jfreimann@redhat.com \
    --cc=laine@redhat.com \
    --cc=mst@redhat.com \
    --cc=parav@mellanox.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-devel@nongnu.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).