boots too fast for Xorg to run???

That is the crux of it - a timing issue with loading of the pertinent graphics card driver. That is what using early KMS can help to mitigate. FWIW, a similar thread here…

https://bbs.archlinux.org/viewtopic.php?id=257421

A basic workaround (for your test box situation) might be to consider using a custom “display-manager.service” unit with a small delay added. For example…

ExecStartPre=-/usr/bin/sleep 3

Just a thought.

...
[Service]
Type=forking
PIDFile=/run/displaymanager.pid
ExecStartPre=-/usr/bin sleep 3
ExecStart=/usr/lib/X11/display-manager start
ExecReload=/usr/lib/X11/display-manager reload
KillMode=process
...

3 wouldn’t do it, but 300, 200 & 175 did, until I disabled issue-add-ssh-keys.service & sshd.service because I was tired of seeing key strings pollute the login screen on each boot. Doing that picked up a wee bit more boot speed:

# journalctl -b -41 -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
Data from the specified boot (-41) is not available: No such boot ID in journal
# journalctl **-b -40** -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sat 2021-08-14 23:06:51 EDT. --
    3.726826] localhost systemd[1]: Stopped Load Kernel Modules.
    6.530918] asa88 systemd[1]: Starting X Display Manager...
    6.633770] asa88 display-manager[694]: Starting service xdm
    6.634141] asa88 systemd[1]: Started X Display Manager.
# journalctl **-b** -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sat 2021-08-14 23:00:58 EDT. --
    3.772049] localhost systemd[1]: Stopped Load Kernel Modules.
    6.279010] asa88 systemd[1]: Starting X Display Manager...
    6.559526] asa88 display-manager[692]: Starting service xdm
    6.559941] asa88 systemd[1]: Started X Display Manager.

After that, even 1000 wasn’t enough, so I renabled the ssds and tried again, with success:

# systemctl cat display-manager.service | grep leep
ExecStartPre=-/usr/bin sleep 300
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sat 2021-08-14 23:28:30 EDT. --
    3.763663] localhost systemd[1]: Stopped Load Kernel Modules.
    7.459124] asa88 systemd[1]: Starting X Display Manager...
    7.563360] asa88 display-manager[756]: Starting service xdm
    7.563746] asa88 systemd[1]: Started X Display Manager.

Dropping it to 200 produced failure:

# systemctl cat display-manager.service | grep leep
ExecStartPre=-/usr/bin sleep 200
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sat 2021-08-14 23:33:49 EDT. --
    3.715521] localhost systemd[1]: Stopped Load Kernel Modules.
    6.697124] asa88 systemd[1]: Starting X Display Manager...
    6.796874] asa88 display-manager[750]: Starting service xdm
    6.797358] asa88 systemd[1]: Started X Display Manager.

Any idea for a better place or way to induce a display-manager.service loading delay?

Did you really wait 16 minutes? You logs show 3 seconds. Did you even try to understand what you were doing and compare expected results with reality?

...
ExecStartPre=-/usr/bin sleep 3
...

Is it copy-paste? That is not what you were told to do (even if the idea of random delays is silly and I already told you that if you depend on DRM device being available you simply need to make your service wait for DRM device being available).

This is indeed puzzling behavior. Post #3 reveals missing /dev/dri/card0 and /dev/fb0. Does waiting for completion of systemd-udev-settle.service help?

**3400G:~ #** systemctl status systemd-udev-settle.service  
○ systemd-udev-settle.service -** Wait for udev To Complete Device Initialization **
     Loaded: loaded (/usr/lib/systemd/system/systemd-udev-settle.service; static) 
     Active: inactive (dead) 
       Docs: man:systemd-udev-settle.service(8) 
**3400G:~ #** 

Obviously not. Sometimes frustration with failure causes blinds spots, as it did with this. Copied correctly 3 works. So does 2, and 1 (usually), and not .5:

# systemctl cat display-manager.service | grep eep
ExecStartPre=-/usr/bin/sleep 1
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sun 2021-08-15 01:37:40 EDT. --
    3.759638] localhost systemd[1]: Stopped Load Kernel Modules.
    6.936418] asa88 systemd[1]: Starting X Display Manager...
    8.130558] asa88 systemd[1]: Started X Display Manager.
    8.131091] asa88 display-manager[719]: Starting service xdm

if you depend on DRM device being available you simply need to make your service wait for DRM device being available).
I liked this idea, so I tried a few ways to do this, starting after reading bug comment #7, without finding any examples. None I came up with worked, so not so simple for someone who doesn’t know a whole lot about unit configuration files. Failure e.g., in display-manager.service

After=remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service getty@tty7.service **local-after-boot.service**

with

# systemctl cat local-after-boot.service
# local-after-boot.service
[Unit]
Description=Start slow starting services after boot
After=boot-complete.target network-online.target
Wants=smb.service nmb.service spamd.service

[Service]
Type=oneshot
ExecStart=echo Started slow starting services

:frowning:

Good to know.

So now you could proceed with using a script to test (=wait) for the existence of /dev/dri/card* in your customized display-manager.service.

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

This is why I couldn’t believe it mattered which DM was enabled, as was suggested by post #5.

Does waiting for completion of systemd-udev-settle.service help?

3400G:~ # systemctl status systemd-udev-settle.service  
○ systemd-udev-settle.service - Wait for udev To Complete Device Initialization 
     Loaded: loaded (/usr/lib/systemd/system/systemd-udev-settle.service; static) 
     Active: inactive (dead) 
       Docs: man:systemd-udev-settle.service(8) 
3400G:~ # 
# systemctl status systemd-udev-settle.service
○ systemd-udev-settle.service - Wait for udev To Complete Device Initialization
     Loaded: loaded (/usr/lib/systemd/system/systemd-udev-settle.service; static)
     Active: inactive (dead)
       Docs: man:systemd-udev-settle.service(8)

The man page says using it is not recommended, so usually I disable it. It was enabled until a moment ago, but since it doesn’t seem to be involved, I disabled it.

How can I make it wait? The following worked for me the first try, but not in a bunch of tries since:

# systemctl cat display-manager.service
# /usr/lib/systemd/system/display-manager.service
[Unit]
Description=X Display Manager
Conflicts=getty@tty7.service plymouth-quit.service
After=ypbind.service gpm.service time-sync.target winbind.service acpid.service
Wants=remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service
After=remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service getty@tty7.service plymouth-quit.service
OnFailure=plymouth-quit.service

[Service]
Type=forking
PIDFile=/run/displaymanager.pid
ExecStart=/usr/lib/X11/display-manager start
ExecReload=/usr/lib/X11/display-manager reload
KillMode=process

[Install]
WantedBy=graphical.target
Alias=xdm.service

# /etc/systemd/system/display-manager.service.d/override.conf
[Unit]
After=ypbind.service gpm.service time-sync.target winbind.service acpid.service remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service getty@tty7.service plymouth-quit.service systemd-udev-settle.service

Appending multi-user.target or local-after-boot.service to the After= line didn’t work either.

I suppose you mean calling a oneshot script service from it. Not being a programmer, where or how to place such a test/script is beyond my imagination. Those two URLS are big pages, more than I can digest without a lot of time and/or assistance unless I know just what I’m looking for, such as a relevant example. /dev/dri/card* always exists on these PCs by the time I see a login prompt anywhere. I made one stab at it that doesn’t work:

# systemctl cat display-manager.service
# Warning: display-manager.service changed on disk, the version systemd has loaded is outdated.
# This output shows the current version of the unit's original fragment and drop-in files.
# If fragments or drop-ins were added or removed, they are not properly reflected in this output.
# Run 'systemctl daemon-reload' to reload units.
# /usr/lib/systemd/system/display-manager.service
[Unit]
Description=X Display Manager
Conflicts=getty@tty7.service plymouth-quit.service
After=ypbind.service gpm.service time-sync.target winbind.service acpid.service
Wants=remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service
After=remote-fs.target dbus.socket systemd-user-sessions.service systemd-logind.service getty@tty7.service plymouth-quit.service
OnFailure=plymouth-quit.service

[Service]
Type=forking
PIDFile=/run/displaymanager.pid
ExecStart=/usr/lib/X11/display-manager start
ExecReload=/usr/lib/X11/display-manager reload
KillMode=process

[Install]
WantedBy=graphical.target
Alias=xdm.service

# /etc/systemd/system/display-manager.service.d/override.conf
[Service]
ExecStart=/usr/bin/test -f /dev/dri && /usr/lib/X11/display-manager start
ExecReload=/usr/bin/test -f /dev/dri && /usr/lib/X11/display-manager reload
# journalctl -b | grep aile
Aug 14 23:41:42 localhost kernel: ACPI: \_SB_.PCI0.VGA_.LCD_: _BCM evaluation failed
Aug 15 03:41:46 asa88 alsactl[681]: alsa-lib main.c:1405:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -6
Aug 15 03:41:46 asa88 alsactl[681]: alsa-lib main.c:1405:(snd_use_case_mgr_open) error: failed to import hw:1 use case configuration -6
Aug 15 03:41:47 asa88 kernel: [drm:amdgpu_acpi_init [amdgpu]] Call to ATCS verify_interface failed: -5
# dmesg | grep aile
    2.237489] ACPI: \_SB_.PCI0.VGA_.LCD_: _BCM evaluation failed
    7.741060] [drm:amdgpu_acpi_init [amdgpu]] Call to ATCS verify_interface failed: -5
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sun 2021-08-15 03:42:25 EDT. --
    3.759752] localhost systemd[1]: Stopped Load Kernel Modules.
    6.215046] asa88 systemd[1]: Starting X Display Manager...
    8.366085] asa88 display-manager[715]: Starting service xdm
    8.366487] asa88 systemd[1]: Started X Display Manager.

Could the problem be related to that verify_interface failed?

Now it’s time to sleep…

If you refuse to learn anything new, do not mess around with your system.

bor@tw:~> cat /etc/udev/rules.d/99-drm.rules 
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="systemd"
bor@tw:~> 
bor@tw:~> cat /etc/systemd/system/test-dri.service 
[Unit]
Description=test wating for DRI device
Requires=dev-dri-card0.device
After=dev-dri-card0.device
...

I meant adding something like the following to your custom display-manager.service (/etc/systemd/system/display-manager.service)…

ExecStartPre=-/usr/sbin/drm_test.sh

The drm_test.sh script…

#!/bin/bash

wait_file() {
  local file="$1"; shift
  local wait_time="$1"; shift

  until test $((wait_time--)) -eq 0 -o -e "$file" ; do sleep 1; done

  ((++wait_time))
}

file=/dev/dri/card0

wait_file "$file" 3 || {
  echo "No DRM device found"
  exit 1
}

Don’t forget to make it executable…

chmod +x /usr/sbin/drm_test.sh

You can also use ENV{SYSTEMD_WANTS}= to trigger your custom service unit…

SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="systemd", ENV{SYSTEMD_WANTS}="foo.service"

https://www.freedesktop.org/software/systemd/man/systemd.device.html

Example:
https://kinvolk.io/docs/flatcar-container-linux/latest/setup/systemd/udev-rules/

There is no custom service unit here. As I already said, systemd-logind already provides information whether graphical hardware is present and display managers query systemd-logind. If someone wants to use ancient display manager, fine, but then one has also responsibility to reinvent the wheel^W^W^W re-implement logic to delay startup of X server until after necessary hardware has appeared.

You need both After=systemd-udev-settle.service and Requires=systemd-udev-settle.service.

Yes, I get that and understand from my own reading about how this works. I just pointed out how it can be done to trigger a unit.

SystemS. I have dozens of PCs and hundreds of installations. Most are for testing, aka learning. I don’t refuse. I’m simply slower to learn new things than you, who’s been using & developing systemd, apparently for more than a decade. Also, I forget too much. :stuck_out_tongue:

This does work:

# systemctl cat display-manager.service
...
# /etc/systemd/system/display-manager.service.d/override.conf
[Unit]
After= systemd-udev-settle.service
Requires=systemd-udev-settle.service
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sun 2021-08-15 14:30:01 EDT. --
    3.736050] localhost systemd[1]: Stopped Load Kernel Modules.
    7.919346] asa88 systemd[1]: Starting X Display Manager...
    8.082879] asa88 display-manager[716]: Starting service xdm
    8.083573] asa88 systemd[1]: Started X Display Manager

Thank you for staying with me on this.

Now, on to try to learn something from arvidjaar’s and deano’s responses…

I’m not sure whether or not I’m making some progress on this front. As previously noted, I’m not a programmer.

# cat /etc/udev/rules.d/99-drm.rules
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="systemd"
# systemctl cat test-dri.service
# /etc/systemd/system/test-dri.service
[Unit]
Description=test waiting for DRI device
Requires=dev-dri-card0.device
After=dev-dri-card0.device

[Service]
Type=oneshot
RemainAfterExit=false
ExecStartPre=/bin/bash -c 'echo "Testing for /dev/dri"'
ExecStart=if  -e /dev/dri/card0 ] ; /usr/bin/echo "zero" && /usr/bin/touch /tmp/dev-dri-exists; fi
ExecStop=/usr/bin/echo "ExecStop"
#SuccessAction=exit
Restart=on-failure

[Install]
WantedBy=display-manager.service
#WantedBy=graphical.target


# systemctl status test-dri.service
× test-dri.service - test waiting for DRI device
     Loaded: loaded (/etc/systemd/system/test-dri.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Sun 2021-08-15 23:02:33 EDT; 50min ago
    Process: 747 ExecStartPre=/bin/bash -c echo "Testing for /dev/dri" (code=exited, status=0/SUCCESS)
    Process: 748 ExecStart=if  -e /dev/dri/card0 ] (code=exited, status=203/EXEC)
   Main PID: 748 (code=exited, status=203/EXEC)
        CPU: 5ms

Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 5.
Aug 15 23:02:33 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Start request repeated too quickly.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:33 asa88 systemd[1]: Failed to start test waiting for DRI device.
# ls -l /tmp/dev-dri-exists
ls: cannot access '/tmp/dev-dri-exists': No such file or directory
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Sun 2021-08-15 23:02:41 EDT. --
    3.715546] localhost systemd[1]: Stopped Load Kernel Modules.
    7.628542] asa88 systemd[1]: Starting X Display Manager...
    7.766204] asa88 display-manager[719]: Starting service xdm
    7.766602] asa88 systemd[1]: Started X Display Manager.
# journalctl -b | grep test
Aug 15 23:02:32 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 15 23:02:32 asa88 systemd[660]: test-dri.service: Failed to locate executable if: No such file or directory
Aug 15 23:02:32 asa88 systemd[660]: test-dri.service: Failed at step EXEC spawning if: No such file or directory
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=203/EXEC
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:32 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 1.
Aug 15 23:02:32 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:32 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 15 23:02:32 asa88 systemd[724]: test-dri.service: Failed to locate executable if: No such file or directory
Aug 15 23:02:32 asa88 systemd[724]: test-dri.service: Failed at step EXEC spawning if: No such file or directory
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=203/EXEC
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:32 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 2.
Aug 15 23:02:32 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:32 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 15 23:02:32 asa88 systemd[743]: test-dri.service: Failed to locate executable if: No such file or directory
Aug 15 23:02:32 asa88 systemd[743]: test-dri.service: Failed at step EXEC spawning if: No such file or directory
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=203/EXEC
Aug 15 23:02:32 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:32 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 3.
Aug 15 23:02:33 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 15 23:02:33 asa88 systemd[746]: test-dri.service: Failed to locate executable if: No such file or directory
Aug 15 23:02:33 asa88 systemd[746]: test-dri.service: Failed at step EXEC spawning if: No such file or directory
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=203/EXEC
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:33 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 4.
Aug 15 23:02:33 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 15 23:02:33 asa88 systemd[748]: test-dri.service: Failed to locate executable if: No such file or directory
Aug 15 23:02:33 asa88 systemd[748]: test-dri.service: Failed at step EXEC spawning if: No such file or directory
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=203/EXEC
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:33 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 5.
Aug 15 23:02:33 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Start request repeated too quickly.
Aug 15 23:02:33 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 15 23:02:33 asa88 systemd[1]: Failed to start test waiting for DRI device.

My current hangup is I can’t even make a script that does what I want into one line.

if  -e /dev/dri/card0 ]
then
 /usr/bin/echo "zero"
 /usr/bin/touch "/tmp/dev-dri-exists"
fi

I get either “syntax error near unexpected token `fi’” or “>” prompt, and googling this seemingly simple thing is yet another frustrating time gobbler. I don’t want to have to call another script. :frowning:

systemd is not shell. If you want shell syntax, you start shell with script.

I don’t want to have to call another script.

I never told you to write any script. I showed you how to make a unit wait until some device becomes available. This does not need any scripting. This needs exactly two directives After and Requires. If you have question how to write systemd unit, ask this question in appropriate subforum with appropriate title; burying this question in 4 pages unrelated thread hardly helps.

So you do not need spoon feeding.

At this point I don’t know whether the problem is now needing help creating unit, or interpreting results of the unit I now have, which is trying to isolate time at which KMS module loads and /dev/dri/card0 appears, late loading of which without modification of display-manager.service is the problem causing $SUBJECT:

# systemctl cat test-dri.service
# /etc/systemd/system/test-dri.service
[Unit]
Description=test waiting for DRI device
Requires=dev-dri-card0.device
After=dev-dri-card0.device

[Service]
Type=oneshot
RemainAfterExit=false
ExecStartPre=/bin/bash -c 'echo "Testing for /dev/dri"'
ExecStart=/bin/sh -c \
    if  -e /dev/dri/card0 ] ; then /usr/bin/echo "zero" && /usr/bin/touch "/tmp/dev-dri-exists" ; fi
ExecStop=/usr/bin/echo "ExecStop"
Restart=on-failure

[Install]
WantedBy=display-manager.service
# journalctl -b -o short-monotonic -u display-manager.service -u systemd-modules-load.service -g St
-- Journal begins at Fri 2021-08-13 23:33:06 EDT, ends at Mon 2021-08-16 01:39:24 EDT. --
    3.774494] localhost systemd[1]: Stopped Load Kernel Modules.
    7.824468] asa88 systemd[1]: Starting X Display Manager...
    7.939431] asa88 display-manager[718]: Starting service xdm
    7.939874] asa88 systemd[1]: Started X Display Manager.
# journalctl -b | grep test
Aug 16 01:38:44 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:44 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 1.
Aug 16 01:38:44 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 16 01:38:44 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:44 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 2.
Aug 16 01:38:44 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 16 01:38:44 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 16 01:38:44 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:44 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 3.
Aug 16 01:38:45 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:45 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 4.
Aug 16 01:38:45 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: Starting test waiting for DRI device...
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:45 asa88 systemd[1]: Failed to start test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Scheduled restart job, restart counter is at 5.
Aug 16 01:38:45 asa88 systemd[1]: Stopped test waiting for DRI device.
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Start request repeated too quickly.
Aug 16 01:38:45 asa88 systemd[1]: test-dri.service: Failed with result 'exit-code'.
Aug 16 01:38:45 asa88 systemd[1]: Failed to start test waiting for DRI device.

Not a new issue, and the advice in this thread is not new either actually…

https://adamsdesk.com/blog/2021/02/15/gdm-no-longer-starts-automatically/