Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Sep 1999 12:16:13 -0700
From:      Parag Patel <parag@cgt.com>
To:        David Malone <dwmalone@maths.tcd.ie>
Cc:        freebsd-hackers@freebsd.org, Sheldon Hearn <sheldonh@uunet.co.za>
Subject:   Re: STABLE kern/13546: Too-verbose output from PCI probe at bootup 
Message-ID:  <16593.936818173@pinhead.parag.codegen.com>
In-Reply-To: Message from David Malone <dwmalone@maths.tcd.ie>  of "Wed, 08 Sep 1999 08:18:43 BST." <199909080818.aa15279@salmon.maths.tcd.ie> 

next in thread | previous in thread | raw e-mail | index | archive | help
>It seemmed to work fine for us too, but if there is a possibility
>of some problem it's probably worth working around "properly". It
>only takes about 4 lines of code. (Unless someone can say this
>is definitely harmless in the SMP case)

Ok, here's the proper 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.

Better?  Anyone out there with 255 Orion chips in their system?


	-- 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


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16593.936818173>