162306a36Sopenharmony_ci===================================================================== 262306a36Sopenharmony_ciPlatform Profile Selection (e.g. /sys/firmware/acpi/platform_profile) 362306a36Sopenharmony_ci===================================================================== 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciOn modern systems the platform performance, temperature, fan and other 662306a36Sopenharmony_cihardware related characteristics are often dynamically configurable. The 762306a36Sopenharmony_ciplatform configuration is often automatically adjusted to the current 862306a36Sopenharmony_ciconditions by some automatic mechanism (which may very well live outside 962306a36Sopenharmony_cithe kernel). 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciThese auto platform adjustment mechanisms often can be configured with 1262306a36Sopenharmony_cione of several platform profiles, with either a bias towards low power 1362306a36Sopenharmony_cioperation or towards performance. 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciThe purpose of the platform_profile attribute is to offer a generic sysfs 1662306a36Sopenharmony_ciAPI for selecting the platform profile of these automatic mechanisms. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciNote that this API is only for selecting the platform profile, it is 1962306a36Sopenharmony_ciNOT a goal of this API to allow monitoring the resulting performance 2062306a36Sopenharmony_cicharacteristics. Monitoring performance is best done with device/vendor 2162306a36Sopenharmony_cispecific tools such as e.g. turbostat. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciSpecifically when selecting a high performance profile the actual achieved 2462306a36Sopenharmony_ciperformance may be limited by various factors such as: the heat generated 2562306a36Sopenharmony_ciby other components, room temperature, free air flow at the bottom of a 2662306a36Sopenharmony_cilaptop, etc. It is explicitly NOT a goal of this API to let userspace know 2762306a36Sopenharmony_ciabout any sub-optimal conditions which are impeding reaching the requested 2862306a36Sopenharmony_ciperformance level. 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciSince numbers on their own cannot represent the multiple variables that a 3162306a36Sopenharmony_ciprofile will adjust (power consumption, heat generation, etc) this API 3262306a36Sopenharmony_ciuses strings to describe the various profiles. To make sure that userspace 3362306a36Sopenharmony_cigets a consistent experience the sysfs-platform_profile ABI document defines 3462306a36Sopenharmony_cia fixed set of profile names. Drivers *must* map their internal profile 3562306a36Sopenharmony_cirepresentation onto this fixed set. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciIf there is no good match when mapping then a new profile name may be 3862306a36Sopenharmony_ciadded. Drivers which wish to introduce new profile names must: 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci 1. Explain why the existing profile names cannot be used. 4162306a36Sopenharmony_ci 2. Add the new profile name, along with a clear description of the 4262306a36Sopenharmony_ci expected behaviour, to the sysfs-platform_profile ABI documentation. 43