diff --git a/share/man/man4/man4.i386/pcibios.4 b/share/man/man4/man4.i386/pcibios.4 index 3b0411abd8d3..2e5a2b3e09c9 100644 --- a/share/man/man4/man4.i386/pcibios.4 +++ b/share/man/man4/man4.i386/pcibios.4 @@ -1,6 +1,6 @@ -.\" $NetBSD: pcibios.4,v 1.4 2000/06/11 01:13:44 augustss Exp $ +.\" $NetBSD: pcibios.4,v 1.5 2000/07/22 17:53:53 soda Exp $ .\" -.\" Copyright (c) 1999 The NetBSD Foundation, Inc. +.\" Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. .\" All rights reserved. .\" .\" This code is derived from software contributed to The NetBSD Foundation @@ -34,7 +34,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 27, 2000 +.Dd July 22, 2000 .Dt PCIBIOS 4 .Os .Sh NAME @@ -42,12 +42,13 @@ .Nd introduction to PCI BIOS support .Sh SYNOPSIS .Cd "options PCIBIOS" -.Cd "#options PCIBIOSVERBOSE" -.Cd "options PCIBIOS_INTR_FIXUP" -.Cd "#options PCIBIOS_IRQS_HINT=""0x0a00"" #IRQ 9,11" -.Cd "#options PCIINTR_DEBUG" -.Cd "options PCIBIOS_BUS_FIXUP" +.Cd "options PCIBIOSVERBOSE" .Cd "options PCIBIOS_ADDR_FIXUP" +.Cd "options PCIBIOS_BUS_FIXUP" +.Cd "options PCIBIOS_INTR_FIXUP" +.Cd "#options PCIBIOS_IRQS_HINT=0x0a00 #IRQ 9,11" +.Cd "#options PCIBIOS_INTR_FIXUP_FORCE" +.Cd "#options PCIINTR_DEBUG" .Pp .Sh INTRODUCTION .Nx @@ -62,25 +63,162 @@ PC specific code that can do the initialization when boots. .Pp Options: -.Bl -tag -width PCIBIOS_INTR_FIXUP -offset 3n -compact +.Bl -tag -width PCIBIOS_INTR_FIXUP -offset 3n + .It Nm PCIBIOS turn on the PCI BIOS support. + .It Nm PCIBIOSVERBOSE make the setup procedure verbose. -.It Nm PCIBIOS_INTR_FIXUP -fixup PCI interrupt routing. -.It Nm PCIBIOS_IRQS_HINT -hint for IRQ use. -When the PCI BIOS support cannot -guess an adequate IRQ for a device the hint is used. -.It Nm PCIINTR_DEBUG -super-verbose PCI interrupt fixup. + +.It Nm PCIBIOS_ADDR_FIXUP +fixup PCI I/O and memory addresses. +.Pp +Some BIOS implementations don't allocate I/O space and +memory space for some PCI devices. Especially, a BIOS +which is +.Qq PnP OS mode enabled +shows this behavior. +Since necessary space isn't allocated, those devices +will not work without special handling. + +This option allocates a I/O space and a memory space +instead of relying upon the BIOS to do so. + +If necessary space is already correctly assigned to the devices, +this option leaves the space as is. + +Although many BIOS implementations leave CardBus bridges' +space unallocated, the CardBus bridge device driver doesn't +require this option, since the driver allocates necessary space +by itself. + .It Nm PCIBIOS_BUS_FIXUP fixup PCI bus numbering; needed for many .Xr cardbus 4 bridges. -.It Nm PCIBIOS_ADDR_FIXUP -fixup PCI I/O and memory addresses. +.Pp +Each PCI bus and CardBus should have a unique bus number. +But some BIOS implementations don't assign a bus number +for subordinate PCI buses. And many BIOS implementations +don't assign a bus number for CardBuses. + +A typical symptom of this is the following boot message: +.D1 Sy cardbus0 at cardslot0: bus 0 device 0... +Please note that this cardbus0 has a bus number +.Sq 0 , +but normally the bus number 0 is used by the machine's +primary PCI bus. Thus, this bus number for cardbus is +incorrect +.Pq not assigned . +In this situation, a device located in cardbus0 doesn't +show correct device ID, +because its bus number 0 incorrectly refers to the primary +PCI bus, and a device ID in the primary PCI bus is shown +in the boot message instead of the device's ID in the cardbus0. + +This option assigns bus numbers for all subordinate +PCI buses and CardBuses. + +Since this option renumbers all PCI buses and CardBuses, +all bus numbers of subordinate buses become different +when this option is enabled. + +.It Nm PCIBIOS_INTR_FIXUP +fixup PCI interrupt routing. +.Pp +Some BIOS implementations don't assign an interrupt for +some devices. + +This option assigns an interrupt for such devices instead +of relying upon the BIOS to do so. + +If the BIOS has already assigned an interrupt to a device, this +option leaves the interrupt as is. + +.It Nm PCIBIOS_IRQS_HINT +hint for IRQ use. +When the +.Em PCIBIOS_INTR_FIXUP +cannot guess an adequate IRQ for a device, the hint is used. +.Pp +The value is a logical or of power-of-2s of allowable interrupts: +.Bd -literal +.Em "IRQ Val IRQ Val IRQ Val IRQ Val" + 0 0x0001 4 0x0010 8 0x0100 12 0x1000 + 1 0x0002 5 0x0020 9 0x0200 13 0x2000 + 2 0x0004 6 0x0040 10 0x0400 14 0x4000 + 3 0x0008 7 0x0080 11 0x0800 15 0x8000 +.Ed +.Pp +For example, +.Qq Sy options PCIBIOS_IRQS_HINT=0x0a00 +allows IRQ 9 and IRQ 11. + +The kernel global variable +.Va pcibios_irqs_hint +holds this value, +so a user can override this value without kernel recompilation. +For example: +.Bl -bullet +.It +To specify this value on the fly, type +.Qq Ic boot -d +at the boot prompt to drop into DDB (the in-kernel debugger; +you have to specify +.Qq Sy options DDB +to make kernel with DDB). +Specify +.Qq Ic write pcibios_irqs_hint 0x0a00 +on +.Qq Sy db> +prompt and type +.Qq Ic c +to continue to boot. +.It +To modify kernel image without kernel recompilation, +run +.Qq Ic gdb --write /netbsd +on shell, type +.Qq Ic set pcibios_irqs_hint=0xa00 +at the +.Qq Sy (gdb) +prompt, and type +.Qq Ic quit . +.El + +.It Nm PCIBIOS_INTR_FIXUP_FORCE +.Pp +Some buggy BIOS implementations provide inconsistent +information between the PCI Interrupt Configuration Register +and the PCI Interrupt Routing table. In such case, +the PCI Interrupt Configuration Register takes precedence +by default. If this happens, a kernel with +.Em PCIBIOSVERBOSE +shows +.Qq Sy WARNING: preserving irq XX +in the PCI routing table. + +If +.Em PCIBIOS_INTR_FIXUP_FORCE +is specified in addition to the +.Em PCIBIOS_INTR_FIXUP , +the PCI Interrupt Routing table takes precedence. +In this case, a kernel with +.Em PCIBIOSVERBOSE +shows +.Qq Sy WARNING: overriding irq XX +in the PCI routing table. + +The necessity of this option is doubtful, and we may +remove this option in the future. If you find that this +option is worth preserving, please report it with send-pr. + +.It Nm PCIINTR_DEBUG +make the +.Em PCIBIOS_INTR_FIXUP +procedure verbose. + .El .Sh SEE ALSO .Xr cardbus 4 , @@ -90,3 +228,8 @@ The .Nm code appeared in .Nx 1.5 . +.Sh BUGS +The +.Em PCIBIOS_ADDR_FIXUP +option may conflict with the PCI CardBus driver's own +address fixup.