# US 2014/0195711 A1 · Pci express channel implementation in intelligent platform management interface stack

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0195711 A1
- Document ID: US20140195711A1
- Status: Published application
- Kind: A1
- Application number: 13/734,549
- Filed: 2013-01-04
- Published: 2014-07-10
- Earliest claimed: 2013-01-04
- Assignees: American Megatrends, Inc.
- Applicants: American Megatrends, Inc.
- Inventors: Anurag Bhatia; Rama Bisa
- Web page: https://patentgrep.com/patent/US20140195711A1

## CPC

- G06F 13/105: {where the program performs an input/output emulation function}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- G06F 13/4027: {using bus bridges (G06F13/4022 takes precedence)}
- G06F 13/4221: {being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus}
- G06F 15/17: using an input/output type connection, e.g. channel, I/O port
- G06F 2213/0026: PCI express
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Certain embodiments of the present disclosure are directed to a baseboard management controller (BMC) that includes a PCI express (PCIe) interface controller configured to provide access to a PCIe channel over a PCIe link, and firmware. The firmware includes a PCIe module being configured to access the PCIe channel through the PCIe interface controller and registered as a PCIe function. A software stack of the BMC communicates, through the PCIe module, with a PCIe device over the PCIe channel.

## Claims

### Claim 1

A baseboard management controller (BMC), comprising:
a PCI express (PCIe) interface controller configured to provide access to a PCIe channel over a PCIe link;
firmware including:
a PCIe module having a data transfer unit, the data transfer unit being configured to access the PCIe channel through the PCIe interface controller and registered as a PCIe function;
a software stack implementing a plurality of functions in accordance with IMPI;
a PCIe driver configured to provide access to the data transfer unit;
a PCIe library implementing a plurality functions utilizing, through the PCIe driver, the data transfer unit; and
a PCIe handler in communication with the software stack and the PCIe library, wherein a program of the software stack is configured to call the PCIe handler to communicate, through the PCIe library and the PCIe driver, with a PCIe device over the PCIe channel; and
a processor configured to execute the firmware.

### Claim 2 (depends on 1)

The baseboard management controller of claim 1, wherein the data transfer unit is configured to establish a data transfer channel between the data transfer unit and the PCIe device over the PCIe link.

### Claim 3 (depends on 2)

The baseboard management controller of claim 2, wherein the PCIe driver is configured to provide common access to the data transfer channel.

### Claim 4 (depends on 2)

The baseboard management controller of claim 2, wherein the PCIe driver is specific to a physical implementation of the PCIe interface controller.

### Claim 5 (depends on 2)

The baseboard management controller of claim 2, wherein the PCIe device is a host computer having a data transfer module registered as a PCIe function, wherein the data transfer unit of the BMC is in communication with the data transfer module through the PCIe link and enables data transfer to and from the data transfer module through the established data transfer channel.

### Claim 6 (depends on 5)

The baseboard management controller of claim 5, wherein the PCIe handler is configured to receive a request for communication through the PCIe interface controller and to call a function of the PCIe library in response to the request.

### Claim 7 (depends on 6)

The baseboard management controller of claim 6, wherein a program of the software stack is configured to send a request to the PCIe handler for transferring a file image to the data transfer module of the host computer, wherein the PCIe handler is configured to call, in response to the request, the PCIe library to load the file image and to transfer the file image to the data transfer module through the established data transfer channel over the PCIe link.

### Claim 8 (depends on 5)

The baseboard management controller of claim 5, wherein the data transfer unit is configured to receive data transmitted from the data transfer module and place the received data in a storage area, wherein the PCIe driver is configured to provide access to the storage area of the data transfer unit.

### Claim 9 (depends on 8)

The baseboard management controller of claim 8, wherein the PCIe library is configured to provide a function that is called by a calling program and that calls the PCIe driver to detect whether data has been placed in the storage area for the calling program, wherein the PCIe library is configured to provide a function that calls the PCIe driver to retrieve data stored in the storage area of the data transfer unit and that transfers the retrieved data to the calling program.

### Claim 10 (depends on 5)

The baseboard management controller of claim 5, wherein a program of the software stack is configured to, in response to a indication that a file image is transmitted to data transfer unit from the data transfer module for the management program, call a function of the PCIe library to retrieve the file image.

### Claim 11 (depends on 1)

The baseboard management controller of claim 1, wherein the data transfer unit is configured to utilize a shared memory or a message queue.

### Claim 12 (depends on 11)

The baseboard management controller of claim 11, wherein the PCIe driver is configured to provide a plurality of driver functions for transferring data over the PCIe link through the shared memory or message queue.

### Claim 13 (depends on 12)

The baseboard management controller of claim 12, wherein the PCIe library is configured to provide a plurality of data transfer functions implementing data transfer through PCIe channels, wherein the plurality of data transfer functions call the predefined driver functions of the PCIe driver to transfer data to the data transfer unit through the shared memory or the message queue.

### Claim 14 (depends on 11)

The baseboard management controller of claim 11, wherein the PCI driver is configured to
receive a data unit and an address of a destination PCIe device; and
transfer the received data unit and the address to the data transfer unit through the shared memory or message queue of.

### Claim 15 (depends on 1)

The baseboard management controller of claim 1, wherein the PCIe library is configured to
receive a file image;
construct a plurality of data unit containing data of the file image;
receive an indication of the destination PCIe device;
transmit the data units to the PCI driver; and
inform the PCIe driver an address of the destination PCIe device.

### Claim 16 (depends on 1)

The baseboard management controller of claim 1, further compromising a video output port, wherein the PCIe module is configured to include a graphic interface controller registered as a PCIe function, wherein the graphic interface controller is configured to output video signals to the video output port, wherein the graphic interface controller is configured to be accessible by a host computer through the PCIe link.

### Claim 17

A method for utilizing a PCI express (PCIe) interface at a baseboard management controller (BMC), comprising:
operating a PCIe interface controller at the BMC to provide access to a PCIe channel over a PCIe link;
configuring a data transfer unit of a PCIe module at the BMC to access the PCIe channel through the PCIe interface controller, and registering the data transfer unit as a PCIe function;
executing, at a processor of the BMC, a software stack that implements a plurality of functions in accordance with IMPI;
executing a PCIe driver to provide access to the data transfer unit;
executing a PCIe library that implements a plurality functions utilizing, through the PCIe driver, the data transfer unit;
executing a PCIe handler in communication with the software stack and the PCIe library; and
executing a program of the software stack to call the PCIe handler to communicate, through the PCIe library and the PCIe driver, with a PCIe device over the PCIe channel.

### Claim 18 (depends on 17)

The method of claim 17, comprising establishing a data transfer channel between the data transfer unit and the PCIe device over the PCIe link.

### Claim 19 (depends on 18)

The method of claim 18, wherein the PCIe driver is configured to provide common access to the data transfer channel and is specific to a physical implementation of the PCIe interface controller.

### Claim 20 (depends on 18)

The method of claim 18, wherein the PCIe device is a host computer having a data transfer module registered as a PCIe function, wherein the data transfer unit of the BMC is in communication with the data transfer module through the PCIe link and enables data transfer to and from the data transfer module through the established data transfer channel.

### Claim 21 (depends on 20)

The method of claim 20, comprising:
receiving, at the PCIe handler, a request for communication through the PCIe interface controller;
calling a function of the PCIe library in response to the request;
sending, from the software stack, a request to the PCIe handler for transferring a file image to the data transfer module of the host computer;
calling, by the PCIe handler in response to the request, the PCIe library to load the file image; and
transferring the file image to the data transfer module through the established data transfer channel over the PCIe link.

### Claim 22

A non-transitory computer storage medium having computer-executable instructions stored thereon which, when executed by a processor of a baseboard management controller (BMC), cause the processor to:
operate a PCIe interface controller, at the BMC, to access a PCIe channel over a PCIe link;
execute a data transfer unit of a PCIe module, at the BMC, to access the PCIe channel through the PCIe interface controller, and register the data transfer unit as a PCIe function;
execute a software stack that implements a plurality of functions in accordance with IMPI;
execute a PCIe driver to access the data transfer unit;
execute a PCIe library that implements a plurality functions utilizing, through the PCIe driver, the data transfer unit;
execute a PCIe handler in communication with the software stack and the PCIe library; and
execute a program of the software stack to call the PCIe handler to communicate, through the PCIe library and the PCIe driver, with a PCIe device over the PCIe channel.

### Claim 23 (depends on 22)

The non-transitory computer storage medium of claim 22, wherein the instructions, when executed, cause the processor to
send a request, at a program of the software stack, to the PCIe handler for transferring a file image to a data transfer module of the PCIe device; and
call, at the PCIe handler in response to the request, the PCIe library to load the file image and to transfer the file image to the data transfer module through an established data transfer channel over the PCIe link.

### Claim 24 (depends on 22)

The non-transitory computer storage medium of claim 22, wherein the instructions, when executed, cause the processor to:
provide, at the PCIe library, a function that is called by a calling program and that calls the PCIe driver to detect whether data has been placed in a storage area of the data transfer unit for the calling program; and
provide, at the PCIe library, a function that calls the PCIe driver to retrieve data stored in the storage area and that transfers the retrieved data to the calling program.

### Claim 25 (depends on 22)

The non-transitory computer storage medium of claim 22, wherein the instructions, when executed, cause the processor to:
receive, at the PCIe handler, a request for communication through the PCIe interface controller;
call a function of the PCIe library in response to the request;
send, from the software stack, a request to the PCIe handler for transferring a file image to the data transfer module of the PCIe device;
call, by the PCIe handler in response to the request, the PCIe library to load the file image; and
transfer the file image to the data transfer module through an established data transfer channel over the PCIe link.
