Skip to content

Add Lenovo Yoga Slim 7x board support - #8673

Merged
birkskyum merged 9 commits into
omacom:dragonfrom
birkskyum:upstream/yoga-slim7x
Sep 13, 2026
Merged

birkskyum merged 9 commits into
omacom:dragonfrom
birkskyum:upstream/yoga-slim7x

Conversation

@birkskyum

@birkskyum birkskyum commented Aug 27, 2026 •

Copy link
Copy Markdown

Summary

  • Detects the Yoga Slim 7x by Qualcomm device-tree compatible or Lenovo DMI identifiers.
  • Loads the keyboard and native display dependencies early enough for the encrypted-root password prompt.
  • Selects the laptop console (console=tty0) for graphical Plymouth disk unlock and working keymap/consolefont hooks.
  • Includes plain, zstd or xz GPU microcode using the kernel's search order. The shared extractor supplies the board-matched zap shader, without a second hardcoded Lenovo entry.
  • Loads scmi-cpufreq and starts ADSP/CDSP by firmware identity, respecting the generic DSP-disable guard.

Dependencies

The systemd shutdown fix and camera stack described below are separate follow-ups, not merge prerequisites.

Validation

Physical Yoga Slim 7x 14Q8X9 (83ED) validation confirms Limine boot without the UKI hash warning, graphical Omarchy disk-encryption unlock with the built-in keyboard, polished shutdown/reboot without terminal messages, the graphical desktop, native display, GPU acceleration, Wi-Fi, Bluetooth mouse, internal speakers and microphone. The shutdown/reboot result also used a separate systemd v261.2 backport of the change proposed in systemd/systemd#43671. That fix remains under review and is not included in this PR. The speaker-reset kernel fix, archlinuxarm/PKGBUILDs#2217, has merged.

The OV02C10 camera also has a visually confirmed fast, upright preview with natural-looking colors and strong noise reduction on the separate experimental kernel 7.2.0-1.1-aarch64-ARCH-camera1. Camera enablement is a follow-up, not part of this PR; the hardware report covers the subsequent Chromium live-video test and remaining integration work. The separate libcamera cleanup-hang fix prevents a hang after capture-start failure and carries Kieran Bingham's Reviewed-by. It remains unmerged and does not fix the underlying sensor timeout or image quality.

Barnabás Pőcze's PipeWire libcamera compatibility fixes (!2981) are merged and backported to the 1.6 branch. As checked on September 11, 1.6.9 is not tagged. A release and Arch Linux ARM packaging containing the fixes are still needed for normal distribution; the source merge alone does not provide stock camera support.

The later September 7 isolated Chromium tests passed 11 complete 12-second 720p captures at 29.8-30.0 fps across initial starts, page refresh, browser/services restart and one whole-machine suspend/wake. They used source-built libcamera and the unmodified PipeWire 1.6 branch on the existing experimental camera kernel, without the GStreamer diagnostic patch. The owner reported upright, responsive video with acceptable but slightly pale colors. These results establish that isolated browser path, not measured end-to-end latency or a normally packaged replacement. Candidate startup timing, calibration, the shared 1080p CMA allocation problem and the separate GStreamer timestamp issue remain open; normal package/update/reboot integration and the newer kernel still need validation.

The updated Bash 5 tests pass for matching/nonmatching boards, DMI-only detection, already-running DSPs, missing ADSP, failed starts, independent zstd/xz selection, firmware precedence and console selection without replacing existing boot parameters. A cross-repository fixture verifies that shared extraction and Yoga setup include each GPU firmware file once.

The September 11 synchronization passed five focused Bash 5 suites in an isolated ARM64 Linux container for install repositories, repository refresh, the pacman upgrade guard, generic Snapdragon setup and Yoga setup. The full CLI suite, Bash syntax checks, whitespace checks and ShellCheck 0.11.0 for the four incoming repository-refresh files also passed. The Yoga-specific code was unchanged. The merged branch combined cleanly with quattro at 5b91db5. No installed-system package upgrade or Yoga reboot was performed for this synchronization.

The console change was boot-tested on the Yoga with kernel 7.2.0-1.1-aarch64-ARCH, changing only the command line of the working boot image. Active consoles changed from tty0 ttyMSM0 to tty0. The owner confirmed graphical Omarchy disk unlock and successful desktop startup, without kbd_mode: KDSKBMODE: Inappropriate ioctl for device, Couldn't open /dev/console, or scrolling service status.

The current firmware-consolidation and failure-path changes were tested in an ARM64 container; they have not been deployed to the Yoga for another boot test. HP/ASUS validation of the console and early-display changes is still pending.

@birkskyum

Copy link
Copy Markdown
Author

Validation correction: microphone input works, but internal-speaker playback is currently silent. This draft therefore proves the DSP startup and input path, not complete audio support.

@birkskyum
birkskyum marked this pull request as ready for review August 28, 2026 10:44
Copilot AI balanced review requested due to automatic review settings August 28, 2026 10:44

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.

Pull request overview

Adds generic Snapdragon X enablement and Lenovo Yoga Slim 7x board-specific hardware support.

Changes:

  • Configures aarch64 packages, firmware, DTBs, Vulkan, and kernel parameters.
  • Enables Yoga keyboard, CPU-frequency, ADSP, and CDSP support.
  • Adds focused Snapdragon and Yoga shell tests.

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 15 out of 16 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
bin/omarchy-hw-qualcomm-soc Detects Qualcomm device-tree platforms.
default/pacman/mirrorlist-aarch64 Adds the Arch Linux ARM mirror.
default/pacman/pacman-aarch64.conf Configures aarch64 repositories.
etc/mkinitcpio.conf.d/thunderbolt_module.conf Gates Thunderbolt to x86_64.
install/hardware/all.sh Runs Qualcomm and Yoga setup leaves.
install/hardware/lenovo/start-yoga-slim7x-remoteprocs.sh Starts Yoga DSP remote processors.
install/hardware/lenovo/yoga-slim7x.sh Applies Yoga board-specific configuration.
install/hardware/qualcomm/dtb-uki.sh Embeds Qualcomm DTBs in UKIs.
install/hardware/qualcomm/firmware.sh Installs firmware and protects USB roots.
install/hardware/qualcomm/kernel-params.sh Adds Snapdragon kernel parameters.
install/hardware/vulkan.sh Installs Freedreno on Qualcomm systems.
install/omarchy-other.packages Includes the firmware extractor.
install/post-install/pacman.sh Restores appropriate architecture repositories.
install/user/mise-work.sh Selects the architecture-specific Node archive.
test/shell.d/snapdragon-hardware-test.sh Tests firmware safeguards and DTB configuration.
test/shell.d/yoga-slim7x-hardware-test.sh Tests Yoga configuration and DSP selection.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread install/hardware/lenovo/yoga-slim7x.sh Outdated
Comment thread test/shell.d/yoga-slim7x-hardware-test.sh Outdated
@birkskyum

Copy link
Copy Markdown
Author

Follow-up validation on the physical Yoga: after rebooting into the rebuilt ALARM kernel with CONFIG_RESET_GPIO=m, reset_gpio is loaded for two consumers and speaker-test -D pipewire -c 2 -t sine -f 440 -l 1 produces audible output from the internal speakers. The kernel change remains isolated in archlinuxarm/PKGBUILDs#2217.

@birkskyum

Copy link
Copy Markdown
Author

Physical early-display validation is now complete on the Yoga Slim 7x.

Before the fix, PMIC GLINK reported failed to initialize pdr, the MSM display probe deferred, and the LUKS prompt was black. Adding QRTR before PMIC GLINK in the initramfs lets the native Qualcomm display chain bind before disk unlock. On the successful boot:

  • /init began at 165.402955 seconds
  • MSM DRM initialized at 165.411677 seconds
  • msmdrmfb appeared at 165.411990 seconds
  • the LUKS prompt was visible and accepted the built-in keyboard input
  • there was no PDR initialization failure or deferred display probe

The normal UKI was rebuilt with the same configuration, then checked for all required modules, firmware, 32 DTBs, encrypted-root command line and an exact Limine BLAKE2b hash match. The working experimental entry remains available as a fallback.

The same update also removes systemd-udev-settle.service from the Yoga DSP unit. The remoteproc helper already retries for device discovery, and the dependency added 6.884 seconds to userspace startup while emitting systemd's deprecation warning.

@birkskyum

birkskyum commented Aug 28, 2026 •

Copy link
Copy Markdown
Author

Final reboot confirmation: the regenerated normal linux-aarch64 entry shows the LUKS prompt, accepts the passphrase and reaches the desktop. The experimental entry was not needed.

The follow-up boot audit shows msmdrmfb, connected eDP, successful ADSP/CDSP startup and no systemd-udev-settle.service activation. Userspace reached graphical.target in 8.139 seconds.

Two cosmetic messages remain immediately above the password prompt:

kbd_mode: KDSKBMODE: Inappropriate ioctl for device
Couldn't open /dev/console

They come from the upstream mkinitcpio keymap and consolefont hooks attempting console ioctls before fbcon is fully attached. They do not affect input or unlock, so they are intentionally outside this board-support PR.

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.

2 participants