EFI_OUT_OF_RESOURCES là gì?
Quicknote EFI_OUT_OF_RESOURCES là gì?
EFI_OUT_OF_RESOURCES báo rằng firmware không còn đủ tài nguyên để hoàn thành request. Tài nguyên ở đây không chỉ là RAM. Nó có thể là pool memory, descriptor, handle, event, NVRAM space hoặc vùng flash dành cho variable store.
Đây là status cần đọc rất cẩn thận vì cùng một tên lỗi nhưng nguyên nhân ở PEI, DXE, BDS và Runtime có thể khác nhau.
| Mục | Giá trị | Ghi chú |
|---|---|---|
| DXE Pool | AllocatePool fail | Hay gặp khi leak memory hoặc allocate quá lớn. |
| NVRAM | Variable store gần đầy | SetVariable có thể fail khi reclaim không đủ. |
| Handle/Event | Object firmware quá nhiều | Ít gặp hơn nhưng cần nghĩ tới khi loop tạo object. |
| PEI Resource | Temporary RAM hạn chế | PEI sớm có rất ít memory. |
Ví dụ: NVRAM full khi update variable
Status = gRT->SetVariable (
L"MySetting",
&gMyPkgTokenSpaceGuid,
EFI_VARIABLE_NON_VOLATILE |
EFI_VARIABLE_BOOTSERVICE_ACCESS |
EFI_VARIABLE_RUNTIME_ACCESS,
sizeof (MY_SETTING),
&MySetting
);
if (Status == EFI_OUT_OF_RESOURCES) {
DEBUG ((DEBUG_ERROR, "NVRAM may be full or reclaim failed\n"));
}
Với variable, lỗi này không nên hiểu đơn giản là “thiếu RAM”. Nó có thể là variable store đầy, reclaim fail, hoặc flash policy không cho ghi thêm.
Memory allocation
AllocatePool/AllocatePages fail.
Variable Store
SetVariable fail do NVRAM space hoặc reclaim.
Firmware object
Handle/Event/Protocol object tạo quá nhiều.
Policy/Lock
Một số platform map policy lỗi thành resource-like failure.
Debug Diary
Nếu log chỉ có:
SetVariable(MySetting) = EFI_OUT_OF_RESOURCES
thì chưa đủ. Nên log thêm:
Variable name / GUID
Data size
Attributes
Remaining variable storage nếu có API hỗ trợ
Phase hiện tại: DXE hay Runtime
Common Pitfall
Xóa một variable không phải lúc nào cũng giải phóng flash ngay lập tức. Variable store thường cần reclaim/garbage collection. Vì vậy “đã delete rồi mà vẫn out of resources” không nhất thiết mâu thuẫn.
Checklist khi gặp EFI_OUT_OF_RESOURCES
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.