€•lIŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ!/translations/zh_CN/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/zh_TW/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/it_IT/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ja_JP/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ko_KR/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/pt_BR/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/sp_SP/edac/features”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒCSPDX-License-Identifier: GPL-2.0 OR GFDL-1.2-no-invariants-or-later”h]”hŒCSPDX-License-Identifier: GPL-2.0 OR GFDL-1.2-no-invariants-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ;/var/lib/git/docbuild/linux/Documentation/edac/features.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒEDAC/RAS features”h]”hŒEDAC/RAS features”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ*Copyright (c) 2024-2025 HiSilicon Limited.”h]”hŒ*Copyright (c) 2024-2025 HiSilicon Limited.”…””}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ field_list”“”)”}”(hhh]”(hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒAuthor”h]”hŒAuthor”…””}”(hhùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhôh³hÇh´KubhŒ field_body”“”)”}”(hŒ"Shiju Jose ”h]”hÞ)”}”(hj h]”(hŒ Shiju Jose <”…””}”(hj h²hh³Nh´NubhŒ reference”“”)”}”(hŒshiju.jose@huawei.com”h]”hŒshiju.jose@huawei.com”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:shiju.jose@huawei.com”uh1jhj ubhŒ>”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhôubeh}”(h]”h ]”h"]”h$]”h&]”uh1hòh³hÇh´K hhïh²hubhó)”}”(hhh]”(hø)”}”(hŒLicense”h]”hŒLicense”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hj<h³hÇh´Kubj)”}”(hŒ•The GNU Free Documentation License, Version 1.2 without Invariant Sections, Front-Cover Texts nor Back-Cover Texts. (dual licensed under the GPL v2) ”h]”hÞ)”}”(hŒ”The GNU Free Documentation License, Version 1.2 without Invariant Sections, Front-Cover Texts nor Back-Cover Texts. (dual licensed under the GPL v2)”h]”hŒ”The GNU Free Documentation License, Version 1.2 without Invariant Sections, Front-Cover Texts nor Back-Cover Texts. (dual licensed under the GPL v2)”…””}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hòh³hÇh´K hhïh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1híhhÊh²hh³hÇh´K ubhŒ bullet_list”“”)”}”(hhh]”hŒ list_item”“”)”}”(hŒWritten for: 6.15 ”h]”hÞ)”}”(hŒWritten for: 6.15”h]”hŒWritten for: 6.15”…””}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjsh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jqh³hÇh´KhhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Introduction”h]”hŒ Introduction”…””}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj˜h²hh³hÇh´KubhÞ)”}”(hŒ3EDAC/RAS components plugging and high-level design:”h]”hŒ3EDAC/RAS components plugging and high-level design:”…””}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj˜h²hubhŒenumerated_list”“”)”}”(hhh]”(jw)”}”(hŒScrub control ”h]”hÞ)”}”(hŒ Scrub control”h]”hŒ Scrub control”…””}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹h²hh³hÇh´Nubjw)”}”(hŒ Error Check Scrub (ECS) control ”h]”hÞ)”}”(hŒError Check Scrub (ECS) control”h]”hŒError Check Scrub (ECS) control”…””}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹h²hh³hÇh´Nubjw)”}”(hŒACPI RAS2 features ”h]”hÞ)”}”(hŒACPI RAS2 features”h]”hŒACPI RAS2 features”…””}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹h²hh³hÇh´Nubjw)”}”(hŒ"Post Package Repair (PPR) control ”h]”hÞ)”}”(hŒ!Post Package Repair (PPR) control”h]”hŒ!Post Package Repair (PPR) control”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹h²hh³hÇh´Nubjw)”}”(hŒMemory Sparing Repair control ”h]”hÞ)”}”(hŒMemory Sparing Repair control”h]”hŒMemory Sparing Repair control”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j·hj˜h²hh³hÇh´KubhÞ)”}”(hŒ;High level design is illustrated in the following diagram::”h]”hŒ:High level design is illustrated in the following diagram:”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj˜h²hubhŒ literal_block”“”)”}”(hXt +-----------------------------------------------+ | Userspace - Rasdaemon | | +-------------+ | | | RAS CXL mem | +---------------+ | | |error handler|---->| | | | +-------------+ | RAS dynamic | | | +-------------+ | scrub, memory | | | | RAS memory |---->| repair control| | | |error handler| +----|----------+ | | +-------------+ | | +--------------------------|--------------------+ | | +-------------------------------|------------------------------+ | Kernel EDAC extension for | controlling RAS Features | |+------------------------------|----------------------------+ | || EDAC Core Sysfs EDAC| Bus | | || +--------------------------|---------------------------+| | || |/sys/bus/edac/devices//scrubX/ | | EDAC device || | || |/sys/bus/edac/devices//ecsX/ |<->| EDAC MC || | || |/sys/bus/edac/devices//repairX | | EDAC sysfs || | || +---------------------------|--------------------------+| | || EDAC|Bus | | || | | | || +----------+ Get feature | Get feature | | || | | desc +---------|------+ desc +----------+ | | || |EDAC scrub|<-----| EDAC device | | | | | || +----------+ | driver- RAS |----->| EDAC mem | | | || +----------+ | feature control| | repair | | | || | |<-----| | +----------+ | | || |EDAC ECS | +---------|------+ | | || +----------+ Register RAS|features | | || ______________________|_____________ | | |+---------|---------------|------------------|--------------+ | | +-------|----+ +-------|-------+ +----|----------+ | | | | | CXL mem driver| | Client driver | | | | ACPI RAS2 | | scrub, ECS, | | memory repair | | | | driver | | sparing, PPR | | features | | | +-----|------+ +-------|-------+ +------|--------+ | | | | | | +--------|-----------------|--------------------|--------------+ | | | +--------|-----------------|--------------------|--------------+ | +---|-----------------|--------------------|-------+ | | | | | | | Platform HW and Firmware | | | +--------------------------------------------------+ | +--------------------------------------------------------------+”h]”hXt +-----------------------------------------------+ | Userspace - Rasdaemon | | +-------------+ | | | RAS CXL mem | +---------------+ | | |error handler|---->| | | | +-------------+ | RAS dynamic | | | +-------------+ | scrub, memory | | | | RAS memory |---->| repair control| | | |error handler| +----|----------+ | | +-------------+ | | +--------------------------|--------------------+ | | +-------------------------------|------------------------------+ | Kernel EDAC extension for | controlling RAS Features | |+------------------------------|----------------------------+ | || EDAC Core Sysfs EDAC| Bus | | || +--------------------------|---------------------------+| | || |/sys/bus/edac/devices//scrubX/ | | EDAC device || | || |/sys/bus/edac/devices//ecsX/ |<->| EDAC MC || | || |/sys/bus/edac/devices//repairX | | EDAC sysfs || | || +---------------------------|--------------------------+| | || EDAC|Bus | | || | | | || +----------+ Get feature | Get feature | | || | | desc +---------|------+ desc +----------+ | | || |EDAC scrub|<-----| EDAC device | | | | | || +----------+ | driver- RAS |----->| EDAC mem | | | || +----------+ | feature control| | repair | | | || | |<-----| | +----------+ | | || |EDAC ECS | +---------|------+ | | || +----------+ Register RAS|features | | || ______________________|_____________ | | |+---------|---------------|------------------|--------------+ | | +-------|----+ +-------|-------+ +----|----------+ | | | | | CXL mem driver| | Client driver | | | | ACPI RAS2 | | scrub, ECS, | | memory repair | | | | driver | | sparing, PPR | | features | | | +-----|------+ +-------|-------+ +------|--------+ | | | | | | +--------|-----------------|--------------------|--------------+ | | | +--------|-----------------|--------------------|--------------+ | +---|-----------------|--------------------|-------+ | | | | | | | Platform HW and Firmware | | | +--------------------------------------------------+ | +--------------------------------------------------------------+”…””}”hjOsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jMh³hÇh´K!hj˜h²hubj¸)”}”(hhh]”(jw)”}”(hŒ}EDAC Features components - Create feature-specific descriptors. For example: scrub, ECS, memory repair in the above diagram. ”h]”hÞ)”}”(hŒ|EDAC Features components - Create feature-specific descriptors. For example: scrub, ECS, memory repair in the above diagram.”h]”hŒ|EDAC Features components - Create feature-specific descriptors. For example: scrub, ECS, memory repair in the above diagram.”…””}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KShj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]h²hh³hÇh´Nubjw)”}”(hXEDAC device driver for controlling RAS Features - Get feature's attribute descriptors from EDAC RAS feature component and registers device's RAS features with EDAC bus and expose the features control attributes via sysfs. For example, /sys/bus/edac/devices//X/ ”h]”hÞ)”}”(hXEDAC device driver for controlling RAS Features - Get feature's attribute descriptors from EDAC RAS feature component and registers device's RAS features with EDAC bus and expose the features control attributes via sysfs. For example, /sys/bus/edac/devices//X/”h]”hXEDAC device driver for controlling RAS Features - Get feature’s attribute descriptors from EDAC RAS feature component and registers device’s RAS features with EDAC bus and expose the features control attributes via sysfs. For example, /sys/bus/edac/devices//X/”…””}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]h²hh³hÇh´Nubjw)”}”(hŒÖRAS dynamic feature controller - Userspace sample modules in rasdaemon for dynamic scrub/repair control to issue scrubbing/repair when excess number of corrected memory errors are reported in a short span of time. ”h]”hÞ)”}”(hŒÕRAS dynamic feature controller - Userspace sample modules in rasdaemon for dynamic scrub/repair control to issue scrubbing/repair when excess number of corrected memory errors are reported in a short span of time.”h]”hŒÕRAS dynamic feature controller - Userspace sample modules in rasdaemon for dynamic scrub/repair control to issue scrubbing/repair when excess number of corrected memory errors are reported in a short span of time.”…””}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j:j;j<hj=j>uh1j·hj˜h²hh³hÇh´KSubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ RAS features”h]”hŒ RAS features”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¶h²hh³hÇh´K`ubj¸)”}”(hhh]”jw)”}”(hŒ Memory Scrub ”h]”hÞ)”}”(hŒ Memory Scrub”h]”hŒ Memory Scrub”…””}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KahjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÇh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j:j;j<hj=j>uh1j·hj¶h²hh³hÇh´KaubhÞ)”}”(hŒGMemory scrub features are documented in `Documentation/edac/scrub.rst`.”h]”(hŒ(Memory scrub features are documented in ”…””}”(hjèh²hh³Nh´NubhŒtitle_reference”“”)”}”(hŒ`Documentation/edac/scrub.rst`”h]”hŒDocumentation/edac/scrub.rst”…””}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jðhjèubhŒ.”…””}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kchj¶h²hubj¸)”}”(hhh]”jw)”}”(hŒMemory Repair ”h]”hÞ)”}”(hŒ Memory Repair”h]”hŒ Memory Repair”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kehj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j:j;j<hj=j>Œstart”Kuh1j·hj¶h²hh³hÇh´KeubhÞ)”}”(hŒPMemory repair features are documented in `Documentation/edac/memory_repair.rst`.”h]”(hŒ)Memory repair features are documented in ”…””}”(hj,h²hh³Nh´Nubjñ)”}”(hŒ&`Documentation/edac/memory_repair.rst`”h]”hŒ$Documentation/edac/memory_repair.rst”…””}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jðhj,ubhŒ.”…””}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kghj¶h²hubeh}”(h]”Œ ras-features”ah ]”h"]”Œ ras features”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K`ubeh}”(h]”Œedac-ras-features”ah ]”h"]”Œedac/ras features”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jYjVj³j°jQjNuŒ nametypes”}”(jY‰j³‰jQ‰uh}”(jVhÊj°j˜jNj¶uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)”}”(hhh]”hÞ)”}”(hŒ:Enumerated list start value not ordinal-1: "2" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “2†(ordinal 2)”…””}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjãubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1jáhj¶h²hh³hÇh´KeubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.