US Pat. No. 10,331,557

DISTRIBUTION OF MEMORY ADDRESS RESOURCES TO BUS DEVICES IN A MULTI-PROCESSOR COMPUTING SYSTEM

American Megatrends Inter...

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a multi-processor computing system, cause the multi-processor computing system to:detect an out-of-resource (OOR) condition when performing an allocation of memory address resources to bus devices in the multi-processor computing system;
responsive to detecting the OOR condition, determine whether a socket-level adjustment or a stack-level adjustment of the allocation of memory address resources to the bus devices is to be performed;
responsive to determining that a stack-level adjustment of the allocation of memory address resources is to be performed, perform a stack-level memory address resource allocation adjustment by
identifying memory address resources available from one or more stacks for which sufficient memory address resources were previously allocated, and
assigning the memory address resources available from the one or more stacks to one or more other stacks for which sufficient memory address resources were not previously allocated; and
responsive to determining that a socket-level adjustment of the allocation of memory address resources is to be performed, perform a socket-level memory address resource allocation adjustment by
identifying memory address resources available from one or more sockets for which sufficient memory address resources were previously allocated, and
assigning the memory address resources available from the one or more sockets to one or more other sockets for which sufficient memory address resources were not previously allocated.

US Pat. No. 10,509,750

SYSTEM AND METHOD FOR CONTROLLING MULTI-FUNCTION PINS IN MANAGEMENT CONTROLLER STACK

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a management controller, comprising a plurality of pins, a processor and a non-volatile memory storing computer executable code, wherein the management controller is configured to provide a plurality of functionalities, and each of the functionalities is related to at least one of the pins;
wherein the computer executable code, when executed at the processor, is configured to:
receive an instruction to select one of the plurality of functionalities;
determine the at least one pin related to the selected one of the functionalities based on the instruction; and
for each of the at least one pin related to the selected one of the functionalities, set a value of a corresponding register to indicate a functional status of the pin, such that each of the at least one pin is configured to provide the selected one of the functionalities based on the value of the corresponding register;
wherein each of the pins is a general-purpose input/output (GPIO) pin, and the functionalities comprise a GPIO functionality and at least one non-GPIO functionality; and
wherein the functionalities are configured using a project (PRJ) file that includes a text box defining a first group of pins used as GPIO and a second group of pins used as non-GPIO.

US Pat. No. 10,445,282

TECHNIQUES OF PROVIDING SERIAL PORT IN NON-LEGACY SYSTEM VIA EMBEDDED-SYSTEM DEVICE

AMERICAN MEGATRENDS INTER...

1. A method of operating an embedded-system device, comprising:emulating a first serial port at the embedded-system device having a processor and a memory coupled to the processor;
exposing the first serial port to a host of the embedded-system device through a Universal Serial Bus (USB) connection over a communication link between the embedded-system device and the host, wherein the host detects, in accordance with USB standards, the first serial port as a USB communications device class (USB CDC) device at the embedded-system device and connected to the host through the USB connection, wherein the host recognizes the first serial port and operates to generate first command or data to be sent to the first serial port, wherein a USB component at the host packs the first command or data in first USB packets and sends the first USB packets to the embedded-system device through the USB connection, wherein the first command or data are serial command or data;
receiving, at the embedded-system device, the first USB packets containing the first command or data from the host through the USB connection;
determining that the first command or data are directed to the first serial port based on an indication in the first USB packets;
extracting the first command or data from the first USB packets;
sending the first command or data to a service component of the embedded-system device;
receiving, at the service component through a network interface card of the embedded-system device, second command or data in a serial form from a remote device over a local area network (LAN); and
sending the second command or data from the service component of the embedded-system device to the host through the first serial port.

US Pat. No. 10,430,206

MULTI-USER HIDDEN FEATURE ENABLEMENT IN FIRMWARE

American Megatrends Inter...

1. A computer-implemented method comprising:receiving data to enable a firmware feature that defines a functionality of a firmware, the received data including a feature authenticated variable and an end-user authenticated variable;
storing the feature authenticated variable when the end-user authenticated variable corresponds to a second end-user authenticated variable extant in an authenticated variable data storage;
receiving a request to provide the functionality defined by the firmware feature; and
providing access to the functionality defined by the firmware feature when the feature authenticated variable is present in the authenticated variable data storage.

US Pat. No. 10,616,944

COMPUTER SYSTEM AND METHOD THEREOF FOR SHARING OF WIRELESS CONNECTION INFORMATION BETWEEN UEFI FIRMWARE AND OS

AMERICAN MEGATRENDS INTER...

1. A computer implemented method comprising:initiating power on mode in order to execute UEFI firmware for OS boot up procedure;
initiating pairing with a wireless device;
saving a pairing connection data of the wireless device to memory;
retrieving the pairing connection data under Operating System environment; and
initiating automatic pairing with the wireless device based on the pairing connection data;
wherein the wireless device is a WiFi device, the method further comprising:
initiating a WiFi manager process by the UEFI firmware; and
determining if a WiFi hardware component is present and correspondingly generating a WiFi present result.

US Pat. No. 10,606,677

METHOD OF RETRIEVING DEBUGGING DATA IN UEFI AND COMPUTER SYSTEM THEREOF

AMERICAN MEGATRENDS INTER...

1. A computer implemented method comprising:receiving a debug retrieval request to retrieve a debug status data during execution of a UEFI firmware of a computer system, wherein the debug retrieval request is received during one of subsequent phases after a SEC phase;
initiating a debug aggregation function in response to the debug retrieval request;
aggregating the debug status data into a data token, wherein the debug aggregation function starts collecting or gathering the debug status data that are generated after the debug retrieval request is received; and
retrieving the debug status data during a security (SEC), pre-EFI initialization environment (PEI), driver execution environment (DXE), or boot device selection (BDS) stage of execution of the UEFI firmware, wherein a second debug status data is retrieved during the same or different stage that the stage the debug status data is retrieved, and the debug status data and the second debug status data are aggregated into the data token.

US Pat. No. 10,489,601

ENCRYPTED EXTENDED SYSTEM EVENT LOG

American Megatrends Inter...

1. A method of operating a baseboard management controller (BMC), comprising:receiving a message through a communication interface of the BMC, the message containing a request-to-add-data including event data associated with an event, the event data including a data collection;
storing the data collection at a location in a file space on a storage device of the BMC;
determining a locator to indicate the location;
generating an extended system event log (SEL) record entry describing the event and including the locator;
storing the SEL record entry in a data repository external to the file space on the storage device; and
retrieving the data collection based on the locator in response to receiving a request-to-retrieve-an-SEL-record.

US Pat. No. 10,416,988

PERIPHERAL DEVICE FIRMWARE UPDATE USING REST OVER IPMI INTERFACE FIRMWARE SHELL UTILITY

American Megatrends Inter...

1. A computer-implemented method for updating a firmware of a peripheral device of a computing system, comprising:transmitting a request for a firmware update instruction for the peripheral device from a firmware of the computing system to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
responsive to receiving the request at the BMC, providing data identifying a location of a peripheral device firmware image for the peripheral device to the firmware of the computing system over the REST over IPMI interface, wherein the data identifying the location of the peripheral device firmware image is transmitted from the BMC to the firmware of the computing system using original equipment manufacturer (OEM) IPMI commands containing REST Hypertext Transfer Protocol (HTTP) requests;
retrieving, by way of the firmware of the computing system, the peripheral device firmware image from the location of the peripheral device firmware image identified by the data provided by the BMC, the firmware image comprising a firmware script, a firmware shell utility, and an updated peripheral device firmware;
executing the script in a shell environment provided by the firmware of the computing system, the script configured to execute the firmware shell utility in the shell environment; and
updating, by way of the firmware shell utility, the firmware of the peripheral device using the updated peripheral device firmware.

US Pat. No. 10,338,692

DUAL TOUCHPAD SYSTEM

American Megatrends Inter...

1. A system, comprising:a first touchpad operating in a first mode of operation,
a second touchpad non-concentric with and spaced apart from the first touchpad, the second touchpad operating in a second mode of operation; and
a gesture recognition unit performing operations including:
receiving a first signal generated responsive to contact on the first touchpad,
determining that the first signal corresponds to a gesture made on the first touchpad to change a mode of operation of the second touchpad,
changing the second touchpad from the second mode of operation to third mode of operation while maintaining the first touchpad in the first mode of operation, and
generating a control signal associated with the third mode of operation based at least in part on a detecting a gesture on the second touchpad after changing the second touchpad from the second mode of operation to the third mode of operation.

US Pat. No. 10,509,656

TECHNIQUES OF PROVIDING POLICY OPTIONS TO ENABLE AND DISABLE SYSTEM COMPONENTS

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system, the computer system including an initialization component of a host, comprising:determining, at the initialization component executed on a central processing unit (CPU) of the host and executed prior to that an operating system of the host is executed on the CPU, presence or absence of a plurality of hardware components of the host;
generating, at the CPU, a first series of indicators indicating the determined presence or absence of the plurality of hardware components; and
sending, from the CPU to a service processor of the host, a message in accordance with a management protocol, the message including the first series of indicators.

US Pat. No. 10,404,538

REMOTE PLATFORM CONFIGURATION

American Megatrends Inter...

1. A system, comprising:one or more processors; and
a non-transitory computer-readable storage medium having computer-executable instructions stored thereupon that, when executed by the one or more processors, cause the system to:
determine a computer for which one or more firmware parameters of a firmware are to be updated;
generate a first request for the computer, the first request indicating that the computer is to enter a firmware remote setup mode;
send the first request to the computer to cause the computer to at least temporarily suspend one or more aspects of a normal reboot process during a reboot;
receive data about a current configuration of the firmware;
generate, based at least in part on the current configuration, a second request, the second request to indicate respective parameter values corresponding to each of the one or more firmware parameters; and
send the second request to the computer while the one or more aspects of the normal reboot process are suspended.

US Pat. No. 10,599,848

USE OF SECURITY KEY TO ENABLE FIRMWARE FEATURES

American Megatrends Inter...

1. A non-transitory computer-readable storage medium, having computer-executable instructions stored thereupon which, when executed by the computer, cause the computer to:generate, via a computer system firmware and responsive to a computer system start-up, a request for a user authentication;
detect via the computer system firmware, a security key device storing a private key for the user authentication;
determine via the computer system firmware whether the private key corresponds to a public key previously registered with the computer system firmware;
initiate, when the private key corresponds to the public key, completion of the start-up of the computer system firmware and allowing operation of the computer system firmware; and
prevent, when the private key does not correspond to the public key, a change to a computer system parameter, the change comprising selection of start-up options associated with the computer system firmware.

US Pat. No. 10,552,376

ACCESSING FILES STORED IN A FIRMWARE VOLUME FROM A PRE-BOOT APPLICATION

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method for accessing a file stored in a firmware volume in a firmware device from a pre-boot execution environment, comprising:receiving a request to open the file from a pre-boot application executing in the pre-boot execution environment, the request comprising a filename associated with the file;
responsive to the request, searching a file cross-reference table for the filename, the file cross-reference table comprising a mapping between filenames for firmware file system files stored in the firmware volume and globally unique identifiers associated with the filenames; and
responsive to determining that the filename is contained in the file cross-reference table,
retrieving a globally unique identifier associated with the filename from the file cross-reference table,
utilizing the globally unique identifier associated with the filename to obtain a file handle for the file,
returning the file handle to the pre-boot application in response to the request; and
responsive to determining that the filename is not contained in the file cross-reference table, obtaining the file handle for the file using one or more standard input/output library functions.

US Pat. No. 10,511,407

TECHNIQUES OF DEEP DISCOVERY OF A COMPOSED NODE THROUGH MANAGEMENT NETWORK

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system, comprising:emulating, at a first service processor of the computer system, a first storage device to a composed machine of a computing pod;
exposing a bootable utility image to the composed machine through the first storage device, wherein the bootable utility image is configured to boot a program that collects hardware inventory information from the composed machine;
emulating a second storage device to the composed machine;
receiving the hardware inventory information from the composed machine through the second storage device;
mounting a remote file system of a remote device, wherein a storage space the second storage device is provided by the remote file system;
wherein the composed machine employs a computing module in a compute computing drawer of the computing pod, wherein the remote device is a pooled system management engine (PSME) of the compute computing drawer;
wherein the computer system further includes the PSME, the method further comprising:
detecting that the hardware inventory information has been stored on the PSME through the remote file system of the PSME mounted on the first service processor;
retrieving the hardware inventory information; and
sending the hardware inventory information to a pod manager of the computing pod, wherein the hardware inventory information is carried on a management network that is separate from a data network used by the composed machine.

US Pat. No. 10,489,142

SECURE FIRMWARE INTEGRITY MONITORING USING REST OVER IPMI INTERFACE

American Megatrends Inter...

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:compute, by way of a first portion of a firmware executing on the computer, a current hash value for a second portion of the firmware;
transmit the current hash value for the second portion of the firmware from the first portion of the firmware to a baseboard management controller (BMC);
determine, by way of the BMC, whether the current hash value for the second portion of the firmware is the same as a reference hash value for the firmware;
transmit a first instruction from the BMC to the first portion of the firmware over a representational state transfer (REST) over intelligent platform management interface (IPMI) responsive to determining that the current hash value for the second portion of the firmware is the same as the reference hash value for the firmware;
receive the first instruction at the first portion of the firmware; and
execute the second portion of the firmware responsive to receiving the first instruction.

US Pat. No. 10,437,579

SECURE FIRMWARE INTEGRITY MONITORING USING REST OVER IPMI INTERFACE

American Megatrends Inter...

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:compute, by way of a first portion of a firmware executing on the computer, a current hash value for a second portion of the firmware;
transmit the current hash value for the second portion of the firmware from the first portion of the firmware to a baseboard management controller (BMC);
determine, by way of the BMC, whether the current hash value for the second portion of the firmware is the same as a reference hash value for the firmware;
transmit a first instruction from the BMC to the first portion of the firmware over a representational state transfer (REST) over intelligent platform management interface (IPMI) responsive to determining that the current hash value for the second portion of the firmware is the same as the reference hash value for the firmware;
receive the first instruction at the first portion of the firmware; and
execute the second portion of the firmware responsive to receiving the first instruction.

US Pat. No. 10,409,584

PERIPHERAL DEVICE FIRMWARE UPDATE USING REST OVER IPMI INTERFACE FIRMWARE UPDATE MODULE

American Megatrends Inter...

1. A computer-implemented method for updating a firmware of a peripheral device of a computing system, comprising:transmitting a request for a firmware update instruction for the peripheral device from a firmware of the computing system to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
responsive to receiving the request at the BMC, providing data identifying a location of a peripheral device firmware image for the peripheral device to the firmware of the computing system over the REST over IPMI interface, wherein the data identifying the location of the peripheral device firmware image is transmitted from the BMC to the firmware of the computing device using original equipment manufacturer (OEM) IPMI commands containing REST Hypertext Transfer Protocol (HTTP) requests;
retrieving, by way of the firmware of the computing system, the peripheral device firmware image from the location of the peripheral device firmware image identified by the data provided by the BMC; and
updating, by way of a firmware update module of the firmware, the firmware of the peripheral device using the peripheral device firmware image.

US Pat. No. 10,496,507

DYNAMIC PERSONALITY CONFIGURATIONS FOR POOLED SYSTEM MANAGEMENT ENGINE

AMERICAN MEGATRENDS INTER...

1. A method of operating a computing pod including one or more computing racks, comprising:executing, at a first service processor, a first baseboard management controller (BMC) function, wherein each of the one or more computing racks includes one or more computing drawers, each of the computing drawers includes one or more computing modules, each of the one or more computing modules includes a computing blade, the first service processor is on a first computing blade of a first computing drawer of the one or more computing drawers of a first computing rack of the one or more computing racks, and the first BMC function manages the first computing blade;
gathering, by the BMC function, hardware information of the first computing blade;
determining, at the first service processor, a type of the first computing blade based on the hardware information gathered by the BMC function;
enabling, at the first service processor, functionalities of a first pooled system management engine (PSME) in accordance with the determined type;
exposing, at the first service processor, the first PSME to a pod manager servicing the computing pod;
collecting, at the first PSME, information of the first computing blade; and
sending, at the first PSME, the information of the first computing blade to the pod manager.

US Pat. No. 10,474,517

TECHNIQUES OF STORING OPERATIONAL STATES OF PROCESSES AT PARTICULAR MEMORY LOCATIONS OF AN EMBEDDED-SYSTEM DEVICE

AMERICAN MEGATRENDS INTER...

1. A method of operating an embedded-system device, comprising:determining a respective operational state of each of one or more processes loaded in a primary memory of the embedded-system device;
storing the respective operational state of each of the one or more processes at a memory location in a respective memory area for the each process in the same primary memory;
storing the memory locations associated with the one or more processes in a register in the same primary memory;
obtaining, from the register, a memory location of at least one process of the one or more processes; and
obtaining, based on the memory location of the at least one process, the stored operational state of the at least one process from the respective memory area for the at least one process.

US Pat. No. 10,466,916

SYSTEM AND METHOD OF DYNAMIC WRITE PROTECT OF STORAGE DEVICES EXPOSED BY BASEBOARD MANAGEMENT CONTROLLER (BMC)

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a baseboard management controller (BMC), comprising a processor and a non-volatile memory storing a computer executable code; and
at least one storage device connected to the BMC via a network,
wherein the computer executable code, when executed at the processor, is configured to:
perform redirection of the at least one storage device, such that the at least one storage device is accessible by a computing device, wherein the computing device accesses to the at least one storage device through a universal serial bus (USB) interface, the BMC and the network sequentially, and the perform redirection of the at least one storage device comprises:
(a) receiving a redirection command from the computing device, wherein the redirection command includes redirect information of one of the at least one storage devices;
(b) processing the redirection command to extract the redirect information; and
(c) storing the redirect information in a data store;
receive a write protect command comprising write protect information of the at least one storage device from the computing device, wherein the redirection command is different, independent and separate from the write protect command;
extract the write protect information from the write protect command, wherein the write protect information comprises: a mode identifier to define a write protect status of the one of the at least one storage device, the write protect status being selected from write protect on or write protect off; a device identifier for identifying the one of the at least one storage device; and an array storing a plurality of address values, wherein the address values are configured to define a write-protected portion of the one of the at least one storage device;
store the write protect information in the data store of the non-volatile memory;
change write protect properties of the at least one of the storage devices;
repeat the perform, the receive, the extract and the store to change or update the write protect information of the at least one storage device, thereby achieving dynamic write protection of the at least one storage device;
in response to receiving, from the computing device, a write command to write data in the at least one storage device, determine whether the data is writable to the at least one storage device based on the write protect information stored in the data store, wherein the write command is different, independent and separate from the redirection command and the write protect command; and
in response to determining the data to be writable to the at least one storage device, write the data to the at least one storage device wherein the write protect command is an intelligent platform management interface (IPMI) original equipment manufacturer (OEM) command.

US Pat. No. 10,425,412

DYNAMIC GENERATION OF KEY FOR ENCRYPTING DATA IN MANAGEMENT NODE

AMERICAN MEGATRENDS INTER...

1. A method of operating a service processor, comprising:generating a first encryption key at runtime based on unique device data of the service processor and a first logic, wherein the first logic is provided by firmware of the service processor;
encrypting target data based on the first encryption key and an encryption algorithm to obtain first encrypted data; and
storing the first encrypted data in a storage device of the service processor;
updating the firmware, the updated firmware including a second logic;
generating a second encryption key at runtime based on the unique device data of the service processor and the second logic;
decrypting the first encrypted data with the first encryption key and the encryption algorithm to obtain the target data prior to updating the firmware;
encrypting the target data based on the second encryption key and the encryption algorithm to obtain second encrypted data subsequent to updating the firmware; and
storing the second encrypted data in the storage device of the service processor.

US Pat. No. 10,402,454

OBTAINING PLATFORM-SPECIFIC INFORMATION IN A FIRMWARE EXECUTION ENVIRONMENT

American Megatrends Inter...

1. A computer-implemented method for obtaining platform-specific information in a firmware execution environment, comprising:receiving a request for the platform-specific information from a firmware driver executing in the firmware execution environment;
discovering one or more platform-to-driver agents executing in the firmware execution environment, wherein the one or more platform-to-driver agents comprise unified extensible firmware interface (UEFI) compatible protocols;
querying at least a portion of the one or more platform-to-driver agents to identify one of the platform-to-driver agents as a provider of the requested platform-specific information;
obtaining the platform-specific information from the one of the platform-to-driver agents identified as a provider of the requested platform-specific information; and
providing the platform-specific information to the firmware driver.

US Pat. No. 10,691,444

LAUNCHING UPDATED FIRMWARE FILES STORED IN A DEDICATED FIRMWARE VOLUME

American Megatrends Inter...

1. A computer-implemented method for updating firmware file system (FFS) files, the method, comprising:identifying, by one or more processors, during boot-up of a computing system, a first FFS file stored in a first firmware volume within a non-volatile memory included in the computing system, and the first FFS file associated with a first identifier;
determining, by the one or more processors, during the boot-up of the computing system, that a second FFS file associated with the first identifier is stored in a second firmware volume within the non-volatile memory in the computing system, wherein the first firmware volume and the second firmware volume are in separate locations of the non-volatile memory in the computing system, and the second FFS file is an updated version of the first FFS file;
determining, by the one or more processors, during the boot-up of the computing system, based on the first identifier, that the second FFS file is not indicated in either a black list or a launch list, wherein the black list indicates whether an updated version of a first particular FFS file is not allowed to be executed when the updated version of the first particular FFS file is detected, and the launch list indicates whether an updated version of a second particular FFS file is allowed to be executed when the updated version of the second particular FFS file is detected;
executing, by the one or more processors, based at least in part on the determining that the second FFS file associated with the first identifier is stored in the second firmware volume, and based at least in part on the determining that the second FFS file is not indicated in either the black list or the launch list, instructions of the second FFS file;
determining that execution of the second FFS file does not result in any errors; and
updating, based at least in part on determining that the execution of the second FFS file does not result in any errors, the launch list to include the second FFS file.

US Pat. No. 10,491,736

COMPUTER SYSTEM AND METHOD THEREOF FOR BLUETOOTH DATA SHARING BETWEEN UEFI FIRMWARE AND OS

AMERICAN MEGATRENDS INTER...

1. A computer implemented method comprising:initiating power on mode in order to execute UEFI firmware for OS boot up procedure;
initiating, by utilizing the UEFI firmware, pairing with a Bluetooth device;
saving, by utilizing the UEFI firmware, a pairing connection data of the Bluetooth device to memory in an operating system readable form; and
retrieving, by utilizing an operating system, the pairing connection data saved in the operating system readable form by the UEFI firmware during a period that the operating system initiates hardware detection and proceeds to install and/or execute corresponding drivers, to allow the operating system determine which drivers to match to the Bluetooth device according to the pairing connection data and automatically re-pair the Bluetooth device to the computer system according to the pairing connection data.

US Pat. No. 10,467,075

SYSTEMS, DEVICES AND METHODS FOR PREDICTING DISK FAILURE AND MINIMIZING DATA LOSS

American Megatrends Inter...

1. A computer-implemented method for predicting a risk of disk failure, comprising:identifying a group of disks for collective analysis;
collecting at least one performance parameter for respective disks in the group of disks;
calculating an expected value of the at least one performance parameter for the group of disks;
comparing a respective value of the at least one performance parameter for at least one of the respective disks in the group of disks to the expected value;
predicting a risk of disk failure when a difference between the respective value of the at least one performance parameter for the at least one of the respective disks in the group of disks and the expected value exceeds a threshold; and
in response to predicting the risk of disk failure, performing media error checks on respective disks in the group of disks that are operating normally.

US Pat. No. 10,445,201

SYSTEM AND METHOD FOR AUTOMATED INTEGRATION AND STRESS TESTING OF HARDWARE AND SOFTWARE SERVICE IN MANAGEMENT CONTROLLER USING CONTAINERIZED TOOLBOX

AMERICAN MEGATRENDS INTER...

1. A method for automated integration and stress testing of a plurality of services of a management controller, comprising:providing, at the management controller, a containerized toolbox module comprising a plurality of testing tools for a web-based protocol and an Intelligent Platform Management Interface (IPMI) protocol, wherein the web-based protocol is a Representational State Transfer (REST) protocol;
receiving, by the containerized toolbox module, a testing command to perform a plurality of tests to the services of the management controller, wherein each of the services is accessible under at least one of the web-based protocol and the IPMI protocol; and
performing, by the containerized toolbox module based on the testing command, the tests to the services of the management controller using the testing tools of the containerized toolbox module,
wherein the containerized toolbox module comprises:
a REST script library comprising the testing tools for the REST protocol;
an IPMI test library comprising the testing tools for the IPMI protocol; and
an environment file storing information for the tests to be performed to each of the hardware and software services of the management controller.

US Pat. No. 10,423,472

SYSTEM AND METHOD FOR PROVIDING EXTENDED JAVASCRIPT OBJECT NOTATION (JSON) REMOTE PROCEDURE CALL (RPC) WITH MEDIATOR

AMERICAN MEGATRENDS INTER...

7. A method for providing an extended JavaScript Object Notation (JSON) Remote Procedure Call (RPC) with a mediator in a management software of a host computing device, comprising:receiving, by the management software, a request from a remote computing device;
in response to receiving the request,
converting, by the management software, the request to an extended JSON RPC request, wherein the extended JSON RPC request comprises first properties for performing a method on a target device and second properties not for performing the method;
storing, at the management software, the first properties and the second properties based on the extended JSON RPC request;
generating, by the management software, a command to perform the method at the target device, based on the extended JSON RPC request; and
sending the command from the management software to the target device to perform the method at the target device;
receiving, by the management software from the target device, a response based on the method being performed at the target device; and
in response to receiving the response,
converting, by the management software, the response to an extended JSON RPC response, wherein the extended JSON RPC response comprises third properties for generating a client response to the request and fourth properties not for generating the client response,
storing, at the management software, the third properties and the fourth properties based on the extended JSON RPC response;
generating, by the management software, the client response based on the third properties of the extended JSON RPC response; and
sending the client response from the management software to the remote computing device;
wherein the first properties comprise a method identification of the method, at least one parameter for performing the method, and a request identification, and the second properties comprise a device identification of the target device, a user identification, and a time stamp.

US Pat. No. 10,372,661

FIRMWARE DEBUG TRACE CAPTURE USING SERIAL PERIPHERAL INTERFACE

American Megatrends Inter...

1. A computer system comprising:a motherboard that does not include an operative serial communications port, the motherboard comprising:
a first processor,
a first Serial Peripheral Interface (“SPI”) device, and
a first firmware storing first instructions that when executed by the first processor cause the first processor to:
capture debug trace statements from code within the first firmware during a boot cycle of the computer system,
encode the debug trace statements into a first data format to generate encoded debug trace statements for transmission by the first SPI device, and
write the encoded debug trace statements in the first data format to the first SPI device; and
a microcontroller comprising:
a second processor,
a second SPI device,
at least one serial communications port, and
a second firmware storing second instructions that when executed by the second processor cause the second processor to:
capture the encoded debug trace statements in the first data format from the first SPI device,
convert the encoded debug trace statements from the first data format into a second data format to generate converted debug trace statements for transmission by the at least one serial communications port, and
transmit the converted debug trace statements in the second data format over the at least one serial communications port.

US Pat. No. 10,606,606

MULTI-PLATFORM FIRMWARE SUPPORT

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method for creating a single firmware image that supports multiple hardware platforms, comprising:receiving a first platform-specific firmware image containing executable code, the first platform-specific firmware image comprising a plurality of executable files for implementing a firmware for a first computing platform;
receiving a second platform-specific firmware image containing executable code, the second platform-specific firmware image comprising a plurality of executable files for implementing a firmware for a second computing platform;
identifying executable files that are the same in the plurality of executable files for implementing the firmware for the first computing platform and in the plurality of executable files for implementing the firmware for the second computing platform;
identifying executable files contained in the plurality of executable files for implementing the firmware for the first computing platform that are not contained in the plurality of executable files for implementing the firmware for the second computing platform;
identifying executable files contained in the plurality of executable files for implementing the firmware for the second computing platform that are not contained in the plurality of executable files for implementing the firmware for the first computing platform; and
creating a single multi-platform firmware image by:
storing the executable files that are the same in the first platform-specific firmware image containing executable code and the second platform-specific firmware image in a first volume of the single multi-platform firmware image;
storing the executable files contained in the plurality of executable files for implementing the firmware for the first computing platform that are not contained in the plurality of executable files for implementing the firmware for the second computing platform in a second volume of the single multi-platform firmware image that is nested inside the first volume; and
storing the executable files contained in the plurality of executable files for implementing the firmware for the second computing platform that are not contained in the plurality of executable files for implementing the firmware for the first computing platform in a third volume of the single multi-platform firmware image that is nested inside the first volume.

US Pat. No. 10,609,013

TWIN FACTOR AUTHENTICATION FOR CONTROLLER

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a controller comprising a processor and a memory storing computer executable code, wherein the computer executable code, when executed at the processor, is configured to:
provide a service;
receive an access message for a first user to access the service; and
in response to the access message, perform twin factor authentication for the first user by:
based on the access message, searching for information of the first user and an administrator of the system, wherein each of the first user and the administrator of the system has an identical administrative privilege level to access the service;
sending two security clearance requests based on the information of the first user and the administrator of the system, wherein the two security clearance requests comprise a first security clearance request for security clearance from the first user, and a second security clearance request for security clearance from the administrator of the system;
periodically checking whether security clearance from both the first user and the administrator of the system are received; and
determining the twin factor authentication for the first user to be successful only in response to receiving security clearance respectively from both the first user and the administrator of the system within a period of time.

US Pat. No. 10,534,618

AUTO BOOTLOADER RECOVERY IN BMC

AMERICAN MEGATRENDS INTER...

1. A method of operating a baseboard management controller (BMC), comprising:executing, at the BMC, a first loader from a first image stored in a primary storage device of the BMC, the first loader being configured to load an operating system (OS) of the BMC from an OS image stored in the primary storage device;
re-executing, at the BMC, the first loader from the first image, when the executing is not successful and a number of re-execution is less than a predetermined number;
when the execution of the first loader is not successful and the number of re-execution is greater than or equal to the predetermined number:
(a) locating a second image from a secondary storage device; and
(b) replacing, by the first loader from the first image at the BMC, the first image stored in the primary storage device with the second image;
(c) executing, at the BMC, a second loader from the second image subsequent to the locating the second image;
(d) replacing, by the second loader from the second image at the BMC, the second image and the OS image stored in the primary device with a third image;
(e) resetting the BMC; and
(f) executing, at the BMC, a third loader from the third image stored in the primary storage device of the BMC.

US Pat. No. 10,445,081

TECHNIQUES OF AUTOMATICALLY GENERATING DEPENDENCIES FOR APPLICATIONS IN EMBEDDED SYSTEMS

AMERICAN MEGATRENDS INTER...

1. A method of installing firmware to an embedded-system device, comprising:obtaining, at an installation device external to the embedded-system device, an organizational file of an executable program;
determining, at the installation device, a list of libraries that are depended to execute the executable program;
obtaining, at the installation device, the list of libraries from one or more library collections, the one or more library collections including at least one library that is not in the list of libraries;
generating, at the installation device, firmware for the embedded-system device with the executable program and the list of libraries without the at least one library;
installing the firmware from the installation device to a storage device of the embedded-system device, wherein the storage device is external to a primary memory of the embedded-system device, wherein a processing unit of the embedded-system device loads the executable program and the list of libraries from the storage device into the primary memory for execution.

US Pat. No. 10,419,436

METHOD TO IMPROVE KEYBOARD, VIDEO AND MOUSE (KVM) SECURITY ON BLOCKING INCOMING KVM PRIVILEGE REQUEST

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a management device, comprising a processor and a non-volatile memory storing computer executable code, wherein the computer executable code, when executed at the processor, is configured to:
establish a first KVM session in response to a first privilege request;
provide options of KVM authorities;
select one of the options based on a first user instruction received from the first KVM session; and
upon receiving a second privilege request requesting for a second KVM session, perform a first operation based on the selected one of the options;
wherein the options of KVM authorities comprise a deny access option, and when the selected one of the options is the deny access option, the first operation is denying the second privilege request;
wherein the options of KVM authorities comprise a video only option, and when the selected one of the options is the video only option, the first operation is establishing the second KVM session, and the second KVM session allows video redirection but not keyboard and mouse redirection; and
wherein different responses to privilege requests from different users may be automatically defined, such that the video only option may be chosen for users in a same group or requests from a local area network based on IP address, and the deny access option may be chosen for users outside the same group or requests from outside the local area network.

US Pat. No. 10,417,006

UNIFIED METHOD TO SEND BIOS POST CODES TO BMC

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system comprising a baseboard management controller (BMC) having a memory and at least one processor coupled to the memory, comprising:emulating, executed by the processor of the BMC, a Universal Serial Bus (USB) device within the BMC, wherein the emulated USB device is a device in the Human Interface Device (HID) Class defined by the USB Specification;
exposing, executed by the processor of the BMC, the emulated USB device to a host of the BMC in the computer system;
receiving, executed by the processor of the BMC, data from Basic Input/Output System (BIOS) of the host through a USB HID control pipe of the emulated USB device, the control pipe being different from a data pipe of the emulated USB device, wherein the data are generated by initialization and tests routines of the BIOS during testing hardware components of the host; and
storing the data at the BMC.

US Pat. No. 10,402,204

MULTI-PLATFORM FIRMWARE SUPPORT

American Megatrends Inter...

1. A computer-implemented method comprising:accessing a plurality of platform-specific firmware images;
comparing first binary content to other binary content of files in the plurality of platform-specific firmware images to identify a first file that is the same in all of the plurality of platform-specific firmware images;
determining that second binary content differs from third binary content in the plurality of platform-specific firmware images to identify a second file having a first version in a first of the plurality of platform-specific firmware images and a second version in a second of the plurality of platform-specific firmware images;
copying the first file to a core firmware volume of a multiplatform image;
copying the first version of the second file to the core firmware volume of the multiplatform image;
copying the second version of the second file to a platform-specific firmware volume of the multiplatform image, the platform-specific firmware volume corresponding to the second of the plurality of platform-specific firmware images; and
modifying the first version of the second file to execute when the multiplatform image is used to boot a computer implementing a platform corresponding to the second of the plurality of platform-specific firmware images.

US Pat. No. 10,628,309

LOADING A SERIAL PRESENCE DETECT TABLE ACCORDING TO JUMPER SETTINGS

American Megatrends Inter...

1. A computer implemented method, comprising: accessing, by one or more processors, one or more general purpose input/output (GPIO) pins, wherein the one or more GPIO pins comprise first GPIO pins, second GPIO pins, and third GPIO pins, wherein the first GPIO pins correspond to a channel type and the second GPIO pins and the third GPIO pins indicate a memory size;determining, by the one or more processors, a state of the one or more GPIO pins; determining, by the one or more processors, a serial presence detect (SPD) table using at least the state of the one or more GPIO pins, the SPD table determined by accessing a correspondence table indicating that the SPD table corresponds to the state of the one or more GPIO pins, wherein the correspondence table is stored in a non-volatile random access memory (NVRAM); loading, by the one or more processors, the SPD table to a memory reference code structure.

US Pat. No. 10,628,176

FIRMWARE CONFIGURATION USING REST OVER IPMI INTERFACE

American Megatrends Inter...

1. A computer-implemented method for configuring a firmware of a computing system, comprising:transmitting data for generating a remote firmware setup user interface (UI) from the firmware to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface, wherein the data for generating the remote firmware setup UI comprises current firmware configuration settings for the computing system;
generating, at the BMC, the remote firmware setup UI using the data for generating a remote firmware setup UI received from the firmware;
receiving new firmware configuration settings at the BMC from a management client by way of the remote firmware setup UI;
transmitting the new firmware configuration settings from the BMC to the firmware over the REST over IPMI interface; and
configuring the computing system with the new firmware configuration settings.

US Pat. No. 10,592,393

FIRMWARE DEBUG TRACE CAPTURE

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method comprising:capturing a first debug trace statement during a boot sequence of a computer;
writing the first debug trace statement to a first memory location during a pre-extensible firmware interface initialization (PEI) phase of the boot sequence of the computer;
copying the first trace statement from the first memory location to a second memory location;
capturing a second debug trace statement during the boot sequence of the computer;
writing the second debug trace statement to the second memory location; and
copying the first debug trace statement and the second debug trace statement from the second memory location to a file.

US Pat. No. 10,572,366

HARDWARE INVENTORY SYSTEM

American Megatrends Inter...

1. A computer-implemented method, comprising:commencing a system restart;
invoking a BIOS boot process that is performed by a BIOS;
invoking, by the BIOS, prior to loading an operating system, a collection module included in the BIOS to analyze compiled system data during the BIOS boot process;
generating, by the collection module, a system hardware report comprising data received from the collection module;
transmitting the system hardware report to a transfer computer to send the system hardware report to an inventory server that collects a plurality of system hardware reports collected from a plurality of systems during respective BIOS boot processes, the collection module causing the transmitting;
receiving a system update based on the plurality of system hardware reports; and
invoking a bootstrap loader to load the operating system.

US Pat. No. 10,572,220

METHOD FOR CONTROLLING CONTROLLER AND HOST COMPUTER WITH VOICE

AMERICAN MEGATRENDS INTER...

1. A method for controlling a controller with voice, comprising:receiving, by a mobile device communicatively connected to the controller via a network, a voice input;
performing voice recognition, by the mobile device, to the voice input to obtain a recognized voice input;
generating, by the mobile device, an instruction for the controller or a computing device communicatively connected to the controller based on the recognized voice input, to remotely control the controller or the computing device, wherein the computing device is a host computing device of the controller that enables out-of-band (OOB) voice control by the voice input at the mobile device;
sending, by the mobile device, the instruction to the controller via the network;
determining, by the controller, that the instruction is a controller instruction for the controller or a host instruction for the computing device, wherein the host instruction comprises a hotkey input signal or a mouse input signal; and
performing, by the controller, a corresponding operation based on the instruction, wherein in response to determining the instruction as the host instruction for the computing device and the host instruction comprises the hotkey input signal or the mouse input signal, the corresponding operation comprises performing keyboard-video-mouse (KVM) redirection to redirect the host instruction to the host computing device.

US Pat. No. 10,572,242

FIRMWARE UPDATE USING REST OVER IPMI INTERFACE

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method for updating a firmware of a computing system, comprising:transmitting a request for a firmware update instruction from the firmware to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
responsive to receiving the request at the BMC, providing data identifying a location of a firmware image to the firmware over the REST over IPMI interface;
retrieving, by way of the firmware, the firmware image from the location of the firmware image identified by the data provided by the BMC; and
updating, by way of the firmware, the firmware of the computing system using the firmware image.

US Pat. No. 10,489,582

FIRMWARE SECURITY VULNERABILITY VERIFICATION SERVICE

American Megatrends Inter...

1. A computer-implemented method for identifying security vulnerabilities in a firmware, comprising:receiving a request at a network service to identify the security vulnerabilities in the firmware, the request comprising data identifying the security vulnerabilities;
responsive to receiving the request,
generating, by the network service, a white box testing application for testing source code for the firmware for the security vulnerabilities, the generating comprising adding respective identifiers for the security vulnerabilities to the white box testing application, and
generating, by the network service, a black box testing application for testing the firmware for the security vulnerabilities, the generating comprising adding the respective identifiers to the black box testing application; and
providing a response to the request comprising the white box testing application and the black box testing application.

US Pat. No. 10,481,893

IDENTIFYING AND RESOLVING FIRMWARE COMPONENT DEPENDENCIES

American Megatrends Inter...

1. A computer-implemented method, comprising:providing a graphical user interface for defining dependency information for a firmware project, wherein the firmware project comprises a plurality of firmware components, and wherein the dependency information defines one or more of
(i) a group of optional dependencies for the plurality of firmware components, a first optional dependency of the group of optional dependencies being defined, using a first dependency expression, a first label operator, a first source control path, and a first label,
(ii) a group of mandatory dependencies for the plurality of firmware components, a first mandatory dependency of the group of mandatory dependencies being defined using a second dependency expression, a second label operator, a second source control path, and a second label, or
(iii) a group of incompatible dependencies for the plurality of firmware components, a first incompatible dependency of the group of incompatible dependencies being defined using a third dependency expression, a third label operator, a third source control path, and a third label;
storing the dependency information;
evaluating the dependency information for the plurality of firmware components to identify one or more unsatisfied dependencies in the firmware project;
in response to identifying at least one unsatisfied dependency in the firmware project, receiving input information indicating to resolve the at least one unsatisfied dependency; and
resolving the at least one unsatisfied dependency by performing at least a first operation of a group of operations comprising updating a firmware component in the firmware project.

US Pat. No. 10,430,201

MULTI-PLATFORM FIRMWARE SUPPORT

American Megatrends Inter...

1. A computer-implemented method comprising:accessing a multiplatform firmware image to obtain a platform globally unique identifier (GUID) identifying a particular hardware platform for a computer, wherein the multiplatform firmware image supports a plurality of hardware platforms by comprising:
a core firmware volume that includes a set of common files that are commonly usable for booting multiple different hardware platforms of the plurality of hardware platforms, and
a plurality of platform-specific firmware volumes that include sets of platform-specific files that are specific for booting individual hardware platforms of the plurality of hardware platforms;
installing a platform identifier interface including the platform GUID;
executing a particular set of platform-specific files contained in a particular platform-specific firmware volume of the plurality of platform-specific firmware volumes including the platform GUID and executing the set of common files of the core firmware volume including the platform GUID based at least in part on:
dependency expressions of at least some files contained in the particular platform-specific firmware volume and the set of common files of the core firmware volume, and
the platform identifier interface.

US Pat. No. 10,430,222

CLOUD BASED PLATFORM SIMULATION FOR MANAGEMENT CONTROLLER DEVELOPMENT

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a cloud network comprising one or more processors that execute computer executable code and computing resources, configured to utilize the computing resources to provide a storage service storing the computer executable code, wherein the computer executable code comprises:
a hypervisor configured to be executed at the one or more processor on the cloud network to provide a first domain; and
a plurality of virtual machines (VMs), configured to correspondingly simulate a plurality of simulated management controllers and a plurality of simulated host computing devices, wherein each of the VMs comprises a firmware module for a corresponding one of the simulated management controllers, and a simulator module configured to simulate a corresponding one of the simulated host computing devices for the corresponding one of the simulated management controllers;
wherein the hypervisor, when executed at the one or more processor on the cloud network, is configured to provide the first domain on the cloud network, allowing the plurality of VMs to be executed simultaneously in the first domain as a plurality of VM instances, such that the VM instances share the computing resources of the cloud network as a hardware host;
wherein each of the VMs, when executed at the one or more processor in the first domain on the cloud network as a corresponding one of the VM instances, is configured to:
execute the corresponding simulator module to provide the corresponding one of the simulated host computing devices and at least one simulated device connected to the corresponding one of the simulated host computing devices;
execute the corresponding firmware module to provide the corresponding one of the simulated management controllers, such that the corresponding one of the simulated management controllers is configured to receive at least one output signal from the corresponding one of the simulated host computing devices or from the at least one simulated device connected to the corresponding one of the simulated host computing devices; and
receive, by the corresponding simulating module from a library program of a plurality of library programs stored in the corresponding firmware module, a command for the corresponding one of the simulated host computing devices or the at least one simulated device;
control the corresponding simulator module to generate the at least one output signal as a response to the command based on configuration data of the corresponding one of the simulated host computing devices or the at least one simulated device connected to the corresponding one of the simulated host computing devices; and
send the at least one output signal to the corresponding firmware module.

US Pat. No. 10,642,623

PRESERVING FIRMWARE SETTINGS DURING FIRMWARE UPDATES

American Megatrends Inter...

1. A computer-implemented method, comprising:receiving a firmware update associated with a BIOS of a computing system;
creating a platform level data model (“PLDM”) table that defines data structures and messages that are usable for communicating setup configurations that correspond to firmware settings of the BIOS;
writing, into the PLDM table, one or more particular setup configurations that are set to one or more corresponding non-default firmware settings of the BIOS;
storing the PLDM table in a storage location that is not overwritten or corrupted during an installation of the firmware update;
subsequent to storing the PLDM table, causing the computing system to perform at least a portion of the installation of the firmware update to update the BIOS of the computing system; and
subsequent to performance of the at least the portion of the installation of the firmware update:
importing the PLDM table that defines the data structures and the messages that are usable for communicating the setup configurations that correspond to the firmware settings of the BIOS, and
restoring the one or more particular setup configurations to the one or more corresponding non-default firmware settings of the BIOS using at least some of the data structures and the messages that are defined by the PLDM table.

US Pat. No. 10,628,285

DYNAMIC CONFIGURATION OF AVAILABILITY OF DEBUGGING MESSAGES

American Megatrends Inter...

1. A computer-implemented method, comprising:configuring, at a runtime of a firmware, a level of recordation of debugging messages during execution of the firmware in a debugging mode of operation;
configuring, at the runtime of the firmware, at least one bitmask associated with the level of recordation, a first bitmask of the at least one bitmask being indicative of a selection of one or more types of respective debugging messages to be available during the execution of the firmware in the debugging mode of operation;
executing the firmware in the debugging mode of operation; and
providing, based at least partially on the at least one bitmask, a debugging message during the execution of the firmware in the debugging mode of operation, the debugging message having a first type of the one or more types.

US Pat. No. 10,572,435

TECHNIQUES OF ACCESSING SERIAL CONSOLE OF BMC USING HOST SERIAL PORT

AMERICAN MEGATRENDS INTER...

1. A method of operating an embedded-system device, comprising:providing to a host of the embedded-system device control of a first serial port controller at the embedded-system device;
providing to an operational program at the embedded-system device control of a second first serial port controller of the embedded-system device;
connecting a serial port at the embedded-system device with the first serial port controller;
determining whether the embedded-system device is in a predetermined condition;
when the embedded-system device is not in the predetermined condition:
receiving, at the first serial port controller, first command or data from the host for driving the first serial port controller;
generating, at the first serial port controller, first signals in accordance with the first command or data; and
outputting the first signals at the serial port;
when the embedded-system device is in the predetermined condition:
disconnecting the serial port from the first serial port controller;
connecting the serial port with a second serial port controller at the embedded-system device;
receiving, at the second serial port controller, second command or data from the operational program for driving the second serial port controller;
generating, at the second serial port controller, second signals in accordance with the second command or data; and
outputting the second signals at the serial port.

US Pat. No. 10,506,028

TECHNIQUES OF PRESERVING SERVICE REQUEST PAYLOADS

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system, comprising:providing, at a first device of the computer system, a service interface for retrieving stored service request templates for executing actions on a computing pod containing pooled hardware resources;
receiving, at the service interface of the first device and from a second device, a template request for a service request template for constructing a reused service request, the reused service request requesting the computing pod to compose a hardware node in accordance with hardware requirements contained in the reused service request;
retrieving, at the service interface of the first device, the service request template from a data store in accordance with information provided by the template request; and
sending, at the service interface of the first device and to the second device, the service request template in a response to the template request;
receiving, at the second device, the service request template from the first device;
constructing, at the second device, the reused service request based on the service request template;
sending, at the second device, the reused service request to a pod manager of the computing pod; and
allocating, at the pod manager, hardware resources of the computing pod to compose a hardware node in accordance with the reused service request.

US Pat. No. 10,592,438

FIRMWARE CONFIGURATION THROUGH EMULATED COMMANDS

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method for configuring a firmware, the method comprising:initializing a target computer and a firmware of the target computer, the target computer having at least one universal serial bus (“USB”) port;
determining if a firmware configuration device is detected at the target computer, the firmware configuration device interfaced with the at least one USB port and being detectable as an emulated keyboard at the at least one USB port;
responsive to detecting the firmware configuration device, initializing a firmware configuration module to communicate with the firmware configuration device;
sending, by means of the at least one USB port, a first command code to the firmware configuration device, wherein the first command code comprises a first combination of binary values for keyboard status lights, the first command code indicating that the target computer is ready to receive firmware configuration data to change a configuration of the firmware;
receiving emulated keystroke data from the firmware configuration device in response to the first command code, the emulated keystroke data defining firmware configuration data for configuring the firmware; and
sending, by means of the at least one USB port, a second command code to the firmware configuration device in response to the firmware configuration data, wherein the second command code comprises a second combination of binary values for the keyboard status lights, the second command code indicating a state of receipt of the firmware configuration data to change the configuration of the firmware.

US Pat. No. 10,452,386

NON-DESTRUCTIVE UPDATE OF DISCRETE COMPONENTS OF FIRMWARE

American Megatrends Inter...

1. A method, comprising:sending, as part of a boot-up process of a computing system, a query message to a baseboard management controller (BMC) to determine availability of an update for a firmware of the computing system, the firmware stored in a non-volatile memory device of the computing system;
receiving, from the BMC, responsive to the query message, a response message including an instruction to retrieve a group of firmware file system (FFS) files that form the update from a virtual drive device provided by the BMC;
retrieving the group of FFS files from the virtual drive device;
retaining the group of FFS files in a main memory device;
identifying an FFS file to execute as part of the boot-up process, the FFS file included in the firmware stored in the non-volatile memory device;
determining that the FFS file corresponds to a first FFS file in the group of FFS files; and
executing the first FFS file from the main memory device as part of the boot-up process.

US Pat. No. 10,684,976

AUTOMATIC BUS RESOURCE ADJUSTMENT IN A MULTIPLE ROOT BRIDGE COMPUTING SYSTEM

American Megatrends Inter...

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a processor of a computing device, cause the processor to:enumerate buses of a plurality of root bridges; and
responsive to determining that at least one out-of-resource condition occurred during the enumeration of the buses of the plurality of root bridges,
determine a number of required buses for each root bridge causing an out-of-resource condition during enumeration of the buses of the plurality of root bridges, and
reallocate a number of available buses between the plurality of root bridges such that each root bridge is allocated a number of the available buses greater than or equal to the number of required buses, wherein the number of required buses for a first root bridge of the plurality of root bridges causing an out-of-resource condition is determined by:
enumerating bridge devices coupled to the first root bridge;
programming primary, secondary, and subordinate bus numbers for a first bridge device coupled to the first root bridge using a plurality of bus numbers to determine the number of required buses for the first bridge device;
storing data identifying the number of required buses for the first bridge device; and
clearing the primary, secondary, and subordinate bus numbers for the first bridge device.

US Pat. No. 10,642,646

TECHNIQUES OF SECURELY PERFORMING LOGIC AS SERVICE IN BMC

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system, the computer system including a host, comprising:obtaining, at an initialization component of the host, a process file for dynamically creating a processing component on a management platform on a baseboard management controller (BMC) of the host, the process file defining a logic to be implemented by the processing component, the initialization component operating to load an operating system of the host;
sending the process file to the BMC;
receiving an interrupt when the host is operating under control of the operating system;
invoking a routine of the initialization component in response to receiving the interrupt, the routine generating the message, wherein the message is sent to the BMC in the routine; and
sending a message to the BMC, the message including data to be processed by the processing component.

US Pat. No. 10,587,453

METHOD AND APPARATUS FOR IPMI-BRIDGE-SERVER FOR NON-IPMI DEVICES

AMERICAN MEGATRENDS INTER...

1. A method for expanding management functions of an Intelligent Platform Management Interface (IPMI) control system to a plurality of non-IPMI protocol specific managed devices, comprising:executing, at a processor of the IPMI control system, a program to be in communication with a group of first non-IPMI protocol specific managed devices through a first non-IPMI protocol control point and a first communication link, and a group of second non-IPMI protocol specific managed devices through a second non-IPMI protocol control point and a second communication link, wherein the program, when executed, defines:
an IPMI-defined system interface configured to receive a first IPMI message from and transmit a second IPMI message to a local management computer; and
a network interface configured to receive a third IPMI message from and transmit a fourth IPMI message to a remote management computer,
wherein the system interface is separate and independent from the network interface; and
receiving, at the program and through a network interface controller of the IPMI control system, IPMI management requests each for performing a non-IPMI protocol specific management function at one of the group of first non-IPMI protocol specific managed devices or the group of second non-IPMI protocol specific managed devices,
wherein each of the IPMI management requests includes data for constructing one of the first and the third IPMI messages in accordance with IPMI communication protocol, the one of the first and the third IPMI messages including at least a protocol specific IPMI OEM command, a device identifier of a selected managed device, and a corresponding protocol command, and a related IPMI OEM command value, and
wherein an IPMI message module is configured to receive the one of the first and the third IPMI messages, extract the at least the protocol specific IPMI OEM command, and forward the device identifier, the corresponding protocol command and the related IPMI OEM command value to a management program,
wherein the management program accepts the one of the first and the third IPMI messages, translates the at least the protocol specific IPMI OEM command into a protocol specific command, sends the protocol specific command to the selected managed device, and instructs the selected managed device to perform one or more protocol specific management functions, and the management program further receives response from the selected managed device and formulates the response as one of the second and fourth IPMI messages to a corresponding management computer, and
wherein the first communication link is a first bi-directional mobile communication network and the second communication link is a second bi-directional mobile communication network different from the first bi-directional mobile communication network, and each of the first bi-directional mobile communication network and the second bi-directional mobile communication network is selected from a group consisting of a Code Division Multiple Access (CDMA) communication network, a General Packet Radio Service (GPRS) mobile communication network, and a satellite communication network.

US Pat. No. 10,528,397

METHOD, DEVICE, AND NON-TRANSITORY COMPUTER READABLE STORAGE MEDIUM FOR CREATING VIRTUAL MACHINE

AMERICAN MEGATRENDS INTER...

1. A method comprising:receiving, via a controlling Baseboard management controller (BMC), a request for a virtual machine (VM);
providing, via the controlling BMC, a notification for requesting to create the VM to one or more candidate BMCs, to make at least one of the candidate BMCs provide an available response in response to resources monitored by the at least one of the candidate BMCs are sufficient for the VM, wherein the resources include CPU loading, memory usage, or storage usage, wherein the notification for requesting is terminated when the available response is received or a timeout occurs; and
assigning, via the controlling BMC, an assigned BMC to perform a VM creating operation according to the available response, such that the assigned BMC requests one or more processors corresponding thereto to create the VM;
wherein the controlling BMC and the one or more candidate BMC subscribe a first communication channel, and the controlling BMC provide the notification for requesting the VM to the one or more candidate BMCs via the first communication channel;
wherein the controlling BMC provides the notification for requesting the VM with a resource requirement via the first communication channel, so as to make the one or more candidate BMCs determine whether resources monitored thereby satisfy the resource requirement, and make the one or more candidate BMCs accordingly determine whether to provide the available response, wherein several candidate BMCs in the candidate BMCs are available to create the request VM, the controlling BMC assign one of the several candidate BMCs to create the VM according to a priority, wherein the priority is present, determined according to the response times relative to the notification for requesting the VM, or determined according to the resources in the several candidate BMCs.

US Pat. No. 10,649,792

CLONING OF FIRMWARE CONFIGURATION SETTINGS USING REST OVER IPMI INTERFACE

American Megatrends Inter...

13. A computing system, comprising:one or more processors; 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 system to:
obtain firmware configuration settings for a first computing system from a baseboard management controller (BMC) of the first computing system, the firmware configuration settings provided by a firmware of the first computing system to the BMC over a first representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
receiving a request from a firmware of a second computing system for the firmware configuration settings obtained from the first computing system following a reboot of the second computing system; and
responsive to the request, provide the firmware configuration settings to the BMC of the second computing system, whereby
the BMC of the second computing system provides the firmware configuration settings to the firmware of the second computing system via a second REST over IPMI interface, and
the firmware of the second computing system replaces current firmware configuration settings of the second computing system with the firmware configuration settings obtained from the first computing system.

US Pat. No. 10,558,468

MEMORY CHANNEL STORAGE DEVICE INITIALIZATION

American Megatrends Inter...

1. A computer-implemented method for initializing a memory channel storage (“MCS”) device, the computer-implemented method comprising performing computer-implemented operations for:beginning a boot process for a computing system by beginning execution of a firmware;
determining that prior address data is stored for the MCS device in a storage device physically separate from the MCS device, wherein the MCS device is installed in a dual in-line memory module slot, and wherein the prior address data is present in the storage device prior to the beginning of the boot process; and
responsive to a determination that the prior address data is stored for the MCS device, reserving an address range for the MCS device based on the prior address data.

US Pat. No. 10,691,562

MANAGEMENT NODE FAILOVER FOR HIGH RELIABILITY SYSTEMS

AMERICAN MEGATRENDS INTER...

1. A system, comprising:two management devices, each comprising a processor and a non-volatile memory storing computer executable code, wherein one of the two management devices functions as an active node, and the other one of the two management devices functions as a passive node; and
a detection and reversal device respectively connected to the two management devices, and configured to determine status of the active node and when the active node fails, send an activation signal to the passive node;
wherein the computer executable code, when executed at the processor of the active node, is configured to: establish a periodic communication directly between the active node and the passive node to indicate that the active node is currently functioning; and
wherein the computer executable code, when executed at the processor of the passive node, is configured to:
in response to not receiving the periodic communication from the active node for a predetermined time, send a probe signal from the passive node to the detection and reversal device to confirm the status of the active node; and
in response to receiving the activation signal, switch the passive node to the active node.

US Pat. No. 10,684,843

FIRMWARE UPDATES USING UPDATED FIRMWARE FILES IN A DEDICATED FIRMWARE VOLUME

American Megatrends Inter...

1. A computer-implemented method for updating firmware file system (FFS) file, the method comprising:identifying, by one or more processors, a first FFS file during boot-up of a computing system, the first FFS file being stored in a first firmware volume within a non-volatile memory included in the computing system;
identifying, by the one or more processors, during the boot-up of the computing system, a first identifier that identifies the first FFS file;
determining, by the one or more processors, during the boot-up of the computing system, that a second FFS file is identified by the first identifier and is stored in a second firmware volume within the non-volatile memory, wherein the second firmware volume being separate from the first firmware volume, and the second FFS file is an updated version of the first FFS file;
determining, by the one or more processors, using a launch list and the first identifier, that the second FFS file is to be launched during boot-up of the computing system, wherein the launch list identifies whether a updated version of a particular FFS file is allowed to be executed when the updated version of the particular FFS file is detected; and
executing, by the one or more processors, based at least in part on the determining that the second FFS file is identified by the first identifier and the launch list identifies the second FFS file is allowed to be executed, instructions contained in the second FFS file during the boot-up of the computing system.

US Pat. No. 10,672,044

PROVISIONING OF HIGH-AVAILABILITY NODES USING RACK COMPUTING RESOURCES

AMERICAN MEGATRENDS INTER...

1. A method of managing composed-nodes of a computing pod, comprising:receiving a data object for composing a target composed-node and specifying a hardware configuration of the target composed-node;
determining that the data object includes an indication for high-availability;
composing a collection of composed-nodes that includes at least two composed-nodes each being a hardware node in accordance with the hardware configuration specified by the data object, including: for a given node of the collection of composed-nodes, selecting each hardware element of the given node from a pool of hardware elements of a same type available in one or more computing racks in accordance with the hardware configuration; and
subsequent to the composing the collection of composed-nodes, configuring the collection of composed-nodes to function as the target composed-node, including:
provisioning one or more high-availability operation components to each of the at least two composed-nodes, the one or more high-availability operation components operating the at least two composed-nodes to handle tasks directed to the target composed-node, and
provisioning two or more virtual machines (VMs) to each of the at least two composed-nodes.

US Pat. No. 10,764,287

SECURE DEFAULT USER ACCOUNT FOR EMBEDDED SYSTEMS

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system, comprising:sending, at a service processor of the computer system and to a Dynamic Host Configuration Protocol (DHCP) server, a request-to-acquire for acquiring an Internet Protocol (IP) address;
receiving a response from the DHCP server, the response including a first user name and an IP address assigned to the service processor by the DHCP server;
creating and configuring, at the service processor, a user account in association with the first user name on the service processor, the user account allowing access to the service processor;
receiving a request-to-log-on for logging onto the service processor, the request-to-log-on including user credentials;
determining whether the user credentials include the first user name;
sending the user credentials to an authentication server for authentication in response to a determination that the user credentials include the first user name; and
discarding the request-to-log-on in response to a determination that the user credentials do not include the first user name.

US Pat. No. 10,754,661

NETWORK PACKET FILTERING IN NETWORK LAYER OF FIRMWARE NETWORK STACK

American Megatrends Inter...

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:provide a network protocol stack in a pre-boot execution environment, the pre-boot execution environment provided by a unified extensible firmware interface (UEFI)-compliant firmware;
receive a plurality of network packets at a network layer in the network protocol stack;
determine whether individual ones of the plurality of network packets received at the network layer meet one or more pre-defined criteria;
in response to determining that the individual ones of the plurality of network packets received at the network layer meet the one or more pre-defined criteria, provide the individual ones of the plurality of network packets according to the one or more pre-defined criteria to a transport layer in the network protocol stack; and
in response to determining that the individual ones of the plurality of network packets received at the network layer do not meet the one or more pre-defined criteria, discard the individual ones of the plurality of network packets.

US Pat. No. 10,748,245

SCALING A FIXED FONT USED BY A FIRMWARE INTERFACE

American Megatrends Inter...

1. A computer-implemented method, comprising:determining, by a computing device, a resolution of a display device connected to the computing device, the resolution including a horizontal resolution and a vertical resolution;
determining, by the computing device, to scale glyphs of a font based at least in part on the resolution and a conversion factor to scale the glyphs, wherein the determining comprises comparing the resolution to a default resolution of a firmware interface of the computing device;
generating, by the computing device, the conversion factor by, at least, dividing the horizontal resolution by a default horizontal resolution associated with the default resolution of the firmware interface of the computing device or dividing the vertical resolution by a default vertical resolution associated with the default resolution of the firmware interface; and
scaling, by the computing device, the glyphs using the conversion factor.

US Pat. No. 10,742,496

PLATFORM SPECIFIC CONFIGURATIONS SETUP INTERFACE FOR SERVICE PROCESSOR

AMERICAN MEGATRENDS INTER...

8. An apparatus, the apparatus being a service processor, comprising:a memory; and
at least one processor coupled to the memory and configured to:
generate a user interface on the service processor, the user interface providing access to platform specific configurations of the service processor;
receive, through the user interface, an input for modifying a first configuration data item of the platform specific configurations, wherein the first configuration data item specifies a particular pin connection of a processing unit of the service processor; and
modify the first configuration data item in accordance with the input.
US Pat. No. 10,691,468

TECHNIQUES OF RETRIEVING BIOS DATA FROM BMC

AMERICAN MEGATRENDS INTER...

8. A computer system, comprising:a baseboard management controller (BMC), including
a first memory; and
first at least one processor coupled to the first memory and configured to:
receive, through a management platform on the BMC, a first part of initialization data from an initialization component of a host of the BMC;
receive an indication of a location at an initialization storage device of the host;
obtain access to the initialization storage device; and
read a second part of the initialization data from the location of the initialization storage device.

US Pat. No. 10,664,551

INTUITIVE USER INTERFACE (UI) FOR DEVICE OR VENDOR INDEPENDENT NETWORK SWITCH MANAGEMENT VIA EMBEDDED MANAGEMENT CONTROLLER

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a network switch having a Simple Network Management Protocol (SNMP) interface; and
a management controller communicatively connected to the network switch through the SNMP interface, the management controller comprising a processor and a storage device storing computer executable code, wherein the computer executable code, when executed at the processor, is configured to:
provide a user interface (UI) in a web page format, wherein the UI is configured to receive and store parsed information of a management information base (MIB) file corresponding to the network switch, and display the parsed information of the MIB file in a hierarchical organization;
in response to receiving a web page request for the UI from a remote computing device through an out-of-band (OOB) network, send the UI to the remote computing device, such that the UI is displayable at the remote computing device;
receive, through the UI, the parsed information of the MIB file from the remote computing device;
process the parsed information of the MIB file received from the remote computing device, and display, through the UI, the processed parsed information of the MIB file in the hierarchical organization; and
establish a communication between the management controller and the network switch through the SNMP interface based on the parsed information of the MIB file, wherein the management controller functions as a client of the communication and the network switch functions as a server of the communication,
wherein the remote computing device comprises a parser application configured to parse the MIB file and generate the parsed information of the MIB file.

US Pat. No. 10,664,598

FIRMWARE SECURITY PATCH DEPLOYMENT

American Megatrends Inter...

1. A computer-implemented method, comprising:at a boot time of a computer, determining if a flag has been set indicating that the computer has received one or more volume of files comprising at least one update file for replacing at least one firmware file of a firmware volume of installed computer firmware; and
in response to determining that the flag has been set,
copying, the volume of files, to a computer memory;
copying the installed computer firmware to the computer memory; and
booting the computer from the computer memory using the volume of files and the installed computer firmware, wherein the booting utilizes the at least one update file instead of the at least one firmware file.

US Pat. No. 10,635,818

BLOCKING RUNTIME FIRMWARE VARIABLE ACCESS

American Megatrends Inter...

1. A computer-implemented method, comprising:receiving, by one or more processors, a first request to access a first firmware variable during runtime of a computing device, the first request comprising a first firmware variable identifier corresponding to the first firmware variable;
determining, responsive to the first request, whether a table associated with the computing device indicates that access to the firmware variable is permitted during runtime;
responsive to determining that the table associated with the computing device indicates that access to the first firmware variable is permitted during runtime, determining that the first firmware variable identifier is included in a runtime blocklist; and
blocking access to the first firmware variable during runtime, responsive to determining that the first firmware variable identifier is included in the runtime blocklist.

US Pat. No. 10,635,840

BANNER NOTIFICATION IN LOCKED HOST MONITOR

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a computing device having a display device, at least one input device and a video graphics array (VGA) card configured to control the display device;
a management controller communicatively connected to the computing device and operable independent and separately from the computing device, the management controller comprising a processor, a VGA adapter configured to control the display device of the computing device, and a non-volatile memory storing computer executable code; and
a remote computing device communicatively connected to the management controller via a network;
wherein the computer executable code, when executed at the processor of the management controller, is configured to:
receive a locking command from the remote computing device;
in response to receiving the locking command,
generate an intelligent platform management interface (IPMI) message including a locking instruction, and send the IPMI message including the locking instruction to the computing device to lock the display device of the computing device; and
generate a message display instruction comprising a message to be displayed, and send the message display instruction to the locked display device of the computing device through the VGA adapter to display the message on the locked display device of the computing device;
when the display device of the computing device is locked, receive an interrupt notification from the computing device indicating an access interrupt is received through the at least one input device of the computing device; and
in response to receiving the interrupt notification, generate an alert request indicating the access interrupt, and send the alert request to the remote computing device via the network, wherein the remote computing device, in response to the alert request, is configured to generate a response to the alert request to either unlock the display device of the computing device or to deny access of the computing device.

US Pat. No. 10,614,251

RESTRICTING THE USE OF A FIRMWARE TOOL TO A SPECIFIC PLATFORM

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method, comprising:receiving, at a computing system, a request to execute a firmware tool;
responsive to the request, reading at least a first firmware globally unique identifier (GUID) from a first Advanced Configuration and Power Interface (ACPI) table;
verifying a digital signature associated with the first firmware GUID;
responsive to verifying the digital signature, determining if the first firmware GUID is the same as a second firmware GUID from a second ACPI table;
responsive to determining that the first firmware GUID is the same as the second firmware GUID, determining if a second firmware tool GUID is the same as one or more first firmware tool GUIDs; and
enabling execution of the firmware tool responsive to determining that the second firmware tool GUID is the same as at least one of the one or more first firmware tool GUIDs, wherein the at least one of the one or more first firmware tool GUIDs is associated with the firmware tool.

US Pat. No. 10,616,348

SYSTEM AND METHOD FOR PROVIDING MULTIPLE IPMI SERIAL OVER LAN (SOL) SESSIONS IN MANAGEMENT CONTROLLER STACK

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a management controller, comprising a processor and a non-volatile memory storing computer executable code; and
at least one remote computing device communicatively connected to the management controller via a local area network (LAN);
wherein the computer executable code, when executed at the processor, is configured to:
configure a plurality of serial ports for a plurality of nodes, wherein the management controller is communicatively connectable to each of the nodes respectively via one of the serial ports;
receive, from one of the at least one remote computing device via the LAN, a serial over LAN (SOL) request to establish a SOL session to access a specific node of the nodes via one of the serial ports;
in response to the SOL request, establish the SOL session between the specific node and the remote computing device sending the SOL request; and
when a plurality of the SOL sessions is established between the at least one remote computing device and the plurality of nodes, store information of each of the SOL sessions independently.

US Pat. No. 10,613,850

PERFORMANT AND SECURE STORAGE AND RETRIEVAL OF FIRMWARE VARIABLES

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method, comprising:receiving a request at a first firmware component executing in a secure memory to store first data in a non-volatile memory;
responsive to the request to store the first data in the non-volatile memory, storing, by the first firmware component, the first data in the non-volatile memory and in a first buffer located in the secure memory;
copying, by the first firmware component, contents of the first buffer located in the secure memory to a non-secure memory accessible to a second firmware component executing in the non-secure memory;
providing, by the first firmware component, an indication to the second firmware component executing in the non-secure memory indicating that the first buffer located in the non-secure memory has been updated; and
updating, by the second firmware component, one or more data structures internal to the second firmware component executing in the non-secure memory responsive to the indication that the first buffer located in the non-secure memory has been updated, whereby the second firmware component responds to requests to retrieve the first data without accessing the first buffer located in the secure memory.

US Pat. No. 10,810,150

CONFIGURATION OF A SOLID-STATE DRIVE DOCK HAVING LOCAL AND NETWORK INTERFACES

American Megatrends Inter...

1. A method, comprising:receiving, by a controller device, a request message from a computing device connected to a solid-state drive dock, wherein the controller device is assembled in the solid-state drive dock and comprises one of a local interface controller device or a network controller device;
determining that the request message defines a management request to configure an element of operation of the solid-state drive dock; and
configuring the solid-state drive dock according to the management request.

US Pat. No. 10,802,901

OBTAINING STATE INFORMATION OF THREADS OF A DEVICE

AMERICAN MEGATRENDS INTER...

1. A method of operating an embedded-system device, comprising:determining a respective operational state of each of one or more threads of a process executing on the embedded-system device, wherein the process is loaded in a memory of the embedded-system device;
storing the respective operational state of each of the one or more threads in a thread state register in the same memory of the embedded-system device;
determining, by a monitor thread of the process, operation of each of the one or more threads periodically to be normal or abnormal;
in response to determining that the operation of at least one thread of the one or more threads is abnormal, retrieving the stored operational states of the one or more threads from the thread state register, and immediately outputting the retrieved operational states of the one or more threads to a non-volatile memory, wherein the operational states of the one or more threads that are output at different times are stored in the non-volatile memory to maintain a history of the operational states of the one or more threads;
receiving, from another device, a request for the operational states of the one or more threads through a standardized Intelligent Platform Management Interface (IPMI) interface;
in response to the request, retrieving the operational states stored in the non -volatile memory; and
sending the retrieved operational states to the another device through the standardized IPMI interface.

US Pat. No. 10,802,816

PERIPHERAL DEVICE FIRMWARE UPDATE USING REST OVER IPMI INTERFACE FIRMWARE UPDATE MODULE

American Megatrends Inter...

1. A computer-implemented method for updating a firmware of a peripheral device of a computing system, comprising:transmitting a request for a firmware update instruction for the peripheral device from a firmware of the computing system to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
identifying a location of a peripheral device firmware image transmitted from the BMC to the firmware of the computing system using original equipment manufacturer (OEM) IPMI commands containing REST Hypertext Transfer Protocol (HTTP) requests;
retrieving, by way of the firmware of the computing system, the peripheral device firmware image from the location of the peripheral device firmware image identified by data provided by the BMC; and
updating, by way of a firmware update module of the firmware, the firmware of the peripheral device using the peripheral device firmware image.

US Pat. No. 10,802,817

PERIPHERAL DEVICE FIRMWARE UPDATE USING REST OVER IPMI INTERFACE FIRMWARE SHELL UTILITY

American Megatrends Inter...

1. A computer-implemented method for updating a firmware of a peripheral device of a computing system, comprising:transmitting a request for a firmware update instruction for the peripheral device from a firmware of the computing system to a baseboard management controller (BMC) over a representational state transfer (REST) over intelligent platform management interface (IPMI) interface;
identifying a location of a peripheral device firmware image transmitted from the BMC to the firmware of the computing system using original equipment manufacturer (OEM) IPMI commands containing REST Hypertext Transfer Protocol (HTTP) requests;
retrieving, by way of the firmware of the computing system, the peripheral device firmware image from the location of the peripheral device firmware image;
executing a firmware shell utility in a shell environment provided by the firmware of the computing system; and
updating, by way of the firmware shell utility, the firmware of the peripheral device using an updated peripheral device firmware.

US Pat. No. 10,782,764

TECHNIQUES OF EMULATING AN ACPI CONTROLLER ON A SERVICE PROCESSOR

AMERICAN MEGATRENDS INTER...

1. A method of operating a computer system including a service processor, comprising:executing, at a processing unit of the service processor, a first set of instructions to emulate, at the service processor, an ACPI controller, the emulated ACPI controller monitoring, at the service processor and on a first communication channel, one or more Advanced Configuration and Power Interface (ACPI) events generated by one or more ACPI compliant devices of a host of the service processor, the first communication channel supporting communications in accordance with the Advanced Configuration and Power Interface Specification;
executing, at the processing unit of the service processor, a second set of instructions to implement a baseboard management controller (BMC) in compliance with Intelligent Platform Management Interface (IPMI) standards;
detecting, at a programmable logic device managing the one or more ACPI compliant devices, the one or more ACPI events;
sending, at the programmable logic device, a first notification to the service processor in response to detecting the one or more ACPI events;
retrieving, by the ACPI controller in response to receiving the first notification, the one or more ACPI events through the first communication channel;
updating, at the service processor, device data associated with the one or more ACPI compliant devices based on the one or more ACPI events in a data store of the service processor;
sending, at the programmable logic device, a second notification to the host in response to detecting the one or more ACPI events;
receiving, at the service processor, a query command sent by the host through a second communication channel other than the first communication channel in response to receiving the second notification, wherein the second communication channel is also utilized by the BMC for communication between the BMC and the host in accordance with a BMC management function;
sending, at the service processor and to the host, an ACPI address for locating first data associated with a first ACPI device in the data store through the second communication channel; and
receiving, at the service processor, a read command sent from the host indicating the ACPI address for retrieving first data associated with a first ACPI device.

US Pat. No. 10,776,193

IDENTIFYING AN REMEDIATING CORRECTABLE HARDWARE ERRORS

AMERICAN MEGATRENDS INTER...

1. A computer-implemented method, comprising:detecting a system management interrupt (SMI) at a computing system, the SMI generated by a device responsive to the occurrence of a correctable error at the device; and
responsive to the SMI,
identifying the device that generated the SMI,
determining whether an earliest recorded error generated by the device is longer ago than a threshold amount of time,
if the earliest recorded error generated by the device is not longer ago than the threshold amount of time, incrementing an error count for the device in an in-memory table and determining whether the error count for the device exceeds a threshold, and
if the error count for the device exceeds a threshold, generating an error notification for the device.

US Pat. No. 10,776,286

REST OVER IPMI INTERFACE FOR FIRMWARE TO BMC COMMUNICATION

American Megatrends Inter...

1. A computer-implemented method, comprising:executing a first driver in a firmware of a computing system to:
obtain management data for the computing system, and
generate a representational state transfer (REST) Hypertext Transfer Protocol (HTTP) request comprising the management data to an interface exposed by a second driver executing in the firmware; and
executing the second driver in the firmware of the computing system to:
generate an original equipment manufacturer (OEM) intelligent platform management interface (IPMI) command comprising the REST HTTP request; and
provide the OEM IPMI command to a baseboard management controller (BMC) of the computing system.

US Pat. No. 10,768,942

OPTION ROM DISPATCH POLICY CONFIGURATION INTERFACE

American Megatrends Inter...

1. A computer-implemented method, comprising:identifying a device connected to a computer system, the device containing a multi-image option read-only memory (ROM);
accessing an option ROM dispatch policy associated with the device, the option ROM dispatch policy comprising:
an enablement setting indicating whether firmware of a computer executes the multi-image option ROM of the device during a boot sequence of the computer, and
a type setting indicating an image of the multi-image option ROM the firmware of the computer executes during the boot sequence of the computer; and
executing at least a portion of the multi-image option ROM according to the option ROM dispatch policy during the boot sequence of the computer, wherein the device is an add-on device attached to the computer via a slot and the option ROM dispatch policy is associated with the device based at least in part on the option ROM dispatch policy being associated with the slot.

US Pat. No. 10,764,108

UNIFIED DATA TRANSFER VIA IPMI

AMERICAN MEGATRENDS INTER...

1. A method of operating a system including a host computer and an embedded-system device, comprising:calling, by a host application that is a software component running on a processor of the host computer, a data operation function running on the host computer with at least one operation code indicating an identity of a data collection and an identity of a first feature component of the embedded-system device holding the data collection, wherein the embedded-system device is a baseboard management controller (BMC) managing the host computer, wherein the BMC receives and stores data generated by a Basic Input/Output System (BIOS) executed on the processor of the host computer;
instructing, by the data operation function, an Intelligent Platform Management Interface (IPMI) message component of the host computer to send at least one IPMI message containing the at least one operation code to the embedded-system device;
receiving, at an IPMI component of the embedded-system device, the at least one IPMI message from the host computer;
extracting, at the IPMI component of the embedded-system device, message data from the at least one IPMI message;
sending the message data to a data operation component of the embedded-system device, the data operation component being different from the IPMI component;
determining, at the data operation component and from the message data, the at least one operation code;
determining, at the data operation component, the first feature component of the embedded-system device from a plurality of feature components based on the at least one operation code, each of the plurality of feature components being a software component executed on a processor of the embedded-system device; and
obtaining, at the data operation component, the data collection from the first feature component when the at least one operation code indicates a data request.

US Pat. No. 10,754,748

SYSTEM AND METHOD FOR CONSTRUCTING EXTENSIBLE EVENT LOG WITH JAVASCRIPT OBJECT NOTATION (JSON) ENCODED PAYLOAD DATA

AMERICAN MEGATRENDS INTER...

1. A system, comprising:a computing device, comprising a processor and a storage device storing computer executable code; and
a device managed by the computing device,
wherein the computer executable code, when executed at the processor, is configured to:
receive a message from the device managed by the computing device, wherein the message comprises information corresponding to an event occurred at the device and payload data of the event, the payload data of the event included in the message is in a specific format, and the specific format of the payload data of the event is identifiable solely by an event type of the message; and
in response to receiving the message,
determine the event type of the event based on the information;
recognize the specific format of the payload data of the event solely based on the event type of the event;
convert the payload data of the event in the specific format to encoded payload data in an extensible format; and
generate and store an event log comprising the event type and the encoded payload data.