It looks like a decent laptop for travelers to get stuff done, but I guess my pre-purchase research wasn’t deep enough (If you plan to buy a laptop and run Linux on it, you should look here). The main problem with this notebook seems to get ACPI working together with the Linux kernel. First I struggled to boot the installer media from USB drives:
- Debian 8.6 → I was able to finish the installation (Debian doesn’t recognize the wifi adapter, though), but the kernel didn’t boot afterwards and resulted in a freeze.
- Ubuntu 16.10 → not able to boot even the installer, freeze after grub.
- Fedora 25: → Same here, nothing but a freeze.
- FreeBSD 11.0 → worked perfectly from the beginning, not even error messages during the boot process. But FreeBSD doesn’t support the built-in wifi (so I had to buy a cheap USB wifi adapter), it doesn’t support the Skylake on-chip Intel graphics, and I couldn’t figure out how to resume from suspend-to-RAM. Maybe next time, FreeBSD.
- Archlinux → it was possible to boot and install Arch after passing the kernel parameter “acpi=off”. Yay.
Since disabling ACPI is generally not a good idea for daily use (because power management and most of your hardware will be unusable — like trackpad, suspend, buttons, etc.), I was looking for a more permanent solution.
- If “acpi=off” makes the failure goes away, then it is likely an ACPI bug. But if a different failure occurs with ACPI disabled, then the test was inconclusive
- If the system boots with “acpi=off”, but fails otherwise, there are a number of boot parameters that disable different parts of ACPI that can be used to isolate where the issue lies
- “acpi=ht” the most like “acpi=off”, disables all of ACPI except what is needed to enumerate processors
- If “acpi=off” works and acpi=ht fails, then the issue is in the ACPI table parsing code itself, or perhaps the SMP code → BINGO!!!
- “pci=noacpi” disables ACPI for PCI root bus enumeration.
- “acpi=noirq” disables ACPI for IRQ routing
- “pnpacpi=off” disables the ACPI component of the Linux Plug and Play code.
- “noapic” disables the IO-APIC for IRQ routing
- “nolapic” disables the Local-APIC and the IO-APIC
So it turned out the reason for the boot freeze must have something to do with IRQ routing. With “acpi=noirq” my laptop booted and almost everything worked, even suspend/hibernate and resume.
But I still had IRQ errors and random kernel panics during boot and afterwards, because of general protection faults and memory corruption. It was like 7 failed boots vs. 1 successful boot. So besides Acer’s firmware, the buggy linux kernel seems to be responsible for that :Q
kernel: ACPI Warning: Large Reference Count (0xFCBF) in object ffff880265118048, T systemd-journald: Missed 32357 kernel messages
Instead of git-bisecting the current kernel against older kernels, I went on and tried to boot different up-to-date kernels, like linux-lts, linux-ck, linux-zen and finally linux-grsec.
And … the Acer Swift 3 runs absolutely stable since I use the Grsecurity kernel (4.8.14) . Problem solved! 😀 And it’s not a bad idea to use a hardened kernel anyway:
So if you run into similar problems, try to get up your system and and install the Grsecurity kernel, it’s available in every distro. Have fun 🙂