IP Library Granted Patent US 11,086,758
Granted Patent B1
US 11,086,758 · App. 16/778,344 · Granted Aug 10, 2021

Identifying firmware functions executed in a call chain prior to the occurrence of an error condition

Inventors: Naresh Kollu (Cupertino, CA); Harikrishna Doppalapudi (Norcross, GA); Purandhar Nallagatla (Johns Creek, GA)
Assignee: AMERICAN MEGATRENDS INTERNATIONAL, LLC
G06F11/3636G06F9/463G06F11/3612G06F11/3692
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,086,758
App. No.
16/778,344
Granted
Aug 10, 2021
Kind
B1
Abstract

Technologies are disclosed for identifying firmware functions that were executed in a call chain prior to the occurrence of an error condition, such as an assert or an exception. In particular, a search is made from an instruction pointer (“IP”) for a memory address containing a signature identifying a firmware module. The firmware module that includes a function that generated the error condition can be identified based on the memory address. The name of the function that generated the error condition can be identified using a function mapping file. Previous functions in the same call chain are identified and their names determined using the function mapping file. Output can then be generated that includes the name of the firmware module that includes the function that generated the error condition, the name of the function that generated the error condition, and the names of other functions in the same call chain.

Claims (41)

1. A computer-implemented method, comprising:

searching boundaries of a memory of a computing device for a memory address containing a signature, the search beginning at a memory address specified by an instruction pointer (IP) when an error condition occurred at the computing device;

identifying a firmware module of a firmware executing on the computing device that includes a function that generated the error condition based, at least in part, on the memory address containing the signature;

identifying a name of the function that generated the error condition from a plurality of functions in the firmware module using a function mapping file, the function mapping file comprising a memory address for each of the plurality of functions in the firmware module and data identifying a name of each of the plurality of functions in the firmware module;

identifying one or more functions in a call chain that includes the function that generated the error, the one or more functions being previous in the call chain to the function that generated the error;

identifying names of the one or more functions in the call chain using the function mapping file; and

outputting, from the computing device, a name of the firmware module, a name of the function that generated the error condition, and the names of the one or more functions in the call chain.

2. The computer-implemented method of claim 1 , wherein the error condition comprises an assert or an exception.

3. The computer-implemented method of claim 1 , wherein the function mapping file is generated at a build time of the firmware module.

4. The computer-implemented method of claim 1 , wherein the firmware executes on the computing device in a Pre-EFI Initialization (PEI) phase of operation.

5. The computer-implemented method of claim 1 , wherein the firmware executes on the computing device in a Driver Execution Environment (DXE) phase of operation.

6. The computer-implemented method of claim 1 , wherein the one or more functions in the call chain are identified using unwind data.

7. The computer-implemented method of claim 1 , wherein the one or more functions in the call chain are identified using stack frames.

8. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computing device, cause the computing device to:

search boundaries of a memory of the computing device for a memory address containing a signature, the search beginning at a memory address specified by an instruction pointer (IP) when an error condition occurred at the computing device;

identify a firmware module of a firmware executing on the computing device that includes a function that generated the error condition based, at least in part, on the memory address containing the signature;

identify a name of the function that generated the error condition from a plurality of functions in the firmware module using a function mapping file, the function mapping file comprising a memory address for each of the plurality of functions in the firmware module and data identifying a name of each of the plurality of functions in the firmware module;

identify one or more functions in a call chain that includes the function that generated the error, the one or more functions being previous in the call chain to the function that generated the error;

identify names of the one or more functions in the call chain using the function mapping file; and

output, from the computing device, a name of the firmware module, a name of the function that generated the error condition, and the names of the one or more functions in the call chain.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the error condition comprises an assert or an exception.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the function mapping file is generated at a build time of the firmware module.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the firmware executes on the computing device in a Pre-EFI Initialization (PEI) phase of operation.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the firmware executes on the computing device in a Driver Execution Environment (DXE) phase of operation.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the one or more functions in the call chain are identified using unwind data.

14. The non-transitory computer-readable storage medium of claim 9 , wherein the one or more functions in the call chain are identified using stack frames.

15. A computing device, comprising:

one or more processors;

a memory; and

at least one non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by the one or more processors, cause the computing device to:

search boundaries of the memory for a memory address containing a signature, the search beginning at a memory address specified by an instruction pointer (IP) when an error condition occurred at the computing device;

identify a firmware module of a firmware executing on the computing device that includes a function that generated the error condition based, at least in part, on the memory address containing the signature;

identify a name of the function that generated the error condition from a plurality of functions in the firmware module using a function mapping file, the function mapping file comprising a memory address for each of the plurality of functions in the firmware module and data identifying a name of each of the plurality of functions in the firmware module;

identify one or more functions in a call chain that includes the function that generated the error, the one or more functions being previous in the call chain to the function that generated the error;

identify names of the one or more functions in the call chain using the function mapping file; and

output, from the computing device, a name of the firmware module, a name of the function that generated the error condition, and the names of the one or more functions in the call chain.

16. The computing system of claim 15 , wherein the error condition comprises an assert or an exception.

17. The computing system of claim 15 , wherein the function mapping file is generated at a build time of the firmware module.

18. The computing system of claim 15 , wherein the firmware executes on the computing device in a Pre-EFI Initialization (PEI) phase of operation or a Driver Execution Environment (DXE) phase of operation.

19. The computing system of claim 15 , wherein the one or more functions in the call chain are identified using unwind data.

20. The computing system of claim 15 , wherein the one or more functions in the call chain are identified using stack frames.

Assignments (4)
PATENT SECURITY AGREEMENT Recorded Oct 23, 2024
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: BAIN CAPITAL CREDIT, LP, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 069229/0834 →
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2024
From: MIDCAP FINANCIAL TRUST
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 069205/0948 →
SECURITY INTEREST Recorded Apr 30, 2024
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 067274/0834 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2020
From: KOLLU, NARESH; DOPPALAPUDI, HARIKRISHNA; NALLAGATLA, PURANDHAR
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 051684/0057 →
Continuity (1)
Provisional Application 62836438 · Apr 19, 2019