# US 11,029,868 B1 · Initialization code/data memory mapping system

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

- Number: US 11,029,868 B1
- Document ID: US11029868B1
- Status: Granted
- Kind: B1
- Application number: 16/775,386
- Filed: 2020-01-29
- Granted: 2021-06-08
- Earliest claimed: 2020-01-29
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Wei Liu; Po-Yu Cheng
- Web page: https://patentgrep.com/patent/US11029868B1

## CPC

- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 9/30098: {Register arrangements}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A initialization code/data memory mapping system includes a processing system, memory device(s) storing initialization code and initialization data, and a main memory system. The processing system performs first MMIO read operations to access the initialization code stored in the memory device(s) that is mapped to an initialization memory space in order to provide an initialization engine, and uses it to copy the initialization code from the memory device(s) to the main memory system. The processing system then accesses the initialization code stored in the main memory system in order to provide the initialization engine, and uses it to map the initialization data stored in the memory device(s) to the initialization memory space. The processing system then performs second MMIO read operations to access the initialization data stored in the memory device(s) that is mapped to the initialization memory space for use by the initialization engine.

## Claims

### Claim 1

An initialization code/data memory mapping system, comprising:
at least one memory device storing initialization code and initialization data;
a main memory system; and
a processing system that is coupled to the at least one memory device and the main memory system, wherein the processing system is configured to:
access, via first Memory Mapped Input/Output (MMIO) read operations, the initialization code stored in the at least one memory device that is mapped to an initialization memory space in order to provide an initialization engine;
copy, using the initialization engine, the initialization code from the at least one memory device to the main memory system;
access the initialization code stored in the main memory system in order to provide the initialization engine;
map, using the initialization engine provided via the initialization code stored in the main memory system, the initialization data stored in the at least one memory device to the initialization memory space, wherein the mapping the initialization data stored in the at least one memory device to the initialization memory space hides the initialization code in a runtime environment that is provided following completion of initialization operations by unmapping the initialization code stored in the at least one memory device from the initialization memory space; and
access, via second MMIO read operations, the initialization data stored in the at least one memory device that is mapped to the initialization memory space for use by the initialization engine.

### Claim 2 (depends on 1)

The system of claim 1, wherein the at least one memory device includes a first memory device that stores the initialization code, and a second memory device that stores the initialization data.

### Claim 3 (depends on 2)

The system of claim 2, wherein the first memory device is provided by a Serial Peripheral Interface (SPI) flash memory device, and wherein the second memory device is provided by a second SPI flash memory device.

### Claim 4 (depends on 1)

The system of claim 1, further comprising:
a chipset that is included in the processing system and that has at least one register, wherein the register is configured to store first information to map the initialization code stored in the at least one memory device to the initialization memory space, and second information to map the initialization data stored in the at least one memory device to the initialization memory space.

### Claim 5 (depends on 4)

The system of claim 4, further comprising:
a Central Processing Unit (CPU) that is coupled to the chipset and configured to perform the first MMIO read operations, provide the initialization engine, and perform the second MMIO read operations.

### Claim 6

An Information Handling System (IHS), comprising:
a processing system that is configured to:
access, via first Memory Mapped Input/Output (MMIO) read operations, initialization code stored in at least one memory device that is mapped to an initialization memory space in order to provide an initialization engine;
copy, using the initialization engine, the initialization code from the at least one memory device to a main memory system;
access the initialization code stored in the main memory system in order to provide the initialization engine;
map, using the initialization engine provided via the initialization code stored in the main memory system, initialization data stored in the at least one memory device to the initialization memory space, wherein the mapping the initialization data stored in the at least one memory device to the initialization memory space hides the initialization code in a runtime environment that is provided following completion of initialization operations by unmapping the initialization code stored in the at least one memory device from the initialization memory space; and
access, via second MMIO read operations, the initialization data stored in the at least one memory device that is mapped to the initialization memory space for use by the initialization engine.

### Claim 7 (depends on 6)

The IHS of claim 6, wherein the at least one memory device includes a first memory device that stores the initialization code, and a second memory device that stores the initialization data.

### Claim 8 (depends on 7)

The IHS of claim 7, wherein the first memory device is provided by a Serial Peripheral Interface (SPI) flash memory device, and wherein the second memory device is provided by a second SPI flash memory device.

### Claim 9 (depends on 6)

The IHS of claim 6, further comprising:
a chipset that is included in the processing system and that has at least one register, wherein the register is configured to store first information to map the initialization code stored in the at least one memory device to the initialization memory space, and second information to map the initialization data stored in the at least one memory device to the initialization memory space.

### Claim 10 (depends on 9)

The IHS of claim 9, further comprising:
a Central Processing Unit (CPU) that is coupled to the chipset and configured to perform the first MMIO read operations, provide the initialization engine, and perform the second MMIO read operations.

### Claim 11

A method for mapping initialization code memory and initialization data memory, comprising:
accessing, by a processing system via first Memory Mapped Input/Output (MMIO) read operations, initialization code stored in at least one memory device that is mapped to an initialization memory space in order to provide an initialization engine;
copying, by the processing system using the initialization engine, the initialization code from the at least one memory device to a main memory system;
accessing, by the processing system, the initialization code stored in the main memory system in order to provide the initialization engine;
mapping, by the processing system using the initialization engine provided via the initialization code stored in the main memory system, the initialization data stored in the at least one memory device to the initialization memory space, wherein the mapping the initialization data stored in the at least one memory device to the initialization memory space hides the initialization code in a runtime environment that is provided following completion of initialization operations by unmapping the initialization code stored in the at least one memory device from the initialization memory space; and
accessing, by the processing system via second MMIO read operations, the initialization data stored in the at least one memory device that is mapped to the initialization memory space for use by the initialization engine.

### Claim 12 (depends on 11)

The method of claim 11, wherein the at least one memory device includes a first memory device that stores the initialization code, and a second memory device that stores the initialization data.

### Claim 13 (depends on 12)

The method of claim 12, wherein the first memory device is provided by a Serial Peripheral Interface (SPI) flash memory device, and wherein the second memory device is provided by a second SPI flash memory device.

### Claim 14 (depends on 11)

The method of claim 11, further comprising:
storing, in at least one register provided in a chipset that is included in the processing system, first information to map the initialization code stored in the at least one memory device to the initialization memory space; and
storing, in the at least one register provided in the chipset that is included in the processing system, second information to map the initialization data stored in the at least one memory device to the initialization memory space.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
performing, by a Central Processing Unit (CPU) that is included in the processing system and coupled to the chipset, the first MMIO read operations;
providing, by the CPU, the initialization engine; and
performing, by the CPU, the second MMIO read operations.
