--- xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c	Thu Jun 14 00:08:53 2001
+++ xc-sp/programs/Xserver/hw/xfree86/common/xf86pciBus.c	Thu Jun 14 00:05:56 2001
@@ -74,6 +74,15 @@
     (((b) == PCI_CLASS_PREHISTORIC && (s) == PCI_SUBCLASS_PREHISTORIC_VGA) || \
      ((b) == PCI_CLASS_DISPLAY && (s) == PCI_SUBCLASS_DISPLAY_VGA))
 
+/*
+ * Broken PCI cards that need to be skipped during FindPCIVideoInfo.
+ */
+#define PCI_VENDOR_ID_CREATIVE 0x1102
+#define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002
+#define PCIBROKENCARD(v,i)			     			      \
+    (((v) == PCI_VENDOR_ID_CREATIVE) && ((i) == PCI_DEVICE_ID_CREATIVE_EMU10K1))
+
+
 #define PCI_MEM32_LENGTH_MAX 0xFFFFFFFF
 
 #undef MIN
@@ -149,8 +158,9 @@
 	    baseclass = pcrp->pci_base_class;
 	    subclass = pcrp->pci_sub_class;
 	}
-	
-	if (PCIINFOCLASSES(baseclass, subclass)) {
+
+	if ((PCIINFOCLASSES(baseclass, subclass)) 
+	    && (!PCIBROKENCARD(pcrp->pci_vendor, pcrp->pci_device))) {
 	    num++;
 	    xf86PciVideoInfo = xnfrealloc(xf86PciVideoInfo,
 					  sizeof(pciVideoPtr) * (num + 1));

