[arch-general] [RFC] Potentially deprecating primus, bumblebee, virtualGL and primus_vk

Emil Velikov emil.l.velikov at gmail.com
Sat Jan 16 15:30:21 UTC 2021


On Fri, 15 Jan 2021 at 23:16, Archange <archange at archlinux.org> wrote:
>
> Le 14/01/2021 à 19:15, Emil Velikov a écrit :
> > On Wed, 13 Jan 2021 at 16:52, Archange <archange at archlinux.org> wrote:
> >> Le 12/01/2021 à 21:45, Emil Velikov a écrit :
> >>> On Tue, 12 Jan 2021 at 18:24, Archange <archange at archlinux.org> wrote:
> >>>
> >>>> OK, will try to check tomorrow with a friend that has an Optimus laptop.
> >>>>
> >>> Perfect, thanks in advance.
> >>>
> >>> To trigger the event one has to echo into a sysfs file... Don't recall
> >>> exactly, some of the following should be it.
> >>> a) If the nvidia module is driving an fbcon:
> >>>    - echo "0" > /sys/class/vtconsole/vtconX/bind
> >>> b) and/or a combination of the following
> >>>    - echo "remove" (or was it "unbind") > /sys/class/drm/cardX/device/uevent
> >>>    - echo "remove" (or was it "unbind") >
> >>> /sys/class/drm/cardX/device/driver/uevent
> >>>    - echo "1" > /sys/class/drm/cardX/device/driver/unbind
> >>>
> >> 2) If the driver is loaded before X, it works for PRIME. However, the
> >> card refuse to unbind because it’s in use by X even if nothing is
> >> actually running on it.
> >>
> > It just works here so I suspect that a command or the order was off.
> >
> > My setup:
> > - Intel/Nvidia system, monitor plugged/powered by Intel GPU
> > - Therefore fb0 is for Intel (alongside card0) and Nvidia does not
> > have fb device only card1.
>
> Same on the laptop of my friend.
>
> > What I've done:
> > - Toggle render offload ON via xrandr, try glxgears
> > - Toggle render offload OFF via xrandr
>
> Not sure how I’m supposed to do that, didn’t find any reference online.
>
Oops sorry about that - disabling it is a hard requirement, actually.
The reason why it's barely mentioned, is that people (tend to) use
FOSS drivers, where rmmod isn't needed ;-)

> > - Issue the removal - echo "remove" > /sys/class/drm/card1/uevent
> This segfaults Xorg right away.
> > - Confirm that it works - Xorg.0.log should list "removing GPU device
> > ...blabla/card1"
>
> It does appear, with the segfault:
>
Did you disable the offload as mentioned above?
You may also want to close any apps you've started while offload was enabled.

To put it otherwise:
 - xrandr enable offload - X and newly started programs start using
the other GPU
 - echo "remove" > .../uevent sends an event to userspace that the GPU
is being removed

Most programs do not handle, GPU removal so they crash.

Therefore, using "remove" w/o disabling offload, is akin to
(physically) plugging out the GPU, while running optirun $app. A
scenario which I suspect is not supported with bumblebee.

> Maybe I missed a fb? Not sure…
>
Seems like I should add some information there. Our systems usually have 8 VT.
On one of those we have X (intentionally ignoring Wayland/Weston here
and multiple X instances) and on the rest we have vtcon (aka VT
framebuffer console).

Even with X completely killed, a kernel module can be used for vtcon
(usually, if a screen physically connected to the GPU you have one),
thus rmmod will fail.
You will see the reference counter in `lsmod | grep driver` show 1.

> I might try again tomorrow but really not sure, I have a plane to catch
> and my friend might not be available early enough.
>
Sure, please don't miss your plane. Everything else can happen in due time.

Thanks
Emil


More information about the arch-general mailing list