PCI Configuration Space là gì?

Quicknote PCI Configuration Space là gì?

3 phút đọc
Đọc bằng Tiếng Việt English 日本語
PCI / ACPI / SMBIOS Terms cover

Khi firmware muốn biết một thiết bị PCIe là gì, nó không bắt đầu bằng driver. Nó bắt đầu bằng việc đọc vài register rất nhỏ trong PCI Configuration Space.

Nếu đọc Vendor ID ra 0xFFFF, firmware gần như đang nói: “ở BDF này không có thiết bị trả lời”. Nếu đọc được Vendor ID/Device ID nhưng BAR size bất thường, vấn đề chuyển sang resource allocation. Vì vậy config space là điểm kiểm tra đầu tiên khi một device “biến mất”.

01 BDF

Chọn Bus/Device/Function

Firmware scan từng địa chỉ BDF sau root bridge hoặc bridge.

02 ID

Đọc Vendor ID / Device ID

0xFFFF thường nghĩa là không có device response.

03 Class

Đọc Class Code

Biết device thuộc storage, network, display, bridge...

04 BAR

Probe BAR

Xác định device cần MMIO/I/O resource bao nhiêu.

05 Cap

Đọc capability

MSI/MSI-X, PCIe capability, power management...

Mental model khi firmware enumerate một PCI/PCIe device.

Layout tối thiểu cần nhớ

Mục Giá trị Ghi chú
0x00 Vendor ID 0xFFFF thường là không có device tại BDF đó.
0x02 Device ID Dùng cùng Vendor ID để match driver hoặc tra datasheet.
0x08 Revision ID / Class Code Cho biết loại thiết bị và revision silicon.
0x10 - 0x24 BAR0 - BAR5 Cho biết vùng MMIO/I/O mà device cần.
0x34 Capability Pointer Trỏ tới linked list capability chuẩn PCI.

Ví dụ dump

BDF 00:1f.2
Vendor ID : 8086
Device ID : 2922
Class Code: 010601  // SATA AHCI Controller
BAR5      : FED1C000 // AHCI MMIO base

Đọc nhanh output này, ta biết đây là thiết bị Intel, class là SATA/AHCI, và firmware/OS sẽ dùng vùng MMIO tại FED1C000 để access register AHCI.

Debug diary: device không xuất hiện

Một case quen thuộc là OS báo không thấy thiết bị, nhưng firmware log không có lỗi rõ ràng. Lúc này đừng vội debug driver. Tôi sẽ kiểm tra theo thứ tự:

1

Đọc Vendor ID

Nếu là 0xFFFF, kiểm tra link training, reset, power, bus number hoặc bridge window.

2

Đọc Header Type

Phân biệt endpoint, bridge, multi-function device.

3

Probe BAR

Nếu BAR size bằng 0 hoặc lạ, device có thể chưa được enable đúng.

4

Kiểm tra capability

MSI/MSI-X hoặc PCIe capability có thể ảnh hưởng driver sau này.

Checklist khi đọc PCI config space

Bài liên quan

Nguồn tham khảo public

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.