Search notes:

PCI

PCI stands for Peripheral Component Interconnect. It connects the CPU with some things that are attached to a PC via the PCI: graphic card, memory, USB controllers, SATA controllers.

BDF

BDF (or B/D/F) stands for Bus, Device, Function. It is a 16 bit number that locates a device's function.
Usually, the BDF is represented in hexadecimal whose values are separated by a colon and a dot (for example 00:1f.2).
The BDF can be printed with lspci.
In Linux, the BDF's are «exposed» in /sys/bus/pci/devices
Apparently, in the world of fonts, BDF stands for Glyph Bitmap Distribution Format.

Domains

If there are multiple PCI controlers, these can be distingiushed by a so-called domain (sometimes also called segment):
[domain:]bus:device:function
A domain supports up to 256 buses.

Vendor and device ID

Every PCI has a unique vendor and device ID.
The device number distinguishes between PCI devices with the same vendor and device ID.

Accessing the PCI configuration space

In the x86 architecture, the PCI configuration space is accessed with the 0xcf8 (address) and 0xcfc (data) I/O ports.
The Linux Kernel source file drivers/virt/acrn/ioreq.c has the following comment:
/*
 * A PCI configuration space access via PIO 0xCF8 and 0xCFC normally has two
 * following steps:
 *   1) writes address into 0xCF8 port
 *   2) accesses data in/from 0xCFC
 * This function combines such paired PCI configuration space I/O requests into
 * one ACRN_IOREQ_TYPE_PCICFG type I/O request and continues the processing.
 */
The Kernel source file arch/x86/pci/direct.c contains functionality for «low-level direct config space access».

TODO

PCI ISA bridge
A device is also referred to as target in the PCI world.

See also

lspci (part of the PCI Utilities Suite.
include/linux/pci_ids.h
/usr/share/hwdata/pci.ids
/sys/bus/pci
motherboard

Index

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:78 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(78): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/hardware...', 1745467571, '3.140.246.156', 'Mozilla/5.0 App...', NULL) #2 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/hardware/PCI/index(112): insert_webrequest() #3 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 78