Bug 13667

Summary: (no subject)
Product: Base System Reporter: Parag Patel <parag>
Component: kernAssignee: GNATS administrator <gnats-admin>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 1.0-RELEASE   
Hardware: Any   
OS: Any   

Description Parag Patel 1999-09-09 18:40:03 UTC
 Here's a better fix.  Turns out that this 4xPPro box has two "Orion"
 chips in it, and the code that picks off the number of subordinate buses
 returns 255 for whatever reason.  The fix is copied from the
 fixbushigh_450nx() routine into the fixbushigh_orion() routine, which
 appears to have the same problem.
 
 The fix could be made generic and moved out of both bushigh routines if
 there are no systems out there with 255 subordinate buses.  The magic
 number 255 may mean different things to different chipsets so I settled
 for this Orion-specific fix.
 
 
 	-- Parag Patel
 
 
 
 *** /sys/pci/pcisupport.c       Sat Sep  4 04:02:49 1999
 - --- pcisupport.c        Wed Sep  8 12:03:00 1999
 ***************
 *** 129,134 ****
 - --- 129,149 ----
   {
         tag->secondarybus = pci_cfgread(tag, 0x4a, 1);
         tag->subordinatebus = pci_cfgread(tag, 0x4b, 1);
 +
 +       if (tag->subordinatebus == 255) {
 +               printf("fixbushigh_orion: bogus highest PCI bus %d",
 +                      tag->subordinatebus);
 + #ifdef NBUS
 +               tag->subordinatebus = NBUS - 2;
 + #else
 +               tag->subordinatebus = 10;
 + #endif
 +               printf(", reduced to %d\n", tag->subordinatebus);
 +       }
 +
 +       if (bootverbose)
 +               printf("fixbushigh_orion: subordinatebus is %d\n",
 +                       tag->subordinatebus);
   }
 
   static void
Comment 1 Steve Price freebsd_committer freebsd_triage 1999-09-12 22:36:31 UTC
State Changed
From-To: open->closed

Followup to another PR (13546).