# US 12,117,908 B2 · Restoring persistent application data from non-volatile memory after a system crash or system reboot

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

- Number: US 12,117,908 B2
- Document ID: US12117908B2
- Status: Granted
- Kind: B2
- Application number: 17/111,832
- Filed: 2020-12-04
- Published: 2021-03-25
- Granted: 2024-10-15
- Earliest claimed: 2020-12-04
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Aravinda Prasad; Sreenivas Subramoney
- Web page: https://patentgrep.com/patent/US12117908B2

## CPC

- G06F 11/1471: involving logging of persistent data for recovery
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/1036: for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence)
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 11/1441: {Resetting or repowering}
- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 12/08: in hierarchically structured memory systems, e.g. virtual memory systems
- G06F 12/1441: {for a range}
- G06F 12/1475: {in a virtual system, e.g. with translation means}
- G06F 2212/1016: Performance improvement
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/205: Hybrid memory, e.g. using both volatile and non-volatile memory
- G06F 2212/651: Multi-level translation tables
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems, apparatuses and methods may provide for technology that associates a unique identifier with an application, creates an entry in a metadata table, wherein the metadata table is at a fixed location in persistent system memory, populates the entry with the unique identifier, a user identifier, and a pointer to a root of a page table tree, and recovers in-use data pages after a system crash. In one example, the in-use data pages are recovered from the persistent system memory based on the metadata table and include one or more of application heap information or application stack information.

## Claims

### Claim 1

A computing system comprising:
a network controller;
a processor coupled to the network controller; and
a memory architecture including volatile system memory, persistent system memory, and a set of executable program instructions, which when executed by the processor, cause the processor to:
associate a unique identifier with an application,
create an entry in a metadata table, wherein the metadata table is at a fixed location in the persistent system memory,
populate the entry with the unique identifier, a user identifier, and a pointer to a root of a page table tree, and
recover in-use data pages after a system crash, wherein the in-use data pages are recovered from the persistent system memory based on the metadata table and include application heap information and application stack information.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein to recover the in-use data pages, the instructions, when executed, cause the processor to:
read the root of the page table tree from the metadata table;
traverse the page table tree to identify the in-use data pages; and
flag the in-use data pages for future use.

### Claim 3 (depends on 2)

The computing system of claim 2, wherein the instructions, when executed, cause the processor to recognize the metadata table based on one or more of a boot argument list or a kernel source code.

### Claim 4 (depends on 1)

The computing system of claim 1, wherein the unique identifier is associated with the application in response to a request from the application.

### Claim 5 (depends on 1)

The computing system of claim 1, wherein the unique identifier is associated with the application in response to an allocation of a page in the persistent system memory to the application.

### Claim 6 (depends on 1)

The computing system of claim 1, wherein the in-use data pages are recovered in response to a request from the application, and wherein the instructions, when executed, cause the processor to:
conduct a verification of the request based on the user identifier; and
map an address space associated with the root of the page table tree to a virtual address space associated with the application if the verification is successful.

### Claim 7

A semiconductor apparatus comprising:
one or more substrates; and
logic coupled to the one or more substrates, wherein the logic is implemented at least partly in one or more of configurable logic or fixed-functionality hardware logic, the logic coupled to the one or more substrates to:
associate a unique identifier with an application;
create an entry in a metadata table, wherein the metadata table is at a fixed location in a persistent system memory;
populate the entry with the unique identifier, a user identifier, and a pointer to a root of a page table tree; and
recover in-use data pages after a system crash, wherein the in-use data pages are recovered from the persistent system memory based on the metadata table and include application heap information and application stack information.

### Claim 8 (depends on 7)

The semiconductor apparatus of claim 7, wherein to recover the in-use data pages, the logic coupled to the one or more substrates is to:
read the root of the page table tree from the metadata table;
traverse the page table tree to identify the in-use data pages; and
flag the in-use data pages for future use.

### Claim 9 (depends on 8)

The semiconductor apparatus of claim 8, wherein the logic coupled to the one or more substrates is to recognize the metadata table based on one or more of a boot argument list or a kernel source code.

### Claim 10 (depends on 7)

The semiconductor apparatus of claim 7, wherein the unique identifier is associated with the application in response to a request from the application.

### Claim 11 (depends on 7)

The semiconductor apparatus of claim 7, wherein the unique identifier is associated with the application in response to an allocation of a page in the persistent system memory to the application.

### Claim 12 (depends on 7)

The semiconductor apparatus of claim 7, wherein the in-use data pages are recovered in response to a request from the application, and wherein the logic coupled to the one or more substrates is to:
conduct a verification of the request based on the user identifier; and
map an address space associated with the root of the page table tree to a virtual address space associated with the application if the verification is successful.

### Claim 13 (depends on 7)

The semiconductor apparatus of claim 7, wherein the logic coupled to the one or more substrates includes transistor channel regions that are positioned within the one or more substrates.

### Claim 14

At least one non-transitory computer readable storage medium comprising a set of executable program instructions, which when executed by a computing system, cause the computing system to:
associate a unique identifier with an application;
create an entry in a metadata table, wherein the metadata table is at a fixed location in a persistent system memory;
populate the entry with the unique identifier, a user identifier, and a pointer to a root of a page table tree; and
recover in-use data pages after a system crash, wherein the in-use data pages are recovered from the persistent system memory based on the metadata table and include application heap information and application stack information.

### Claim 15 (depends on 14)

The at least one non-transitory computer readable storage medium of claim 14, wherein to recover the in-use data pages, the instructions, when executed, cause the computing system to:
read the root of the page table tree from the metadata table;
traverse the page table tree to identify the in-use data pages; and
flag the in-use data pages for future use.

### Claim 16 (depends on 15)

The at least one non-transitory computer readable storage medium of claim 15, wherein the instructions, when executed, cause the computing system to recognize the metadata table based on one or more of a boot argument list or a kernel source code.

### Claim 17 (depends on 14)

The at least one non-transitory computer readable storage medium of claim 14, wherein the unique identifier is associated with the application in response to a request from the application.

### Claim 18 (depends on 14)

The at least one non-transitory computer readable storage medium of claim 14, wherein the unique identifier is associated with the application in response to an allocation of a page in the persistent system memory to the application.

### Claim 19 (depends on 14)

The at least one non-transitory computer readable storage medium of claim 14, wherein the in-use data pages are recovered in response to a request from the application, and wherein the instructions, when executed, cause the computing system to:
conduct a verification of the request based on the user identifier; and
map an address space associated with the root of the page table tree to a virtual address space associated with the application if the verification is successful.

### Claim 20

A method comprising:
associating a unique identifier with an application;
creating an entry in a metadata table, wherein the metadata table is at a fixed location in a persistent system memory;
populating the entry with the unique identifier, a user identifier, and a pointer to a root of a page table tree; and
recovering in-use data pages after a system crash, wherein the in-use data pages are recovered from the persistent system memory based on the metadata table and include application heap information and application stack information.

### Claim 21 (depends on 20)

The method of claim 20, wherein recovering the in-use data pages includes:
reading the root of the page table tree from the metadata table;
traversing the page table tree to identify the in-use data pages; and
flagging the in-use data pages for future use.

### Claim 22 (depends on 21)

The method of claim 21, further including recognizing the metadata table based on one or more of a boot argument list or a kernel source code.

### Claim 23 (depends on 20)

The method of claim 20, wherein the unique identifier is associated with the application in response to a request from the application.

### Claim 24 (depends on 20)

The method of claim 20, wherein the unique identifier is associated with the application in response to an allocation of a page in the persistent system memory to the application.

### Claim 25 (depends on 20)

The method of claim 20, wherein the in-use data pages are recovered in response to a request from the application, the method further including:
conducting a verification of the request based on the user identifier; and
mapping an address space associated with the root of the page table tree to a virtual address space associated with the application if the verification is successful.
