PCI Resource Allocation là gì?
Quicknote PCI Resource Allocation là gì?
PCI Resource Allocation là quá trình firmware cấp địa chỉ cho các BAR và bridge window để toàn bộ thiết bị PCI/PCIe có thể hoạt động mà không đè lên nhau.
Nếu enumeration trả lời câu hỏi “có thiết bị nào”, thì resource allocation trả lời câu hỏi “mỗi thiết bị được dùng vùng địa chỉ nào”.
Scan topology
Tìm root bridge, bridge, endpoint.
Probe BAR size
Biết mỗi endpoint cần MMIO/I/O/prefetchable bao nhiêu.
Tính bridge window
Bridge cần window đủ lớn cho device phía sau.
Ghi base address
Ghi BAR, bus number và bridge window.
Enable decode
Bật Memory Space / I/O Space / Bus Master nếu cần.
Ví dụ layout
PCI resource mental layout
PCI Root Bridge MMIO Window: 0x80000000 - 0xBFFFFFFF
├─ Root Port 00:1c.0 Bridge Window: 0x90000000 - 0x91FFFFFF
│ └─ NVMe 02:00.0 BAR0: 0x90000000 - 0x90003FFF
└─ Root Port 00:1c.4 Bridge Window: 0xA0000000 - 0xA0FFFFFF
└─ NIC 03:00.0 BAR0: 0xA0000000 - 0xA001FFFF Debug diary: BAR assign rồi nhưng device vẫn không chạy
Một lỗi hay gặp là chỉ nhìn endpoint BAR mà quên bridge phía trên. Endpoint có BAR base hợp lệ, nhưng bridge window không cover địa chỉ đó thì transaction không tới được device.
| Mục | Giá trị | Ghi chú |
|---|---|---|
| Endpoint BAR | Địa chỉ device decode | Ví dụ NVMe BAR0. |
| Bridge Window | Range bridge forward xuống bus dưới | Phải cover endpoint BAR. |
| Root Bridge Aperture | Range platform cho phép | Được mô tả qua ACPI _CRS hoặc platform config. |
| Command Register | Enable decode | Memory/I/O/Bus Master enable. |
Checklist resource allocation
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.