A system comprising: system main memory, the system main memory including a first memory level of volatile memory, and a second memory level comprising non-volatile memory, the first memory level being a near memory comprising one or more Dynamic Random Access Memory (DRAM) devices and to include a cached subset of the second memory level, the second memory level being a far memory that is larger and slower in comparison with the near memory, wherein the system main memory is to be coupled to a processor to enable communication between the processor and the system main memory, the processor being separate from the system main memory, and wherein a size of the system main memory to be presented to an operating system is a size of the second memory level; and a two-level memory, 2LM, controller to transfer data between the second memory level and the first memory level of the system main memory and the processor based on one or more OS requests; wherein the 2LM controller, in response to a detected uncorrectable error in a data segment included in the first memory level, is to further: determine if the data segment is unmodified with respect to a corresponding data segment included in the second memory level; copy the corresponding data segment included in the second memory level to the first memory level in response to a determination that the data segment is unmodified; and report a system error if the data segment is modified. system main memory, the system main memory including a first memory level of volatile memory, and a second memory level comprising non-volatile memory, the first memory level being a near memory comprising one or more Dynamic Random Access Memory (DRAM) devices and to include a cached subset of the second memory level, the second memory level being a far memory that is larger and slower in comparison with the near memory, wherein the system main memory is to be coupled to a processor to enable communication between the processor and the system main memory, the processor being separate from the system main memory, and wherein a size of the system main memory to be presented to an operating system is a size of the second memory level; and a two-level memory, 2LM, controller to transfer data between the second memory level and the first memory level of the system main memory and the processor based on one or more OS requests; wherein the 2LM controller, in response to a detected uncorrectable error in a data segment included in the first memory level, is to further: determine if the data segment is unmodified with respect to a corresponding data segment included in the second memory level; copy the corresponding data segment included in the second memory level to the first memory level in response to a determination that the data segment is unmodified; and report a system error if the data segment is modified. determine if the data segment is unmodified with respect to a corresponding data segment included in the second memory level; copy the corresponding data segment included in the second memory level to the first memory level in response to a determination that the data segment is unmodified; and report a system error if the data segment is modified.