BDF trong PCIe là gì?

Quicknote BDF trong PCIe là gì?

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

BDF là địa chỉ logic của một function PCIe: Bus:Device.Function. Khi firmware scan PCIe topology, nó không gọi tên thiết bị bằng “SSD” hay “NIC”, mà hỏi từng địa chỉ BDF: “có ai ở đây không?”.

Ví dụ:

00:1f.2

có thể hiểu là:

Mục Giá trị Ghi chú
Bus 00 Bus số 0 Thường là bus phía dưới PCI Root Bridge.
Device 1f Device number 31 Slot/function group trên bus đó.
Function 2 Function số 2 Một device vật lý có thể có nhiều function.

Vì sao firmware cần BDF?

BDF là chìa khóa để đọc PCI Configuration Space. Nếu không có BDF, firmware không biết phải đọc register của thiết bị nào.

01 Scan

Firmware chọn BDF

Ví dụ 00:1f.2.

02 Read

Đọc config space

Vendor ID, Device ID, Class Code, BAR.

03 Assign

Cấp resource

MMIO/I/O/bus number nếu device hợp lệ.

04 Expose

Tạo handle/protocol

DXE driver có thể bind vào device.

BDF là địa chỉ để firmware đi từ topology tới register thật.

Ví dụ thực tế

Trong EDK2 log hoặc Linux lspci, bạn có thể thấy:

00:14.0 USB controller: Intel Corporation xHCI Controller
00:1f.3 Audio device: Intel Corporation HD Audio Controller
02:00.0 Non-Volatile memory controller: NVMe SSD

Ở đây 02:00.0 cho thấy NVMe không nằm trực tiếp ở bus 0, mà nằm sau một bridge/root port đã tạo bus số 2.

Common pitfall

Đừng nhầm BDF với Device Path. BDF chỉ là địa chỉ PCI tại thời điểm enumeration. Device Path có thể chứa node như Pci(0x1f,0x2), nhưng Boot Option thường còn có thêm HD node và FilePath node để chỉ tới file EFI cụ thể.

Checklist khi dùng BDF để debug

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.