Driver Binding Flow là gì?

Giải thích Supported, Start, Stop trong UEFI Driver Model và cách nó ảnh hưởng quá trình enumerate thiết bị.

2 phút đọc
Firmware Execution Flow cover

Trong DXE, driver không chỉ “chạy một lần”. Với bus/device driver, firmware dùng Driver Binding Protocol để hỏi driver có hỗ trợ controller không, sau đó mới start driver trên controller đó.

01 SUPPORTED

Có hỗ trợ controller này không?

Kiểm tra protocol/device ID/controller state.

02 START

Attach và publish protocol

Mở controller, tạo child handle hoặc install protocol.

03 STOP

Detach/cleanup

Đóng protocol và gỡ resource khi cần.

Ví dụ thực tế

Một PCI storage controller xuất hiện, nhưng disk không lên boot menu. Có thể PCI bus driver đã enumerate controller, nhưng storage driver Supported() trả fail vì class code không khớp, hoặc Start() fail khi mở MMIO/BAR.

Mục Giá trị Ghi chú
Supported() Probe nhẹ Không nên allocate lớn hoặc thay đổi state quá nhiều.
Start() Thực sự bind Install Block I/O, Disk I/O, Device Path, child handle...
Stop() Unbind Cần cleanup đúng để reconnect/disconnect không lỗi.

Common pitfall

Driver entry point có chạy không đồng nghĩa với device đã được support. Entry point thường chỉ install EFI_DRIVER_BINDING_PROTOCOL. Phần attach thật sự xảy ra khi firmware gọi Supported()Start().

Checklist Driver Binding

Bài liên quan

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.