Subject: CVS commit: syssrc [sommerfeld_i386mp_1]
To: None <firstname.lastname@example.org>
From: Bill Sommerfeld <email@example.com>
Date: 05/13/2001 01:28:16
Module Name: syssrc
Committed By: sommerfeld
Date: Sat May 12 22:28:16 UTC 2001
syssrc/sys/arch/i386/i386 [sommerfeld_i386mp_1]: mpbios.c
Compensate for creative misinterpretation of the MP BIOS spec by the
Intel MP spec, version 1.4, section 4.3.2, page 4-10:
"BUS ID.. An integer that identifies this bus entry. The
BIOS assigns identifiers sequentially, starting at 0"
Compaq Proliant 6500 BIOS:
BUS 0: PCI
BUS 1: PCI
BUS 17: EISA
Due to a missing range check in mpbios.c, we allocated an mp_bus array
sized for 3 entries, and then stored the EISA info into mp_bus,
which happened to overlay a half dozen buckets near the start of the
name-to-vnode cache hash table. Carnage generally resulted the first
time the system examined those hash buckets (faulting at
cache_lookup+0x67 or thereabouts), generally when running rc scripts.
With this change, we allocate a table large enough to hold from 0 to
the largest bus id seen, and no longer count on the bios to densly
pack bus id's.
To generate a diff of this commit:
cvs rdiff -r22.214.171.124 -r126.96.36.199 syssrc/sys/arch/i386/i386/mpbios.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.