|
[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 Mon, Jun 17, 2013 at 8:54 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> 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?
>
Ah! Thanks for pointing this out...
I just keep carrying this sign-off lines from the original version.
So I think I should use these lines for signing-off:
Signed-off-by: Rui Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx>
Tested-by: Rui Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx>
Do I need to resend the whole thing out?
Rui
> 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 |