BDF trong PCIe là gì?
Quicknote BDF trong PCIe là gì?
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.
Firmware chọn BDF
Ví dụ 00:1f.2.
Đọc config space
Vendor ID, Device ID, Class Code, BAR.
Cấp resource
MMIO/I/O/bus number nếu device hợp lệ.
Tạo handle/protocol
DXE driver có thể bind vào device.
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
- PCI Architecture Overview
- PCI Configuration Space là gì?
- BDF trong PCIe là gì?
- BAR trong PCIe là gì?
- PCI Resource Allocation là gì?
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.