PCI bus numbering and ACPI

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
S010
Posts: 1
Joined: Mon Jun 29, 2009 12:15 pm

PCI bus numbering and ACPI

Post 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?
Post Reply