From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ad2uc-0006tg-CH for qemu-devel@nongnu.org; Mon, 07 Mar 2016 16:41:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ad2uZ-0000HF-4F for qemu-devel@nongnu.org; Mon, 07 Mar 2016 16:41:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60929) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ad2uY-0000H2-V2 for qemu-devel@nongnu.org; Mon, 07 Mar 2016 16:41:55 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 82680C0B1B21 for ; Mon, 7 Mar 2016 21:41:54 +0000 (UTC) Date: Mon, 7 Mar 2016 14:41:51 -0700 From: Alex Williamson Message-ID: <20160307144151.5d17dfb4@t450s.home> In-Reply-To: <1457080913-30018-1-git-send-email-kraxel@redhat.com> References: <1457080913-30018-1-git-send-email-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] vfio/igd: handle q35 machine type List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann Cc: qemu-devel@nongnu.org On Fri, 4 Mar 2016 09:41:53 +0100 Gerd Hoffmann wrote: > Basically skip the lpc quirks with -M q35. > Applies on top of the vfio-igd patch series by alex. > > Signed-off-by: Gerd Hoffmann > --- > hw/vfio/pci-quirks.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c > index 5828362..1757e3d 100644 > --- a/hw/vfio/pci-quirks.c > +++ b/hw/vfio/pci-quirks.c > @@ -12,6 +12,7 @@ > > #include "qemu/osdep.h" > #include "hw/nvram/fw_cfg.h" > +#include "hw/i386/ich9.h" > #include "pci.h" > #include "trace.h" > #include "qemu/range.h" > @@ -1410,6 +1411,7 @@ int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, > struct vfio_region_info *region) > { > DeviceClass *dc = DEVICE_GET_CLASS(vdev); > + PCIBus *bus; > PCIDevice *lpc_bridge; > int ret; > > @@ -1423,6 +1425,19 @@ int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, > > dc->hotpluggable = false; > > + bus = pci_device_root_bus(&vdev->pdev); > + lpc_bridge = pci_find_device(bus, 0, PCI_DEVFN(0x1f, 0)); > + if (lpc_bridge) { > + const char *type = object_get_typename(OBJECT(lpc_bridge)); > + if (strcmp(type, TYPE_ICH9_LPC_DEVICE) == 0) { > + /* > + * q35 lpc present, leave it as-is. > + * linux kernel 4.5+ can deal with this. What about anything older? I assume we want to support current distributions. Based on this patch it seems like we also want to test first if the lpc device is present, create it if not, then probably copy host data into it. Thanks, Alex > + */ > + return 0; > + } > + } > + > lpc_bridge = pci_create_simple(pci_device_root_bus(&vdev->pdev), > PCI_DEVFN(0x1f, 0), > "vfio-pci-igd-lpc-bridge");