AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 777543
Accepted
melonfsck
melonfsck
Asked: 2024-06-01 21:30:09 +0800 CST2024-06-01 21:30:09 +0800 CST 2024-06-01 21:30:09 +0800 CST

nvidiafb 除法错误 (GT710)

  • 772

我不需要插入nouveau或安装专有驱动程序的“帮助”。问题是关于nvidiafb.谢谢。


我在 Linux 6.9-rc2 上使用 nvidia GT710 GPU。我想nvidiafb为我的旧 GPU 使用简单的驱动程序。在该系统上,我只需要帧缓冲区,不需要其他任何东西(没有 DRI)。但nvidiafb不起作用,它崩溃了。

# modprobe nvidiafb
Killed
#
nvidiafb: Device ID: 10de1287
Console: switching to colour dummy device 80x25
nvidiafb 0000:03:00.0: vgaarb: deactivate vga console
nvidiafb: CRTC0 analog not found
nvidiafb: CRTC1 analog not found                            
nvidiafb: Unable to detect display type...
...Using default of CRT
nvidiafb: Unable to detect which CRTCNumber...
...Defaulting to CRTCNumber 0                               
nvidiafb: Using CRT on CRTC 0                               
fbcon: NV28 (fb0) is primary device

divide error: 0000 [#1] PREEMPT_RT SMP                     
CPU: 0 PID: 194915 Comm: modprobe Tainted: G           OE      6.9.0-rc2-home-rt+ #3                                                                    Hardware name: OEM X79G/X79G, BIOS 4.6.5 08/02/2022
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000                                                                                           R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020                                                                                           R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068
FS:  00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0
Call Trace:
<TASK>
  ? show_regs+0x6b/0x80
  ? __die_body+0x24/0x70
  ? die+0x42/0x70
  ? do_trap+0xde/0x100
  ? do_error_trap+0x73/0xa0
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  ? exc_divide_error+0x3f/0x60
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  ? asm_exc_divide_error+0x1f/0x30
  ? nvGetClocks+0x18f/0x290 [nvidiafb]
  NVCalcStateExt+0x1da/0x9b0 [nvidiafb]
  ? set_inverse_trans_unicode+0xd0/0x100
  ? kmalloc_trace+0xac/0x280
  nvidiafb_set_par+0x4a3/0xa40 [nvidiafb]
  fbcon_init+0x2af/0x600                                       
  visual_init+0xf2/0x190                                       
  do_bind_con_driver+0x1d2/0x4a0  
  do_take_over_console+0x144/0x240
  ? vprintk_default+0x21/0x30
  do_fbcon_takeover+0x78/0x130                               
  do_fb_registered+0x139/0x270
  fbcon_fb_registered+0x3b/0x90                              
  ? fb_add_videomode+0x81/0xf0
  register_framebuffer+0x20a/0x300                           
  nvidiafb_probe+0x6a4/0xad0 [nvidiafb]
  ? rt_spin_unlock+0x1c/0x50                                
  local_pci_probe+0x4f/0xb0
  pci_device_probe+0xcc/0x280
  really_probe+0xff/0x390
  __driver_probe_device+0x8a/0x170
  driver_probe_device+0x23/0xb0
  __driver_attach+0xc9/0x190                                 
  ? __pfx___driver_attach+0x10/0x10
  bus_for_each_dev+0x80/0xd0                                 
  driver_attach+0x22/0x30
  bus_add_driver+0x123/0x230
  driver_register+0x68/0x130
  ? __pfx_nvidiafb_init+0x10/0x10 [nvidiafb]
  __pci_register_driver+0x6e/0x80                             
  nvidiafb_init+0x37/0x50 [nvidiafb]                         
  do_one_initcall+0x4c/0x310                                 
  ? do_init_module+0x28/0x270                                
  ? kmalloc_trace+0xac/0x280
  do_init_module+0x6a/0x270                                  
  load_module+0x221b/0x22e0
  init_module_from_file+0x9c/0xe0                            
  ? init_module_from_file+0x9c/0xe0                        
  idempotent_init_module+0x173/0x230                         
  __x64_sys_finit_module+0x61/0xc0                           
  do_syscall_64+0x79/0x120                                 
  ? ksys_mmap_pgoff+0x11c/0x260                              
  ? syscall_exit_to_user_mode+0x87/0x1c0
  ? do_syscall_64+0x85/0x120                                 
  ? do_syscall_64+0x85/0x120
  entry_SYSCALL_64_after_hwframe+0x71/0x79
RIP: 0033:0x7fa3af75988d
Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 73 b5 0f 00 f7 d8 64 89 01 48                                                      RSP: 002b:00007ffe8864c978 EFLAGS: 00000246 ORIG_RAX: 0000000000000139                                                                                      RAX: ffffffffffffffda RBX: 0000563b56dcbf80 RCX: 00007fa3af75988d                                                                                           RDX: 0000000000000000 RSI: 0000563b56dbacd2 RDI: 0000000000000005                                                                                           RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002                                                                                            R10: 0000000000000005 R11: 0000000000000246 R12: 0000563b56dbacd2                                                                                           R13: 0000563b56dcc1b0 R14: 0000563b56dcc950 R15: 0000563b56dc5110                                                                                            
</TASK>                                                    Modules linked in: nvidiafb(+) vgastate fb_ddc vmnet(OE) vmw_vsock_vmci_transport vsock vmw_vmci vmmon(OE) ip6t_REJECT nf_reject_ipv6 ip6t_rt ipt_REJECT nf_reject_ipv4 xt_recent nft_limit xt_limit xt_addrtype xt_tcpudp xt_pkttype nft_chain_nat xt_MASQUERADE xt_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables nfnetlink binfmt_misc intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_realtek snd_hda_codec_generic snd_hda_scodec_component snd_hda_codec_hdmi nls_iso8859_1 snd_hda_intel snd_intel_dspcfg input_leds snd_intel_sdw_acpi kvm joydev snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq rapl snd_seq_device intel_cstate snd_timer serio_raw pcspkr snd ioatdma soundcore dca mac_hid sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy
  async_pq async_xor async_tx raid1 raid0 gpu_sched drm_gpuvm drm_exec mxm_wmi video wmi i2c_algo_bit drm_ttm_helper ttm drm_display_helper cec rc_core drm_kms_helper cdc_ether usbnet drm hid_generic psmouse r8152 usbhid crct10dif_pclmul crc32_pclmul uas ghash_clmulni_intel sha512_ssse3 usb_storage hid sha256_ssse3 ahci sha1_ssse3 mii r8169 i2c_i801 libahci lpc_ich i2c_smbus realtek aesni_intel crypto_simd cryptd
---[ end trace 0000000000000000 ]---                       
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6                                                     
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000                                                                                          RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420                                                                                          
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000
R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020                                                                                           
R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068                                                                                         
FS:  00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000                                                                                
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0

note: modprobe[194915] exited with preempt_count 2

到底是什么问题导致它无法与我的 GPU 一起正常工作?处的划分nvGetClocks+0x18f/0x290位于video/fbdev/nvidia/nv_hw.c,可能在这里(第 213 行)。对于这个特定的 GPU(而不是其他较旧的 GPU),除法的除数部分如何最终为零?

谢谢。

kernel
  • 1 1 个回答
  • 92 Views

1 个回答

  • Voted
  1. Best Answer
    eyoung100
    2024-06-06T05:29:27+08:002024-06-06T05:29:27+08:00

    启动级别对比内核层

    来自OP的评论:

    @eyoung100 我可以在 grub2 菜单中查看并选择 EFI GOP 模式。但只有两种模式可用:800x600 和 1024x768。我的显示器是 1920x1080,这些模式在上面看起来很糟糕(尤其是当我将 Xorg 与 efifb 一起使用时)。这就是为什么我不能使用 EFI 帧缓冲区......

    我相信OP正在尝试通过内核级修复来修复启动级问题。需要记住的一些事情:

    1. GOP 分辨率和 EFI 变量以只读方式存储在计算机的 NVRAM 中。
    2. 只读保护唯一被删除的时间是在计算机启动后。
    3. 理论上,这些值是可以更改的,但我唯一一次看到它们更新是使用诸如efivars和 版本之类的工具grub
    4. 虽然上述工具可以访问 EFI 值来更改启动顺序等内容,但我从未见过或无法通过 Google 搜索任何人使用这些工具来访问和更改 GOP 或图形输出协议。
    5. 从 4 中的链接可以看到,图形端口被编码到 UEFI shell 中。这样做的优点是,它消除了创建显示输出时对硬件的依赖,如本 PDF 中所述。

    下一步是什么

    因为 GOP 只能在预启动环境中访问,所以必须在预启动环境(又名 UEFI Shell)中设置分辨率,OP 似乎已经打败了我:

    @eyoung100 我能够在 UEFI 中完全禁用 CSM,然后在 grub2 中我看到了大约六种新的 GOP 模式!其中之一就是我的全分辨率模式!效果很好。我使用 efi-framebuffer.0 提供的 /dev/fb0 以正确的模式启动

    因此,我为未来的读者提供了一种创建 UEFI Shell 的方法。人们可以使用这种方法来执行 shell 脚本(以设置 PC 的启动方式)、设置分辨率、修复损坏的启动选项等,而无需任何操作系统。我可以将它们写在这里,但为了篇幅和简洁起见,请按照以下步骤 1 到 7 进行操作:KilianKegel/Howto-create-a-UEFI-Shell-Boot-Drive。 - 请注意,您可以通过shell.efi从EDK2 发布页面下载文件将步骤 3 替换为更新的稳定版本。

    确定可用分辨率

    1. 从新创建的 USB 记忆棒启动。
    2. 让startup.nsh完成后,在提示符处输入gop mode
    3. 将出现一个列表,其中显示 3 列和一行,并带有星号**。
      • 从左边开始,第一列是选择编号
      • 第二列是每个屏幕每列的字符数
      • 第三列是每个屏幕的行数
    4. 使用与您选择的选项相对应gop set x的x数字***。
    5. 重新启动以保存选择***。

    注80x25: ** 我相信如果我没记错的话,第一选择等于 的解决方案640x480。
    *** 可能需要多次重新启动set才能选择所需的结果。

    现在我的决心已定

    正如 OP 通过上面的评论指出的那样,请确保在使用完全基于 UEFI 的系统时,CSM 完全关闭。 CSM 被用来模拟基于 BIOS 的系统,直到 UEFI 协议被完全接受。

    • 这些仿真之一是显卡中的 VBIOS。在操作系统接管启动过程之前,VGA BIOS 协议指示卡启动至不大于 1024x768 的视频模式。操作系统接管后,驱动程序将切换到通过操作系统设置设置的模式,即您从显卡制造商或第三方OEM(如 PNY)下载的驱动程序接管。

    在我的问答中,要完全禁用 CSM,我必须启用 Windows 8.1/10 的 WHQL 支持,以便我的所有操作系统都可以在我的系统中看到 GOP 感知的 NVIDIA GeForce 1070,即使 FreeBSD 不需要Windows 驱动程序签名。我会让OP评论他们如何找到下面的6个额外的分辨率,因为在我开始写这个答案之前,我花了大约一个小时搜索令人惊讶的常见Aptio设置实用程序的屏幕截图,并且无法找到书面程序。

    我们现在处于内核级别

    ...不过,还有另一个新问题,可能是由于禁用 CSM 引起的。我可以读取/写入 /dev/fb0 并且它显示正确。但如果我运行 Xorg,它就会拒绝检测我的帧缓冲设备,无论我对配置文件做什么(或者根本没有配置文件)。它说在几次尝试调用 fbdevhw 后找不到屏幕

    OP 现在需要使用他们的操作系统的包管理器(他们从未说明过操作系统,但我猜测是基于 Debian 的),并发出:

    sudo apt nvidia-driver

    安装专有二进制 blob 的最新受支持版本,该版本将470.xx.xx包含在下载/安装中,应该是一个工具nvidia-xconfig。如果不存在,请尝试:

    sudo apt nvidia-xconfig

    该工具将写入一个xorg.conf文件,然后可以手动修改该文件。不幸的是,由于专有驱动程序,X.Org 中的自动检测将尝试安装该nv驱动程序,这比该nouveau驱动程序更糟糕,并且该nouveau驱动程序不提供 3D 加速。

    根据下面的评论添加此内容

    我意识到 OP 想在fbdev设备中运行 X.Org。我以我的方式回答这篇文章的原因(建议 OP 使用 NVIDIA 专有或nouveau驱动程序)是因为 NVIDIA 开发人员拒绝创建允许其显卡“附加”到fbdev或fbcon内核驱动程序的代码,如早在 2016 年,开发人员就直接给出了答案。请注意,驱动程序的版本在这里没有实际意义,因为正如我在下面的评论中所述:

    随着 UEFI 的出现,使用 uvesa 内核模块并在内核命令行上传递 vga=xxx 的能力消失了。

    Birdie的回答也证实了这一点。早在这篇文章发布之前,用户社区就一直在抱怨这个问题,并多次要求 NVIDIA 发布一个可供社区改进的开源驱动程序,但鉴于 NVIDIA 是一家营利性公司,我认为这种情况不会发生很快。

    • 1

相关问题

  • /proc/net/wireless 如何是 /proc/net/dev 的“克隆”?

  • Linux Mint 内核损坏

  • Linux 内核开发人员如何处理数百万行代码的工作?他们是一种方法吗?[关闭]

  • 通过标签将根文件系统传递给linux内核

  • 以 root 用户身份访问文件系统

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve