View Single Post
Old 12-11-09, 12:19 PM   #10
NVIDIA Corporation
zander's Avatar
Join Date: Aug 2002
Posts: 3,740
Default Re: Kernel module has bad memory allocation on FreeBSD 8.0 amd64 with 8GB RAM

The interesting bits are:

01:00.0 VGA compatible controller: nVidia Corporation Quadro NVS 135M (rev a1) (prog-if 00 [VGA controller])
Subsystem: Dell Device 01f9
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at f5000000 (32-bit, non-prefetchable)
Memory at <unassigned> (64-bit, prefetchable)
Memory at f2000000 (64-bit, non-prefetchable)
I/O ports at ef00
Capabilities: [60] Power Management version 2
Capabilities: [68] MSI: Mask- 64bit+ Count=1/1 Enable-
Capabilities: [78] Express Endpoint, MSI 00

00:01.0 PCI bridge: Intel Corporation Mobile PM965/GM965/GL960 PCI Express Root Port (rev 0c) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Memory behind bridge: f2000000-f6efffff
Prefetchable memory behind bridge: 00000000e0000000-00000000efffffff
Capabilities: [88] Subsystem: Dell Device 01f9
Capabilities: [80] Power Management version 3
Capabilities: [90] MSI: Mask- 64bit- Count=1/1 Enable-
Capabilities: [a0] Express Root Port (Slot+), MSI 00
As suspected (and as you pointed out), the GPU's BAR1 does not appear to have been assigned. However, the bridge immediately upstream of the GPU has a non-prefetchable-memory-behind-bridge window sized to accommodate the GPU's 256MB BAR1.

This means that the SBIOS either failed to assign the BAR, despite allocating resources for it, or that the kernel interfered. Since the correct range is reported on Linux, the latter seems more likely to me.
zander is offline   Reply With Quote