Skip to content

platform/surface: re-lift contained SP11 platform profile - #38

Draft
ooaklee wants to merge 3 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
sp11/beta-platform-profile
Draft

platform/surface: re-lift contained SP11 platform profile#38
ooaklee wants to merge 3 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
sp11/beta-platform-profile

Conversation

@ooaklee

@ooaklee ooaklee commented Sep 2, 2026

Copy link
Copy Markdown
Owner

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

  • profile and fan devices exist only in the SP11 registry group
  • CPU-frequency QoS is allocated only when the SP11 software-node property is present
  • existing Surface devices without that property retain the legacy transition path
  • ACPI notification and teardown paths remain state-guarded

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:

  • beta integration validator: pass
  • strict checkpatch: 0 errors
  • git diff --check: pass
  • clean case-sensitive ARM64 ubuntu_x1e_defconfig W=1 builds of platform-profile, Surface registry, and Surface profile objects: pass
  • the same objects with CONFIG_CPU_FREQ=n: pass

Current 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 4eadf8da4b1c confirms the required conflict resolution. The resulting audit head 3276bf1126c1 keeps ssam_node_bat_ac and ssam_node_bat_main absent while retaining ssam_node_tmp_perf_profile_sp11 and ssam_node_fan_speed. Its registry blob fa20d00a29f8 exactly matches the previously audited aggregate. Exact-head integration checks pass, as do fresh normal and CONFIG_CPU_FREQ=n focused builds. This local branch is not published or hardware-qualified; the final PR re-lift still waits for battery qualification and merge.

@ooaklee

ooaklee commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

WITHDRAWN: aggregate qualification candidate

Do not install or hardware-test 7.2.2-sp11beta1 or candidate
80ecee88b749d7324e1274c0a1cf6dfd752fddfa.

A final-tree comparison against the hardware-qualified
sp11/integration-7.2.x source found active camera behavior missing from that
candidate: VFE680 MIPI RAW write-client mode, CSID680 crop/drop-engine
containment, and CAMSS partial stream-start unwind. Compile, schema, and package
success did not detect this runtime-semantic gap. A focused repair and a new,
uniquely named candidate are required before hardware testing.

This correction supersedes the build notice below; the old results are retained
only as reproducibility evidence.


Historical aggregate build record (withdrawn)

The held qualification branch sp11/ubuntu-qcom-x1e-7.2.y-beta-qualification
at 80ecee88b749 combined the provisional beta with draft PRs #36#39 in
dependency order.

  • clean full ARM64 ubuntu_x1e_defconfig build: passed through modules,
    MODPOST, vmlinux, Image, vmlinuz, and vmlinuz.efi
  • aggregate touched-object W=1 build: passed
  • X1E/OLED, X1P/LCD, and representative non-SP11 DTBs: passed
  • all six changed binding families: passed; only two unrelated pre-existing
    schema warnings remained
  • complete bindeb-pkg: passed with unique kernel release
    7.2.2-sp11beta1
  • image package SHA-256:
    acc6368a15b5fcb4e0eb2059e5c401b14e87a5c2b3178fea73acdeed11f75ee4

The #37/#38 registry overlap was combined without simplifying either feature:
SP11 SAM battery/AC nodes remained omitted, and only the SP11 profile/fan nodes
were added.

These are historical composition and packaging results, not hardware
acceptance. They do not change any PR's draft status or waive any listed device,
non-SP11, userspace, provenance, or contributor-attestation gate.

@ooaklee

ooaklee commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

Aggregate hardware qualification is tracked in #41 at exact candidate
08249986a3f4efd7e0826c29e830601bfde928ed (tree
da7479fbffe997cdc980a147b4cb929d71253185).

This topic remains draft. A green aggregate build or CI result does not satisfy
its topic-specific hardware, dependency, provenance, or non-SP11 gates. Record
full-system evidence in #41 and link the relevant result back here before this
topic leaves draft state.

PR #41 is a test-only aggregate and must close without merge.

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>
@ooaklee
ooaklee force-pushed the sp11/beta-platform-profile branch from dd22e9e to a89959a Compare September 4, 2026 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant