€•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[hj�ubah}”(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.