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: https://forums.developer.nvidia.com/t...
Keywords:
Depends on:
Blocks:
 
Reported: 2020-02-25 22:08 UTC by Jason W. Bacon
Modified: 2021-05-08 03:46 UTC (History)
8 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
Comment 12 Fabian N. 2020-12-23 21:30:47 UTC
Same for me with a Geforce 6200 and a brand new installation of FreeBSD 12.2 today. 

With nv, I cannot use 1600x1200 on my flat screen due to another bug concerning wrongly detected panel sizes. 

Chips & technologies drivers have "FixPanelSize" to circumevent this problem and quietly accept the specified modelines, which doesn't work on nv. 

Of course, I tried ignoreABI, both with and without SWcursor.
Comment 13 Jason W. Bacon freebsd_committer 2020-12-25 15:12:31 UTC
I just upgraded the iMac GeForce 9400 and nvidia-driver-340 now causes an immediate panic when running startx.

nvidia0: <GeForce 9400> on vgapci0
vgapci0: child nvidia0 requested pci_enable_io
vgapci0: child nvidia0 requested pci_enable_io
panic: vm_fault: fault on nofault entry, addr: 0xfffffe001bd74000
cpuid = 1
time = 1608842319
KDB: stack backtrace:
#0 0xffffffff80c0a8e5 at kdb_backtrace+0x65
#1 0xffffffff80bbeb9b at vpanic+0x17b
#2 0xffffffff80bbea13 at panic+0x43
#3 0xffffffff80ef3942 at vm_fault+0x24d2
#4 0xffffffff80ef1350 at vm_fault_trap+0x60
#5 0xffffffff8108fabc at trap_pfault+0x19c
#6 0xffffffff8108efb6 at trap+0x286
#7 0xffffffff81066f68 at calltrap+0x8
Uptime: 29m5s
Dumping 277 out of 1751 MB:..6%..12%..24%..35%..41%..52%..64%..75%..81%..93%---<<BOOT>>---

I'd be happy to use scfb, vesa, or nv on this system, but still no luck, even using the following fragment with "vesa" or "scfb" substituted for "nv":

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

scfb gives me a black screen and I can Ctrl+Alt+F1 back to the console and Ctrl-C out of it.  nv gives me a black screen and a locked console.  The system is still up, though, and tapping the power button results in a proper shutdown.  startx fails with vesa.

I wonder if it would be easy to add support for this chip to the nv driver.
Comment 14 Jason W. Bacon freebsd_committer 2020-12-25 16:22:06 UTC
(In reply to Jason W. Bacon from comment #13)

Actually, it seems the nv driver should support the GeForce 9400.  From the nv man page:

       GeForce 8XXX, GeForce 9XXX, nForce 7, GeForce G, ION
                             G8x, G9x, GT21x, MCP7x

I'll try tweaking some of the options like "NoAccel" and "UseFBDev" when time permits.
Comment 15 Jason W. Bacon freebsd_committer 2020-12-27 01:29:26 UTC
Tried the following with nv driver today, no luck:

UseFBDev
CrtcNumber 0 and 1
FlatPanel
NoAccel

Have not yet tried AccelMethod "EXA"

Console freezes regardless of options.  I can ssh in and see Xorg using 100% CPU.

I'd actually prefer to get nv working on this system if possible, though nvidia-driver-340 would be OK as well.  The closed-source nvidia drivers have often caused panics for me in the past while nv has always been rock solid.  I don't care about 3D support.

Here are some interesting parts from Xorg log:

FreeBSD tarpon.uits  bacon ~ 92: egrep 'EE|WW' /var/log/Xorg.0.log
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[   105.142] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[   105.142] (WW) Disabling Mouse0
[   105.142] (WW) Disabling Keyboard0
[   105.310] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[   105.322] (EE) NV(0): V_BIOS address 0x0 out of range
[   105.322] (WW) NV(0): Failed to initialize the int10 module; the console will not be restored.
[   105.428] (WW) Warning, couldn't open module xaa
[   105.428] (EE) NV: Failed to load module "xaa" (module does not exist, 0)
Comment 16 Jason W. Bacon freebsd_committer 2021-02-05 18:58:09 UTC
(In reply to Jason W. Bacon from comment #13)

This problem has gone away.  Just tried again with nvidia-driver-340 and all other ports updated.  Seems to be working fine now.
Comment 17 Huskers 2021-04-14 17:47:40 UTC
(In reply to Alexey Dokuchaev from comment #10)
Do you have an update on Nvidia 304 driver from NV?

I Nvidia 6200 card and it works on Vesa and nv is works but response is too slow.

Any update will be greatly appreciated.

Thanks in advance.
Comment 18 Jason W. Bacon freebsd_committer 2021-04-14 19:11:02 UTC
I also still have an older card that would require 304, but I have to admit I'm content using nv with it.  If it helps to add one more name to the list of people who would benefit from a fix, you can count me in though.
Comment 19 Werner Lehmann 2021-04-30 16:16:39 UTC
I would be very happy for a solution for nvidia-driver-304 running with xorg-server-1.20, too.
I have an old Laptop with a Geforce 7300 Go and a Desktop-System with an integrated Geforce 6100. I have not tried, but I don't think those chips would run with nvidia-driver-340? If so, please tell me.
You actually do not want to run a chip like that with nv, seriously, as you don't have 2D or 3D support. You need at least 2D to properly surf on the Internet/watch youtube videos or even use Kodi.

Another possibility would be having nouveau on FreeBSD, I have installed OpenSUSE on that system with the Geforce 6100 integrated graphics for now and it seems to work fine.
Comment 20 Alexey Dokuchaev freebsd_committer 2021-05-08 03:46:44 UTC
(In reply to Huskers from comment #17)
> Do you have an update on Nvidia 304 driver from NV?
Someone had asked nVidia to update 304.xx branch at their forums (I've added the link), we can track progress there (unfortunately, there's none so far).