# US 9,436,629 B2 · Dynamic boot image streaming

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

- Number: US 9,436,629 B2
- Document ID: US9436629B2
- Status: Granted
- Kind: B2
- Application number: 13/676,701
- Filed: 2012-11-14
- Published: 2013-05-16
- Granted: 2016-09-06
- Earliest claimed: 2011-11-15
- Assignees: Marvell World Trade Ltd.
- Applicants: Marvell World Trade Ltd.
- Inventors: Vamsi Krishna Baratam; Tolga Nihat Aytek
- Web page: https://patentgrep.com/patent/US9436629B2

## CPC

- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 9/441: {Multiboot arrangements, i.e. selecting an operating system to be loaded}
- G06F 13/1694: {Configuration of memory controller to different memory types}
- G06F 2213/2802: DMA using DMA transfer descriptors
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present disclosure describes apparatuses and techniques for dynamic boot image streaming. In some aspects a memory controller that is streaming multiple boot images from a first memory to a second memory is stalled, a descriptor for streaming one of the multiple boot images from the first memory to a non-contiguous memory location is generated while the memory controller is stalled, and the memory controller is resumed effective to cause the memory controller to stream, based on the descriptor generated while the memory controller is stalled, the second boot image to the non-contiguous memory location.

## Claims

### Claim 1

A method comprising:
causing a memory controller that is streaming, via a direct memory access (DMA) operation, multiple boot images from a first memory to a second memory to execute a link-to-self effective to stall the memory controller after streaming a first one of the multiple boot images to the second memory, the second memory accessible by a host device associated with the memory controller;
generating, via a processor of the host device, while the memory controller is stalled, and based on the first boot image streamed to the second memory, a descriptor for streaming a second one of the multiple boot images from the first memory to a non-contiguous memory location; and
pointing, via the processor of the host device, the link-to-self descriptor to a location of the descriptor for streaming the second boot image effective to resume the memory controller to stream, based on the descriptor and via another DMA operation, the second boot image to the non-contiguous memory location.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first boot image streamed to the second memory includes the link-to-self descriptor and information useful to generate the descriptor for streaming the second boot image.

### Claim 3 (depends on 1)

The method of claim 1, wherein stalling the memory controller stalls a clock line of the memory controller.

### Claim 4 (depends on 1)

The method of claim 1, wherein the DMA operation and the other DMA operation are performed via a DMA engine associated with the memory controller.

### Claim 5 (depends on 1)

The method of claim 1, wherein the memory controller and the first memory are embodied as part of an embedded multimedia card (eMMC) device.

### Claim 6 (depends on 1)

The method of claim 1, wherein:
the first memory is single-level cell (SLC) or multi-level cell (MLC) NAND based managed flash memory; and
the second memory is static random-access memory (SRAM).

### Claim 7 (depends on 1)

The method of claim 1, wherein the non-contiguous memory location is a memory location of the second memory or a third memory.

### Claim 8 (depends on 7)

The method of claim 7, wherein the third memory is dynamic random-access memory (DRAM), and further comprising configuring, while the memory controller is stalled, the third memory to receive the second boot image from the first memory.

### Claim 9

One or more computer-readable hardware-based storage devices embodying processor-executable instructions that, responsive to execution by a processor of a host device, implement a stream manager to:
cause a memory controller that is streaming, via a direct memory access (DMA) operation, multiple boot images from a non-volatile memory to a volatile memory to execute a link-to-self effective to stall the memory controller after streaming a first one of the multiple boot images to the volatile memory, the volatile memory accessible by the host device;
generate, via the processor of the host device, while the memory controller is stalled, and based on the first boot image streamed to the volatile memory, a descriptor for streaming a second one of the multiple boot images from the non-volatile memory to a non-contiguous location of the volatile memory or another volatile memory; and
point, via the processor of the host device, the link-to-self descriptor to a location of the descriptor for streaming the second boot image effective to resume the memory controller to stream, based on the descriptor and via another DMA operation, the second boot image to the non-contiguous location of the volatile memory or the other volatile memory.

### Claim 10 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, wherein the memory controller and non-volatile memory are embodied as an embedded multimedia card (eMMC) device.

### Claim 11 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, wherein the stream manager is further implemented to initiate the streaming of the multiple boot images responsive to a single command or power event.

### Claim 12 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, wherein the first boot image streamed to the volatile memory includes the link-to-self descriptor and information useful to generate the descriptor for streaming the second boot image.

### Claim 13 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, wherein stalling the memory controller stalls a clock line of the memory controller.

### Claim 14 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, the other volatile memory is dynamic random-access memory (DRAM), and the stream manager is further implemented to configure, while the memory controller is stalled, the DRAM to receive the second boot image from the non-volatile memory.

### Claim 15 (depends on 9)

The one or more computer-readable hardware-based storage devices of claim 9, wherein:
the first memory is single-level cell (SLC) or multi-level cell (MLC) NAND based managed flash memory; and
the second memory is static random-access memory (SRAM).

### Claim 16

A system comprising:
a first memory storing multiple boot images;
a memory controller configured to stream the multiple boot images from the first memory via direct memory access (DMA);
a second memory from which processor-executable instructions of one or more of the multiple boot images are executable;
a processor configured to execute the processor-executable instructions of one or more of the multiple boot images; and
a stream manager to:
cause, while streaming the multiple boot images from the first memory to the second memory via a DMA operation, the memory controller to execute a link-to-self effective to stall the memory controller after streaming a first one of the multiple boot images to the second memory;
generate, via the processor of the system, while the memory controller is stalled, and based on the first boot image streamed to the second memory, a descriptor for streaming a second one of the multiple boot images from the first memory to a non-contiguous memory location; and
point, via the processor of the system, the link-to-self descriptor to a location of the descriptor for streaming the second boot image effective to resume the memory controller to stream, based on the descriptor and via another DMA operation, the second boot image to the non-contiguous memory location.

### Claim 17 (depends on 16)

The system of claim 16, wherein the first boot image streamed to the second memory includes the link-to-self descriptor and information useful to generate the descriptor for streaming the second boot image.

### Claim 18 (depends on 16)

The system of claim 16, wherein the non-contiguous memory location is a memory location of the second memory or a third memory.

### Claim 19 (depends on 16)

The system of claim 16, wherein stalling the memory controller stalls a clock line of the memory controller.

### Claim 20 (depends on 16)

The system of claim 16, wherein the memory controller and the first memory are embodied as part of an embedded multimedia card (eMMC) device.
