PCI Resource Allocation là gì?

Quicknote PCI Resource Allocation là gì?

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

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”.

01 Scan

Scan topology

Tìm root bridge, bridge, endpoint.

02 Probe

Probe BAR size

Biết mỗi endpoint cần MMIO/I/O/prefetchable bao nhiêu.

03 Window

Tính bridge window

Bridge cần window đủ lớn cho device phía sau.

04 Assign

Ghi base address

Ghi BAR, bus number và bridge window.

05 Enable

Enable decode

Bật Memory Space / I/O Space / Bus Master nếu cần.

Resource allocation là cầu nối giữa config space và driver access thật.

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

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.