PCI Device Path Node là gì?
Quicknote PCI Device Path Node là gì?
PCI Device Path Node mô tả vị trí của một function trên PCI/PCIe topology. Nó thường xuất hiện ở đoạn đầu của device path, trước khi firmware đi tiếp tới SATA, NVMe, USB host controller, network controller hoặc một PCI option ROM.
Điểm dễ nhầm nhất: trong Pci(Device, Function), hai giá trị này không phải Vendor ID/Device ID. Chúng là device number và function number trên bus hiện tại.
Cấu trúc đọc nhanh
| Mục | Giá trị | Ghi chú |
|---|---|---|
| Device | PCI device number | Thường hiển thị dạng hex, ví dụ `0x17`. Đây là vị trí trên bus, không phải mã hãng. |
| Function | PCI function number | Một device có thể có nhiều function: 0, 1, 2... |
| Ngữ cảnh | Bus hiện tại | Muốn biết bus nào, phải đọc các node trước nó như PciRoot hoặc PCI bridge. |
Ví dụ:
PciRoot(0x0)/Pci(0x17,0x0)
Có thể hiểu là: từ PCI root bridge 0, đi tới device 0x17, function 0. Trên nhiều platform Intel, vị trí kiểu này có thể là storage controller, nhưng không nên đoán cứng. Muốn chắc chắn, hãy đối chiếu với PCI enumeration log, class code hoặc output như pci trong UEFI Shell.
Nó nằm ở đâu trong boot path?
PciRoot
Root bridge được mô tả bởi firmware/ACPI.
Pci(Device, Function)
Chọn đúng device/function trên bus.
SATA/NVMe/USB/NIC
Controller phía sau PCI function.
Media/File
Đi tiếp tới partition và file boot loader.
Ví dụ debug thực tế
Giả sử Boot#### chứa:
PciRoot(0x0)/Pci(0x14,0x0)/USB(...)/HD(...)/File(\EFI\BOOT\BOOTX64.EFI)
Pci(0x14,0x0) có thể là USB xHCI controller. Nếu BIOS update làm topology hoặc enable/disable controller thay đổi, boot option cũ vẫn còn trong NVRAM nhưng đường đi tới USB device có thể không còn khớp.
Một lỗi khác hay gặp là nhầm Pci(0x17,0x0) với Vendor ID/Device ID. Khi tra datasheet hoặc log PCI, hãy tìm theo BDF/topology trước, rồi mới xem Vendor ID/Class Code để biết đó là controller gì.
Khi nào cần để ý PCI node?
- Boot option trỏ tới ổ SATA/NVMe/USB nhưng sau BIOS update không boot nữa.
- Một controller bị disable trong setup, nhưng Boot#### vẫn còn.
- Platform có nhiều root port/bridge, device path cũ stale sau khi đổi slot PCIe.
- Debug driver binding: controller có xuất hiện trong handle database nhưng path không như expected.
Checklist đọc PCI node
Ghi nhớ nhanh
PCI node không nói “đây là Intel SATA controller”. Nó chỉ nói “đi tới device/function này trên PCI topology”. Ý nghĩa thật sự của function đó phải đọc từ PCI enumeration.
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.
UEFI Bus Driver là gì?
UEFI Bus Driver enumerate child device và tạo child handle với Device Path. Hiểu chuỗi protocol từ bus đến boot option và lỗi khi child handle thiếu hoặc Device Path sai.
PCI Architecture Overview
Knowledge map về PCI/PCIe enumeration, config space, BAR, resource allocation và PCI I/O Protocol trong firmware.
PCI Configuration Space là gì?
Quicknote PCI Configuration Space là gì?
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.