[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] V4 qemu-xen-trad: Correctly expose PCH ISA bridge for IGD passthrough
>>> On 17.06.13 at 14:42, "G.R." <firemeteor@xxxxxxxxxxxxxxxxxxxxx> wrote: > The i915 driver probes chip version through PCH ISA bridge device / vendor > ID. > Previously, the PCH ISA bridge is exposed as PCI-PCI bridge in qemu-xen-trad, > which breaks the assumption of the driver. This change fixes the issue by > correctly exposing the ISA bridge to domU. > > Note the PIIX3 ISA bridge is still present on the bus (dropping it seems > break qemu all-together), i915 driver still need to be updated to handle > this. > > Change since last version: > 1. Introduce helper function to avoid exposing PCI_Bus / PCI_Bridge > definition to public. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>, > Rui Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx> > Tested-by: Rui Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx> I'm fine with this version, but does the above indeed reflect reality? I.e. wasn't it you who wrote the patch in its current form? Jan > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -938,6 +938,16 @@ PCIBus *pci_bridge_init(PCIBus *bus, int devfn, > uint16_t vid, uint16_t did, > return s->bus; > } > > +PCIBus *pci_isa_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t > did, > + uint8_t rid, pci_map_irq_fn map_irq, const char > *name) > +{ > + PCIBus *s = pci_bridge_init(bus, devfn, vid, did, rid, map_irq, name); > + > + pci_config_set_class(s->parent_dev->config, PCI_CLASS_BRIDGE_ISA); > + s->parent_dev->config[PCI_HEADER_TYPE] = 0x80; > + return s; > +} > + > int pt_chk_bar_overlap(PCIBus *bus, int devfn, uint32_t addr, > uint32_t size, uint8_t type) > { > --- a/hw/pci.h > +++ b/hw/pci.h > @@ -271,6 +271,9 @@ void pci_info(void); > PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, > uint8_t rid, pci_map_irq_fn map_irq, const char > *name); > > +PCIBus *pci_isa_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t > did, > + uint8_t rid, pci_map_irq_fn map_irq, const char > *name); > + > #define NR_PCI_FUNC 8 > #define NR_PCI_DEV 32 > #define NR_PCI_DEVFN (NR_PCI_FUNC * NR_PCI_DEV) > --- a/hw/pt-graphics.c > +++ b/hw/pt-graphics.c > @@ -3,6 +3,7 @@ > */ > > #include "pass-through.h" > +#include "pci.h" > #include "pci/header.h" > #include "pci/pci.h" > > @@ -40,9 +41,11 @@ void intel_pch_init(PCIBus *bus) > did = pt_pci_host_read(pci_dev_1f, PCI_DEVICE_ID, 2); > rid = pt_pci_host_read(pci_dev_1f, PCI_REVISION, 1); > > - if ( vid == PCI_VENDOR_ID_INTEL ) > - pci_bridge_init(bus, PCI_DEVFN(0x1f, 0), vid, did, rid, > - pch_map_irq, "intel_bridge_1f"); > + if (vid == PCI_VENDOR_ID_INTEL) { > + pci_isa_bridge_init(bus, PCI_DEVFN(0x1f, 0), vid, did, rid, > + pch_map_irq, "intel_bridge_1f"); > + > + } > } > > uint32_t igd_read_opregion(struct pt_dev *pci_dev) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |