Bits | Description | Values |
---|---|---|
For all PCI BARs | ||
0 | Region Type | 0 = Memory 1 = I/O (deprecated) |
For Memory BARs | ||
2-1 | Locatable | 0 = any 32-bit 1 = < 1 MiB 2 = any 64-bit |
3 | Prefetchable | 0 = no 1 = yes |
31-4 | Base Address | 16-byte aligned |
For I/O BARs (Deprecated) | ||
1 | Reserved | |
31-2 | Base Address | 4-byte aligned |
arch/x86/pci/early.c
in the Linux kernel code for an example of code that uses geographical addressing.[5]dev[bus][device][function]
so that 256 MiB of physical contiguous space is 'stolen' for this use (256 buses × 32 devices × 8 functions × 4 KiB = 256 MiB). The base physical address of this array is not specified. For example, on Intel machines the ACPI tables contain the necessary information.[8]