Repository navigation
Consolidate our Linux WIP into aurora-wip - #534
Merged
Merged
Conversation
Device::parent is a public API in the carried Asahi abstractions, and AOP service lookup uses it with AUXILIARY_BUS disabled. The inherited expectation described the upstream crate-private helper and becomes unfulfilled in the built-in Asahi/firmware KUnit recipe. WERROR correctly rejects it. Remove the obsolete dead_code expectation from the public method. Keep warning enforcement and the minimal test config; do not enable an unrelated bus to hide the warning. Production behavior is unchanged. Assisted-by: LLM (cherry picked from commit e7843a8)
With SCHEDSTATS disabled, stock bindgen loses the alignment of the empty sched_statistics member and shifts task_struct.mm. A current-MM read can then pass a scheduler-list pointer to the RSS helpers. Keep unconditional size, alignment and offset checks in production builds and document the corrected generator and command-line BINDGEN selection.
Keep defconfig plus the single shared fragment while restoring SELinux and its LSM policy order, nftables and NAT, container and systemd requirements, filesystems, hardening, desktop compatibility and attached USB peripherals. Do not enable scheduler statistics to hide an invalid Rust binding layout.
Prepare the pinned generator at a stable source-tree entry point and prefer it for in-tree and O= builds. Keep every generated layout assertion mandatory and retain stock-tool rejection coverage. Document upstream status and the scope of aligned empty records. Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Assisted-by: LLM
Asahi dracut loads vfat and mounts the system ESP without charset options before unpacking vendor firmware. Match Fedora codepage 437 and ASCII defaults with built-in converters so the mount does not depend on a modular ISO-8859-1 converter absent from initramfs. Retain XZ and Zstd firmware loading for distribution firmware packages. Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Assisted-by: LLM
…t record When a compute command fails on the GPU the firmware writes a zero-duration completion record for it, which quarantines its queue, and reports the failure with a firmware event of type 7 carrying the queue and the stamp the command would have stored. It never stores that stamp. The driver ignored the event, so the quarantine waited for a retirement witness that could not arrive, and the queue kept its pool, its traversal scratch and its share of the lower GPU VA window for as long as the module stayed loaded. Under ray query stress that fails this way every few seconds (for example ray_query.stress.geometry_shader beside other clients) the retained queues filled the lower window within minutes. Every later allocation there failed: publications returned EBUSY, and gnome-shell crashed on ENOMEM creating a 16K texture after about 7 minutes. Decode the event as ComputeFault and accept its stamp as the faulted command's completion stamp for the quarantine's retirement witness, while it is newer than the stored one. The witness still requires the queue's ring to be fully consumed, so commands published after the failed one keep waiting for their own stamp.
Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The J616s panel has no adj-height-mm property in the r5g DT. With its notch hidden, probe therefore leaves height_mm zero and the panel EDID builder returns EINVAL. Read the full height before the optional adjusted height and describe the 216 mm viewport in DT. Even with dimensions repaired, the real 118-line vertical porch and 82-line notch-expanded pulse cannot fit in a base EDID DTD. Bound those fields only in the synthetic identity summary, retaining resolution, clock and blanking. Enumerate and program the unchanged DCP catalogue. Restore exact connector millimetres after DRM's EDID update. Test the absent ADT panel nodes with synthetic machine-level properties, real mode geometry, missing adjusted height, and the actual iomfb probe and DRM EDID blob allocation. The publication KUnit case fails on r5g's builder even after repairing the height read. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Keep numeric serial zero when no panel identity source provides one, but use an explicit "unspecified" text descriptor instead of eight zeroes. Both remain non-null to userspace, and edid-decode no longer warns about a dummy serial on the generic J616s fallback. Do not invent an identity. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The shared timestamp writer delegates to TimestampVmap after the G17 mapping reuse change. Compile that production helper in the host test instead of providing a Map without write(), so the stores, cache clean and overlapping-destination checks run again. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Update the host adapters for the shared availability notifications and compute source loans introduced by the G17 submission changes. Exercise the production ReaderHint predicate and verify a loan prevents sharing, reuse and rearming until its last reader leaves. Keep the close, recovery, growth and first-publication negative controls. Point the sharing mutations at the current shareable predicate so both retirement and kill guards are still tested. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Use valid sixteen-slot handoffs in the calibration KUnit fixture, with both eleven-state maps ending at raw OPP 15. Check the highest state's second voltage lane as well as the intermediate-state ordering and relative-frequency consistency. The former 0..10 fixture could not pass the production map reader and never exercised the final five raw operating points. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Run both dynamic compute growth and the full logical queue budget checks with the 25G83 floor of 32, alongside the existing floors. This checks render headroom and firmware-owned QID exclusion on the M4 Pro layout. Bring the host resource runner forward to the shared reserve_for helper and current render reserve, retaining its capacity and stale-ID controls. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Follow the split reusable-binding, raw publication and domain-wait helpers when checking scheduler-release ordering. Keep the timeout check at the shared wait helper. Update growth and pool-admission adapters for source loans, reserve_for and the off-lock compute slot allocation boundary. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Adapt the controlled-clock tests to the progress-domain waits and bound compute fast-path fallback. Keep one admission budget across retries, growth and work-state waits, with cancellation and VM-status checks. Replace the obsolete single-check mutation with a disabled shared-deadline control: release waits now perform additional admission checks. Retain negative controls for renewed budgets, gate wake storms and alias lifetime. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Update the host DART adapter for the firmware mirror/handoff dispatch, DCP domain flush and managed-stream quarantine. Verify that a failed page-table publication still issues invalidation, its first error wins, and a power failure does not skip a second reachable DART. Keep the device-address offset, locked/unlocked and legacy controls. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Trace calibration, firmware admission, queueing, power, recovery and memory paths against the shared Neo backend. Separate changes already present through #463 and #423 from firmware ABI restrictions and missing hardware measurements. Record the public-source boundary for M5 Pro. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The parameter accessor now returns a copied integer. Update the host adapter so the production priority selection compiles with the same API. This retains the existing firmware/version and explicit-policy controls. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Add the missing module description so the shared Fedora build no longer reports a modpost warning for pmp-report-test. Test behavior is unchanged. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The Rust kunit_tests macro emits its test modules only for KUNIT=y. With the shared Fedora config's KUNIT=m, the helper constructors and compute-floor constant were still compiled and failed WERROR as dead code. Use the macro's exact condition for these four test-only helpers. Keep both the shipping config and warning policy unchanged. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Record why the shipping KUNIT=m config exposed unused G17 test helpers and why matching Rust's built-in KUnit guard fixes it without changing hardware policy or weakening warning checks. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Record the startup, lead-command, pointer-block and topology differences alongside the shared submission path. MMIO pair registration on 25G83 and other fused core counts remain unqualified rather than inferred from Neo's different hardware and firmware interface. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Apply DjDeveloperr's GPU-demand mechanism from d69f14f to T6040. The CPU-only policy can leave the fabric low during GPU-only work. Enable its graphics demand input and describe the existing graphics PMGR state in DT, as T8140 and T8132 already do. Use T6040's existing DCS 5 / fabric 2 table, not T8140's state numbers. CPU demand keeps its three-sample sustain rule; graphics demand uses the shared hold and idle release. No voltage, ceiling, parameter or new platform option is introduced. Confirm powered-state tracking and idle floor release on J616s before qualifying the performance result. Link: #440 Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Compile the production rail tables, sample, hold and floor encoder with controlled PMGR reads and time. Check T6040 DCS 5/fabric 2, unchanged T8140/T8132 floors, release after 32 ms, partial power state, read failure, CPU demand composition and vote errors. Use the real PMC rail encoding. Negative controls remove GPU demand, release too early or retain the floor at idle. These are CPU controls; J616s PMGR tracking, idle power, PMP cooperation and performance still need hardware qualification. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
…r binds The T6040 PMC description still excludes PMP agent 0 from the earlier bring-up, when the firmware did not run and iBoot's top-state floor would have stayed in force. PMP startup is now supported and the GPU's report entry follows its power lifetime, but the PMC cannot honour that demand while the agent remains disabled. Use the existing apple,pmp supplier dependency before enabling static PMP, CLPC and AP voters, as in the Neo voter integration. The T6040 match data continues to restrict them to the established DCS/SOC rail mask; no display rail, voltage, power ceiling or new control is introduced. Confirm live PMP votes, idle release and sustained GPU/CPU thermal behaviour on J616s before qualifying this candidate. Link: #219 Link: #402 Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The M4 Pro (T6040/T6041) SPI controllers are register compatible with T8103, like the T6020 and T8140 ones. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Sensors whose enclave session needs a signed root key (the J700 and J616s part, 0x3356) take it as per-device factory data, like the calibration. Let firmware-name carry it as an optional second entry so the board description names it. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
#516, #519 and #451 This is the tree of the J616s test kernel 7.3.0-aurora-j616s-batch5, built from these parents: - wip/j616s-batch1-20261027 (e1a25b5): the J616s bring-up series - integration/aurora 647f084 (includes #498, #512, #523 and DJ's G17 merges) - #518 ad14f2d: 25G83 tiler growth fix (Jonathan Goyvaerts) - #516 31340ab: T6040 two-lane DP pin D beside USB3 - #519 d769aaf: tipd reconcile of firmware-entered J616s DP Alt Mode - #451 0d43a7f: J616s external displays (František Balázsy) Resolution notes: - #451's display code supersedes the older #451 copy carried by batch1, including its desktop 26.6 adaptive sync. Batch1's callback guard, ProMotion presentation timestamps, minRR=0 restore and swap watchdog stay. - The display gate finds a Type-C route's PHY by its typecN name, so #451's dcpext0 route@0 is not enabled on a tether whose ATC0 PHY is disabled. - #516's pin D and #519's tipd reconcile are kept as in the J616s series. Batch2's selftest fixture reconcile for the G17 owner and CLPC fixtures is part of this tree. Tested on the J616s with the follow-up commits: boots with 0 WARN, external display at 1920x1080@180 through DP Alt Mode, 20/20 mode switches and 15/15 DPMS cycles with no new kernel errors. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
dcp_peer_hints_26_6() clears the 32-byte allocation block of the display hints (primary and peer endpoint IDs, extra pipe count, flags and the reserved bytes) with memset(&r->primary_id, 0, 32). FORTIFY_SOURCE sees a write of 32 bytes into the 4-byte primary_id field and fails the build with -Werror (__write_overflow_field), so dcp.o does not compile with the Fedora-based release configuration. Group the allocation fields with struct_group_attr(), keeping the packed layout, and clear the group by its size. The offsets are unchanged and a new static_assert pins the group at 32 bytes. Fixes: e3e7131 ("drm/apple: drive a display wider than one pipe with two desktop 26.6 pipes") Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> (cherry picked from commit e2f5382def10e2b927edcd79a55120c9b1cbac4d)
The actual-DCP route fixtures compile the real dcp_typec_route_set(), dcp_typec_route_deactivate() and dcp_typec_route_available(). The J616s series added hybrid hand-over state to them. Deactivation now clears peer_starved and typec_narrow, releases a desktop 26.6 peer and restores the fixed output through its own fixed_xbar. A port leaving DP clears typec_yielded and dcp_hybrid_fails and hands every yielded hybrid on the port's routes back to HDMI. Availability asks dcp_typec_hybrid_first(). The mock struct apple_dcp and port had none of this, so seven units no longer compiled. Add the fields and a counter. Extract the real dcp_typec_hybrid_first() over the production defaults (module parameter -1, no DT opt-in), so the policy is as before. Stub the peer release to assert, since no scenario is on desktop 26.6. Let the single-port list walk yield the port's one route when it walks routes. Probe now records the fixed output's crossbar in fixed_xbar as well as xbar (7b99095), and deactivation restores the fixed route through fixed_xbar. The mux-release-stages fixed-restore case set only xbar, so set both as probe does. Its assertions are unchanged: the restore is retried once after its failure and the deselect stays balanced. Fixes: 7b99095 ("drm/apple: fabric: keep the hybrid pipeline's HDMI crossbar apart from its Type-C route's") Fixes: 0d43a7f ("drm/apple: fabric: hand the hybrid between an HDMI and a two-pipe Type-C display") Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> (cherry picked from commit e549591ec26d877731f574c98b82b8fd1052cd8d)
Desktop 26.6 now takes adaptive sync with a mode set. 562eb4c removed dcp_mode_vrr_supported(), which the publication fixture extracted unconditionally. 6477da6 made dcp_crtc_atomic_check() turn a VRR_ENABLED change on that firmware into a mode set, through drm_atomic_get_old_crtc_state() and crtc_state->mode_changed, which the VRR admission fixture did not model. So publication-hpd failed to build its unit and vrr-rejection did not compile. Extract the VRR filter only where the source still has it. Give the VRR fixture the desktop firmware value, mode_changed and an old-state lookup that counts its calls. The existing 72 admission cases run unchanged and now also check that no other firmware looks at the old state or forces a mode set. Where the source has the desktop path, 12 more cases pin it: an enabled CRTC whose VRR_ENABLED differs from its old state gets mode_changed, and nothing else does (a disabled CRTC, an unchanged VRR_ENABLED, no old state). Fixes: 562eb4c ("drm/apple: enable adaptive sync on desktop 26.6 external displays") Fixes: 6477da6 ("drm/apple: enable adaptive sync on the desktop 26.6 internal panel") Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> (cherry picked from commit 6822701ad2722a56da72ac27cfb0e6561b901029)
The batch5 merge takes #451's desktop 26.6 adaptive sync and removes the J616s series' parameter sequence (dcp_modeset_sync(), its fixed-refresh fallback on a rejected VRR mode set) and its admission gate (dcp_desktop_vrr_check(), dcp_desktop_vrr_supported()). Retire panel-adaptive-fallback, which drove only that removed sequence; vrr-rejection now pins #451's VRR_ENABLED-to-mode-set admission. Drop the stubs other fixtures kept for the removed functions (desktop-unknown-modeset-recovery, vrr-rejection), which no longer compile as unused. In the publication fixture, take lookup_mode() by its definition: the J616s takeover check starts a line with a lookup_mode() call, which the line-start pattern matched first. panel-adaptive-watchdog is unchanged: the fixed-refresh latch after an adaptive swap times out remains. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
The external display processors of the M4 Pro/Max (apple,t6041-dcpext, desktop 26.6 IOMFB) announce no dcpav-service-epic, so the EDID read through the DCPAV service never runs and every connector they drive has an empty EDID. Userspace then names the monitor "Unknown". The firmware still exports the TimingElements and DisplayAttributes of each sink it drives, including the sink's ProductAttributes. Build the base EDID block from them as the T8140 (H17P) external path already does: enable the firmware metadata for the desktop external processors, check the property extent and parse the sink identity from DisplayAttributes, and read the IsPreferred, IsInterlaced, SyncPolarity and PixelRepetition keys of each timing so the preferred timing can be described. The published modes keep their flags; only the EDID's detailed timing takes the polarity. These processors have no cable generation of their own (their HDMI output has no Type-C session), so count sinks instead: the first is the one found at boot, and each cable attach or detach, Type-C route change or HDMI unplug starts a new one, which an earlier sink's metadata can never match. A firmware HPD loss alone does not drop it, as the link can bounce without the sink being described again. The H17P external, the other DCPs and the internal panels are unchanged. The firmware 27 path of t6050/dcp gets its EDID through the DCPAV service and its display product query only identifies an Apple display, so there was nothing there to port to 26.6. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> (cherry picked from commit 221e2ac)
Brings the J616s batch5 kernel (the tree running on the M4 Pro) up to the current integration/aurora, which adds #524 (J713 T8132 energy model), #526 (the T6041 display fabric carry, whose peer allocation field group batch5 already has) and #529 (J713 USB-C idle power). Conflict resolution: - selftests apple-dcp rate.py: keep batch5's version. Its fixtures follow #451's desktop adaptive sync and the T6041 external EDID. The integration/aurora side only changed how the lookup_mode() definition is found; its line-start pattern also matches the indented "lookup_mode(dcp, ..." call that batch5's iomfb.c has before the definition, while batch5's 'bool lookup_mode(' marker finds the definition in either form. #529's ATC and dwc3 changes merge cleanly beside #516's two-lane DP pin D. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings the integration/aurora tip and the J616s batch5 kernel (#451's external displays, #516 pin D, #519's DP Alt Mode reconcile, #518, the T6041 external EDID and the batch1 J616s series) into aurora-wip. Conflict resolution, all in tests and host fixtures: - drm/apple av-lifetime-test.c: keep aurora-wip's compact_tx_lock init. The merged afk keeps that lock. - tools/asahi apple-dart-range-tests.py: keep aurora-wip's fixture whole. The merged apple-dart.c is aurora-wip's, with the DCP domain flush. - tools/asahi g17-resource-tests.py: take the J616s side. The merged QueueIds has no publication field. - asahi-m4 check-channels.rs and run-golden-tests.py: keep aurora-wip's FIRMWARE_BUILD extraction, which tolerates a tree without fwid.rs. - asahi-m4 test-mmu-retention.py: keep aurora-wip's UatQuirks model, and drop the J616s side's static pgtable stub, which aurora-wip injects with its own quirk-aware version. - asahi-m4 abi.py: the J616s side compares only the 600-byte params_global prefix, assuming frozen bindings without the capacity tail. aurora-wip's frozen bindings already carry it, so compare the prefix only when they lack it and keep the tail's static asserts. The asahi-m4 golden and MMU suites and the G17 resource tests pass as on aurora-wip. The DART range harness fails to build its controls fixture on aurora-wip already and still does. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
asahi.config: keep #470's trimmed list. #465 is the base of the stack #470 mirrors on aurora-wip, and the options it restores are now either inherited from the base config (ENERGY_MODEL), chosen by match data (APPLE_SIO_T6030 no longer exists) or selected by their users (APPLE_AOP and RUST_FW_LOADER_ABSTRACTIONS by the AOP sensors, KEYS by TRUSTED_KEYS). Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
asahi.config: keep #470's list. #438 enabled the power allocator and its energy model for a Fedora base. The governor and default are already in the fragment, and #470 found both bases enable ENERGY_MODEL and ARM_APPLE_SOC_CPUFREQ, so the resolved configs do not change. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
asahi.config: keep #470's list. #394's 48-bit VA, 4K userspace and power allocator requests are already in it. The choice negations it adds (64K pages, step-wise default) are decided by the 16K page and power allocator default requests, which #470 trimmed as redundant. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
t6040.dtsi and t6040-j616s.dts: keep the external display chain from #451 (t6040-j616s-extdisp*.dtsi), which supersedes #506's disabled dcpext0/dcpext1 descriptions and the HDMI bridge stanza. Taking both would define the same labels twice. #506's other J616s hardware, console supply and loader placeholder descriptions merge as they are, and every Apple DTB still builds. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fixtures #519 makes the CD321x update publish the DisplayPort mode the firmware entered as a partner altmode, and drop it with the partner. The probe now takes the connector from a "displayport" reference when the port has one. The tipd host fixtures did not know either, so 24 of them stopped building. - lifecycle: carry partner_altmode_dp and the DP mode VDO, and count partner altmode registration against removal. - quiesce and the transaction fixtures built on it: carry partner_altmode_dp. They never enter DP on the partner, so the altmode helpers assert they are not reached. - pm: report a "displayport" reference, which the probe fixtures already resolve, and assert the port-node fallback is not taken. No assertion is relaxed. apple-dcp host selftests: 80/80. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This consolidates our open Linux work into aurora-wip, drafts included, so the WIP lives in one place. The gate for aurora-wip is a clean build with the universal config plus the host selftests. Hardware testing of the tested head happens on #533.
What it brings in
fix/j616s-s2idle-bt-wake-20261024(bcm4377 aborts suspend if wake IRQ arming fails, with the s2idle wake docs).Conflict resolution
Left out
Testing
🤖 Generated with Claude Code