IP Library Granted Patent US 9,395,968
Granted Patent B1
US 9,395,968 · App. 11/478,981 · Granted Jul 19, 2016

Uniquely identifying and validating computer system firmware

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 9,395,968
App. No.
11/478,981
Granted
Jul 19, 2016
Kind
B1
Abstract

Methods, apparatus, computer systems, and computer-readable media for creating a firmware identification data structure in a memory device for identifying and validating a firmware are provided. According to one method, a signature, globally unique identifier, and data module category version identifiers are stored in data fields within the data structure. Major and minor version identifiers are modified as corresponding firmware program modules are modified. For validation, a memory device is searched for the signature identifying a firmware identification data structure. The firmware GUID and version identifiers stored within the data structure are used for firmware validation.

Claims (64)

1. A method for creating a firmware identification data structure in a memory device for identifying a firmware having a plurality of firmware program modules, comprising:

storing, in a first data field of the firmware identification data structure a data structure signature identifying the firmware identification data structure;

storing, in a second data field of the firmware identification data structure, a firmware version identifier corresponding to a current version of the firmware identification data structure;

storing a plurality of major version identifiers in major version identifier data fields of the firmware identification data structure, each major version identifier corresponding to a current major version of firmware program modules of one of a plurality of categories;

storing a plurality of minor version identifiers in minor version identifier data fields of the firmware identification data structure, each minor version identifier corresponding to a current minor version of the firmware program modules of one of the plurality of categories, such that the firmware program modules of each of the plurality of categories have a corresponding major version identifier and minor version identifier;

determining that a modification has been made to at least one firmware program module within at least one of the plurality of categories of the firmware program modules and determining whether the modification is a major modification or a minor modification; and

responsive to determining that the modification has been made to the at least one firmware program module, modifying data stored in the firmware identification data structure by modifying at least one major version identifier of the plurality of major version identifiers or at least one minor version identifier of the plurality of minor version identifiers to reflect the modification; and

responsive to determining that the modification is the major modification, modifying the firmware version identifier.

2. The method of claim 1 , further comprising storing a globally unique identifier (“GUID”) corresponding to the firmware in a third data field of the firmware identification data structure.

3. The method of claim 2 , wherein the firmware identification data structure comprises a fourth data field corresponding to a core module category, a fifth data field corresponding to a chipset module category, and a sixth data field corresponding to a platform module category.

4. The method of claim 3 , wherein determining that the modification has been made to at least one firmware program module within at least one of the plurality of categories of the firmware program modules and determining whether the modification is the major modification or the minor modification comprises:

determining that a firmware program module within the core module category has been modified;

responsive to determining that the firmware program module within the core module category has been modified, determining whether the firmware program module within the core module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the core module category, determining whether a firmware program module within the chipset module category has been modified;

responsive to determining that the firmware program module within the chipset module category has been modified, determining whether the firmware program module within the chipset module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the chipset module category, determining whether a firmware program module within the platform module category has been modified; and

responsive to determining that the firmware program module within the platform module category has been modified, determining whether the firmware program module within the platform module category modification is a major modification.

5. The method of claim 1 , wherein the firmware identification data structure is stored in a boot block of non-volatile memory.

6. The method of claim 1 , wherein the firmware identification data structure comprises a third data field corresponding to a core module category, a fourth data field corresponding to a project module category, and a fifth data field corresponding to a CSM module category.

7. The method of claim 1 , wherein determining whether the modification is the major modification or the minor modification comprises determining that the modification is the major modification when a firmware program module is added or deleted and determining that the modification is the minor modification when a single firmware program module is modified.

8. A memory for storing data for access by a firmware program module of a computer system firmware, the memory comprising computer-executable instructions which, when executed on a processor, cause a computer to:

store, in a first data field of a firmware identification data structure, a data structure signature identifying the firmware identification data structure;

store, in a second data field of the firmware identification data structure, a firmware version identifier corresponding to a current version of the firmware identification data structure;

store a plurality of major version identifiers in major version identifier data fields of the firmware identification data structure, each major version identifier corresponding to a current major version of firmware program modules of one of a plurality of categories;

store a plurality of minor version identifiers in minor version identifier data fields of the firmware identification data structure, each minor version identifier corresponding to a current minor version of the firmware program modules of one of the plurality of categories, such that the firmware program modules of each of the plurality of categories have a corresponding major version identifier and minor version identifier;

determine that a modification has been made to at least one firmware program module within at least one of the plurality of categories of the firmware program modules and determining whether the modification is a major modification or a minor modification;

responsive to determining that the modification has been made to the at least one firmware program module, modify data stored in the firmware identification data structure by modifying at least one major version identifier of the plurality of major version identifiers or at least one minor version identifier of the plurality of minor version identifiers to reflect the modification; and

responsive to determining that the modification is the major modification, modify the firmware version identifier.

9. The memory of claim 8 , comprising further computer-executable instructions which, when executed on the processor, cause the computer to store a globally unique identifier (“GUID”) corresponding to the computer system firmware in a third data field of the firmware identification data structure.

10. The memory of claim 8 , comprising further computer-executable instructions which, when executed on the processor, cause the computer to store:

a date or time identifier indicating the date or time that a latest modification to the firmware identification data structure was performed; and

a size identifier indicating a current size of the firmware identification data structure.

11. The memory of claim 8 , wherein the firmware identification data structure further comprises:

a third data field corresponding to a core module category, a fourth data field corresponding to a project module category, and a fifth data field corresponding to a CSM module category.

12. The memory of claim 8 , wherein the firmware identification data structure further comprises:

a third data field corresponding to a core module category, a fourth data field corresponding to a chipset module category, and a fifth data field corresponding to a platform module category.

13. The memory of claim 12 , wherein determining that the modification has been made to at least one firmware program module within at least one of the plurality of categories of the firmware program modules and determining whether the modification is the major modification or the minor modification comprises:

determining that a firmware program module within the core module category has been modified;

responsive to determining that the firmware program module within the core module category has been modified, determining whether the firmware program module within the core module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the core module category, determining whether a firmware program module within the chipset module category has been modified;

responsive to determining that the firmware program module within the chipset module category has been modified, determining whether the firmware program module within the chipset module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the chipset module category, determining whether a firmware program module within the platform module category has been modified; and

responsive to determining that the firmware program module within the platform module category has been modified, determining whether the firmware program module within the platform module category modification is a major modification.

14. The memory of claim 8 , wherein determining whether the modification is the major modification or the minor modification comprises determining that the modification is the major modification when a firmware program module is added or deleted and determining that the modification is the minor modification when a single firmware program module is modified.

15. The memory of claim 8 , wherein the firmware identification data structure is stored in a boot block of non-volatile memory.

16. An apparatus for creating a firmware identification data structure in a memory device, the apparatus comprising:

a processor; and

a computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by the processor, cause the apparatus to store, in a first data field of the firmware identification data structure, a data structure signature identifying the firmware identification data structure,

store, in a second data field of the firmware identification data structure, a firmware version identifier corresponding to a current version of the firmware identification data structure,

store a plurality of major version identifiers in major version identifier data fields of the firmware identification data structure, each major version identifier corresponding to a current major version of firmware program modules of one of a plurality of categories,

store a plurality of minor version identifiers in minor version identifier data fields of the firmware identification data structure, each minor version identifier corresponding to a current minor version of the firmware program modules of one of the plurality of categories, such that the firmware program modules of each of the plurality of categories have a corresponding major version identifier and minor version identifier,

determine that a modification has been made to at least one firmware program module within at least one of the plurality of categories of the firmware program modules and determining whether the modification is a major modification or a minor modification,

responsive to determining that the modification has been made to the at least one firmware program module, modify data stored in the firmware identification data structure by modifying at least one major version identifier of the plurality of major version identifiers or at least one minor version identifier of the plurality of minor version identifiers to reflect the modification, and

responsive to determining that the modification is the major modification, modify the firmware version identifier.

17. The apparatus of claim 16 , wherein the firmware identification data structure further comprises a third data field corresponding to a globally unique identifier (“GUID”).

18. The apparatus of claim 16 , wherein the firmware identification data structure further comprises a third data field corresponding to a core module category, a fourth data field corresponding to a project module category, and a fifth data field corresponding to a CSM module category.

19. The apparatus of claim 16 , wherein the firmware identification data structure comprises a third data field corresponding to a core module category, a fourth data field corresponding to a chipset module category, and a fifth data field corresponding to a platform module category.

20. The memory of claim 19 , wherein determining that the modification has been made to at least one firmware program module within at least one of the plurality of categories of firmware program modules and determining whether the modification is the major modification or the minor modification comprises:

determining that a firmware program module within the core module category has been modified;

responsive to determining that the firmware program module within the core module category has been modified, determining whether the firmware program module within the core module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the core module category, determining whether a firmware program module within the chipset module category has been modified;

responsive to determining that the firmware program module within the chipset module category has been modified, determining whether the firmware program module within the chipset module category modification is a major modification;

responsive to determining that no modification has been made to the firmware program module within the chipset module category, determining whether a firmware program module within the platform module category has been modified; and

responsive to determining that the firmware program module within the platform module category has been modified, determining whether the firmware program module within the platform module category modification is a major modification.

Assignments (5)
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/0795 →
SECURITY INTEREST Recorded May 6, 2019
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 049087/0266 →
ENTITY CONVERSION Recorded Apr 15, 2019
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 049091/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2006
From: NALLAGATLA, PURANDHAR; DOPPALAPUDI, HARIKRISHNA
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 018028/0651 →