Driver problem with multiseat on one graphic card

I’m the IT person of a school, earlier we used multiseatcomputers for the school, i have maded with a XGL implementation and it works fine but not so fantastic. The school wants that i build new computers but the XGL project is too outdated so i can’t use it anymore.

How can i make a multiseatcomputer with more then one user on one card with systemd? I have asked already to the makers of systemd but they said it’s a kernel problem. And i have asked also already to the kernel list and they said it’s a problem of the nvidia driver. I think also it’s a problem with the nvidia driver.

With Systemd loginctl and the nouveau drivers you have this:

│ [MASTER] drm:card0
│ ├─/sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-DVI-D-1
│ │ [MASTER] drm:card0-DVI-D-1
│ ├─/sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-HDMI-A-1
│ │ [MASTER] drm:card0-HDMI-A-1
│ └─/sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-VGA-1
│ [MASTER] drm:card0-VGA-1
│ drm:renderD128
│ graphics:fb0 “nouveaudrmfb”

So it will be:

loginctl attach seat1 /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-VGA-1

For the seat1 (the VGA d-sub output for seat1 and the other HDMI output for seat0) and of course the mouse and keyboard.

When you do this, all the graphics outputs are on the second seat (seat1) and not anymore on the first seat. So i need to move only the VGA output to seat1 and not all the outputs.

When i install the proprietary Nvidia drivers, i have the following:

[MASTER] pci:0000:08:00.0
│ ├─/sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0
│ │ [MASTER] drm:card0
│ └─/sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/renderD128
│ drm:renderD128

│ graphics:fb0 “EFI VGA”

So no VGA, DVI or HDMI items.

Linux is a very good multi-user system, so it is frustrating that it does not work. It does work under Windows without any problem, so it is certainly possible.Can you please check this or give me a tip somewhere so that I can continue looking for a solution? According to systemd this is a kernel problem, can you please solve this.

I want do the following:
Create a (workstation) seat (seat0) on the VGA /D-sub output of the video card
Creata a (workstation) seat (seat1) on the HDMI output of the video card
Create a (workstation) seat (seat2) on the DVI output of the video card

In theory it should work via the following:
loginctl attach seat1 /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-VGA-1
loginctl attach seat2 /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-DVI-D-1

Technical specifications:
Nvidia GT710 with the Nvidia driver
Linux Mint 21.2

Hopefully someone can help, the children and school will always thank you!
Thanks in advance,

Please set kernel parameter nvidia-drm.modeset=1

Thanks for your answer.

No i have indeed the 3 outputs of the video card. But when i add one output to seat1 all the output goes to seat1 and not only for ex. the HDMI output.
Now i have the same problem of with the Nouveau driver.

I want the result that i have one seat (seat0) on the VGA/D-sub output of the graphic card

a second seat (seat1) on the HDMI output of the graphic card

and a third seat (seat2) on the DVI output of the graphic card

In theory it should work with the following:
loginctl attach seat1 /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-HDMI-A-1

loginctl attach seat2 /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0/drm/card0/card0-DVI-D-1

But when i do this all the outputs will be used on seat2 (because they do all the outputs automaticly to the latest attached seat)

loginctl will always use the whole graphics card. Since you only have one, I don’t know if this will be successful at all.

I know loginctl use allways the whole graphics card. That’s just the point, i have contacted systemd for making loginctl to use not the whole graphics card. So you can use one graphic card for 2 or 3 seats (same as the outputs).
Because when loginctl use the entire graphics card, multiseat is simply not interesting because you can only put 3 to a maximum of 4 users on 1 PC.
So the answer of systemd was that they use the correct instructions but that the driver or kernel not gives or recieve the correct instructions.
On the school we have also a multiseat with Windows 10 and they use one card for 3 seats. So it’s possible in Windows, and must by possible in Linux.

The GPU and driver don’t really support splitting up its outputs like that. You need some kind of display server that controls the GPU’s whole display engine and arbitrates which software can access which display resources. DRM reports information about display outputs in separate files for convenience, but they’re not resources you can assign to separate seats the way you can PCI or USB devices.

In theory nowadays you could achieve something like multiseat by having a display server grant individual display resources to other users using DRM leases, but I don’t know if anyone has written software to do that.