€•ï7Œ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/arch/arm64/mpam”Œ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/arch/arm64/mpam”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/it_IT/arch/arm64/mpam”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/ja_JP/arch/arm64/mpam”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/ko_KR/arch/arm64/mpam”Œ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/arch/arm64/mpam”Œ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/arch/arm64/mpam”Œ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Œ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ=/var/lib/git/docbuild/linux/Documentation/arch/arm64/mpam.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒMPAM”h]”hŒMPAM”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ What is MPAM”h]”hŒ What is MPAM”…””}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒÍMPAM (Memory Partitioning and Monitoring) is a feature in the CPUs and memory system components such as the caches or memory controllers that allow memory traffic to be labelled, partitioned and monitored.”h]”hŒÍMPAM (Memory Partitioning and Monitoring) is a feature in the CPUs and memory system components such as the caches or memory controllers that allow memory traffic to be labelled, partitioned and monitored.”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)”}”(hXTraffic is labelled by the CPU, based on the control or monitor group the current task is assigned to using resctrl. Partitioning policy can be set using the schemata file in resctrl, and monitor values read via resctrl. See Documentation/filesystems/resctrl.rst for more details.”h]”hXTraffic is labelled by the CPU, based on the control or monitor group the current task is assigned to using resctrl. Partitioning policy can be set using the schemata file in resctrl, and monitor values read via resctrl. See Documentation/filesystems/resctrl.rst for more details.”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)”}”(hŒ§This allows tasks that share memory system resources, such as caches, to be isolated from each other according to the partitioning policy (so called noisy neighbours).”h]”hŒ§This allows tasks that share memory system resources, such as caches, to be isolated from each other according to the partitioning policy (so called noisy neighbours).”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œ what-is-mpam”ah ]”h"]”Œ what is mpam”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒSupported Platforms”h]”hŒSupported Platforms”…””}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj"h²hh³hÇh´Kubhï)”}”(hŒÑUse of this feature requires CPU support, support in the memory system components, and a description from firmware of where the MPAM device controls are in the MMIO address space. (e.g. the 'MPAM' ACPI table).”h]”hŒÕUse of this feature requires CPU support, support in the memory system components, and a description from firmware of where the MPAM device controls are in the MMIO address space. (e.g. the ‘MPAM’ ACPI table).”…””}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubhï)”}”(hŒ~The MMIO device that provides MPAM controls/monitors for a memory system component is called a memory system component. (MSC).”h]”hŒ~The MMIO device that provides MPAM controls/monitors for a memory system component is called a memory system component. (MSC).”…””}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubhï)”}”(hŒ„Because the user interface to MPAM is via resctrl, only MPAM features that are compatible with resctrl can be exposed to user-space.”h]”hŒ„Because the user interface to MPAM is via resctrl, only MPAM features that are compatible with resctrl can be exposed to user-space.”…””}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubhï)”}”(hŒÀMSC are considered as a group based on the topology. MSC that correspond with the L3 cache are considered together, it is not possible to mix MSC between L2 and L3 to 'cover' a resctrl schema.”h]”hŒÄMSC are considered as a group based on the topology. MSC that correspond with the L3 cache are considered together, it is not possible to mix MSC between L2 and L3 to ‘cover’ a resctrl schema.”…””}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K"hj"h²hubhï)”}”(hŒThe supported features are:”h]”hŒThe supported features are:”…””}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K&hj"h²hubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hX)Cache portion bitmap controls (CPOR) on the L2 or L3 caches. To expose CPOR at L2 or L3, every CPU must have a corresponding CPU cache at this level that also supports the feature. Mismatched big/little platforms are not supported as resctrl's controls would then also depend on task placement. ”h]”hï)”}”(hX(Cache portion bitmap controls (CPOR) on the L2 or L3 caches. To expose CPOR at L2 or L3, every CPU must have a corresponding CPU cache at this level that also supports the feature. Mismatched big/little platforms are not supported as resctrl's controls would then also depend on task placement.”h]”hX*Cache portion bitmap controls (CPOR) on the L2 or L3 caches. To expose CPOR at L2 or L3, every CPU must have a corresponding CPU cache at this level that also supports the feature. Mismatched big/little platforms are not supported as resctrl’s controls would then also depend on task placement.”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj{h²hh³hÇh´Nubj)”}”(hXMemory bandwidth maximum controls (MBW_MAX) on or after the L3 cache. resctrl uses the L3 cache-id to identify where the memory bandwidth control is applied. For this reason the platform must have an L3 cache with cache-id's supplied by firmware. (It doesn't need to support MPAM.) To be exported as the 'MB' schema, the topology of the group of MSC chosen must match the topology of the L3 cache so that the cache-id's can be repainted. For example: Platforms with Memory bandwidth maximum controls on CPU-less NUMA nodes cannot expose the 'MB' schema to resctrl as these nodes do not have a corresponding L3 cache. If the memory bandwidth control is on the memory rather than the L3 then there must be a single global L3 as otherwise it is unknown which L3 the traffic came from. There must be no caches between the L3 and the memory so that the two ends of the path have equivalent traffic. When the MPAM driver finds multiple groups of MSC it can use for the 'MB' schema, it prefers the group closest to the L3 cache. ”h]”(hï)”}”(hXMemory bandwidth maximum controls (MBW_MAX) on or after the L3 cache. resctrl uses the L3 cache-id to identify where the memory bandwidth control is applied. For this reason the platform must have an L3 cache with cache-id's supplied by firmware. (It doesn't need to support MPAM.)”h]”hXMemory bandwidth maximum controls (MBW_MAX) on or after the L3 cache. resctrl uses the L3 cache-id to identify where the memory bandwidth control is applied. For this reason the platform must have an L3 cache with cache-id’s supplied by firmware. (It doesn’t need to support MPAM.)”…””}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K.hj˜ubhï)”}”(hXcTo be exported as the 'MB' schema, the topology of the group of MSC chosen must match the topology of the L3 cache so that the cache-id's can be repainted. For example: Platforms with Memory bandwidth maximum controls on CPU-less NUMA nodes cannot expose the 'MB' schema to resctrl as these nodes do not have a corresponding L3 cache. If the memory bandwidth control is on the memory rather than the L3 then there must be a single global L3 as otherwise it is unknown which L3 the traffic came from. There must be no caches between the L3 and the memory so that the two ends of the path have equivalent traffic.”h]”hXmTo be exported as the ‘MB’ schema, the topology of the group of MSC chosen must match the topology of the L3 cache so that the cache-id’s can be repainted. For example: Platforms with Memory bandwidth maximum controls on CPU-less NUMA nodes cannot expose the ‘MB’ schema to resctrl as these nodes do not have a corresponding L3 cache. If the memory bandwidth control is on the memory rather than the L3 then there must be a single global L3 as otherwise it is unknown which L3 the traffic came from. There must be no caches between the L3 and the memory so that the two ends of the path have equivalent traffic.”…””}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hj˜ubhï)”}”(hŒWhen the MPAM driver finds multiple groups of MSC it can use for the 'MB' schema, it prefers the group closest to the L3 cache.”h]”hŒƒWhen the MPAM driver finds multiple groups of MSC it can use for the ‘MB’ schema, it prefers the group closest to the L3 cache.”…””}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K=hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj{h²hh³hÇh´Nubj)”}”(hŒÚCache Storage Usage (CSU) counters can expose the 'llc_occupancy' provided there is at least one CSU monitor on each MSC that makes up the L3 group. Exposing CSU counters from other caches or devices is not supported. ”h]”hï)”}”(hŒÙCache Storage Usage (CSU) counters can expose the 'llc_occupancy' provided there is at least one CSU monitor on each MSC that makes up the L3 group. Exposing CSU counters from other caches or devices is not supported.”h]”hŒÝCache Storage Usage (CSU) counters can expose the ‘llc_occupancy’ provided there is at least one CSU monitor on each MSC that makes up the L3 group. Exposing CSU counters from other caches or devices is not supported.”…””}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K@hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj{h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jyh³hÇh´K(hj"h²hubeh}”(h]”Œsupported-platforms”ah ]”h"]”Œsupported platforms”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒReporting Bugs”h]”hŒReporting Bugs”…””}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjôh²hh³hÇh´KEubhï)”}”(hŒ±If you are not seeing the counters or controls you expect please share the debug messages produced when enabling dynamic debug and booting with: dyndbg="file mpam_resctrl.c +pl"”h]”hŒµIf you are not seeing the counters or controls you expect please share the debug messages produced when enabling dynamic debug and booting with: dyndbg=â€file mpam_resctrl.c +pl—…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KFhjôh²hubeh}”(h]”Œreporting-bugs”ah ]”h"]”Œreporting bugs”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KEubeh}”(h]”Œmpam”ah ]”h"]”Œmpam”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”jFŒ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”}”(j jjjjñjîjjuŒ nametypes”}”(j ‰j‰jñ‰j‰uh}”(jhÊjhÝjîj"jjô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”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.