[PATCH] Make primary boot video device detection more robust

2005-03-10 Thread Jon Smirl
When detecting the boot video device, allow for the case of multiple
cards on the same bus. Check each candidate to make sure that the card
is active.

Signed off by: Jon Smirl <[EMAIL PROTECTED]>

-- 
Jon Smirl
[EMAIL PROTECTED]


= arch/i386/pci/fixup.c 1.24 vs edited =
--- 1.24/arch/i386/pci/fixup.c  2005-01-11 19:42:41 -05:00
+++ edited/arch/i386/pci/fixup.c2005-03-10 22:50:30 -05:00
@@ -343,7 +343,7 @@
 /*
  * Fixup to mark boot BIOS video selected by BIOS before it changes
  *
- * From information provided by "Jon Smirl" <[EMAIL PROTECTED]>
+ * From information provided by "Jon Smirl" <[EMAIL PROTECTED]>
  *
  * The standard boot ROM sequence for an x86 machine uses the BIOS
  * to select an initial video card for boot display. This boot video 
@@ -355,11 +355,12 @@
  * is marked here since the boot video device will be the only enabled
  * video device at this point.
  *
- */static void __devinit pci_fixup_video(struct pci_dev *pdev)
+ */
+static void __devinit pci_fixup_video(struct pci_dev *pdev)
 {
struct pci_dev *bridge;
struct pci_bus *bus;
-   u16 l;
+   u16 config;
 
if ((pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
return;
@@ -369,12 +370,16 @@
while (bus) {
bridge = bus->self;
if (bridge) {
-   pci_read_config_word(bridge, PCI_BRIDGE_CONTROL, );
-   if (!(l & PCI_BRIDGE_CTL_VGA))
+   pci_read_config_word(bridge, PCI_BRIDGE_CONTROL, 
);
+   if (!(config & PCI_BRIDGE_CTL_VGA))
return;
}
bus = bus->parent;
}
-   pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
+   pci_read_config_word(pdev, PCI_COMMAND, );
+   if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
+   pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
+   printk(KERN_DEBUG "Boot video device is %s\n", pci_name(pdev));
+   }
 }
 DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Make primary boot video device detection more robust

2005-03-10 Thread Jon Smirl
When detecting the boot video device, allow for the case of multiple
cards on the same bus. Check each candidate to make sure that the card
is active.

Signed off by: Jon Smirl [EMAIL PROTECTED]

-- 
Jon Smirl
[EMAIL PROTECTED]


= arch/i386/pci/fixup.c 1.24 vs edited =
--- 1.24/arch/i386/pci/fixup.c  2005-01-11 19:42:41 -05:00
+++ edited/arch/i386/pci/fixup.c2005-03-10 22:50:30 -05:00
@@ -343,7 +343,7 @@
 /*
  * Fixup to mark boot BIOS video selected by BIOS before it changes
  *
- * From information provided by Jon Smirl [EMAIL PROTECTED]
+ * From information provided by Jon Smirl [EMAIL PROTECTED]
  *
  * The standard boot ROM sequence for an x86 machine uses the BIOS
  * to select an initial video card for boot display. This boot video 
@@ -355,11 +355,12 @@
  * is marked here since the boot video device will be the only enabled
  * video device at this point.
  *
- */static void __devinit pci_fixup_video(struct pci_dev *pdev)
+ */
+static void __devinit pci_fixup_video(struct pci_dev *pdev)
 {
struct pci_dev *bridge;
struct pci_bus *bus;
-   u16 l;
+   u16 config;
 
if ((pdev-class  8) != PCI_CLASS_DISPLAY_VGA)
return;
@@ -369,12 +370,16 @@
while (bus) {
bridge = bus-self;
if (bridge) {
-   pci_read_config_word(bridge, PCI_BRIDGE_CONTROL, l);
-   if (!(l  PCI_BRIDGE_CTL_VGA))
+   pci_read_config_word(bridge, PCI_BRIDGE_CONTROL, 
config);
+   if (!(config  PCI_BRIDGE_CTL_VGA))
return;
}
bus = bus-parent;
}
-   pdev-resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
+   pci_read_config_word(pdev, PCI_COMMAND, config);
+   if (config  (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
+   pdev-resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
+   printk(KERN_DEBUG Boot video device is %s\n, pci_name(pdev));
+   }
 }
 DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/