Skip to content

fix(kernel-profile): pin MT6878 race pair to CPUs 4/5, resolve Transsion device names, add Infinix Note 60 (X6879) - #427

Open
drybrine wants to merge 4 commits into
YuKongA:mainfrom
drybrine:fix/x6879-cpu-pair-and-transsion-name
Open

drybrine wants to merge 4 commits into
YuKongA:mainfrom
drybrine:fix/x6879-cpu-pair-and-transsion-name

Conversation

@drybrine

Copy link
Copy Markdown
Contributor

Device-support follow-up for the Infinix Note 60 (X6879), which runs the already-supported 6.1.157-android14-11-ga8b0b542991e-ab15601211 kernel (shared with the GT 30 Pro X6873).

1. fix(kernel-profile): pin the race pair to CPUs 4/5

The profile carried no execution block, so it inherited the shared default recommended_cpus { main = 0, consumer = 1 } from execution-tuning.conf. On MT6878 that is the little cluster: cpuinfo_max_freq reports 2000000 for CPUs 0-3 (Cortex-A55) and 2600000 for CPUs 4-7 (Cortex-A76), so 4/5 is the only same-class pair. This matches the existing 6.1.134-android14-11-maybe-dirty precedent.

Worth noting for review: the in-app CPU picker already resolves to 4/5 on this topology, because buildCpuPairs() sorts clusters by descending max frequency. So this changes the native default (--load-prebuilt-profile, and any profile carrying no selected_cpus) rather than the normal in-app run path.

Also corrects the SoC name in the phys-mapping comment (MT6788 -> MT6878).

2. fix(app): resolve Transsion retail names from the model code

resolveDeviceName() had no Infinix/TECNO/itel case, and Transsion devices expose no market-name property — every ro.product.*.marketname is empty and ro.tr_build.sw_market holds a region code (op), not a retail name. The generic fallback therefore rendered INFINIX Infinix X6879 on the device card. Adds a model-code map (X6879 -> Infinix Note 60).

3. docs(kernel-profiles): add Infinix Note 60 (X6879)

Verification

  • :app:assembleDebug with NDK 30 — builds clean.
  • Extractor preflight on the stock boot.img: primitive present (remove_waiter@0x1018844 still uses current), and the derived geometry matches the built-in profile on all 16 offsets.
  • On-device: two consecutive runs finished with native exited code=0 and KernelSU ready, with no kernel Oops in pstore/console-ramoops.

Caveat

Those two clean runs are not a reliability measurement — the known KERNEL-PANIC-01 race flakiness is untouched by this PR.

The shared default (recommended_cpus 0/1) lands both race threads on the little cluster: MT6878 reports cpuinfo_max_freq 2000000 for CPUs 0-3 and 2600000 for CPUs 4-7, so 4/5 is the only same-class pair. Set the per-release default to the big-core pair, matching the 6.1.134 precedent.

Also correct the SoC in the phys-mapping comment (MT6878, measured on the X6879).
Infinix/TECNO/itel expose no market-name property: every ro.product.*.marketname is empty and ro.tr_build.sw_market holds a region code, not a retail name. The generic fallback therefore rendered 'INFINIX Infinix X6879' on the device card. Map the model code (X6879 -> Infinix Note 60) instead.
Same release as the Infinix GT 30 Pro (X6873): verified on an X6879.
Copilot AI balanced review requested due to automatic review settings October 13, 2026 19:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Prebuilt export overrides the new CPU recommendation with 0/1, leaving the intended native default unchanged.

1 open finding

🧠 Review effort: Balanced

Comment on lines +28 to +29
main = 4
consumer = 5
ProfileExporter passed CpuPairView(0, 1) into ProfileMerger, which installed
it as execution.selected_cpus. ProfileResolver.nativeValue() prefers
selected_cpus for execution.recommended_cpus.*, so every prebuilt .bin
shipped 0/1 and --load-prebuilt-profile ignored the profile's own
recommendation. The MT6878 profile added in this PR therefore still put both
race threads on the little cluster.

Make the merge pair optional: a null pair means "no explicit selection", so
recommended_cpus stays authoritative and any selected_cpus that survived the
merge is dropped. The app always passes a pair, so runtime behaviour is
unchanged; only the exporter passes null.

ExporterAgreementTest now loads the app side with the pair each profile
recommends (declared recommended_cpus, else the execution-tuning default) and
asserts the MT6878 export decodes to 4/5.

Verified: :profile-core:test green; exportKernelProfiles emits 4/5 for
6.1.157-android14-11-ga8b0b542991e-ab15601211 and 6.1.134-android14-11-maybe-dirty
and 0/1 for the other 63 profiles (previously all 65 were 0/1).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants