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 / ubuntu / Perguntas / 1186234
Accepted
NovHak
NovHak
Asked: 2019-11-05 11:55:15 +0800 CST2019-11-05 11:55:15 +0800 CST 2019-11-05 11:55:15 +0800 CST

Meu Nvidia dGPU não é detectado após a atualização para 19.10

  • 772

Como pode ser adivinhado pelo assunto, eu tenho um laptop Optimus. Enquanto eu estava executando o 19.04, consegui alternar para o Nvidia dGPU e voltar, usando o Prime (através do prime-select {intel|nvidia}comando). As coisas mudaram após a atualização para 19.10: no dia seguinte à atualização, o sistema congelou com o kernel reclamando sobre algumas tarefas travadas, como uma rmmod. Consegui recuperar meu sistema executando prime-select nvidiaem um ambiente de login root chroot.

Não vou entrar muito em detalhes secundários, como remover os drivers iGPU / dGPU do initramfs (o que eles têm que fazer no initramfs de qualquer maneira?), Mas agora ele inicializa pelo menos, com ou sem o dGPU ativado por prime .

E é aí que chego ao problema: se meu sistema inicializar com o perfil intel ativado, mudar para o perfil nvidia não funciona, pois o dGPU não é detectado no hardware. E, de fato, está ausente de uma listagem lspci. Eu tenho que reiniciar para que o dGPU seja detectado novamente. Portanto, quando eu desligar meu sistema, devo sempre pensar em ativar o perfil nvidia de antemão, ou terei que reiniciar para poder usá-lo na próxima vez.

Esse é o meu principal problema. Outra, menos irritante, é que sempre tenho que reiniciar o serviço gdm ao alternar da nvidia para a intel. Eu posso viver com isso, mas isso é um problema que eu não tinha em 19.04.

Conselhos sobre este problema são bem-vindos! Ou evite que a dGPU desapareça da lista de hardware ou um método para que ela seja detectada novamente pelo sistema, sem reinicializar.

Fwiw, minha iGPU é Intel HD Graphics 4600, e minha dGPU é uma Nvidia GTX 880M.

EDIT: @Syfer Polski, obrigado pela sua resposta informativa!

Percebi que havia um perfil sob demanda, mas descartei-o como provavelmente uma tentativa inútil, pois havia lido há pouco tempo que uma implementação Optimus realmente funcional não chegaria tão cedo... Eu deveria ter lido esse leia-me !

Então eu imediatamente tentei esse perfil sob demanda. No começo, não funcionou, pois eu tinha o driver 430 que não o suporta. Deve ter havido alguma verificação de driver se recusando a habilitar o perfil para pessoas que não estão executando uma versão de suporte, e suspeito que é por isso que meu sistema travou, porque esse perfil sob demanda foi ativado automaticamente durante a atualização (só supondo que eu não t verifique na hora).

Enfim... então eu instalei o driver 435 e de fato o perfil sob demanda funciona. No entanto, não acho satisfatório o suficiente, já que minha GPU não é desligada quando não é usada, e tentar desligar sozinho não funciona. Tentei desligá-lo por meio de uma chamada direta de ACPI e, de fato, desligou, mas:

NVRM: GPU at PCI:0000:01:00: GPU-9b8a3387-4913-0c33-619e-da118e532a5f
NVRM: Xid (PCI:0000:01:00): 79, pid=29013, GPU has fallen off the bus.
NVRM: GPU 0000:01:00.0: GPU has fallen off the bus.
NVRM: A GPU crash dump has been created. If possible, please run
NVRM: nvidia-bug-report.sh as root to collect this data before
NVRM: the NVIDIA kernel module is unloaded.

Então, infelizmente para mim, desde que os drivers proprietários não consigam desligar meu dGPU quando ele não for usado, acho que vou ficar com o sistema clássico de perfis intel/nvidia.

O que me traz de volta à minha pergunta original , quando inicializo com o modo Intel ativado: como posso recuperar meu dGPU sem reinicializar?

Um rescan( echo 1 >/sys/bus/pci/rescan) mostra isso nos logs:

pci 0000:01:00.0: [10de:1198] type 00 class 0x030000
pci 0000:01:00.0: reg 0x10: [mem 0xf6000000-0xf6ffffff]
pci 0000:01:00.0: reg 0x14: [mem 0xe0000000-0xefffffff 64bit pref]
pci 0000:01:00.0: reg 0x1c: [mem 0xf0000000-0xf1ffffff 64bit pref]
pci 0000:01:00.0: reg 0x24: [io  0xe000-0xe07f]
pci 0000:01:00.0: reg 0x30: [mem 0xf7000000-0xf707ffff pref]
pci 0000:01:00.0: 32.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s x16 link at 0000:00:01.0 (capable of 126.016 Gb/s with 8 GT/s x16 link)
pci 0000:01:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none

Mas lspci permanece em silêncio. Eu posso ligar/desligar o dispositivo à vontade através de chamadas ACPI, o kernel mostra na nova varredura, mas não é detectado pelos drivers que, consequentemente, não serão carregados. Deve haver algo a fazer, mas o quê?

gdm graphics nvidia-optimus nvidia-prime 19.10
  • 2 2 respostas
  • 1998 Views

2 respostas

  • Voted
  1. Syfer Polski
    2019-11-05T12:34:36+08:002019-11-05T12:34:36+08:00

    nvidia-primemudou mais uma vez entre o Ubuntu 19.04 e 19.10.

    Entre o Ubuntu 16.04 e o Ubuntu 18.04, o Ubuntu usou bbswitcho , um módulo de kernel construído pela comunidade, para desligar a GPU Nvidia em laptops Optimus. nouveauNo entanto, o módulo parou de ser mantido e, portanto, no Ubuntu 18.10 (desde o backport para o Ubuntu 18.04), a alternância entre as GPUs foi realizada carregando os drivers de código aberto. No entanto, isso não desligou totalmente a GPU (ainda estava usando ~ 2W).

    Simultaneamente, a Nvidia estava finalmente trabalhando na coexistência com outros drivers de GPU. GLVND (Graphics Library Vendor Neutral Display) tornou-se uma coisa no Xorg 1.20 e permitiu que vários drivers de GPU fossem carregados e alimentando um servidor de exibição. Isso permite controle granular - cada aplicativo pode usar drivers separados. Na prática, é quase sempre sobre GPUs Intel e Nvidia em laptops Optimus. Existem agora três modos prime-selectque permitem que você escolha:

    • inteligência
    • sob demanda
    • nvidia

    intelO modo desliga fisicamente a GPU Nvidia, economizando energia adicional, mas requer uma reinicialização para ligá-la, e não apenas um logout. nvidiaé o inverso.

    Para pessoas que mudam de modo com frequência, o modo sob demanda é recomendado - no on-demand, a GPU usada para desenhar um programa é determinada por variáveis ​​de ambiente. Existem diferentes variáveis ​​de ambiente para aplicativos OpenGL e Vulkan e, se não estiverem definidas, a GPU integrada (Intel) será usada. Veja o README da Nvidia para uma explicação completa sobre as variáveis ​​de ambiente envolvidas ( __NV_PRIME_RENDER_OFFLOAD, __GLX_VENDOR_LIBRARY_NAMEe __VK_LAYER_NV_optimus)

    Dependendo de qual série de drivers suporta sua GPU, o perfil sob demanda pode não funcionar para você - o driver suportado mais antigo parece ser a série 435.

    • 4
  2. Best Answer
    NovHak
    2019-11-07T10:37:53+08:002019-11-07T10:37:53+08:00

    Solução encontrada! Eu não estava fazendo algumas coisas em ordem . Então o procedimento para ter a dGPU de volta é:

    1. Defina o perfil para nvidiaou on-demand(se suportado pelo seu driver):prime-select {nvidia|on-demand}

    2. Ligue o dGPU. O BIOS geralmente liga na inicialização, portanto, não deve haver problemas aqui. Se você o desativou nesse meio tempo, suponho que saiba como ativá-lo novamente. Caso fique desligado por algum outro motivo, você pode tentar a sorte com apt install acpi-call-dkms. Você encontrará exemplos úteis em /usr/share/doc/acpi-call-dkms/examples. Manuseie com cuidado, pois pode travar seu sistema mal! No meu caso, a seguinte chamada ACPI ativa meu dGPU: \_SB_.PCI0.PEG0.PEGP._ON. Eu dou o meu como exemplo, o seu pode muito bem não ser o mesmo. Não se esqueça de escapar da barra invertida, se tiver alguma.

    3. Verifique novamente o barramento PCI: echo 1 >/sys/bus/pci/rescan. Pode ser suficiente para redigitalizar apenas parte do ônibus.

    4. (pode ser opcional) Carregue o módulo nvidia:modprobe nvidia

    AVISO: Não desligue sua GPU com uma chamada direta de ACPI, a menos que tenha certeza de que não está vinculado a nenhum driver (de forma mais simples, o módulo nvidia deve ser descarregado) ou o driver travará (exemplo de falha fornecido na pergunta ).

    Contanto que esteja carregado, é o driver que aciona a GPU, e você pegar o volante de surpresa geralmente não fará muito bem.

    No entanto, o driver da Nvidia possui um recurso de gerenciamento de energia que está desativado por padrão, mas pode ser ativado passando o seguinte parâmetro para o nvidiamódulo: NVreg_DynamicPowerManagement=0x01. Infelizmente, funciona apenas para Turing e GPUs mais recentes (ou seja, não para o meu Kepler) ... Retirado de /usr/src/nvidia-435.21/nvidia/nv-reg.h :

    /*
     * Option: DynamicPowerManagement
     *
     * This option controls how aggressively the NVIDIA kernel module will manage
     * GPU power through kernel interfaces.
     *
     * Possible Values:
     *
     *  0: Never allow the GPU to be powered down (default).
     *  1: Power down the GPU when it is not initialized.
    
     *  2: Power down the GPU after it has been inactive for some time.
    
     */
    
    • 1

relate perguntas

Sidebar

Stats

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

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

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