Dell XPS 14 (DA14260)

Here is the procedure I followed, that a colleague also tested (not saying it’s error-proof, but you know).


Installing Qubes OS 4.3.1 on a Dell XPS 14 with Intel Panther Lake / Xe graphics

TL;DR

The working path was not nomodeset, and it was not blacklisting xe. Those options were useful only for emergency console access. The internal panel worked once the Intel xe KMS path was allowed to load, but both the installer UI and the installed LightDM/Xorg session needed software-rendering workarounds.

Major fixes that succeeded:

  1. Boot the graphical installer with Mesa forced to llvmpipe:

    inst.graphical plymouth.enable=0 systemd.setenv=LIBGL_ALWAYS_SOFTWARE=true systemd.setenv=GALLIUM_DRIVER=llvmpipe systemd.setenv=MESA_LOADER_DRIVER_OVERRIDE=llvmpipe
    

    Put this on the installer Linux/kernel line, the module2 ... vmlinuz ... line.

  2. Keep **xe** enabled. Do not use nomodeset or rd.driver.blacklist=xe for the final system. The kernel log showed that xe was loading DMC/GuC/HuC/GSC firmware and creating xedrmfb; the remaining failures were userspace rendering / startup-path problems.

  3. If Qubes first-boot configuration does not start, start it manually from dom0:

    sudo systemctl set-default graphical.target
    sudo systemctl stop lightdm.service
    sudo systemctl reset-failed initial-setup.service initial-setup-reconfiguration.service lightdm.service
    sudo systemctl enable initial-setup.service
    sudo systemctl enable initial-setup-reconfiguration.service
    sudo systemctl start initial-setup-reconfiguration.service
    
  4. Fix Dell/UEFI booting by adding **efi=attr=uc** to the Xen line in /boot/grub2/grub.cfg, and recreate the EFI redirect/fallback files. The relevant line is the multiboot2 ... xen.gz ... ucode=scan ... line.

  5. If **sys-net** causes a panic, boot with **qubes.skip_autostart**, detach PCI devices, then reattach carefully. ```

  6. If normal graphical boot freezes after LUKS, disable Xorg glamor for the Intel modesetting driver and force LightDM into software rendering. The two files that stabilized the installed GUI were:

    /etc/X11/xorg.conf.d/20-xps14-xe-software.conf
    /etc/systemd/system/lightdm.service.d/10-software-rendering.conf
    
  7. Current unresolved/fragile area: USB. Selecting the installer option to use sys-net for both networking and USB does not necessarily produce a visible sys-usb in Global Config. That is expected in the merged mode, and there is a Qubes 4.3 issue where GUI/device tooling can assume the USB VM is named sys-usb while the merged setup uses sys-net. Treat USB controller passthrough as a separate, high-risk step, especially on laptops where input devices can be USB-attached.

Hardware and starting point

The machine was a Dell XPS 14-class system with Intel Panther Lake graphics. The working Qubes-side logs showed:

00:02.0 VGA compatible controller [0300]: Intel Corporation Panther Lake [Intel Graphics] [8086:b080]
00:14.3 Network controller [0280]: Intel Corporation [8086:e440]

The dom0 kernel log eventually showed the important graphics milestone:

xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/xe3lpd_dmc.bin
xe 0000:00:02.0: [drm] Tile0: GT0: Using GuC firmware from xe/ptl_guc_70.bin
xe 0000:00:02.0: [drm] Tile0: GT1: Using HuC firmware from xe/ptl_huc.bin
xe 0000:00:02.0: [drm] Tile0: GT1: Using GSC firmware from xe/ptl_gsc_1.bin
[drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0
fbcon: xedrmfb (fb0) is primary device
xe 0000:00:02.0: [drm] fb0: xedrmfb frame buffer device
mei_gsc_proxy ... bound 0000:00:02.0

That was the key diagnostic result: the kernel display path was not dead. xe and the firmware path were good enough to provide a framebuffer. The installer and desktop failures were higher up the stack.

Sources and background

The workaround relies on documented behavior from several components:

  • Qubes documents efi=attr=uc as a Dell/UEFI-style workaround that must be added to Xen parameters in some post-install boot failures. The docs also describe EFI redirect/fallback repair patterns. Qubes UEFI troubleshooting
  • Anaconda supports inst.graphical and other installer boot options. The text-mode path has side effects, so I avoided it for the final reinstall once the graphical path was made usable. Anaconda boot options
  • Mesa documents LIBGL_ALWAYS_SOFTWARE=true; GALLIUM_DRIVER=llvmpipe selects the LLVM software rasterizer path in Gallium/Mesa. Mesa environment variables
  • systemd supports systemd.setenv= on the kernel command line, which is how the installer environment variables were injected early enough for Anaconda. systemd kernel command line
  • The Xorg modesetting driver defaults to glamor acceleration, and it supports Option "AccelMethod" "none" and Option "PageFlip" "false". modesetting(4)
  • Qubes documents qubes.skip_autostart specifically for cases where an autostarting qube or PCI device crashes the system. Qubes autostart troubleshooting
  • Qubes documents PCI passthrough, the dom0:00_14.3 style of device naming, and the no-strict-reset/permissive style of workarounds. Qubes PCI devices qvm-device man page
  • Qubes documents the installer option to use sys-net for both networking and USB devices. Qubes installation guide
  • Qubes documents that USB proxying needs qubes-usb-proxy and that USB qubes can lock you out if your keyboard is on the controller being moved. USB devices USB qubes
  • There is a Qubes 4.3 issue for the merged sys-net+USB mode where tooling expects a VM named sys-usb while the USB VM is actually sys-net. Qubes issue #10131

References

[qubes-uefi]: https://doc.qubes-os.org/en/latest/user/troubleshooting/uefi-troubleshooting.html

[anaconda-boot]: https://anaconda-installer.readthedocs.io/en/latest/user-guide/boot-options.html

[mesa-env]: https://docs.mesa3d.org/envvars.html

[systemd-kcmdline]: https://www.freedesktop.org/software/systemd/man/latest/kernel-command-line.html

[modesetting]: https://manpages.debian.org/unstable/xserver-xorg-core/modesetting.4.en.html

[qubes-autostart]: https://doc.qubes-os.org/en/latest/user/troubleshooting/autostart-troubleshooting.html

[qubes-pci]: https://doc.qubes-os.org/en/latest/user/how-to-guides/how-to-use-pci-devices.html

[qvm-device]: https://dev.qubes-os.org/projects/core-admin-client/en/latest/manpages/qvm-device.html

[qubes-install]: https://doc.qubes-os.org/en/latest/user/downloading-installing-upgrading/installation-guide.html

[qubes-usb-devices]: https://doc.qubes-os.org/en/latest/user/how-to-guides/how-to-use-usb-devices.html

[qubes-usb-qubes]: https://doc.qubes-os.org/en/latest/user/advanced-topics/usb-qubes.html

[qubes-10131]: https://github.com/QubesOS/qubes-issues/issues/10131

1 Like