Page 1 of 1

PCI bus numbering and ACPI

Posted: Thu Jul 09, 2009 4:12 pm
by S010
Hi.

I have a DELL Latitude D400 laptop (one of the old ones, with a Pentium M 1400 and i855 m/b chipset) with OpenBSD installed.
My CardBus slot didn't work and after spending some time reading osdev.org wiki and some other sites about PCI and reading OpenBSD kernel sources, I found out that:
When OBSD's pcibios driver is "attached" during boot, it walks through all the PCI bus hierarchy assigning PCI primary bus number/secondary bus number/subordinate bus number. BUT. When OBSD's kernel detects that there is an ACPI in the computer -- it disables the attachment of pcibios driver and so, my CardBus bridge is left with zeros in all three bus number registers.

I fixed the problem by a trivial patch, that just removes one "if" statement, and makes it so that pcibios driver is always attached, even if ACPI is detected.

My question is, why does the kernel do that? Is it like if the computer has ACPI, then APCI is responsible for assigning bus numbers? If so, does that mean that my laptop's BIOS is buggy? Would it be safe to always renumber the bridges, even if ACPI is present?