# Device profile: Xiaomi, Snapdragon 8 Elite (Adreno 830), adb serial 35d0befa. # # One of the two devices the disaggregation campaign is measured on (the other is # devices/oppo-mali.env). It exists so that the pinning and thermal protocol the campaign # actually runs is written down in the repository instead of living in one operator's shell # history, and so that a `--device` argument names something reviewable. # # ============================ NOT YET DEVICE-VERIFIED ============================ # PROFILE_VERIFIED=0 below, and bench.sh / session.sh REFUSE to run against a profile that says # so - or that omits the key - unless --allow-unverified-profile is passed. (profile.sh is not in # that list: it records a simpleperf profile and pins nothing, so it has nothing to pin wrongly.) Two of the values here are # protocol constants that are known (the campaign pins big 1.96 GHz / little 1.55 GHz and gates # at 40 C), but the sysfs node names and the exact available OPPs are NOT: this is a Qualcomm # part and the harness was written against MediaTek, where the pin goes through # /proc/ppm/policy/hard_userlimit_* and the GPU through /proc/gpufreq/gpufreq_opp_freq. Neither # path exists on this SoC - Adreno pins through /sys/class/kgsl/kgsl-3d0/devfreq/{min,max}_freq # and its cpufreq policies are not policy6/policy0. # # A profile that quietly wrote MediaTek paths on this device would be the worst outcome # available: `su -c 'echo ... > /proc/ppm/...'` fails silently, bench.sh would report a run it # believes was pinned, and the pin-integrity fields it samples at window end would be the only # clue. So the unknown fields are left EMPTY and marked, rather than guessed, and the refusal is # the mechanism that keeps them from being used before somebody has read them off the device. # # To promote this profile: fill in the four TODO fields from the device # (`cat /sys/devices/system/cpu/cpufreq/policy*/scaling_available_frequencies`, # `ls /sys/class/kgsl/kgsl-3d0/devfreq/`, `for tz in /sys/class/thermal/thermal_zone*; do # echo "$tz $(cat $tz/type)"; done`), teach bench.sh the Qualcomm pin path, run one pinned # window, check big_cur/little_cur/gpu_cur_khz in the result JSON against the pins, and only # then set PROFILE_VERIFIED=1 in the same commit as the bench.sh change. # ================================================================================= PROFILE_VERIFIED=0 PIN_STYLE=qualcomm-kgsl DEVICE_SERIAL=35d0befa # Campaign protocol constants (perf-test-protocol): big 1.96 GHz, little 1.55 GHz, GPU at its # top OPP, and a 40 C start gate. The kHz values are the protocol's targets; the nearest actual # OPP has to be read off the device before they are used, because a cpufreq write that names a # frequency the policy does not offer is rounded silently. CPU_BIG_POLICY=TODO_VERIFY_ON_DEVICE CPU_BIG_FREQ=1958400 CPU_LITTLE_POLICY=TODO_VERIFY_ON_DEVICE CPU_LITTLE_FREQ=1555200 # Adreno pins through the kgsl devfreq knobs, not /proc/gpufreq. Left empty deliberately: see # the block above. GPU_PIN_KHZ= GPU_UTIL_NODE=/sys/class/kgsl/kgsl-3d0/gpubusy GPU_CURFREQ_NODE=/sys/class/kgsl/kgsl-3d0/gpuclk # Thermal gate: 40 C, the campaign's threshold. The zone TYPE differs per SoC and bench.sh # matches on it by name, so it has to be read off the device. THERMAL_ZONE_TYPE=TODO_VERIFY_ON_DEVICE THERMAL_START_MAX_MC=40000