Screen flickering in Qubes 4.1 on Tuxedo InfinityBook Pro 14 Gen6

I have a Tuxedo InfinityBook Pro 14 Gen6. I installed Qubes OS 4.1.

My screen flickers every time I move the mouse. Scrolling doesn’t make it flicker.

There’s a HCL report of a similar issue, but with Qubes OS 4.0. I’ve been told to open a new thread.

I tried emmu’s solution, but it doesn’t work for me, and after it /proc/cmdline doesn’t include 915.enable_psr=0.

Output of journalctl -g i915:

-- Reboot --
Apr 20 12:39:53 dom0 kernel: i915 0000:00:02.0: [drm] VT-d active for gfx access
Apr 20 12:39:53 dom0 kernel: i915 0000:00:02.0: vgaarb: deactivate vga console
Apr 20 12:39:53 dom0 kernel: i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
Apr 20 12:39:53 dom0 kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/tgl_dmc_ver2_08.bin (v2.8)
Apr 20 12:39:54 dom0 kernel: [drm] Initialized i915 1.6.0 20200917 for 0000:00:02.0 on minor 0
Apr 20 12:39:54 dom0 kernel: fbcon: i915drmfb (fb0) is primary device
Apr 20 12:39:54 dom0 kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Apr 20 12:40:08 dom0 kernel: snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
Apr 20 13:15:53 dom0 sudo[15385]:     user : TTY=pts/8 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/journalctl -g i915

If you meant on me (still didn’t become a bird, but rather am enmus :slight_smile: ) in order someone else maybe to help you, you’d probably respond to my latest post there too:

First try if the parameter is even available for your gpu:
$ modinfo i915 | grep ‘^parm:’
If yes, then try to put it after the word “consoles”.
Give us
$ sudo journalctl -g i915
After that, I’m out of ideas.
Maybe @51lieal could help.

You did a part of it, but not two previous, and the only additional thing that occurs to me would be to try to load it via modprobe, but I can’t remember at the moment how and if it is doable at all.

I’d probably try something if these

please run cat /etc/default/grub and post it here.
and run efibootmgr -v.

Thank you @enmus and @51lieal for the help. Here are the outputs requested:

$ modinfo i915 | grep ‘^parm:’
parm:           modeset:Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)
parm:           enable_dc:Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6; 3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO) (int)
parm:           enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
parm:           lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
parm:           panel_use_ssc:Use Spread Spectrum Clock with panels [LVDS/eDP] (default: auto from VBT) (int)
parm:           vbt_sdvo_panel_type:Override/Ignore selection of SDVO panel mode in the VBT (-2=ignore, -1=auto [default], index in VBT BIOS table) (int)
parm:           reset:Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset [default]) (uint)
parm:           vbt_firmware:Load VBT from specified file under /lib/firmware (charp)
parm:           error_capture:Record the GPU state following a hang. This information in /sys/class/drm/card<N>/error is vital for triaging and debugging hangs. (bool)
parm:           enable_hangcheck:Periodically check GPU activity for detecting hangs. WARNING: Disabling this can cause system wide hangs. (default: true) (bool)
parm:           enable_psr:Enable PSR (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)
parm:           psr_safest_params:Replace PSR VBT parameters by the safest and not optimal ones. This is helpful to detect if PSR issues are related to bad values set in  VBT. (0=use VBT parameters, 1=use safest parameters) (bool)
parm:           enable_psr2_sel_fetch:Enable PSR2 selective fetch (0=disabled, 1=enabled) Default: 0 (bool)
parm:           force_probe:Force probe the driver for specified devices. See CONFIG_DRM_I915_FORCE_PROBE for details. (charp)
parm:           disable_power_well:Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)
parm:           enable_ips:Enable IPS (default: true) (int)
parm:           fastboot:Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)
parm:           load_detect_test:Force-enable the VGA load detect code for testing (default:false). For developers only. (bool)
parm:           force_reset_modeset_test:Force a modeset during gpu reset for testing (default:false). For developers only. (bool)
parm:           invert_brightness:Invert backlight brightness (-1 force normal, 0 machine defaults, 1 force inversion), please report PCI device ID, subsystem vendor and subsystem device ID to, if your machine needs it. It will then be included in an upcoming module version. (int)
parm:           disable_display:Disable display (default: false) (bool)
parm:           mmio_debug:Enable the MMIO debug code for the first N failures (default: off). This may negatively affect performance. (int)
parm:           verbose_state_checks:Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions. (bool)
parm:           nuclear_pageflip:Force enable atomic functionality on platforms that don't have full support yet. (bool)
parm:           edp_vswing:Ignore/Override vswing pre-emph table selection from VBT (0=use value from vbt [default], 1=low power swing(200mV),2=default swing(400mV)) (int)
parm:           enable_guc:Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto, 0=disable [default], 1=GuC submission, 2=HuC load) (int)
parm:           guc_log_level:GuC firmware logging level. Requires GuC to be loaded. (-1=auto [default], 0=disable, 1..4=enable with verbosity min..max) (int)
parm:           guc_firmware_path:GuC firmware path to use instead of the default one (charp)
parm:           huc_firmware_path:HuC firmware path to use instead of the default one (charp)
parm:           dmc_firmware_path:DMC firmware path to use instead of the default one (charp)
parm:           enable_dp_mst:Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)
parm:           enable_dpcd_backlight:Enable support for DPCD backlight control(-1=use per-VBT LFP backlight type setting [default], 0=disabled, 1=enabled) (int)
parm:           enable_gvt:Enable support for Intel GVT-g graphics virtualization host support(default:false) (bool)
parm:           mitigations:Selectively enable security mitigations for all Intel® GPUs in the system.
$ cat /etc/default/grub
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-2025dacd-f395-423e-9dc0-1a16776dd50d plymouth.ignore-serial-consoles rd.driver.pre=btrfs rhgb quiet i915.enable_psr=0"
GRUB_CMDLINE_XEN_DEFAULT="console=none dom0_mem=min:1024M dom0_mem=max:4096M ucode=scan smt=off gnttab_max_frames=2048 gnttab_max_maptrack_frames=4096"
$ efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001,0002,0003
Boot0000* Qubes OS	HD(1,GPT,35570893-edd8-4a88-8013-005e53c1ed03,0x800,0x12c000)/File(\EFI\qubes\grubx64.efi)
Boot0001* UEFI:CD/DVD Drive	BBS(129,,0x0)
Boot0002* UEFI:Removable Device	BBS(130,,0x0)
Boot0003* UEFI:Network Device	BBS(131,,0x0)

Ok, the parameter is available. You may now wait 51lieal for further tips, or you can meanwhie try to set in /etc/modprobe.d/i915.conf :


options i915 enable_psr=0

to regenerate initramf with something like

sudo dracut --regenerate /boot/initramfs-5.x.x.fc32.qubes.x86_64.img --force

where the x is your current kernel (uname -a) and to reboot it.

I’m basically copy/pasting what is already there, and am not sure if it’s help, but rather what I’d do if I were you:

If it does not happen, then:

  • Make sure you do not have nomodeset as a kernel parameter, since Intel requires kernel mode-setting.
  • Also, check that you have not disabled Intel by using any modprobe blacklisting within /etc/modprobe.d/ or /usr/lib/modprobe.d/ .

Simply read trough the link

The dracut command didn’t work:

--regenerate-all cannot be called with a image file

I used --regenerate not --regenerate-all, but that’s the error I got.

I don’t see nomodeset in /etc/default/grub. Where else should I look?

intelfb (but not i915) is blacklisted in two files in /usr/lib/modprobe.d/. Does this matter?

My system uses GRUB. Isn’t GRUB the only relevant part in the ArchWiki page? The information there is the same you guys said on the other thread. Or am I missing something?

Try without --regenerate, but not before creating that file with that content from the beginning of my previious post. You didn’t respond on that, so it’s not clear.

That worked! Thank you! :smiley:

Yes, I had done it before my previous post. Sorry I didn’t make it clear

Thank you @enmus and @51lieal for your help.

To recap, for others that might have the same problem. The solution is:

On dom0:
sudoedit /etc/modprobe.d/i915.conf
with this content:

options i915 enable_psr=0

And then execute:
sudo dracut /boot/initramfs-5.x.x.fc32.qubes.x86_64.img --force

Where “x.x” is your current kernel, that can be found with
uname -a

Then reboot.

1 Like

Good to hear. If some post helped you to resolve your issue, please consider to mark it as a solution, so it could help other users too.

1 Like

Trying this on:
Failed for me with a similar machine (black screen instead of light DM or just system halt on launch).

Do we know if it matters if intelfb is blacklisted, or not?