IP Library Granted Patent US 9,804,905
Granted Patent B1
US 9,804,905 · App. 15/247,761 · Granted Oct 31, 2017

System, method, and computer program for communicating between a software driver and a baseboard management controller

Inventors: Scott Neil Dunham (Apex, NC); Sumeet Kochar (Cary, NC)
Assignee: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
G06F9/544
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,804,905
App. No.
15/247,761
Granted
Oct 31, 2017
Kind
B1
Abstract

According to one embodiment, a computer program embodied on a tangible computer readable medium includes computer code for obtaining baseboard management controller (BMC) access details, computer code for establishing a communication mechanism between a software driver and the BMC, utilizing the BMC access details, and computer code for sending a request between the software driver and the BMC, utilizing the communication mechanism.

Claims (47)

1. A computer program embodied on a non-transitory computer readable medium, comprising:

computer code for obtaining, by a software driver, baseboard management controller (BMC) access details from an original equipment manufacturer (OEM) advanced configuration and power interface (ACPI) table, the BMC access details including PCI-IRQ (PIRQ) interrupt information and memory map input/output (MMIO) window details;

computer code for establishing, by the software driver, a communication mechanism between the software driver and the BMC, utilizing the BMC access details; and

computer code for sending a request from the software driver to the BMC, utilizing the communication mechanism.

2. The computer program of claim 1 , further comprising computer code for receiving, by the software driver, a second request initiated by the BMC, where:

the software driver identifies a PIRQ interrupt triggered by the BMC; and

the software driver receives the second request by retrieving communication protocol contents placed in the MMIO window by the BMC.

3. The computer program of claim 1 , wherein sending the request from the software driver to the BMC includes:

placing, by the software driver, communication protocol contents into the MMIO window of the BMC,

interrupting, by the software driver, the BMC, utilizing a doorbell bit, and

transferring, by the software driver, request or response data to the BMC using the communication protocol contents from the MMIO window of the BMC.

4. The computer program of claim 1 , wherein establishing, by the software driver, the communication mechanism between the software driver and the BMC, utilizing the BMC access details, includes:

obtaining access by the software driver to the MMIO window of the BMC, such that the MMIO window is shared by both the BMC and the software driver, and

hooking a PIRQ interrupt within a field programmable gate array (FPGA), such that the PIRQ interrupt is utilized to notify the software driver of a request from the BMC.

5. The computer program of claim 1 , wherein, utilizing the BMC access details, the software driver obtains access to the memory map input/output (MMIO) window of the BMC, such that the MMIO window is shared by both the BMC and the software driver.

6. The computer program of claim 1 , wherein, utilizing the BMC access details, the software driver hooks the PCI-IRQ (PIRQ) interrupt, such that the PIRQ interrupt is utilized to notify the software driver of a request from the BMC.

7. The computer program of claim 1 , wherein the BMC access details are obtained by a unified extensible firmware interface (UEFI) during an initialization of a system.

8. The computer program of claim 7 , wherein the UEFI writes the BMC access details to the original equipment manufacturer (OEM) advanced configuration and power interface (ACPI) table.

9. The computer program of claim 8 , wherein the software driver obtains the BMC access details from the OEM ACPI table when the software driver is loaded.

10. A method, comprising:

obtaining, by a software driver, baseboard management controller (BMC) access details from an original equipment manufacturer (OEM) advanced configuration and power interface (ACPI) table, the BMC access details including PCI-IRQ (PIRQ) interrupt information and memory map input/output (MMIO) window details;

establishing, by the software driver, a communication mechanism between the software driver and the BMC, utilizing the BMC access details; and

sending a request from the software driver to the BMC, utilizing the communication mechanism.

11. The method of claim 10 , further comprising receiving, by the software driver, a second request initiated by the BMC, where:

the software driver identifies a PIRQ interrupt triggered by the BMC; and

the software driver receives the second request by retrieving communication protocol contents placed in the MMIO window by the BMC.

12. The method of claim 10 , wherein sending the request from the software driver to the BMC includes

placing, by the software driver, communication protocol contents into the MMIO window of the BMC,

interrupting, by the software driver, the BMC, utilizing a doorbell bit, and

transferring, by the software driver, request or response data to the BMC using the communication protocol contents from the MMIO window of the BMC.

13. The method of claim 10 , wherein establishing, by the software driver, the communication mechanism between the software driver and the BMC, utilizing the BMC access details, includes:

obtaining access by the software driver to the MMIO window of the BMC, such that the MMIO window is shared by both the BMC and the software driver, and

hooking a PIRQ interrupt within a field programmable gate array (FPGA), such that the PIRQ interrupt is utilized to notify the software driver of a request from the BMC.

14. The method of claim 10 , wherein, utilizing the BMC access details, the software driver obtains access to the memory map input/output (MMIO) window of the BMC, such that the MMIO window is shared by both the BMC and the software driver.

15. The method of claim 10 , wherein, utilizing the BMC access details, the software driver hooks the PCI-IRQ (PIRQ) interrupt, such that the PIRQ interrupt is utilized to notify the software driver of a request from the BMC.

16. The method of claim 10 , wherein the BMC access details are obtained by a unified extensible firmware interface (UEFI) during an initialization of a system.

17. The method of claim 16 , wherein the UEFI writes the BMC access details to the original equipment manufacturer (OEM) advanced configuration and power interface (ACPI) table.

18. The method of claim 17 , wherein the software driver obtains the BMC access details from the OEM ACPI table when the software driver is loaded.

19. A system, comprising:

a processor for:

obtaining, by a software driver, baseboard management controller (BMC) access details from an original equipment manufacturer (OEM) advanced configuration and power interface (ACPI) table, the BMC access details including PCI-IRQ (PIRQ) interrupt information and memory map input/output (MMIO) window details;

establishing, by the software driver, a communication mechanism between the software driver and the BMC, utilizing the BMC access details; and

sending a request from the software driver to the BMC, including:

placing communication protocol contents into a memory map input/output (MMIO) window area shared by the BMC and the software driver,

interrupting the BMC, and

transferring the request between the software driver and the BMC using the communication protocol contents from the MMIO window area shared by the BMC and the software driver.

20. The system of claim 19 , wherein the processor is coupled to memory via a bus.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 069869/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2019
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD.
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD
Reel/Frame 050308/0781 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2017
From: DUNHAM, SCOTT NEIL; KOCHAR, SUMEET
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 042027/0054 →