* [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge.
@ 2012-01-16 14:40 Jean Guyader
2012-01-16 15:04 ` Jean Guyader
2012-01-17 2:50 ` [PATCH] intel gpu passthrough: Expose vendor specificpci " djmagee
0 siblings, 2 replies; 5+ messages in thread
From: Jean Guyader @ 2012-01-16 14:40 UTC (permalink / raw)
To: xen-devel; +Cc: Ian.Jackson, allen.m.kay, Jean Guyader
[-- Attachment #1: Type: text/plain, Size: 349 bytes --]
Some versions of the Windows Intel GPU driver expect the vendor
PCI capability to be there on the host bridge config space when
passing through a Intel GPU.
Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
---
hw/pt-graphics.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 46 insertions(+), 5 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-intel-gpu-passthrough-Expose-vendor-specific-pci-cap.patch --]
[-- Type: text/x-patch; name="0001-intel-gpu-passthrough-Expose-vendor-specific-pci-cap.patch", Size: 2551 bytes --]
diff --git a/hw/pt-graphics.c b/hw/pt-graphics.c
index fec7390..1120639 100644
--- a/hw/pt-graphics.c
+++ b/hw/pt-graphics.c
@@ -60,6 +60,44 @@ void igd_pci_write(PCIDevice *pci_dev, uint32_t config_addr, uint32_t val, int l
}
}
+#define PCI_INTEL_VENDOR_CAP 0x34
+#define PCI_INTEL_VENDOR_CAP_TYPE 0x09
+static uint32_t igd_pci_read_vendor_cap(PCIDevice *pci_dev, uint32_t config_addr, int len,
+ uint32_t val)
+{
+ struct pci_dev *pci_dev_host_bridge = pt_pci_get_dev(0, 0, 0);
+ uint32_t vendor_cap = 0;
+ uint32_t cap_type = 0;
+ uint32_t cap_size = 0;
+
+ vendor_cap = pt_pci_host_read(pci_dev_host_bridge, PCI_INTEL_VENDOR_CAP, 1);
+ if (config_addr == PCI_INTEL_VENDOR_CAP)
+ {
+ /* Only do the following for vendor specific caps (0x09) */
+ if (cap_type != PCI_INTEL_VENDOR_CAP_TYPE)
+ return 0;
+
+ if (vendor_cap == 0)
+ return 0;
+ }
+
+ cap_type = pt_pci_host_read(pci_dev_host_bridge, vendor_cap, 1);
+ cap_size = pt_pci_host_read(pci_dev_host_bridge, vendor_cap + 2, 1);
+
+ /* Remove the next capability link */
+ if (config_addr == vendor_cap + 1)
+ return 0;
+
+ if (config_addr >= vendor_cap &&
+ config_addr + len < vendor_cap + cap_size)
+ {
+ return pt_pci_host_read(pci_dev_host_bridge, config_addr, len);
+ }
+
+ /* -1, this function doesn't deal with this config space offset */
+ return -1;
+}
+
uint32_t igd_pci_read(PCIDevice *pci_dev, uint32_t config_addr, int len)
{
struct pci_dev *pci_dev_host_bridge = pt_pci_get_dev(0, 0, 0);
@@ -82,14 +120,17 @@ uint32_t igd_pci_read(PCIDevice *pci_dev, uint32_t config_addr, int len)
case 0xa4: /* SNB: graphics base of stolen memory */
case 0xa8: /* SNB: base of GTT stolen memory */
val = pt_pci_host_read(pci_dev_host_bridge, config_addr, len);
-#ifdef PT_DEBUG_PCI_CONFIG_ACCESS
- PT_LOG_DEV(pci_dev, "addr=%x len=%x val=%x\n",
- config_addr, len, val);
-#endif
break;
default:
- val = pci_default_read_config(pci_dev, config_addr, len);
+ val = igd_pci_read_vendor_cap(pci_dev, config_addr, len, val);
+ if (val == -1)
+ val = pci_default_read_config(pci_dev, config_addr, len);
+
}
+#ifdef PT_DEBUG_PCI_CONFIG_ACCESS
+ PT_LOG_DEV(pci_dev, "addr=%x len=%x val=%x\n",
+ config_addr, len, val);
+#endif
return val;
}
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge.
2012-01-16 14:40 [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge Jean Guyader
@ 2012-01-16 15:04 ` Jean Guyader
2012-01-16 15:11 ` Ross Philipson
2012-01-17 2:50 ` [PATCH] intel gpu passthrough: Expose vendor specificpci " djmagee
1 sibling, 1 reply; 5+ messages in thread
From: Jean Guyader @ 2012-01-16 15:04 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
Cc: Ian Jackson, allen.m.kay@intel.com, Ross Philipson, Jean Guyader
On 16/01 02:40, Jean Guyader wrote:
>
> Some versions of the Windows Intel GPU driver expect the vendor
> PCI capability to be there on the host bridge config space when
> passing through a Intel GPU.
>
> Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
From: Ross Philipson <Ross.Philipson@citrix.com>
Jean
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge.
2012-01-16 15:04 ` Jean Guyader
@ 2012-01-16 15:11 ` Ross Philipson
0 siblings, 0 replies; 5+ messages in thread
From: Ross Philipson @ 2012-01-16 15:11 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
> -----Original Message-----
> From: Jean Guyader [mailto:jean.guyader@eu.citrix.com]
> Sent: Monday, January 16, 2012 10:05 AM
> To: xen-devel@lists.xensource.com
> Cc: allen.m.kay@intel.com; Ian Jackson; Jean Guyader; Ross Philipson
> Subject: Re: [PATCH] intel gpu passthrough: Expose vendor specific pci
> cap on host bridge.
>
> On 16/01 02:40, Jean Guyader wrote:
> >
> > Some versions of the Windows Intel GPU driver expect the vendor PCI
> > capability to be there on the host bridge config space when passing
> > through a Intel GPU.
> >
> > Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
> From: Ross Philipson <Ross.Philipson@citrix.com>
>
> Jean
Acked-by: Ross Philipson <Ross.Philipson@citrix.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] intel gpu passthrough: Expose vendor specificpci cap on host bridge.
2012-01-16 14:40 [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge Jean Guyader
2012-01-16 15:04 ` Jean Guyader
@ 2012-01-17 2:50 ` djmagee
2012-01-17 13:50 ` Jean Guyader
1 sibling, 1 reply; 5+ messages in thread
From: djmagee @ 2012-01-17 2:50 UTC (permalink / raw)
To: Jean Guyader, xen-devel
This always fails because it checks cap_type before it's set. Moving the pt_pci_host_read call before the check gets rid of these messages in qemu log:
pcilib: sysfs_read: read failed: Invalid argument
-----Original Message-----
From: xen-devel-bounces@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Jean Guyader
Sent: Monday, January 16, 2012 9:40 AM
To: xen-devel@lists.xensource.com
Cc: Ian.Jackson@eu.citrix.com; allen.m.kay@intel.com; Jean Guyader
Subject: [Xen-devel] [PATCH] intel gpu passthrough: Expose vendor specificpci cap on host bridge.
Some versions of the Windows Intel GPU driver expect the vendor PCI capability to be there on the host bridge config space when passing through a Intel GPU.
Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
---
hw/pt-graphics.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 46 insertions(+), 5 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] intel gpu passthrough: Expose vendor specificpci cap on host bridge.
2012-01-17 2:50 ` [PATCH] intel gpu passthrough: Expose vendor specificpci " djmagee
@ 2012-01-17 13:50 ` Jean Guyader
0 siblings, 0 replies; 5+ messages in thread
From: Jean Guyader @ 2012-01-17 13:50 UTC (permalink / raw)
To: djmagee@mageenet.net; +Cc: xen-devel@lists.xensource.com, Jean Guyader
On 17/01 02:50, djmagee@mageenet.net wrote:
> This always fails because it checks cap_type before it's set. Moving the pt_pci_host_read call before the check gets rid of these messages in qemu log:
>
> pcilib: sysfs_read: read failed: Invalid argument
>
This error is due to a missing patch that should be applied before this one.
I'll resend the patch within a serie that will include the extra patch.
Thanks for your review.
Jean
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-01-17 13:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-16 14:40 [PATCH] intel gpu passthrough: Expose vendor specific pci cap on host bridge Jean Guyader
2012-01-16 15:04 ` Jean Guyader
2012-01-16 15:11 ` Ross Philipson
2012-01-17 2:50 ` [PATCH] intel gpu passthrough: Expose vendor specificpci " djmagee
2012-01-17 13:50 ` Jean Guyader
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).