[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v3][PATCH 3/5] xen, gfx passthrough: support Intel IGD passthrough with VT-D
> -----Original Message----- > From: Stefano Stabellini [mailto:stefano.stabellini@xxxxxxxxxxxxx] > Sent: Wednesday, May 28, 2014 2:02 AM > To: Chen, Tiejun > Cc: anthony.perard@xxxxxxxxxx; stefano.stabellini@xxxxxxxxxxxxx; > mst@xxxxxxxxxx; Kelly.Zytaruk@xxxxxxx; qemu-devel@xxxxxxxxxx; > xen-devel@xxxxxxxxxxxxxxxxxxx; peter.maydell@xxxxxxxxxx; > anthony@xxxxxxxxxxxxx; Kay, Allen M; Zhang, Yang Z > Subject: Re: [v3][PATCH 3/5] xen, gfx passthrough: support Intel IGD > passthrough with VT-D > > On Mon, 26 May 2014, Tiejun Chen wrote: > > Some registers of Intel IGD are mapped in host bridge, so it needs to > > passthrough these registers of physical host bridge to guest because > > emulated host bridge in guest doesn't have these mappings. > > > > The original patch is from Weidong Han < weidong.han @ intel.com > > > > > Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> > > Signed-off-by: Tiejun Chen <tiejun.chen@xxxxxxxxx> Cc:Weidong Han > > <weidong.han@xxxxxxxxx> > > --- > > v3: > > > > * Improve comments to make that readable. > > > > v2: > > > > * To introduce is_igd_passthrough() to make sure we touch physical host > bridge > > only in IGD case. > > [snip] > > +int pci_create_pch(PCIBus *bus) > > +{ > > + XenHostPCIDevice hdev; > > + int r = 0; > > + > > + if (!xen_has_gfx_passthru) { > > + return -1; > > If this function ends up being called unconditionally, then this should > return 0; > Fixed. > > > + } > > + > > + r = xen_host_pci_device_get(&hdev, 0, 0, 0x1f, 0); > > + if (r) { > > + XEN_PT_ERR(NULL, "Failed to find Intel PCH on host\n"); > > + goto err; > > + } > > + > > + if (hdev.vendor_id == PCI_VENDOR_ID_INTEL) { > > + r = create_pch_isa_bridge(bus, &hdev); > > + if (r) { > > + XEN_PT_ERR(NULL, "Failed to create PCH ISA bridge.\n"); > > + goto err; > > + } > > + } > > + > > + xen_host_pci_device_put(&hdev); > > + > > +err: > > + return r; > > +} > > + > > +/* > > + * Currently we just pass this physical host bridge for IGD, 00:02.0. > > + */ > > +static int is_igd_passthrough(PCIDevice *pci_dev) { > > + PCIDevice *f = pci_dev->bus->devices[PCI_DEVFN(2, 0)]; > > + if (pci_dev->bus->devices[PCI_DEVFN(2, 0)]) { > > Isn't the purpose of this function to check that the *current* device is the > graphic passthrough device? No. > In that case, shouldn't it just be: > > if (pci_dev) { > Here pci_dev is just that host bridge, so here we have to get that real passthrough device by that given devfn to further confirm. Thanks Tiejun _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |