EFI_ALREADY_STARTED là gì?
Quicknote EFI_ALREADY_STARTED là gì?
EFI_ALREADY_STARTED báo rằng một operation kiểu start/bind đã được thực hiện trước đó. Trong UEFI Driver Model, status này thường xuất hiện khi driver đã quản lý controller rồi, hoặc protocol đã được open theo cách không cho start lại.
Nói ngắn gọn: firmware đang nói “việc này đã được bắt đầu, đừng start lại như thể nó chưa từng chạy”.
Ví dụ trong Driver Binding
ConnectController(ControllerA)
-> DriverBinding.Supported() = EFI_SUCCESS
-> DriverBinding.Start() = EFI_SUCCESS
ConnectController(ControllerA) lần nữa
-> DriverBinding.Start() = EFI_ALREADY_STARTED
Trong case này, EFI_ALREADY_STARTED không nhất thiết là lỗi. Nó có thể là dấu hiệu driver đã bind controller.
Supported()
Driver xác nhận controller phù hợp.
Start()
Driver open protocol và tạo child/controller context.
Controller đã được quản lý
Driver đã có ownership hoặc private data.
Start lại
Firmware có thể nhận EFI_ALREADY_STARTED.
Debug Diary: Start() bị gọi lại
Khi thấy EFI_ALREADY_STARTED, hãy kiểm tra:
- Driver có lưu private data trên controller chưa?
OpenProtocol()trước đó có dùngEFI_OPEN_PROTOCOL_BY_DRIVERkhông?- Có driver khác đang quản lý controller không?
Stop()có được gọi đúng khi disconnect không?
| Mục | Giá trị | Ghi chú |
|---|---|---|
| Driver đã bind | Có thể bình thường | Không cần coi là fatal error. |
| OpenProtocol conflict | Có owner khác | Kiểm tra open protocol information. |
| Stop() thiếu cleanup | Bug thật | Disconnect rồi connect lại vẫn thấy already started. |
| Private data còn sót | State leak | Driver nghĩ controller vẫn đang active. |
Firmware Engineer Notes
Status này rất hữu ích khi debug vấn đề “driver không start lại sau reconnect”. Nếu Stop() không close protocol hoặc free private data đúng, lần connect sau có thể gặp trạng thái lạ.
Checklist khi gặp EFI_ALREADY_STARTED
Bài liên quan
- Supported() trong UEFI Driver Model là gì?
- Start() trong UEFI Driver Model là gì?
- Stop() trong UEFI Driver Model 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.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.