Não preciso de “ajuda” para inserir nouveau
ou instalar drivers proprietários. A questão é sobre nvidiafb
. Obrigado.
Estou usando a GPU nvidia GT710 no Linux 6.9-rc2. Eu queria usar o nvidiafb
driver simples para minha GPU antiga. Nesse sistema, só preciso do framebuffer, nada mais (sem DRI). Mas nvidiafb
não funciona, trava.
# 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
Qual é o problema exato que impede que ele funcione corretamente com minha GPU? A divisão em nvGetClocks+0x18f/0x290
está em video/fbdev/nvidia/nv_hw.c
, provavelmente aqui (linha 213) . Como a parte divisora da divisão acaba sendo zero, com esta GPU específica (não as outras, mais antigas)?
Obrigado.
Nível de inicialização vs. Nível do kernel
Do comentário do OP:
Acredito que o OP está tentando corrigir um problema no nível de inicialização com uma correção no nível do kernel. Algumas coisas para lembrar:
efivars
e versões degrub
Qual é o próximo
Como o GOP só é acessível em um ambiente de pré-inicialização, a resolução deve ser definida no ambiente de pré-inicialização, também conhecido como UEFI Shell, no qual o OP parece ter me vencido:
Como tal, estou fornecendo um método para criar um UEFI Shell para futuros leitores. Pode-se usar este método para executar scripts de shell (para configurar a forma como o PC inicializa), definir resoluções, reparar opções de inicialização quebradas e muito mais, sem qualquer sistema operacional. Eu poderia escrevê-los aqui, mas por uma questão de extensão e brevidade, siga as etapas 1 a 7 em: KilianKegel/Howto-create-a-UEFI-Shell-Boot-Drive . - Observe que você pode substituir a Etapa 3 por uma versão estável mais recente baixando um
shell.efi
arquivo da página de lançamentos do EDK2 .Determinando resoluções disponíveis
startup.nsh
terminar, no prompt digitegop mode
gop set x
ondex
está o número correspondente à escolha escolhida***.Notas : ** Acredito que a Primeira Escolha é
80x25
a que se bem me lembro equivale a uma resolução de640x480
.*** Podem ser necessárias várias reinicializações e
set
tentativas antes de selecionar o resultado desejado.Agora que minha resolução está definida
Como o OP observou no comentário acima, certifique-se de que, ao usar um sistema totalmente baseado em UEFI, o CSM esteja completamente desligado. O CSM foi instalado para emular sistemas baseados em BIOS até que o protocolo UEFI fosse completamente aceito.
No caso da minha pergunta e resposta , para desativar completamente o CSM, tive que ativar o suporte WHQL para Windows 8.1/10 para que todos os meus sistemas operacionais pudessem ver a NVIDIA GeForce 1070 com reconhecimento de GOP em meu sistema, mesmo que o FreeBSD não precise Assinatura do driver do Windows. Deixarei o OP comentar como eles conseguiram encontrar as 6 resoluções adicionais abaixo, já que passei cerca de uma hora pesquisando capturas de tela do surpreendentemente comum Aptio Setup Utility antes de começar a escrever esta resposta e não consegui encontrar um procedimento escrito .
Estamos agora no nível do kernel
O OP agora precisa usar o gerenciador de pacotes do sistema operacional (eles nunca declararam o sistema operacional, mas vou adivinhar um baseado em Debian) e emitir um:
sudo apt nvidia-driver
para instalar a última versão suportada do blob binário proprietário que será
470.xx.xx
incluído nesse download/instalação deve ser uma ferramentanvidia-xconfig
. Se não estiver lá, tente:sudo apt nvidia-xconfig
Essa ferramenta escreverá um
xorg.conf
arquivo que poderá ser modificado manualmente. Infelizmente, por causa do driver proprietário, a detecção automática no X.Org tentará instalar onv
driver, que é pior que onouveau
driver, e onouveau
driver não fornece aceleração 3D.Adicionando isso com base nos comentários abaixo
Sei que o OP deseja executar o X.Org no
fbdev
dispositivo. A razão pela qual respondi a esta postagem da maneira que fiz (aconselhando o OP a usar onouveau
driver ou proprietário da NVIDIA) é porque os desenvolvedores da NVIDIA se recusam a criar código que permite que suas placas gráficas "se conectem" aos driversfbdev
oufbcon
ao kernel, como evidenciado por a resposta diretamente de um desenvolvedor em 2016 . Observe que a versão do driver é discutível aqui, porque como afirmei em meus comentários abaixo:Isso foi apoiado pela resposta de birdie . A comunidade de usuários vem reclamando desse problema muito antes dessa postagem e pediu várias vezes que a NVIDIA lançasse um driver de código aberto que a comunidade pudesse refinar, mas como a NVIDIA é uma empresa com fins lucrativos, não vejo isso acontecendo. em breve.