Print this page
XXX nobios

@@ -33,17 +33,16 @@
 #include <sys/reboot.h>
 #include <sys/pci_impl.h>
 #include <sys/pci_cfgspace.h>
 #include <sys/pci_cfgspace_impl.h>
 #include <sys/pci_cfgacc.h>
+#include <sys/machsystm.h>
 #if defined(__xpv)
 #include <sys/hypervisor.h>
 #endif
 
-#if defined(__xpv)
 int pci_max_nbus = 0xFE;
-#endif
 int pci_bios_cfg_type = PCI_MECHANISM_UNKNOWN;
 int pci_bios_maxbus;
 int pci_bios_mech;
 int pci_bios_vers;
 

@@ -251,10 +250,22 @@
 {
         struct bop_regs regs;
         uint32_t        carryflag;
         uint16_t        ax, dx;
 
+        if (!bios_calls_available) {
+                /*
+                 * If this system does not support BIOS calls, we must fall
+                 * back to default values and a search of all of the possible
+                 * PCI buses.
+                 */
+                pci_bios_mech = 1;
+                pci_bios_vers = 0;
+                pci_bios_maxbus = pci_max_nbus;
+                return (PCI_MECHANISM_1);
+        }
+
         bzero(&regs, sizeof (regs));
         regs.eax.word.ax = (PCI_FUNCTION_ID << 8) | PCI_BIOS_PRESENT;
 
         BOP_DOINT(bootops, 0x1a, &regs);
         carryflag = regs.eflags & PS_C;