EFI_ALREADY_STARTED là gì?

Quicknote EFI_ALREADY_STARTED là gì?

3 phút đọc
Đọc bằng Tiếng Việt English 日本語
Debug / Shell / Driver Terms cover

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.

01 MATCH

Supported()

Driver xác nhận controller phù hợp.

02 START

Start()

Driver open protocol và tạo child/controller context.

03 OWN

Controller đã được quản lý

Driver đã có ownership hoặc private data.

04 RETRY

Start lại

Firmware có thể nhận EFI_ALREADY_STARTED.

EFI_ALREADY_STARTED thường liên quan tới trạng thái ownership của driver/controller.

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ùng EFI_OPEN_PROTOCOL_BY_DRIVER khô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

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.