From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [Xen-devel] [v2][PATCH 5/8] xen, gfx passthrough: create intel isa bridge Date: Fri, 16 May 2014 10:11:33 -0400 Message-ID: <20140516141133.GD3154@phenom.dumpdata.com> References: <1400237624-8505-1-git-send-email-tiejun.chen@intel.com> <1400237624-8505-6-git-send-email-tiejun.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1400237624-8505-6-git-send-email-tiejun.chen@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: Tiejun Chen Cc: peter.maydell@linaro.org, xen-devel@lists.xensource.com, mst@redhat.com, allen.m.kay@intel.com, stefano.stabellini@eu.citrix.com, weidong.han@intel.com, Kelly.Zytaruk@amd.com, jean.guyader@eu.citrix.com, qemu-devel@nongnu.org, yang.z.zhang@intel.com, anthony@codemonkey.ws, anthony.perard@citrix.com List-Id: xen-devel@lists.xenproject.org On Fri, May 16, 2014 at 06:53:41PM +0800, Tiejun Chen wrote: > ISA bridge is needed since Intel gfx drive will probe it instead > of Dev31:Fun0 to make graphics device passthrough work easy for VMM, that > only need to expose ISA bridge to let driver know the real hardware underneath. > > The original patch is from Allen Kay [allen.m.kay@intel.com] > > Signed-off-by: Yang Zhang > Signed-off-by: Tiejun Chen > Cc: Allen Kay > --- > v2: > > * Nothing is changed. > > hw/xen/xen_pt_graphics.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 71 insertions(+) > > diff --git a/hw/xen/xen_pt_graphics.c b/hw/xen/xen_pt_graphics.c > index e1f0724..6b86293 100644 > --- a/hw/xen/xen_pt_graphics.c > +++ b/hw/xen/xen_pt_graphics.c > @@ -175,3 +175,74 @@ out: > g_free(bios); > return rc; > } > + > +static uint32_t isa_bridge_read_config(PCIDevice *d, uint32_t addr, int len) > +{ > + uint32_t v; > + > + v = pci_default_read_config(d, addr, len); > + > + return v; return pci_default_read_config... > +} > + > +static void isa_bridge_write_config(PCIDevice *d, uint32_t addr, uint32_t v, > + int len) > +{ > + pci_default_write_config(d, addr, v, len); > + > + return; > +} > + > +static void isa_bridge_class_init(ObjectClass *klass, void *data) > +{ > + PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > + > + k->config_read = isa_bridge_read_config; > + k->config_write = isa_bridge_write_config; > + > + return; > +}; > + > +typedef struct { > + PCIDevice dev; > +} ISABridgeState; > + > +static TypeInfo isa_bridge_info = { > + .name = "inte-pch-isa-bridge", s/inte/intel/ > + .parent = TYPE_PCI_DEVICE, > + .instance_size = sizeof(ISABridgeState), > + .class_init = isa_bridge_class_init, > +}; > + > +static void xen_pt_graphics_register_types(void) > +{ > + type_register_static(&isa_bridge_info); > +} > + > +type_init(xen_pt_graphics_register_types) > + > +static int create_pch_isa_bridge(PCIBus *bus, XenHostPCIDevice *hdev) > +{ > + struct PCIDevice *dev; > + > + char rid; > + > + dev = pci_create(bus, PCI_DEVFN(0x1f, 0), "inte-pch-isa-bridge"); s/inte/intel/? > + if (!dev) { > + XEN_PT_LOG(dev, "fail to create PCH ISA bridge.\n"); failed > + return -1; Could we return a better error code to help troubleshoot why we failed? > + } > + > + qdev_init_nofail(&dev->qdev); > + > + pci_config_set_vendor_id(dev->config, hdev->vendor_id); > + pci_config_set_device_id(dev->config, hdev->device_id); > + > + xen_host_pci_get_block(hdev, PCI_REVISION_ID, (uint8_t *)&rid, 1); > + > + pci_config_set_revision(dev->config, rid); > + pci_config_set_class(dev->config, PCI_CLASS_BRIDGE_ISA); > + > + XEN_PT_LOG(dev, "Intel PCH ISA bridge is created.\n"); s/is// > + return 0; > +} > -- > 1.9.1 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel