MEMORY RECOVERY PARTITIONS

Methods, systems, and devices for memory recovery partitions are described. A memory system may include a memory array configured with one or more logical partitions. In some examples, a primary boot image may be stored to a first logical partition and a recovery boot image may be stored to a second logical partition. During a boot operation, the memory system may determine whether the primary boot image includes one or more errors. If the primary boot image includes relatively few (or no) errors, the memory system may boot using the primary boot image. If the primary boot image includes a relatively high quantity of errors (e.g., higher than a threshold quantity of errors), the memory system may autonomously load a recovery boot image stored to the second logical partition.

FIELD OF TECHNOLOGY

The following relates to one or more systems for memory, including memory recovery partitions.

BACKGROUND

Memory devices are widely used to store information in various electronic devices such as computers, user devices, wireless communication devices, cameras, digital displays, and the like. Information is stored by programming memory cells within a memory device to various states. For example, binary memory cells may be programmed to one of two supported states, often corresponding to a logic 1 or a logic 0. In some examples, a single memory cell may support more than two possible states, any one of which may be stored by the memory cell. To access information stored by a memory device, a component may read (e.g., sense, detect, retrieve, identify, determine, evaluate) the state of one or more memory cells within the memory device. To store information, a component may write (e.g., program, set, assign) one or more memory cells within the memory device to corresponding states.

DETAILED DESCRIPTION

A memory system may include one or more arrays of memory cells (e.g., NAND memory cells) and a memory controller. In some examples, an array of memory cells may include one or more partitions (e.g., logical partitions) associated with a range of respective addresses (e.g., a range of logical addresses). Traditionally, one of the logical partitions may be designated as a primary partition to store a boot image (e.g., data, code) that is used to boot the memory system or a computing system that the memory system exists within. Moreover, one or more of the logical partitions may be designated as recovery partitions to store redundant copies of the boot image for reliability purposes, or may otherwise be utilized to update the primary boot image. For example, when updating the primary boot image, the updated boot image may be written to one of the recovery partitions and the recovery partition may subsequently be designated as the primary partition.

However, in such examples, switching between partitions used to boot the memory system is a manual process. That is, upon storing an updated boot image (e.g., updated data, updated code) to a recovery partition, the memory controller may receive a command to designate the recovery partition as the primary partition. Thus, if the primary partition becomes corrupt (e.g., if the data stored to the primary partition becomes corrupt), the memory system may experience a catastrophic error and may not have the ability to designate a recovery partition as the primary partition. Additionally or alternatively, even if the memory system was able to verify the integrity of data stored to a primary partition before or during a boot process (e.g., using a boot image stored to read-only memory (ROM), the memory system may still have switched between partitions manually, thus leading to a generally inflexible system architecture. Accordingly, a memory system configured to autonomously load a recovery partition may be desirable.

A memory system configured to autonomously load a recovery partition is described herein. In some examples, a memory system may include a memory array having one or more logical partitions. The memory system may be configured such that one partition (e.g., a primary partition; a partition operating in the foreground of the memory system) is accessible at a time. The other partitions (e.g., recovery partitions; partitions operating in the background of the memory system) may at least temporarily inaccessible. As described herein, during a boot process, the integrity of the boot image (e.g., the data, the code) stored to the primary partition may be verified. If the boot image includes a relatively low quantity of errors (or no errors), the memory system may be booted using the boot image stored to the primary partition. However, if the boot image includes a relatively high quantity of errors (e.g., higher than a threshold quantity of errors), the memory system may autonomously load a backup boot image stored to a recovery partition.

Moreover, when updating the primary boot image, the memory system may write the updated boot image to a partition other than the primary partition or the recovery partition. Accordingly, upon writing the primary boot image to the partition, the memory system may designate (e.g., re-designate) the primary and recovery partitions. By autonomously loading recovery partitions and updating boot images as described herein, the flexibility of the system's architecture may be improved and the system may avoid or mitigate catastrophic errors that would otherwise occur due to a manual-partition-shifting process.

Features of the disclosure are initially described in the context of systems, devices, and circuits with reference toFIG.1. Features of the disclosure are described in the context of systems and process flow diagrams with reference toFIGS.2and3. These and other features of the disclosure are further illustrated by and described in the context of an apparatus diagram and flowchart that relate to memory recovery partitions with reference toFIGS.4and5.

FIG.1illustrates an example of a system100that supports memory recovery partitions in accordance with examples as disclosed herein. The system100includes a host system105coupled with a memory system110.

The memory system controller115may also include a local memory120. In some cases, the local memory120may include read-only memory (ROM) or other memory that may store operating code (e.g., executable instructions) executable by the memory system controller115to perform functions ascribed herein to the memory system controller115. In some cases, the local memory120may additionally, or alternatively, include static random access memory (SRAM) or other memory that may be used by the memory system controller115for internal storage or calculations, for example, related to the functions ascribed herein to the memory system controller115.

In some cases, planes165may refer to groups of blocks170, and in some cases, concurrent operations may be performed on different planes165. For example, concurrent operations may be performed on memory cells within different blocks170so long as the different blocks170are in different planes165. In some cases, an individual block170may be referred to as a physical block, and a virtual block180may refer to a group of blocks170within which concurrent operations may occur. For example, concurrent operations may be performed on blocks170-a,170-b,170-c, and170-dthat are within planes165-a,165-b,165-c, and165-d, respectively, and blocks170-a,170-b,170-c, and170-dmay be collectively referred to as a virtual block180. In some cases, a virtual block may include blocks170from different memory devices130(e.g., including blocks in one or more planes of memory device130-aand memory device130-b). In some cases, the blocks170within a virtual block may have the same block address within their respective planes165(e.g., block170-amay be “block0” of plane165-a, block170-bmay be “block0” of plane165-b, and so on). In some cases, performing concurrent operations in different planes165may be subject to one or more restrictions, such as concurrent operations being performed on memory cells within different pages175that have the same page address within their respective planes165(e.g., related to command decoding, page address decoding circuitry, or other circuitry being shared across planes165).

In some cases, to update some data within a block170while retaining other data within the block170, the memory device130may copy the data to be retained to a new block170and write the updated data to one or more remaining pages of the new block170. The memory device130(e.g., the local controller135) or the memory system controller115may mark or otherwise designate the data that remains in the old block170as invalid or obsolete and may update a logical-to-physical (L2P) mapping table to associate the logical address (e.g., LBA) for the data with the new, valid block170rather than the old, invalid block170. In some cases, such copying and remapping may be performed instead of erasing and rewriting the entire old block170due to latency or wearout considerations, for example. In some cases, one or more copies of an L2P mapping table may be stored within the memory cells of the memory device130(e.g., within one or more blocks170or planes165) for use (e.g., reference and updating) by the local controller135or memory system controller115.

In some cases, L2P mapping tables may be maintained and data may be marked as valid or invalid at the page level of granularity, and a page175may contain valid data, invalid data, or no data. Invalid data may be data that is outdated due to a more recent or updated version of the data being stored in a different page175of the memory device130. Invalid data may have been previously programmed to the invalid page175but may no longer be associated with a valid logical address, such as a logical address referenced by the host system105. Valid data may be the most recent version of such data being stored on the memory device130. A page175that includes no data may be a page175that has never been written to or that has been erased.

In some cases, a memory system controller115or a local controller135may perform operations (e.g., as part of one or more media management algorithms) for a memory device130, such as wear leveling, background refresh, garbage collection, scrub, block scans, health monitoring, or others, or any combination thereof. For example, within a memory device130, a block170may have some pages175containing valid data and some pages175containing invalid data. To avoid waiting for all of the pages175in the block170to have invalid data in order to erase and reuse the block170, an algorithm referred to as “garbage collection” may be invoked to allow the block170to be erased and released as a free block for subsequent write operations. Garbage collection may refer to a set of media management operations that include, for example, selecting a block170that contains valid and invalid data, selecting pages175in the block that contain valid data, copying the valid data from the selected pages175to new locations (e.g., free pages175in another block170), marking the data in the previously selected pages175as invalid, and erasing the selected block170. As a result, the quantity of blocks170that have been erased may be increased such that more blocks170are available to store subsequent data (e.g., data subsequently received from the host system105).

In some cases, a memory system110may utilize a memory system controller115to provide a managed memory system that may include, for example, one or more memory arrays and related circuitry combined with a local (e.g., on-die or in-package) controller (e.g., local controller135). An example of a managed memory system is a managed NAND (MNAND) system.

The system100may include any quantity of non-transitory computer readable media that support memory recovery partitions. For example, the host system105(e.g., a host system controller106), the memory system110(e.g., a memory system controller115), or a memory device130(e.g., a local controller135) may include or otherwise may access one or more non-transitory computer readable media storing instructions (e.g., firmware, logic, code) for performing the functions ascribed herein to the host system105, the memory system110, or a memory device130. For example, such instructions, if executed by the host system105(e.g., by a host system controller106), by the memory system110(e.g., by a memory system controller115), or by a memory device130(e.g., by a local controller135), may cause the host system105, the memory system110, or the memory device130to perform associated functions as described herein.

In some examples, a memory system110may include a memory device130having one or more logical partitions. The memory system110may be configured such that one partition (e.g., a primary partition; a partition operating in the foreground of the memory system) is accessible at a time. The other partitions (e.g., recovery partitions; partitions operating in the background of the memory system) may at least temporarily inaccessible. As described herein, during a boot process, the integrity of the boot image (e.g., the data, the code) stored to the primary partition may be verified. If the boot image includes a relatively low quantity of errors (or no errors), the memory system may be booted using the boot image stored to the primary partition. However, if the boot image includes a relatively high quantity of errors (e.g., higher than a threshold quantity of errors), the memory system110may autonomously load a backup boot image stored to a recovery partition.

Moreover, when updating the primary boot image, the memory system110may write the updated boot image to a partition other than the primary partition or the recovery partition. Accordingly, upon writing the primary boot image to the partition, the memory system110may designate (e.g., re-designate) the primary and recovery partitions. By autonomously loading recovery partitions and updating boot images as described herein, the flexibility of the system's architecture may be improved and the memory system110may avoid or mitigate catastrophic errors that would otherwise occur due to a manual-partition-shifting process.

FIG.2illustrates an example of a system200that supports memory recovery partitions in accordance with examples as disclosed herein. The system200may be an example of a system100, and may implement aspects of the system100as described with reference toFIG.1. For example, host system205and memory system210may be examples of host system105and memory system110, respectively, as described with reference toFIG.1. Additionally or alternatively, the system200may be referred to as a computing system200. In some cases, the memory system210may be configured to autonomously (e.g., automatically) load a boot image from a recovery partition upon detecting an error when loading a boot image from the primary partition. By autonomously loading recovery partitions, the memory system210may provide a flexible architecture and catastrophic errors that would otherwise occur due to a manual-partition-shifting process may be mitigated.

The system200may include the host system205and the memory system210, where the host system205may be configured to communicate (e.g., via an interface235) with the memory system210. The host system205may include a host system controller220, which may be an example of the host system controller106, as described with reference toFIG.1. The host system controller220may be configured to transmit commands (e.g., boot commands) to the memory system210. The memory system210may include a memory system controller215which may be an example of memory system controller115, as described with reference toFIG.1. The memory system controller215may be configured to receive the commands from the host system controller220. In some examples, the memory system210may be an example of an embedded multimedia card (eMMC).

The memory system210may also include a memory array225. The memory array may include a plurality of memory cells (e.g., one or more banks of memory cells that each include one or more memory cells). The memory array225may include one or more logical partitions230. As described herein, each logical partition230may be associated with a respective range of logical addresses. The memory system210may be configured such that one partition230(e.g., a primary partition) is operating in the foreground at any given time. That is, the partition230operating in the foreground may be accessible by the memory system controller215and the other partitions230(e.g., the secondary partitions, the recovery partitions) may operate in the background and thus be temporarily inaccessible. Accordingly, each partition230may be associated with a same or similar range of logical addresses, but only physical addresses corresponding to the logical address of the partition230operating in the foreground may be accessible at any given time.

In some cases, the logical partitions230may be initially configured such that each logical partition230is associated with different data, different types of operations, or both. For example, the memory array225may include logical partitions230configured as a user partition230-a(e.g., associated with storing user data), a boot partition230-band a boot partition230-b(e.g., a bootable area that is configured to store a boot image), and general purpose partitions230-dthrough230-g. In some examples, however, one or more of the logical partitions230may be reconfigured for use as bootable areas, or configured to store different types of data or data associated with different types of operations.

In some examples, one of the logical partitions230may be designated as a primary partition to store a boot image (e.g., data, code) that is used to boot the memory system210or the computing system200. For example, the boot partition230-bmay be designated as the primary partition. The boot image (e.g., the primary boot image, the first boot image) may be stored to the boot partition230-bduring a manufacturing process or based on a command received from the host system205(e.g., during an installation process). Additionally or alternatively, the memory system controller215may configure (e.g., during a configuration stage) one or more partitions as a recovery partition. For example, the boot partition230-cmay be designated as a recovery partition. As described herein, recovery partitions may be utilized to store a copy of the primary boot image, or may be utilized when updating the primary boot image.

When the memory system210(or computing system200) transitions power states (e.g., turns on), the primary boot image may be loaded from the boot partition230-b. As described here, the memory system controller215may determine whether the boot image includes one or more errors to prevent or mitigate failure of the memory system210. In some cases, during the configuration stage, the memory system controller215may define one or more metrics (e.g., integrity metrics) for determining whether the boot image includes one or more errors. For example, the memory system controller215may generate a trusted cryptographic digest for the primary boot image.

During the boot stage, a cryptographic digest for the primary boot image may be generated and compared with the trusted cryptographic digest to determine whether to boot the primary boot image. Accordingly, during the configuration stage, the memory system controller215may select a hashing function for generating the trusted cryptographic digest. The hashing function may be selected based on one or more metrics such as desired system, desired system security, and other similar metrics.

In some cases, after the configuration stage, the host system controller220may transmit a command (e.g., a boot command) to the memory system controller215to initiate the boot operation (e.g., booting stage). Accordingly, the memory system210may transition from a first power state (e.g., a low power state, a reduced power state, an off state, a deep sleep state) to a second power state (e.g., an active state, an on state) in response to receiving the boot command. Upon transitioning power states, the memory system controller215may measure the primary boot image prior to the memory system210fully booting up.

To measure the primary boot image, the memory system controller215may generate a cryptographic digest for the primary boot image using a same hashing function or algorithm used to generate the trusted cryptographic digest. Upon generating the cryptographic digest for the primary boot image, the memory system controller215may compare the cryptographic digest with the trusted cryptographic digest. The memory system controller215may determine whether one or more errors exist in the primary boot image based on comparing the cryptographic digest to the trusted cryptographic digest. For example, the memory system controller215may determine that one or more errors exist in the primary boot image by determining that the cryptographic digest does not match the trusted cryptographic digest. Alternatively, the memory system controller215may determine that no errors (or relatively few errors) exist in the primary boot image by determining that the cryptographic digest matches the trusted cryptographic digest.

When the cryptographic digest matches the trusted cryptographic digest, the memory system controller215may load the primary boot image (e.g., execute the code stored to the boot partition230-b) and the memory system210may be booted. In some other cases, the memory system controller215may determine that one or more errors exist in the primary boot image based on the cryptographic digest not matching the trusted cryptographic digest. In such instances, the memory system controller215may autonomously (e.g., automatically, without instruction from the host system205) load the boot image stored to the boot partition230-c. The boot image stored to the boot partition230-cmay be designated as the primary boot image and the memory system controller215may, in some instances, verify the integrity of the recovery boot image by generating a cryptographic digest and comparing the generated cryptographic digest to the trusted cryptographic digest. By autonomously loading the recovery boot image, the memory system210may avoid potential errors that may have occurred due to loading (or attempting to load) the corrupt primary boot image.

In some examples, the logical partitions230may also be utilized when updating the primary boot image. For example, upon booting the memory system210(or the computing system200), it may be desirable to update the primary boot image. Accordingly, the memory system controller215may receive a command from the host system205that includes an updated boot image. By way of example, the memory system210may have been booted using the boot image stored to the boot partition230-b. Accordingly, upon receiving the command to update the primary boot image, the memory system controller215may designate a partition230(e.g., a partition other than the boot partition230-c, a third boot partition) as the recovery partition. A copy of the recovery boot image may be stored to the third boot partition (e.g., the recovery boot image may be copied from the partition230-cand stored to the third boot partition).

After copying the recovery boot image, the boot image stored to the boot partition230-cmay be updated using the updated boot image received from the host system205. Upon updating the boot image stored to the boot partition230-c, the boot partition230-cmay be designated as the primary boot partition. Accordingly, during a subsequent boot operation, the updated boot image store to the boot partition230-cmay be loaded (e.g., upon being verified). After successfully updating the boot image, the boot partition230-, the third boot partition, or any partition230may be designated as a recovery partition. Accordingly, any partition230of the memory system210may be designated as a primary boot partition or a recovery boot partition. Moreover, any of the partitions230may be utilized when updating a boot image. By autonomously loading recovery partitions and updating partitions230as described herein, the memory system210may provide a flexible architecture and catastrophic errors that would otherwise occur due to a manual-partition-shifting process may be mitigated.

FIG.3illustrates an example of a process flow diagram300that supports memory recovery partitions in accordance with examples as disclosed herein. The process flow diagram300may illustrate aspects or operations of a system100or200as described with reference toFIGS.1and2, respectively. For example, the process flow diagram300may depict operations at a host system305and at a memory system310, which may be examples of host system105and205and memory system110and210, as described with reference toFIGS.1and2respectively. In some cases, the memory system310may be configured to autonomously (e.g., automatically) load a boot image from a recovery partition upon detecting an error when loading a boot image from the primary partition. By autonomously loading recovery partitions, the memory system310may provide a flexible architecture and catastrophic errors that would otherwise occur due to a manual-partition-shifting process may be mitigated.

At322, the memory system controller315may define one or more integrity metrics for loading a boot image. For example, the memory system controller315may select a hashing function for generating a trusted cryptographic digest. The hashing function may be selected based on one or more metrics such as desired system, desired system security, and other similar metrics. Additionally or alternatively, during or prior to step322the primary boot image may be stored to the first logical partition320-aand the memory system controller315may generate the trusted cryptographic digest using the primary boot image.

At324, the memory system controller315may designate the second logical partition320-bas a recovery partition. As described herein, a boot image stored to the recovery partition may be autonomously loaded upon one or more errors associated with the primary boot image being detected. In some examples, upon the second logical partition320-bbeing selected as the recovery partition, a copy (e.g., a backup copy, a recovery copy) of the primary boot image may be stored to the second logical partition320-b.

At326, the host system305may transmit a boot command to the memory system310. In some cases, the host system controller may transmit the boot command and the memory system controller315may receive the boot command.

At328, the memory system310may transition from a first power state (e.g., a low power state, a reduced power state, an off state, a deep sleep state) to a second power state (e.g., an active state, an on state). The memory system controller315may initiate transitioning the memory system310from the first power state to the second power state in response to receiving the boot command (e.g., at326).

At330, the memory system controller315may determine whether any errors exist in the primary boot image (e.g., the boot image stored to the first logical partition320-a). For example, the memory system controller315may generate a cryptographic digest for the primary boot image (e.g., the memory system controller315may measure the primary boot image) and may compare the cryptographic digest to the trusted cryptographic digest. As described herein, whether the primary boot image or the recovery boot image is loaded is based on whether the cryptographic digest matches the trusted cryptographic digest. For example, if the digests match the process flow diagram300may continue to steps332-342. If the digests do not match, the process flow diagram300may continue to steps344-354.

At332, the primary boot image may be loaded from the first logical partition320-abased on the generated cryptographic digest matching the trusted cryptographic digest. In some examples, the memory system310(or a computing system that includes the host system305and the memory system310) may be booted based on loading the boot image stored to the first logical partition320-a.

At334, the memory system controller315may receive a command from the host system305. In some examples, the command may be an update command and may include an updated boot image for storing at the memory system310.

At336, the third logical partition320-cmay be designated as a recovery partition. In some examples, a copy of the primary boot image may be copied to (e.g., written to) the third logical partition320-cfrom the first logical partition320-a.

At338, the updated boot image may be stored to the second logical partition320-b. In some examples, data stored to the second logical partition320-bmay be overwritten by the data included in the command received (e.g., at334). In other examples, a portion of the data stored to the second logical partition320-bmay be updated or overwritten by the data included in the command received (e.g., at334). At340, upon the boot image being updated, the second logical partition320-bmay be designated as the primary partition.

At342, the boot image stored to the first logical partition320-amay be updated based on the primary boot image. In some examples, a copy of the primary boot image may be copied to (e.g., written to) the first logical partition320-afrom the second logical partition320-b. At344, upon the boot image being updated, the first logical partition320-amay be designated as the recovery partition. In other examples (not shown), the recovery boot image stored to the third logical partition320-cmay instead be updated and the third logical partition320-cmay remain as the recovery partition.

At346, the boot image stored to the second logical partition320-bmay be loaded. In some examples, the boot image stored to the second logical partition320-bmay be a recovery boot image and may be loaded automatically (e.g., autonomously, without any signaling from the host system305) based on the memory system controller315determining an error in the primary boot image (e.g., at330). In such examples, the memory system controller315may generate a cryptographic digest for the recovery boot image and may load the recovery boot image based on the cryptographic digest matching the trusted cryptographic digest.

In other examples, the boot image stored to the second logical partition320-bmay be a primary boot image and may be loaded based on the memory system controller315receiving a boot command from the host system305. In such examples, upon receiving the boot command, the memory system controller315may generate a cryptographic digest for the recovery boot image and may load the primary boot image based on the cryptographic digest matching the trusted cryptographic digest. If the cryptographic digest does not match the trusted cryptographic digest, the memory system controller315may load the recovery boot image stored to the first logical partition320-a(or the third logical partition320-c) as described herein.

Although the first logical partition320-aand the second logical partition320-bare described as storing a primary boot image, a primary boot image may be stored to any logical partition of a memory system310. Moreover, a recovery partition may be stored to any logical partition of a memory system310, and any logical partition may be utilized to update a primary boot image. By autonomously loading recovery partitions and updating partitions as described herein, the memory system310may provide a flexible architecture and catastrophic errors that would otherwise occur due to a manual-partition-shifting process may be mitigated.

FIG.4shows a block diagram400of a memory system420that supports memory recovery partitions in accordance with examples as disclosed herein. The memory system420may be an example of aspects of a memory system as described with reference toFIGS.1and2. The memory system420, or various components thereof, may be an example of means for performing various aspects of memory recovery partitions as described herein. For example, the memory system420may include a booting component425, a partition verification component430, a partition loading component435, a cryptographic generation component440, a cryptographic determination component445, a partition selection component450, a partition configuration component455, a command reception component460, or any combination thereof. Each of these components may communicate, directly or indirectly, with one another (e.g., via one or more buses).

The booting component425may be configured as or otherwise support a means for transitioning, by a memory system, from a first power state to a second power state. The partition verification component430may be configured as or otherwise support a means for determining whether a first boot image stored to a first logical partition of the memory system includes one or more errors based at least in part on transitioning from the first power state to the second power state. The partition loading component435may be configured as or otherwise support a means for loading, autonomously by the memory system, a second boot image stored to a second logical partition of the memory system based at least in part on determining that the first boot image stored to the first logical partition of the memory system includes one or more errors.

In some examples, the partition loading component435may be configured as or otherwise support a means for loading the first boot image stored to the first logical partition of the memory system based at least in part on determining that the first boot image stored to the first logical partition of the memory system does not include one or more errors.

In some examples, the partition selection component450may be configured as or otherwise support a means for designating a third logical partition of the memory system as a recovery partition for the first logical partition based at least in part on loading the first boot image stored to the first logical partition of the memory system. In some examples, the partition configuration component455may be configured as or otherwise support a means for updating the second boot image stored to the second logical partition of the memory system based at least in part on designating the third logical partition of the memory system as the recovery partition for the first logical partition.

In some examples, the partition selection component450may be configured as or otherwise support a means for designating the second logical partition of the memory system as a primary partition based at least in part on updating the second boot image stored to the second logical partition. In some examples, the partition configuration component455may be configured as or otherwise support a means for updating the first boot image stored to the first logical partition of the memory system based at least in part on designating the second logical partition of the memory system as the primary partition. In some examples, the partition selection component450may be configured as or otherwise support a means for designating the first boot image as the recovery partition for the second logical partition based at least in part on updating the first boot image stored to the first logical partition of the memory system.

In some examples, the command reception component460may be configured as or otherwise support a means for receiving, from a host system, a command including data for updating the second boot image.

In some examples, to support determining whether the first boot image stored to the first logical partition of the memory system includes the one or more errors, the cryptographic generation component440may be configured as or otherwise support a means for generating, by the memory system, a cryptographic digest for the first boot image based at least in part on the memory system transitioning from the first power state to the second power state. In some examples, to support determining whether the first boot image stored to the first logical partition of the memory system includes the one or more errors, the cryptographic determination component445may be configured as or otherwise support a means for comparing, by the memory system, the generated cryptographic digest to a trusted cryptographic digest for the first boot image.

In some examples, the cryptographic determination component445may be configured as or otherwise support a means for determining that the generated cryptographic digest for the first boot image does not match the trusted cryptographic digest based at least in part on comparing the generated cryptographic digest to the trusted cryptographic digest, where loading the second boot image stored to the second logical partition of the memory system is based at least in part on determining that the generated cryptographic digest for the first boot image does not match the trusted cryptographic digest.

In some examples, the second logical partition includes a recovery partition. In some examples, the second boot image includes a backup of the first boot image.

In some examples, the partition selection component450may be configured as or otherwise support a means for designating the second logical partition as a recovery partition prior to determining whether the first boot image stored to a first logical partition of the memory system includes the one or more errors, where the second boot image includes a backup of the first boot image.

In some examples, transitioning from the first power state to the second power state occurs in connection with a boot procedure for one or more components of a computing system that includes the memory system and one or more host systems. In some examples, the first boot image and the second boot image are for booting one or more components of the computing system.

In some examples, to support loading, autonomously by the memory system, the second boot image, the partition loading component435may be configured as or otherwise support a means for loading, by the memory system, the second boot image without receiving an indication of the second logical partition or an indication of the second boot image from a host system subsequent to transitioning from the first power state to the second power state and prior to loading the second boot image.

FIG.5shows a flowchart illustrating a method500that supports memory recovery partitions in accordance with examples as disclosed herein. The operations of method500may be implemented by a memory system or its components as described herein. For example, the operations of method500may be performed by a memory system as described with reference toFIGS.1through4. In some examples, a memory system may execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally, or alternatively, the memory system may perform aspects of the described functions using special-purpose hardware.

At505, the method may include transitioning, by a memory system, from a first power state to a second power state. The operations of505may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of505may be performed by a booting component425as described with reference toFIG.4.

At510, the method may include determining whether a first boot image stored to a first logical partition of the memory system includes one or more errors based at least in part on transitioning from the first power state to the second power state. The operations of510may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of510may be performed by a partition verification component430as described with reference toFIG.4.

At515, the method may include loading, autonomously by the memory system, a second boot image stored to a second logical partition of the memory system based at least in part on determining that the first boot image stored to the first logical partition of the memory system includes one or more errors. The operations of515may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of515may be performed by a partition loading component435as described with reference toFIG.4.

Aspect 1: A method, apparatus, or non-transitory computer-readable medium including operations, features, circuitry, logic, means, or instructions, or any combination thereof for transitioning, by a memory system, from a first power state to a second power state; determining whether a first boot image stored to a first logical partition of the memory system includes one or more errors based at least in part on transitioning from the first power state to the second power state; and loading, autonomously by the memory system, a second boot image stored to a second logical partition of the memory system based at least in part on determining that the first boot image stored to the first logical partition of the memory system includes one or more errors.

Aspect 2: The method, apparatus, or non-transitory computer-readable medium of aspect 1, further including operations, features, circuitry, logic, means, or instructions, or any combination thereof for loading the first boot image stored to the first logical partition of the memory system based at least in part on determining that the first boot image stored to the first logical partition of the memory system does not include one or more errors.

Aspect 3: The method, apparatus, or non-transitory computer-readable medium of aspect 2, further including operations, features, circuitry, logic, means, or instructions, or any combination thereof for designating a third logical partition of the memory system as a recovery partition for the first logical partition based at least in part on loading the first boot image stored to the first logical partition of the memory system and updating the second boot image stored to the second logical partition of the memory system based at least in part on designating the third logical partition of the memory system as the recovery partition for the first logical partition.

Aspect 4: The method, apparatus, or non-transitory computer-readable medium of aspect 3, further including operations, features, circuitry, logic, means, or instructions, or any combination thereof for designating the second logical partition of the memory system as a primary partition based at least in part on updating the second boot image stored to the second logical partition; updating the first boot image stored to the first logical partition of the memory system based at least in part on designating the second logical partition of the memory system as the primary partition; and designating the first boot image as the recovery partition for the second logical partition based at least in part on updating the first boot image stored to the first logical partition of the memory system.

Aspect 5: The method, apparatus, or non-transitory computer-readable medium of any of aspects 3 through 4, where operations, features, circuitry, logic, means, or instructions, or any combination thereof for updating the second boot image stored to the second logical partition include operations, features, circuitry, logic, means, or instructions, or any combination thereof for receiving, from a host system, a command including data for updating the second boot image.

Aspect 6: The method, apparatus, or non-transitory computer-readable medium of any of aspects 1 through 5, where operations, features, circuitry, logic, means, or instructions, or any combination thereof for determining whether the first boot image stored to the first logical partition of the memory system include the one or more errors includes operations, features, circuitry, logic, means, or instructions, or any combination thereof for generating, by the memory system, a cryptographic digest for the first boot image based at least in part on the memory system transitioning from the first power state to the second power state and comparing, by the memory system, the generated cryptographic digest to a trusted cryptographic digest for the first boot image.

Aspect 7: The method, apparatus, or non-transitory computer-readable medium of aspect 6, further including operations, features, circuitry, logic, means, or instructions, or any combination thereof for determining that the generated cryptographic digest for the first boot image does not match the trusted cryptographic digest based at least in part on comparing the generated cryptographic digest to the trusted cryptographic digest, where loading the second boot image stored to the second logical partition of the memory system is based at least in part on determining that the generated cryptographic digest for the first boot image does not match the trusted cryptographic digest.

Aspect 8: The method, apparatus, or non-transitory computer-readable medium of aspect 7, where the second logical partition includes a recovery partition and the second boot image includes a backup of the first boot image.

Aspect 9: The method, apparatus, or non-transitory computer-readable medium of any of aspects 1 through 8, further including operations, features, circuitry, logic, means, or instructions, or any combination thereof for designating the second logical partition as a recovery partition prior to determining whether the first boot image stored to a first logical partition of the memory system includes the one or more errors, where the second boot image includes a backup of the first boot image.

Aspect 10: The method, apparatus, or non-transitory computer-readable medium of any of aspects 1 through 9, where transitioning from the first power state to the second power state occurs in connection with a boot procedure for one or more components of a computing system that includes the memory system and one or more host systems and the first boot image and the second boot image are for booting one or more components of the computing system.

Aspect 11: The method, apparatus, or non-transitory computer-readable medium of any of aspects 1 through 10, where operations, features, circuitry, logic, means, or instructions, or any combination thereof for loading, autonomously by the memory system, the second boot image include operations, features, circuitry, logic, means, or instructions, or any combination thereof for loading, by the memory system, the second boot image without receiving an indication of the second logical partition or an indication of the second boot image from a host system subsequent to transitioning from the first power state to the second power state and prior to loading the second boot image.

As used herein, the term “substantially” means that the modified characteristic (e.g., a verb or adjective modified by the term substantially) need not be absolute but is close enough to achieve the advantages of the characteristic.