From parag@pinhead.parag.codegen.com Thu Sep  9 10:37:20 1999
Return-Path: <parag@pinhead.parag.codegen.com>
Received: from pinhead.parag.codegen.com (207-44-235-154.CodeGen.COM [207.44.235.154])
	by hub.freebsd.org (Postfix) with ESMTP id EF21515708
	for <freebsd-gnats-submit@freebsd.org>; Thu,  9 Sep 1999 10:37:19 -0700 (PDT)
	(envelope-from parag@pinhead.parag.codegen.com)
Received: from pinhead.parag.codegen.com (parag@localhost.parag.codegen.com [127.0.0.1])
	by pinhead.parag.codegen.com (8.9.3/8.9.3) with ESMTP id KAA23207
	for <freebsd-gnats-submit@freebsd.org>; Thu, 9 Sep 1999 10:37:04 -0700 (PDT)
	(envelope-from parag@pinhead.parag.codegen.com)
Message-Id: <23203.936898624@pinhead.parag.codegen.com>
Date: Thu, 09 Sep 1999 10:37:04 -0700
From: Parag Patel <parag@cgt.com>
Sender: parag@pinhead.parag.codegen.com
To: freebsd-gnats-submit@freebsd.org
Subject:

>Number:         13667
>Category:       kern
>Synopsis:       
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep  9 10:40:03 PDT 1999
>Closed-Date:    Sun Sep 12 14:36:31 PDT 1999
>Last-Modified:  Wed Oct 26 06:17:44 GMT 2005
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 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
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: steve 
State-Changed-When: Sun Sep 12 14:36:31 PDT 1999 
State-Changed-Why:  
Followup to another PR (13546). 
>Unformatted:
