Software SMI Data Exchange Between Runtime and Firmware

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for updating firmware in computing systems, particularly in systems with multiple processors, are complicated and time-consuming due to the need for special procedures like creating a firmware update boot disk, and they require permanent memory reservations for data exchange between application programs and firmware, which is inflexible and difficult to manage.

Innovation Solution

A method that allows data exchange between an application program in a runtime environment and firmware in a system management mode (SMM) by using a software System Management Interrupt (SMI) to identify the processor generating the interrupt, enabling data to be retrieved and made available through a globally unique identifier (GUID) for processing across multiple processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If permanently reserved memory areas are used for data exchange between application programs and firmware, then data exchange is enabled, but the system becomes inflexible and difficult to manage when relocation is needed

Engineering Contradiction:
Improvedata exchange capabilityVSAvoidmemory relocation flexibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic memory allocation for data exchange areas instead of permanent reservations. The firmware dynamically allocates memory regions during runtime based on actual needs, allowing these regions to be relocated without modifying application programs. This is achieved through the EFI runtime environment managing memory assignments dynamically, resolving the contradiction between maintaining reliable data exchange and enabling flexible memory relocation.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The EFI runtime environment serves as an intermediary layer between application programs and firmware. It provides standardized interface functions that handle data exchange without requiring applications to know specific memory locations. The runtime environment mediates between the application's data exchange requests and the firmware's memory management, allowing memory regions to be relocated while maintaining functional connectivity through the intermediary interface layer.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If special boot disk procedures are used to update firmware, then firmware updates can be performed, but the process becomes complicated and time consuming

Engineering Contradiction:
Improvefirmware update capabilityVSAvoidupdate procedure complexity
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The system enables self-service firmware updates by allowing application programs running in the runtime environment to directly communicate with firmware update functions. The firmware update capability is made accessible through the runtime environment's interface, enabling applications to perform updates without requiring special boot disk procedures. This self-service approach eliminates the need for complex external update mechanisms while maintaining reliable firmware update functionality.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The runtime environment provides universal access to firmware functions, including update capabilities, through standardized interface functions. Instead of requiring separate special-purpose procedures like boot disk initialization, the same runtime environment that applications use for normal operations also provides access to firmware update functions. This multi-functionality consolidates update procedures into the regular application execution context, simplifying the overall process.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Power

If multiple processors are supported in the system, then computing power is increased, but identifying the generating processor for data exchange becomes more difficult

Engineering Contradiction:
Improvecomputing powerVSAvoidprocessor identification complexity
Core Design Contradiction:
PowerVSDevice complexity

Solution Approach 1:

The patent implements a feedback mechanism where processor identification information is automatically captured and returned to the firmware. When an application on any processor initiates a data exchange request, the system automatically feeds back the identifier of the generating processor through the runtime environment interface. This feedback eliminates the need for complex manual tracking of which processor initiated which request, simplifying multi-processor coordination while maintaining high computing power.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7454547B1Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
Publication Date: 2008.11.18 AMERICAN MEGATRENDS
  • US7454547B1 patent drawing
  • US7454547B1 patent drawing
  • US7454547B1 patent drawing

AI summary

A method, system, apparatus, and computer-readable medium for exchanging data between an application program and a firmware in a computer system having multiple CPUs are provided. According to the method, an application program stores an input parameter for the firmware program in a register of the CPU on which it is executing. Data is also stored in a register of the CPU that identifies the CPU as having generated a SMI. The application program then generates a software SMI. In response to the SMI, a SMM dispatcher executing within the SMM causes the current contents of all the registers of the CPUs to be saved. The SMM dispatcher then identifies the CPU that generated the SMI by searching the saved register contents to locate the data stored by the application program that identifies the CPU as having generated the software SMI. Once the CPU has been identified, the input parameter can be retrieved from the saved register contents for the identified CPU.