← Back to context

Comment by hurricanepootis

11 hours ago

I hope Qualcomm upstreams all the device tree kernel level stuff to Linux for every laptop model. One of the things I don't like about Arm Laptops is—for example—how even if a SoC is supported upstream, if the manufacturer does not upload a device tree for their device, then you're cooked.

I read that while these Snapdragon laptops do technically have UEFI + ACPI, the information they provide is not useful for Linux and is more coupled with Qualcomm's proprietary drivers on Windows. Therefore, device trees are needed on Linux (I could be wrong about the first part).

Needing the kernel to be changed for each device is an Androidism that encourages ewaste and we should fight against it.

Instead Qualcomm should improve their ACPI implementation and improve the kernels handling of it

  • > Needing the kernel to be changed for each device is an Androidism

    It's an Armish not an Androidism. It's an embedded legacy that really doesn't make sense anymore. But inertia is powerful enough that even Apple is still using device trees, even on their M series SoCs ( https://asahilinux.org/docs/fw/adt/ )

  • Someone from Qualcomm posted a "DT-ACPI Hybrid Mode" set of patches a while back that let you call ACPI table functions, etc even while booting with the device tree, allowing you to control some things like keyboard lightning/power management independently. That would be a good first step but I'm not sure it went anywhere in the meantime. In theory supporting Device Tree by including the blob in a ROM somewhere shouldn't be much more work (if any) than including working ACPI tables, but we all know how that works out in practice!

    • The problem is that the content of the device tree isn't really stable -- if a new kernel version has a driver with a new required parameter for instance, suddenly your ROM device tree is out of date and much less useful.

    • > supporting Device Tree by including the blob in a ROM somewhere shouldn't be much more work (if any) than including working ACPI tables, but we all know how that works out in practice!

      This is definitely a thing in some embedded systems I’ve used. There are some Marvell boards which do this. They all use U-boot though.

This is exactly what they have already been doing for the past two months, directly from their devs, posted to Linux ARM MSM mailing list, and despite not having all of the specs from manufacturers. See the EC driver submission for Asus ZenBook A16 from this past week.

I believe the Orin AGX is in a similar position. It does a UEFI boot but you absolutely have to supply a correct dtb and if you don't then key peripherals like USB and ethernet can just completely not work, or in one case I experienced, subtly malfunction in a way that appears to be fine but throws off a bunch of extra radiation that fails a certification test.

There was a recent proposal to make use of ACPI on ARM

https://www.phoronix.com/news/DT-ACPI-Hybrid-Mode-Linux

  • This is actually misinformed, the discussion on the mailing list made it clear: there is NO full ACPI on these Windows ARM devices; they only use ACPI marginally and still require and provide device tree.

    Phoronix should have revised that article, it's completely misleading.

  • One option would be to implement the custom non-standard Qualcomm drivers that technically it needs to implement anyway, but with support for the UEFI/ACPI interface.

    On Windows, Qualcomm ships custom drivers that override normal ACPI platform logic in various places, IIRC

Maybe I'm wrong, but I feel like creating device tree should be relatively straightforward if driver support is there. So while having official device tree is awesome, it's not something that's very hard to do. Now writing drivers without datasheets, using reverse-engineering is something that's hard to do.

  • I've been waiting for someone to write a DTS for a Snapdragon(R) X - X126100 - Qualcomm(R) Oryon(TM) CPU based laptop I bought over a year ago. Some people are trying but it can't be that easy ... Starting to look into doing it myself and AFAICT it requires reading the ACPI tables (written for Windows drivers), and manually converting it to devicetree, test, tweak, repeat.

I don't think that ARM Laptops have a chance in Linux land as long as each model requires stuff like a custom DT.

I'm typing this on a Thinkpad x13s Gen1, "21BX000XGE". I really really like the device, best laptop I've owned so far, speaking strictly from a hardware perspective. No vents mean I can use it on a pillow, and it's dead silent. It never runs hot, great battery life. Thin and light, yet has all the performance I need. But would I recommend the laptop to any fellow Linux user? Absolutely not.

Even though it was released in 2022, the webcam still won't work. I can't limit the battery charge to 80% like on my x86 Thinkpad. There was a time when the graphics driver and Chromium didn't like each other and I had to wrangle Chromium into software rendering mode to avoid heavy artifacts on the screen (export force_gl_vendor="notfreedreno"). In fact, I still have the workaround in place. Not sure if it's still needed though. A fix was merged upstream last year, need to check whether it made it into Fedora yet.

I got the machine in 2025, and here are the workarounds and config changes I had to make just to get Fedora running last year, 3 years after release:

- extra kernel arguments ("arm64.nopauth" seems to be needed still in 2026, "clk_ignore_unused pd_ignore_unused" I have been able to remove at some point)

- GRUB config (GRUB_DEFAULT_DTB=/boot/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb)

- initramfs modification, /etc/dracut.conf.d/x13s_firmware.conf: install_items+=" /lib/firmware/qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn.xz /lib/firmware/qcom/sc8280xp/LENOVO/21BX/qcadsp8280.mbn.xz /lib/firmware/qcom/sc8280xp/LENOVO/21BX/qccdsp8280.mbn.xz ". Not sure if these are still needed, they were at some point.

In late 2025, installing Fedora was still a pain in the butt. There were custom-built ISOs for my device, but they didn't work because my firmware was too new. Stupid me ran a firmware update on the preinstalled windows. I tried building my own ISO, but the firmware never recognized those as a boot device for some reason (I have successfully built custom ISOs for x86 many times). In the end, I was able to use QEMU + chroot on my x86 machine to install Fedora ARM onto an external HDD, make the needed modifications in there, boot that on the laptop and run the anaconda installer, then make modifications to the install on the internal storage.

I just ran a quick `wc -w` on my installation and debug notes for the machine, and it's a cool 11180 words. At some point, it turned out that the display my unit uses was not in the list of known displays for the x13s. Seems that was mostly inconsequential aside from a kernel warning and maybe slower wakeup. Helped upstream with that, which eventually resulted in this commit: https://github.com/torvalds/linux/commit/3330b71caff6cdc387f...

I'm no stranger to exotic architectures and machines, having used Gentoo on a ppc64le machine as a daily driver for 3+ years. And I do like the laptop. But w/o fundamental improvements to the way ARM bringup works, not just improvements for individual machines, I wouldn't recommend this stuff to any unsuspecting user.

  • This is tragic to read. An ARM-based Thinkpad ultrabook running Fedora on it would be a "forever" device for me. I adore my X1 Carbon Gen7 but the battery life could definitely be better and I could stand for it to run a little cooler.

  • I've been working on embedded systems using iMX8s, and it's equally awful. You have to maintain your own fork of UBoot. You have to spend hours tweaking device trees. The "NXP" kernel is out of date and never updated, the mainline kernel is missing loads of drivers.

    Meanwhile in x86 land you can just download a distro and boot it. Secure boot works out of the box. It's night and day.

    • Yup. I remember my dismay when I started working with Linux on arm boards and realizing the absolute massive gap between the hardware vendor claims of "full linux support" and the reality.

      Sometimes the SDK is a zip of the developer workspace in a pseudo working state with no clear records of all that's been patched.

      Vendors providing binary only kernel and system images containing god knows what is not uncommon either.

      I'm convinced now that arm hardware vendors are simply incapable of even understanding what proper software support is. I'm sure some of their devs do their best but management does not care. By the time the chip ships, efforts move to making the next thing so they never properly finish the software side.

    • Have you looked at SoCs supported by Linaro?

      Linaro is (or was, back when I was involved ~10 years ago) non-profit sponsored by SoC vendors to develop, maintain and upstream SoC support for Linux, along with running a comprehensive validation lab for all the boards they support.

      A list of manufacturers did change a few times, and it was half-sponsored by ARM directly.

      1 reply →

    • Even rather mainstream stuff like the RPi can get wonky in places, and still people comment on why "idiots" buy RPis when this-or-that ARM board has 10% more bang for the buck. Eh, yeah, of course. I'd love to only ever run RandomShenzenCorp's heavily patched vendor kernel from 2016.

      1 reply →

  • > I don't think that ARM Laptops have a chance in Linux land as long as each model requires stuff like a custom DT.

    Why? In theory the UEFI firmware can pass Linux a devicetree. Not much different to different laptops having different ACPI tables.

    • Well, in theory, I don't even care. I want to download an ISO from randomdistro.org and boot it.

    • In theory. This up to the manufacturers and they're not doing that, so it's quite different from non-ARM laptops, where this is basically standardized.

      It's not necessarily any better on Windows. I've worked with Qualcomm based laptops that wouldn't work without a bespoke Windows image from the manufacturer. I also had one where the "generic" ARM Windows image wouldn't work with it even though it should've and the manufacturer never provided a bespoke image.

  • This sounds like a terrible situation, but I wonder if a weekend of Claude iterating could improve on any of these problems. They seem to have been pretty successful on the Mac M series.

    • I'm sure Claude would be capable to solve many of these. But the next machine probably requires the whole dance all over again, and it just doesn't scale very well, I feel.

    • It probably will help you maintain a better local fork, but getting all things upstreamed is the bottleneck and won't help too much here.

This is one of those situations, even if they don't want to release specific code, they could at least release the specifications so that others could build the software stack for this.