From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38688) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YLDqR-00014n-Ca for qemu-devel@nongnu.org; Tue, 10 Feb 2015 11:39:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YLDqM-0000Gd-F7 for qemu-devel@nongnu.org; Tue, 10 Feb 2015 11:39:27 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YLDqM-0000GL-7G for qemu-devel@nongnu.org; Tue, 10 Feb 2015 11:39:22 -0500 Message-ID: <1423586352.22865.810.camel@redhat.com> From: Alex Williamson Date: Tue, 10 Feb 2015 09:39:12 -0700 In-Reply-To: <119e402b6962fe647f428e8984ae55b112ff7a93.1423551266.git.chen.fan.fnst@cn.fujitsu.com> References: <119e402b6962fe647f428e8984ae55b112ff7a93.1423551266.git.chen.fan.fnst@cn.fujitsu.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v3 08/10] vfio-pci: add VFIO_FEATURE_ENABLE_AER_CAP feature List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Chen Fan Cc: izumi.taku@jp.fujitsu.com, qemu-devel@nongnu.org On Tue, 2015-02-10 at 15:03 +0800, Chen Fan wrote: > add a new "aercap" feature in vfio device, for controlling > whether expose aer capability. > > Signed-off-by: Chen Fan > --- > hw/vfio/pci.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c > index bf314a1..c21b40b 100644 > --- a/hw/vfio/pci.c > +++ b/hw/vfio/pci.c > @@ -138,6 +138,8 @@ typedef struct VFIOMSIXInfo { > enum { > #define VFIO_FEATURE_ENABLE_VGA_BIT 0 > VFIO_FEATURE_ENABLE_VGA = (1 << VFIO_FEATURE_ENABLE_VGA_BIT), > +#define VFIO_FEATURE_ENABLE_AER_CAP_BIT 1 > + VFIO_FEATURE_ENABLE_AER_CAP = (1 << VFIO_FEATURE_ENABLE_AER_CAP_BIT), > }; > > typedef struct VFIOPCIDevice { > @@ -2721,8 +2723,10 @@ static int vfio_add_ext_cap(VFIOPCIDevice *vdev, uint16_t pos) > > switch (cap_id) { > case PCI_EXT_CAP_ID_ERR: > - pcie_add_capability(pdev, cap_id, cap_ver, pos, size); > - vfio_setup_pcie_aer(vdev, pos); > + if (vdev->features & VFIO_FEATURE_ENABLE_AER_CAP) { > + pcie_add_capability(pdev, cap_id, cap_ver, pos, size); > + vfio_setup_pcie_aer(vdev, pos); > + } Maybe the question should be why we're adding extended capabilities at all if the chipset doesn't expose them. If we boot on 440fx, all extended capability parsing could be disabled. We could then add an x-aer=off option to vfio-pci to allow the user to disable aer specifically if they want. > break; > default: > pcie_add_capability(pdev, cap_id, cap_ver, pos, size); > @@ -3487,6 +3491,8 @@ static Property vfio_pci_dev_properties[] = { > DEFINE_PROP_BIT("x-vga", VFIOPCIDevice, features, > VFIO_FEATURE_ENABLE_VGA_BIT, false), > DEFINE_PROP_INT32("bootindex", VFIOPCIDevice, bootindex, -1), > + DEFINE_PROP_BIT("aercap", VFIOPCIDevice, features, > + VFIO_FEATURE_ENABLE_AER_CAP_BIT, true), > /* > * TODO - support passed fds... is this necessary? > * DEFINE_PROP_STRING("vfiofd", VFIOPCIDevice, vfiofd_name),