€•‡HŒ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Œ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Ê)”}”(hh÷h]”(hŒ Shiju Jose <”…””}”(hhù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”uh1jhhùubhŒ>”…””}”(hhùhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K hhõubah}”(h]”h ]”h"]”h$]”h&]”uh1hóhhà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 Kubhô)”}”(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)”…””}”(hj=hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hóhj(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”…””}”(hjhhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhj_hžhhŸh³h Nubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j]hŸ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]”(jc)”}”(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&]”uh1jbhj¥hžhhŸh³h Nubjc)”}”(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&]”uh1jbhj¥hžhhŸh³h Nubjc)”}”(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&]”uh1jbhj¥hžhhŸh³h Nubjc)”}”(hŒ"Post Package Repair (PPR) control ”h]”hÊ)”}”(hŒ!Post Package Repair (PPR) control”h]”hŒ!Post Package Repair (PPR) control”…””}”(hjôhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhj¥hžhhŸh³h Nubjc)”}”(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&]”uh1jbhj¥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 | | | +--------------------------------------------------+ | +--------------------------------------------------------------+”…””}”hj;sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j9hŸh³h K!hj„hžhubj¤)”}”(hhh]”(jc)”}”(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.”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KShjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhjIhžhhŸh³h Nubjc)”}”(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/”…””}”(hjhhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KVhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhjIhžhhŸh³h Nubjc)”}”(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&]”uh1jbhjIhž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]”jc)”}”(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&]”uh1jbhj³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]”jc)”}”(hŒMemory Repair ”h]”hÊ)”}”(hŒ Memory Repair”h]”hŒ Memory Repair”…””}”(hjýhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kehjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jbhjö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 ”…””}”(hjhžhhŸNh NubjÝ)”}”(hŒ&`Documentation/edac/memory_repair.rst`”h]”hŒ$Documentation/edac/memory_repair.rst”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÜhjubhŒ.”…””}”(hjhž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”jkŒ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”}”(jEjBjŸjœj=j:uŒ nametypes”}”(jE‰jŸ‰j=‰uh}”(jBh¶jœj„j:j¢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.