Documentation/edac/scrub.rst
Source file repositories/reference/linux-study-clean/Documentation/edac/scrub.rst
File Facts
- System
- Linux kernel
- Corpus path
Documentation/edac/scrub.rst- Extension
.rst- Size
- 15433 bytes
- Lines
- 343
- Domain
- Support Tooling And Documentation
- Bucket
- Documentation
- Inferred role
- Support Tooling And Documentation: documentation
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.2-no-invariants-or-later
=============
Scrub Control
=============
Copyright (c) 2024-2025 HiSilicon Limited.
:Author: Shiju Jose <shiju.jose@huawei.com>
:License: The GNU Free Documentation License, Version 1.2 without
Invariant Sections, Front-Cover Texts nor Back-Cover Texts.
(dual licensed under the GPL v2)
- Written for: 6.15
Introduction
------------
Increasing DRAM size and cost have made memory subsystem reliability an
important concern. These modules are used where potentially corrupted data
could cause expensive or fatal issues. Memory errors are among the top
hardware failures that cause server and workload crashes.
Memory scrubbing is a feature where an ECC (Error-Correcting Code) engine
reads data from each memory media location, corrects if necessary and writes
the corrected data back to the same memory media location.
DIMMs can be scrubbed at a configurable rate to detect uncorrected memory
errors and attempt recovery from detected errors, providing the following
benefits:
1. Proactively scrubbing DIMMs reduces the chance of a correctable error
becoming uncorrectable.
2. When detected, uncorrected errors caught in unallocated memory pages are
isolated and prevented from being allocated to an application or the OS.
3. This reduces the likelihood of software or hardware products encountering
memory errors.
4. The additional data on failures in memory may be used to build up
statistics that are later used to decide whether to use memory repair
technologies such as Post Package Repair or Sparing.
There are 2 types of memory scrubbing:
1. Background (patrol) scrubbing while the DRAM is otherwise idle.
2. On-demand scrubbing for a specific address range or region of memory.
Several types of interfaces to hardware memory scrubbers have been
identified, such as CXL memory device patrol scrub, CXL DDR5 ECS, ACPI
RAS2 memory scrubbing, and ACPI NVDIMM ARS (Address Range Scrub).
The control mechanisms vary across different memory scrubbers. To enable
standardized userspace tooling, there is a need to present these controls
through a standardized ABI.
A generic memory EDAC scrub control allows users to manage underlying
scrubbers in the system through a standardized sysfs control interface. It
abstracts the management of various scrubbing functionalities into a unified
set of functions.
Use cases of common scrub control feature
-----------------------------------------
1. Several types of interfaces for hardware memory scrubbers have been
identified, including the CXL memory device patrol scrub, CXL DDR5 ECS,
ACPI RAS2 memory scrubbing features, ACPI NVDIMM ARS (Address Range Scrub),
and software-based memory scrubbers.
Annotation
- Atlas domain: Support Tooling And Documentation / Documentation.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.