IP Library Granted Patent US 7,523,284
Granted Patent B1
US 7,523,284 · App. 10/914,956 · Granted Apr 21, 2009

Method and apparatus for providing memory management within a system management mode

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 7,523,284
App. No.
10/914,956
Granted
Apr 21, 2009
Kind
B1
Abstract

Methods, systems, and computer-readable media are provided for managing memory within a system management mode (“SMM”). According to the method, a memory management program is executed within the SMM. The memory management program is operative to maintain a singly linked list having one or more descriptors for identifying allocated regions of system management random access memory (“SMRAM”). In particular, each descriptor identifies a region of SMRAM that has been allocated by the memory management program by storing an indication of the base memory address of the allocated region, an indication of the ending memory address for the allocated region, and a pointer to the next descriptor.

Claims (28)

1. A method for providing memory management within a system management mode, the method comprising:

creating a memory reserved table comprising a singly linked list of a predetermined number of unused descriptors marked with a predetermined value;

replacing at least one unused descriptor with a used descriptor, wherein the used descriptor identifies a region of system management random access memory allocated by the memory management program;

periodically determining whether all of the descriptors in the memory reserved table are used to identify allocated memory; and

in response to determining that all of the descriptors have been utilized, creating a new memory reserved table comprising a singly linked list of the predetermined number of unused descriptors.

2. The method of claim 1 , wherein the memory management program is operative to receive a request for a region of system management random access memory, to determine based on the contents of the singly linked list whether the requested memory region is available and, in response to determining that the requested memory region is available, further operative to allocate an unused descriptor for the requested memory region and to return an indication that the memory region has been allocated.

3. The method of claim 2 , wherein the request for the region of system management random access memory may comprise a request for a specific size of memory or a request for a specified size of memory located at a specific memory address.

4. The method of claim 3 , wherein the memory management program is further operative to receive a request to deallocate a region of system management random access memory, to identify one or more used descriptors for the memory region to be deallocated, to mark the one or more used descriptors as unused, and to return an indication that the memory region has been deallocated.

5. The method of claim 4 , wherein each used descriptor comprises an indication of a base memory address of the allocated region.

6. The method of claim 5 , wherein each used descriptor further comprises an indication of an ending memory address of the allocated region.

7. The method of claim 6 , wherein each used descriptor further comprises a pointer to a next descriptor.

8. A method for providing memory management within a system management mode, the method comprising:

executing within the system management mode a memory management program, the memory management program operative to

initially allocate a memory reserved table comprising a predetermined number of unused descriptors in a singly linked list, the memory reserved table further including a field identifying a number of used descriptors within the singly linked list,

maintain the singly linked list, wherein each used descriptor identifies a region of system management random access memory allocated by the memory management program, comprises an indication of a base memory address of the allocated region, comprises an indication of an ending memory address of the allocated region, and comprises a pointer to a next descriptor,

receive a request for a region of system management random access memory, wherein the request comprises a request for a specific size of memory or a request for a specified size of memory located at a specific memory address,

determine based on the contents of the singly linked list whether the requested memory region is available,

in response to determining that the requested memory region is available, allocate an unused descriptor for the requested memory region and return an indication that the memory region has been allocated,

receive a request to deallocate a region of system management random access memory,

identify one or more used descriptors for the memory region to be deallocated,

mark each of the one or more used descriptors identified to be deallocated as an unused descriptor,

return an indication that the memory region has been deallocated,

periodically determine whether all of the descriptors in the memory reserved table have been utilized to identify allocated memory, and

in response to determining that all of the descriptors have been utilized, create a new memory reserved table comprising one or more descriptors.

9. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to perform the method of claim 1 .

10. The method of claim 8 , wherein in response to determining that all of the descriptors have been utilized, the memory management program is further operative to create a descriptor in the memory reserved table for the new memory reserved table and to create a pointer in the memory reserved table to the new memory reserved table.

11. The method of claim 8 , wherein the memory management program executes in conjunction with an extensible firmware interface.

12. A computer storage medium having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to perform the method of claim 8 .

Assignments (5)
PATENT SECURITY AGREEMENT Recorded Oct 23, 2024
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: BAIN CAPITAL CREDIT, LP, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 069229/0834 →
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2024
From: MIDCAP FINANCIAL TRUST
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 069205/0795 →
SECURITY INTEREST Recorded May 6, 2019
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 049087/0266 →
ENTITY CONVERSION Recorded Apr 15, 2019
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 049091/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2004
From: WILSON, MARK ERIC
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 015715/0352 →