qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] vfio/igd: handle q35 machine type


From: Alex Williamson
Subject: Re: [Qemu-devel] [PATCH v2] vfio/igd: handle q35 machine type
Date: Tue, 8 Mar 2016 08:15:33 -0700

On Tue, 08 Mar 2016 09:04:50 +0100
Gerd Hoffmann <address@hidden> wrote:

> On Mo, 2016-03-07 at 14:41 -0700, Alex Williamson wrote:
> > On Fri,  4 Mar 2016 09:41:53 +0100
> > Gerd Hoffmann <address@hidden> 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 <address@hidden>
> > > ---
> > >  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,  
> 
> q35 already has a isa bridge @ 1f.0, and it's not a dummy device but
> emulates the ich9 lpc.  Just overwriting the identity of that device
> isn't a good idea I think.

It's not a good idea in practice or in theory?  It's exactly what we're
proposing to do for the host bridge.  Do we know for certain that any of
the emulated ich9 registers do not align with newer chipsets?  It seems
quite limiting of igd assignment on q35 VMs if we're going to remove
collateral device modification.  Should we only claim "legacy" igd
support on 440FX and support only universal passthrough on q35?  Thanks,

Alex



reply via email to

[Prev in Thread] Current Thread [Next in Thread]