nouveau GSP-RM: software rendering only (RTX 2080 Ti, GL + VK)
System information
- OS: Fedora Linux 39 (Workstation Edition)
- GPU: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti Rev. A] [10de:1e07] (rev a1)
- Kernel version: Linux x399-aorus 6.8.0-262.vanilla.fc39.x86_64 #1 (closed) SMP PREEMPT_DYNAMIC Mon Mar 11 07:42:44 UTC 2024 x86_64 GNU/Linux
- Mesa version: 4.5 (Compatibility Profile) Mesa 24.1.0-devel (git-cc74a819)
- Xserver version (if applicable): wayland (X.Org X Server 1.20.14, X Protocol Version 11, Revision 0, BuildID: xorg-x11-server 1.20.14-30.fc39)
- Desktop manager and compositor: KDE Plasma, kwin_wayland
timothy@x399-aorus:~$ inxi -GSC -xx
System:
Host: x399-aorus Kernel: 6.8.0-262.vanilla.fc39.x86_64 arch: x86_64 bits: 64
compiler: gcc v: 2.40-14.fc39
Desktop: KDE Plasma v: 5.27.10 tk: Qt v: 5.15.12 wm: kwin_wayland dm: SDDM
Distro: Fedora Linux 39 (Workstation Edition)
CPU:
Info: 6-core model: AMD Ryzen Threadripper 2970WX bits: 64 type: MT MCP MCM
arch: Zen+ rev: 2 cache: L1: 2.2 MiB L2: 12 MiB L3: 64 MiB
Speed (MHz): avg: 3310 high: 3554 min/max: 2200/3000 boost: enabled cores:
1: 3394 2: 3543 3: 3541 4: 3543 5: 3543 6: 3543 7: 2200 8: 2200 9: 3543
10: 3543 11: 3543 12: 3498 13: 3543 14: 2200 15: 2200 16: 3543 17: 3543
18: 3543 19: 3543 20: 3543 21: 3543 22: 3543 23: 3554 24: 3543 25: 3543
26: 2200 27: 3543 28: 3543 29: 2200 30: 3480 31: 3543 32: 3543 33: 3543
34: 3543 35: 3363 36: 3543 37: 3543 38: 3543 39: 3543 40: 2200 41: 3543
42: 3543 43: 3537 44: 3539 45: 2200 46: 3543 47: 3543 48: 3543
bogomips: 287435
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
Device-1: NVIDIA TU102 [GeForce RTX 2080 Ti Rev. A] vendor: Micro-Star MSI
driver: nouveau v: kernel arch: Turing pcie: speed: 8 GT/s lanes: 16 ports:
active: DP-2,DP-3,HDMI-A-1 empty: DP-1,DP-4 bus-ID: 41:00.0
chip-ID: 10de:1e07
Device-2: Microsoft LifeCam HD-5000 driver: snd-usb-audio,uvcvideo
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 5-1:2 chip-ID: 045e:076d
Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 23.2.4
compositor: kwin_wayland driver: X: loaded: modesetting unloaded: fbdev,vesa
gpu: nouveau d-rect: 3600x4480 display-ID: 0
Monitor-1: DP-2 pos: bottom-r res: 1080x1920 size: N/A
Monitor-2: DP-3 pos: bottom-c res: 1080x1920 size: N/A
Monitor-3: HDMI-A-1 pos: primary,top-left res: 1440x2560 size: N/A
API: EGL v: 1.5 platforms: device: 1 drv: swrast gbm: drv: kms_swrast
surfaceless: drv: swrast wayland: drv: swrast x11: drv: swrast
inactive: device-0
API: OpenGL v: 4.5 vendor: mesa v: 23.3.6 glx-v: 1.4 direct-render: yes
renderer: llvmpipe (LLVM 17.0.6 256 bits) device-ID: ffffffff:ffffffff
display-ID: :1.0
API: Vulkan v: 1.3.268 surfaces: xcb,xlib,wayland device: 0 type: cpu
driver: mesa llvmpipe device-ID: 10005:0000
timothy@x399-aorus:~$
Describe the issue
Installed latest daily kernel for Fedora 39 (@kernel-vanilla, 6.8.0 just released now). Nouveau GSP-RM firmware files are copied under the expected directory /lib/firmware/nvidia/tu102/gsp/ (see ls output below). GSP-RM is enabled on the kernel command line (from GRUB) with nouveau.config=NvGspRm=1
I built drm lib and mesa 24.1.0-dev from source. Mesa is installed locally under my user directory, drm is installed under /usr/local/.
Running a simple command like glxinfo -B
and vulkaninfo --summary
shows only software rendering is available (LLVM CPU device). Only happens if I enable GSP-RM on the kernel command line. With GSP disabled, I get hardware rendering.
There is no error reported in dmesg. The old message pmu: firmware unavailable
is no longer present in dmesg with GSP enabled, indicating the new firmware should be loaded.
I get the same results with the stock Mesa 23.3.6 provided by Fedora by default.
I tried to debug vulkaninfo
a while ago, and I could see in gdb function nouveau_ws_context_create()
returns -19 (which is -ENODEV
no such device). This function uses drmIoctl(fd, DRM_NOUVEAU_CHANNEL_ALLOCATE,...)
, which is a wrapper around ioctl(fd, DRM_IOCTL_NOUVEAU CHANNEL_ALLOCATE, ...)
. The fd refers to file /dev/dri/renderD128
, which belongs to group render
, that my user belongs to as well.
timothy@x399-aorus:~$ glxinfo -B
name of display: :1
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
display: :1 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa (0xffffffff)
Device: llvmpipe (LLVM 17.0.6, 256 bits) (0xffffffff)
Version: 24.1.0
Accelerated: no
Video memory: 64236MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 4.5
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 31 MB, largest block: 31 MB
VBO free aux. memory - total: 58205 MB, largest block: 58205 MB
Texture free memory - total: 31 MB, largest block: 31 MB
Texture free aux. memory - total: 58205 MB, largest block: 58205 MB
Renderbuffer free memory - total: 31 MB, largest block: 31 MB
Renderbuffer free aux. memory - total: 58205 MB, largest block: 58205 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 4294905703 MB
Total available memory: 2642 MB
Currently available dedicated video memory: 31 MB
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 17.0.6, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 24.1.0-devel (git-cc74a819e4)
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa 24.1.0-devel (git-cc74a819e4)
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 24.1.0-devel (git-cc74a819e4)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
timothy@x399-aorus:~$
timothy@x399-aorus:~$ vulkaninfo --summary
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 0. Skipping ICD.
ERROR: [../src/nouveau/vulkan/nvk_physical_device.c:1043] Code 0 : VK_ERROR_INCOMPATIBLE_DRIVER
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.268
Instance Extensions: count = 24
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
Instance Layers: count = 1
--------------------------
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
Devices:
========
GPU0:
apiVersion = 1.3.278
driverVersion = 0.0.1
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 17.0.6, 256 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 24.1.0-devel (git-cc74a819e4) (LLVM 17.0.6)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3234-2e31-2e30-2d6465766500
driverUUID = 6c6c766d-7069-7065-5555-494400000000
timothy@x399-aorus:~$
timothy@x399-aorus:~$ tree /lib/firmware/nvidia/tu102/gsp/
/lib/firmware/nvidia/tu102/gsp/
├── booter_load-535.113.01.bin
├── booter_load-53511301.bin
├── booter_load-535.113.01.bin.xz
├── booter_load-53511301.bin.xz
├── booter_load-535.54.03.bin
├── booter_load-5355403.bin
├── booter_load-535.54.03.bin.xz
├── booter_load-5355403.bin.xz
├── booter_unload-535.113.01.bin
├── booter_unload-53511301.bin
├── booter_unload-535.113.01.bin.xz
├── booter_unload-53511301.bin.xz
├── booter_unload-535.54.03.bin
├── booter_unload-5355403.bin
├── booter_unload-535.54.03.bin.xz
├── booter_unload-5355403.bin.xz
├── bootloader-535.113.01.bin
├── bootloader-53511301.bin
├── bootloader-535.113.01.bin.xz
├── bootloader-53511301.bin.xz
├── bootloader-535.54.03.bin
├── bootloader-5355403.bin
├── bootloader-535.54.03.bin.xz
├── bootloader-5355403.bin.xz
├── gsp-535.113.01.bin
├── gsp-53511301.bin
├── gsp-535.113.01.bin.xz
├── gsp-53511301.bin.xz
├── gsp-535.54.03.bin
├── gsp-5355403.bin
├── gsp-535.54.03.bin.xz
└── gsp-5355403.bin.xz
1 directory, 32 files
timothy@x399-aorus:~$
Regression
GSP-RM never worked on my RTX 2080 Ti X Trio.
Log files as attachment
- Output of
dmesg
: https://pastebin.com/r129KBFV
Any extra information would be greatly appreciated
Tried openSUSE and ArchLinux as well, with same results. On another machine with the same Fedora and Mesa, but with RTX 3090 instead of 2080 Ti, GSP-RM works and I get hardware rendering with good FPS !
Many thanks to nouveau developers for making GSP-RM and NVK a reality ! <3