1 de fevereiro de 2011

Suspend e HIbernate pararam de funcionar após upgrade do Ubuntu 10.10

Costumeiramente faço os upgrades do Ubuntu assim que estão disponíveis. O interessante dos updates do Linux, versus updates do Windows por exemplo, é que realmente vemos a diferença quando fazemos os updates. Seja uma função adicional, uma melhoria na performance, ou, no meu caso, um problema que aparece.

Após o fazer um update, por volta do dia 28/01/2011, meu Ubuntu 10.10 parou de funcionar a função de "suspend" e "hibernate".

O equipamento que uso é um Lenovo Thinkpad T400. Meu kernel é o 2.6.35-25-generic.

Inicialmente acreditei que era um problema da placa gráfica Intel Mobile 4 Series, mas logo descobri que não. Olhei em alguns logs, como o /var/log/pm-suspend.log assim como o /var/log/messages e o dmesg mas nenhum falava claramente sobre algum problema.

Porém quando eu tentava fazer o "suspend" ou "hibernate" uma mensagem sobre os módulos do Trusted Platform Module (TPM) aparecia na tela. Infelizmente era rápido demais para analisar corretamente a mensagem.

O que fiz então foi usar um comando muito útil para analisar os módulos de kernel do TPM: modinfo. Fiz o seguinte:

  1. Pesquisei se havia algum módulo do TPM carregado no meu sistema


     # lsmod |grep tpm

  2. Encontrei 3 módulos: tpm_tis, tpm_bios e tpm. Verifiquei com o modinfo se havia algum parametro que eu poderia passar para este módulo.
 
     # modinfo tpm
     # modinfo tpm_tis
     # modinfo tpm_bios

  3. Dos 3 módulos, somente o tpm_tis tinha um parâmetro para passar. E o parâmetro dizia o seguine na sua descrição: "itpm:Force iTPM workarounds (found on some Lenovo laptops)". Ou seja, provavelmente esse parametro me ajudaria (já que meu laptop é Lenovo).

  4. Criei o arquivo /etc/modprobe.d/tpm_tis.conf e adicionei a seguinte linha options tpm_tis itpm=1. O arquivo teve que ser criado para garantir que este parametro será passado todas as vezes que o meu sistema for carregado.

     # echo "options tpm_tis itpm=1" >/etc/modprobe.d/tpm_tis.conf 

  5. Depois foi só descarregar o módulo e carregá-lo novamente

     # modprobe -r tpm_tis && modprobe tpm_tis

Após este procedimento tudo voltou ao normal. Agora ao fechar o meu laptop, ele entra em "suspend". E se fica muito tempo assim, vai para o "hibernate". Do jeito que era antes! :-D

Nenhum comentário: