AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 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

erro de divisão nvidiafb (GT710)

  • 772

Não preciso de “ajuda” para inserir nouveauou 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 nvidiafbdriver simples para minha GPU antiga. Nesse sistema, só preciso do framebuffer, nada mais (sem DRI). Mas nvidiafbnã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/0x290está 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.

kernel
  • 1 1 respostas
  • 92 Views

1 respostas

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

    Nível de inicialização vs. Nível do kernel

    Do comentário do OP:

    @eyoung100 Consigo visualizar e selecionar os modos EFI GOP no menu grub2. Mas existem apenas dois modos disponíveis: 800x600 e 1024x768. Minha tela é 1920x1080, e esses modos ficam horríveis (especialmente se eu usar o Xorg com efifb). É por isso que não consigo usar o framebuffer EFI ...

    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:

    1. As resoluções GOP e variáveis ​​EFI são armazenadas na NVRAM do computador como somente leitura.
    2. A única vez que a proteção somente leitura é removida é após a inicialização do computador.
    3. Teoricamente, os valores podem ser alterados, mas a única vez que os vi atualizados foi com ferramentas como efivarse versões degrub
    4. Embora as ferramentas acima possam acessar os valores EFI para alterar coisas como a ordem de inicialização, nunca vi ou consegui pesquisar no Google alguém que usasse as ferramentas para acessar e alterar o GOP ou Graphics Output Protocol .
    5. Como se pode ver no link 4, a porta gráfica é codificada no shell UEFI. A vantagem disso é que elimina a dependência de hardware para criar a saída de exibição, conforme observado neste PDF .

    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:

    @eyoung100 Consegui desabilitar totalmente o CSM no UEFI e, no grub2, vi cerca de seis novos modos para GOP! Um deles foi meu modo de resolução total! Funcionou bem. Inicializei no modo correto com /dev/fb0 fornecido por efi-framebuffer.0

    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.efiarquivo da página de lançamentos do EDK2 .

    Determinando resoluções disponíveis

    1. Inicialize a partir do pendrive recém-criado.
    2. Depois de deixar startup.nshterminar, no prompt digitegop mode
    3. Uma lista aparecerá exibindo 3 colunas e uma linha que será marcada com um asterisco**.
      • Começando à esquerda, a primeira coluna é o número da escolha
      • A segunda coluna é o número de caracteres por coluna por tela
      • A terceira coluna é o número de linhas por tela
    4. Use gop set xonde xestá o número correspondente à escolha escolhida***.
    5. Reinicie para salvar a escolha***.

    Notas : ** Acredito que a Primeira Escolha é 80x25a que se bem me lembro equivale a uma resolução de 640x480.
    *** Podem ser necessárias várias reinicializações e settentativas 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.

    • Uma dessas emulações foi o VBIOS em placas gráficas. Até que o sistema operacional assumisse o processo de inicialização, o protocolo VGA BIOS instruía a placa a inicializar em um modo de vídeo não superior a 1024x768. Depois que o sistema operacional assumiu o controle, o driver foi alterado para o modo definido nas configurações do sistema operacional, ou seja, o driver que você baixou do fabricante da placa gráfica ou de um OEM de terceiros, como o PNY, assume o controle.

    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

    ...Há outro novo problema, provavelmente causado pela desativação do CSM. Posso ler/gravar em /dev/fb0 e ele é exibido corretamente. Mas se eu executar o Xorg, ele se recusará a detectar meu dispositivo framebuffer, não importa o que eu faça com o arquivo de configuração (ou a falta total de um). Diz que nenhuma tela foi encontrada após algumas tentativas de invocar o fbdevhw

    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.xxincluído nesse download/instalação deve ser uma ferramenta nvidia-xconfig. Se não estiver lá, tente:

    sudo apt nvidia-xconfig

    Essa ferramenta escreverá um xorg.confarquivo que poderá ser modificado manualmente. Infelizmente, por causa do driver proprietário, a detecção automática no X.Org tentará instalar o nvdriver, que é pior que o nouveaudriver, e o nouveaudriver não fornece aceleração 3D.

    Adicionando isso com base nos comentários abaixo

    Sei que o OP deseja executar o X.Org no fbdevdispositivo. A razão pela qual respondi a esta postagem da maneira que fiz (aconselhando o OP a usar o nouveaudriver 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 drivers fbdevou fbconao 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:

    Com o advento da UEFI, a capacidade de usar o módulo do kernel uvesa e passar vga=xxx na linha de comando do kernel desapareceu.

    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.

    • 1

relate perguntas

  • Como /proc/net/wireless é um "clone" de /proc/net/dev?

  • Danos no kernel do Linux Mint

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • Acesse o sistema de arquivos como usuário root

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve