platform/surface: re-lift contained SP11 platform profile - #38
Conversation
WITHDRAWN: aggregate qualification candidateDo not install or hardware-test A final-tree comparison against the hardware-qualified This correction supersedes the build notice below; the old results are retained Historical aggregate build record (withdrawn)The held qualification branch
The #37/#38 registry overlap was combined without simplifying either feature: These are historical composition and packaging results, not hardware |
|
Aggregate hardware qualification is tracked in #41 at exact candidate This topic remains draft. A green aggregate build or CI result does not satisfy PR #41 is a test-only aggregate and must close without merge. |
1587b01 to
dd22e9e
Compare
Device-tree systems can use platform-profile providers even when ACPI is disabled, but the framework currently declines to register its class in that case. Register the class unconditionally and create the legacy ACPI attribute group only after ACPI has initialized successfully. Record that group registration and use it to guard legacy notifications and teardown. This keeps the class path independent of ACPI while also avoiding a stale acpi_kobj after an ACPI initialization failure. This exposes the native /sys/class/platform-profile/ interface without creating a synthetic /sys/firmware/acpi hierarchy. Existing ACPI systems retain the legacy aggregate attributes unchanged. This is a contained rework of the original SP11 non-ACPI enablement. Link: 106ad0d Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 has active cooling and supports SAM performance profiles, but its registry group does not instantiate the existing platform-profile and fan-speed devices. Add the existing fan-capable profile node and fan-speed node only to the Denali software-node group. Other Surface device groups are unchanged. Link: 5c513ff Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 needs a lower CPU-frequency ceiling in its low-power profile to match the validated cool-running baseline. Describe the 2.515 GHz ceiling and default low-power selection on an SP11-only software node. Set up frequency-QoS only when that per-device property is present. Devices without it retain the legacy TMP-then-fan write order, including writes that repeat the current profile. Track cpufreq policies through CREATE and REMOVE notifications plus a per-device CPU-hotplug state, so a policy that is fully offline at probe is capped when a CPU returns. Hold policy references while attaching requests, clear stored raw pointers synchronously on REMOVE, and stop hotplug callbacks before tearing down requests and the notifier. When entering low power, apply the cap before fan and TMP changes; when leaving, restore fan and TMP before dropping the cap. If a SAM write fails, read TMP back and reconcile fan and cap conservatively. An unavailable cpufreq subsystem degrades to profile-only operation. Omit the staging implementation’s no-op power-supply notifier. This is a contained rework of the original SP11 low-power implementation. Link: 30972bd Signed-off-by: Leon Silcott <leon@boasi.io>
dd22e9e to
a89959a
Compare
Summary
Re-lift the contained Surface Pro 11 platform-profile provider, fan node, and opt-in low-power CPU-frequency ceiling from upstream-review PR jglathe#91.
Containment
Dependency
This branch is independently reviewable but overlaps the SP11 registry group with draft battery PR #37. It must be re-lifted after #37 qualifies and merges. Stable patch IDs match all three focused jglathe#91 commits.
Historical pre-sync focused software evidence
At
1587b018fb27:git diff --check: passubuntu_x1e_defconfigW=1builds of platform-profile, Surface registry, and Surface profile objects: passCONFIG_CPU_FREQ=n: passCurrent re-lift verification
The three-commit series was re-lifted unchanged onto current beta bf631f9, producing head a89959a. Ordered stable patch IDs, author identities, and subjects match the pre-sync series, and git range-diff pairs all three commits exactly. GitHub CI and a local detached-head rerun of the exact-current-head integration check pass. Fresh case-sensitive ARM64 W=1 builds pass at exact head a89959a and tree 27d6fe159b4d for platform_profile.o, surface_aggregator_registry.o, and surface_platform_profile.o. Reproducible outputs are retained separately as out-profile-current-a89959-normal with CONFIG_CPU_FREQ=y and out-profile-current-a89959 with CONFIG_CPU_FREQ disabled.
Blocking qualification gates
The full SP11 and non-SP11 hardware matrix from jglathe#91 remains blocking, including policy hotplug/removal, error recovery, suspend/resume, fan/profile transitions, and pinned userspace integration.
This PR intentionally remains draft.
Post-battery composition preflight
A local-only re-lift of this three-commit series onto battery head
4eadf8da4b1cconfirms the required conflict resolution. The resulting audit head3276bf1126c1keepsssam_node_bat_acandssam_node_bat_mainabsent while retainingssam_node_tmp_perf_profile_sp11andssam_node_fan_speed. Its registry blobfa20d00a29f8exactly matches the previously audited aggregate. Exact-head integration checks pass, as do fresh normal andCONFIG_CPU_FREQ=nfocused builds. This local branch is not published or hardware-qualified; the final PR re-lift still waits for battery qualification and merge.