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

Re: [Xen-devel] [v2][PATCH 5/8] xen, gfx passthrough: create intel isa bridge



> -----Original Message-----
> From: Konrad Rzeszutek Wilk [mailto:konrad.wilk@xxxxxxxxxx]
> Sent: Friday, May 16, 2014 10:12 PM
> To: Chen, Tiejun
> Cc: anthony.perard@xxxxxxxxxx; stefano.stabellini@xxxxxxxxxxxxx;
> mst@xxxxxxxxxx; Kelly.Zytaruk@xxxxxxx; peter.maydell@xxxxxxxxxx;
> xen-devel@xxxxxxxxxxxxxxxxxxx; weidong.han@xxxxxxxxx; Kay, Allen M;
> qemu-devel@xxxxxxxxxx; jean.guyader@xxxxxxxxxxxxx;
> anthony@xxxxxxxxxxxxx; Zhang, Yang Z
> Subject: Re: [Xen-devel] [v2][PATCH 5/8] xen, gfx passthrough: create intel 
> isa
> bridge
> 
> 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@xxxxxxxxx]
> >
> > Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx>
> > Signed-off-by: Tiejun Chen <tiejun.chen@xxxxxxxxx>
> > Cc: Allen Kay <allen.m.kay@xxxxxxxxx>
> > ---
> > 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...

Fixed.

> 
> > +}
> > +
> > +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/

Fixed.

> 
> > +    .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/?

Fixed.

> 
> > +    if (!dev) {
> > +        XEN_PT_LOG(dev, "fail to create PCH ISA bridge.\n");
> 
> failed

Fixed.

> 
> > +        return -1;
> 
> Could we return a better error code to help troubleshoot why we failed?

I take a look at this then I think we can remove these lines,

pci_create()
        |
        + qdev_create()

And 

DeviceState *qdev_create(BusState *bus, const char *name)
{
    DeviceState *dev; 
 
    dev = qdev_try_create(bus, name); 
    if (!dev) {
        if (bus) {
            error_report("Unknown device '%s' for bus '%s'", name, 
                         object_get_typename(OBJECT(bus)));
        } else { 
            error_report("Unknown device '%s' for default sysbus", name);
        }
        abort(); 
    }

> 
> > +    }
> > +
> > +    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//

Fixed.

Thanks
Tiejun

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.