Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F176998868
D60990.1793712690.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None
D60990.1793712690.diff
View Options
diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c
--- a/sys/amd64/vmm/io/ppt.c
+++ b/sys/amd64/vmm/io/ppt.c
@@ -401,10 +401,31 @@
return (false);
}
+static bool
+ppt_is_intel_igd(device_t dev)
+{
+
+ return (pci_get_vendor(dev) == 0x8086 &&
+ pci_get_class(dev) == PCIC_DISPLAY && pci_get_bus(dev) == 0 &&
+ pci_get_slot(dev) == 2 && pci_get_function(dev) == 0);
+}
+
static void
ppt_pci_reset(device_t dev)
{
+ /*
+ * An Intel integrated GPU whose display engine is scanning out (the
+ * firmware's framebuffer, or the host console on efifb) does not go
+ * idle for an FLR: the transactions-pending bit stays set after the
+ * reset and the device keeps fetching with its configuration reset
+ * underneath it, in the host's IOMMU domain, corrupting host memory.
+ * Nobody can turn the display off first without a host driver, so do
+ * not reset it; the guest's driver initializes it anyway.
+ */
+ if (ppt_is_intel_igd(dev))
+ return;
+
if (pcie_flr(dev,
max(pcie_get_max_completion_timeout(dev) / 1000, 10), true))
return;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Nov 3, 1:31 PM (2 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41247979
Default Alt Text
D60990.1793712690.diff (1 KB)
Attached To
Mode
D60990: vmm: ppt: Do not reset an Intel integrated GPU
Attached
Detach File
Event Timeline