Bug 244421 - x11/nvidia-driver-304: ABI incompatibility since latest Xorg update
Summary: x11/nvidia-driver-304: ABI incompatibility since latest Xorg update
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Alexey Dokuchaev
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-02-25 22:08 UTC by Jason W. Bacon
Modified: 2020-11-23 20:28 UTC (History)
5 users (show)

See Also:
bugzilla: maintainer-feedback? (danfe)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jason W. Bacon freebsd_committer 2020-02-25 22:08:20 UTC
Is nvidia-driver-304 doomed?

[2422636.172] ================ WARNING WARNING WARNING WARNING ================
[2422636.172] This server has a video driver ABI version of 24.1 that this
driver does not officially support.  Please check
http://www.nvidia.com/ for driver updates or downgrade to an X
server with a supported driver ABI.
[2422636.172] =================================================================
[2422636.172] (EE) NVIDIA: Use the -ignoreABI option to override this check.
[2422636.172] (II) UnloadModule: "nvidia"
[2422636.173] (II) Unloading nvidia
[2422636.173] (EE) Failed to load module "nvidia" (unknown error, 0)
[2422636.173] (EE) No drivers available.
[2422636.173] (EE) 
Fatal server error:
[2422636.173] (EE) no screens found(EE) 

Or, is it safe to use --ignoreABI on FreeBSD?

Or, can the port somehow be patched to work with the new ABI even though it's closed-source?

I was able to work around this on my old iMac by upgrading to nvidia-driver-340, but I have another system where the 340 kernel module reports that I need 304 for my chipset.

Thanks,

   JB
Comment 1 Alex S 2020-02-27 13:46:31 UTC
Since 304 is officially out of support, Nvidia is unlikely to update it. Although it should be possible to work around ABI incompatibility, I don't believe that's worth the effort. The obvious suggestion is to switch to vga or xf86-video-nv driver.
Comment 2 Jason W. Bacon freebsd_committer 2020-02-27 15:25:30 UTC
By "vga" do you mean VESA?

I used to prefer the nv driver for stability reasons (the closed-source nvidia driver has caused kernel panics at times), but it has not worked for me on any installations I've done the past few years.  It was deprecated in 2010:

https://www.x.org/wiki/nv/

Would be nice if we had nouveau working...

On my tower workstation (nVidia card unsupported by 340) I'll just swap in an old Radeon card I had lying around.

I'll experiment with nv and VESA on my iMac and report back.  Not sure if it's possible to swap the GPU in an iMac.

It might also be possible to use the modesetting driver if the CPU has integrated Intel graphics.  That worked for me on a similar iMac where I encountered problems with the Radeon driver.
Comment 3 Alex S 2020-02-27 15:45:18 UTC
(In reply to Jason W. Bacon from comment #2)

> By "vga" do you mean VESA?

Indeed. Starting to forget how it's called...

> the nv driver ... It was deprecated in 2010

So is your card. That driver is still occasionally updated, as you can see from the commit log. I'm not claiming it's a good driver, just that it's still an option.
Comment 4 Tijl Coosemans freebsd_committer 2020-02-28 15:41:34 UTC
It looks like the ABI change is related to hardware cursor support so maybe you can use ignoreABI in combination with the SWcursor option.
Comment 5 Jason W. Bacon freebsd_committer 2020-02-28 21:54:49 UTC
Thanks for the tips.

Update:

"nv" driver works on my desktop system that's not supported by nvidia-driver-340, but only if I generate an xorg.conf (with "Xorg -configure").  Otherwise, Xorg.0.log reports "Failed to load module "nvidia".  Not sure why it would be looking for that when nvidia-driver is not installed and not listed in kld_list.

The following in /etc/X11/xorg.conf.d/90-nvidia.conf is sufficient:

Section "Device"
        Identifier  "Card0"
        Driver      "nv"
        BusID       "PCI:1:0:0"
EndSection

"vesa" works, but only at 640x480 resulution, so not viable.

Possibly an alternative to "SWCursor would be enabling moused?  Haven't tried, it, but leaving a suggestion for posterity.

This PR can be closed AFAIC.  I think we have enough solutions on the table.
Comment 6 Jason W. Bacon freebsd_committer 2020-02-29 17:18:02 UTC
I putzed a little more with the iMac (GeForce 9400).  No luck with "nv" or "modesetting" or "vesa".  Looks like nvidia-driver-340 is the only option for this chipset right now, unless I overlooked something.

The tower PC that does work with "nv" and not with nvidia-driver-340 has a GeForce 6200 LE, BTW.

Just occurred to me that in 25 years of running FreeBSD, I have yet to encounter a machine that will not function as a graphical desktop system.  Most of them just work, and a few like these two require some trial-and-error, but there always seems to be an option.
Comment 7 mats 2020-05-02 07:40:34 UTC
Open source & compatibility ....

(WW) NVIDIA(0): The NVIDIA GeForce 6500 GPU installed in this system is
(WW) NVIDIA(0): supported through the NVIDIA 304.xx Legacy drivers. Please
(WW) NVIDIA(0): visit http://www.nvidia.com/object/unix.html for more
(WW) NVIDIA(0): information.  The 340.108 NVIDIA driver will ignore this
(WW) NVIDIA(0): GPU.  Continuing probe...
(EE) No devices detected.
(EE) Fatal server error:
(EE) no screens found(EE)
(EE) Server terminated with error (1). Closing log file.

workstations completely broken ...
"Affects som peoble" - That's right .....
Disappointed ....
Comment 8 crypt47 2020-06-12 09:21:54 UTC
Just stepped on this bug. "nvidia" driver broken because of the abi change, "nv" driver just broken, the trick with SWcursor doesn't work. The old laptop system which i need so much is completely broken after update. That's not funny. Will try to checkout the old version of xorg-server (1.18 should be fine) and make a separate port. Otherwise can remove FreeBSD completely. Stability is the main reason to use it.
Comment 9 crypt47 2020-06-12 16:51:49 UTC
The way above works more or less, but I just don't know which keyword in port provides a substitution for default xorg-server. Something like "PROVIDES= xorg-server".
Comment 10 Alexey Dokuchaev freebsd_committer 2020-07-16 06:25:05 UTC
(In reply to crypt47 from comment #8)
> The old laptop system which i need so much is completely broken after update.
I'm currently talking to nVidia about feasibility of updating -304 branch to catch up with xserver ABI 24.  Could you please share exact laptop model/specifications, including video chip information?
Comment 11 rm 2020-11-23 20:28:28 UTC
I have the same issue:
I can't get things working with xf86-video-nv : it doesn't crash, but I get garbage on the screen (even if the card is among the supported ones)
I can't get thing working with nvidia-drivers-304: even forcing "ignoreABI",  after showing the nvidia logo briefly, I get garbage on the screen (black bars and a blinking cursor). Also, quite bad, loading the nvidia kernel module makes my ethernet disappear!
Since neither driver works and we don't have nouveau, the whole laptop seems doomed!

My Video Card is:
vgapci0@pci0:1:0:0:     class=0x030000 card=0x01071025 chip=0x01d710de rev=0xa1 hdr=0x00
    vendor     = 'NVIDIA Corporation'
    device     = 'G72M [Quadro NVS 110M/GeForce Go 7300]'
    class      = display
    subclass   = VGA


The "hidden" ethernet card is:
re0@pci0:2:0:0: class=0x020000 card=0x01071025 chip=0x816810ec rev=0x01 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet