Como habilitar a opção de kernel MMC_UNSAFE_RESUME

1

Estou tentando dormir e acorde meu leitor de e-book do Kobo Mini manualmente usando o comando rtcwake . O leitor está usando o busybox .
cat /proc/version me dá essa saída:
Linux version 2.6.35.3-850-gbc67621+ (gallen@gallen-P5KPL-AM-BM) (gcc version 4.4.4 (4.4.4_09.06.2010) ) #617 PREEMPT Mon Apr 22 11:07:47 CST 2013

rtcwake define o leitor para dormir, mas falha com esta mensagem:
wakeup from "mem" at Wed Nov 13 18:02:44 2013
rtcwake: short write

... e não acorda novamente. Depois de algumas pesquisas, rastreei o erro até o micro cartão SD removível que o leitor usa como armazenamento primário (e único). O que significa que todo o sistema está rodando no cartão SD que está sendo removido em espera.
Eu também encontrei outro usuário com o mesmo problema em um dispositivo completamente diferente, mas também com um cartão SD removível como armazenamento primário. Ele resolveu o problema ativando a opção / parâmetro do kernel MMC_UNSAFE_RESUME .

Agora, minha pergunta: Como definir / ativar / ativar este parâmetro? Eu tenho que recompilar o kernel?

    
por Tomme 13.11.2013 / 18:15

2 respostas

1

Eu acho que você tem que recompilar o kernel. Ao utilizar a fonte 3.11, ela não é mencionada em [src]/Documentation/kernel-parameters , que é onde os parâmetros da linha de comando do kernel são documentados. Não é mencionado em outros documentos também.

Naturalmente, pode haver um parâmetro que não mencione literalmente MMC_UNSAFE_RESUME. Existem algumas opções documentadas para ajustar o currículo do modo de hibernação / suspensão, mas para assumir que uma delas é útil dessa forma, elas provavelmente precisariam estar conectadas de alguma forma a MMC_UNSAFE_RESUME na origem.

Portanto, ele é declarado em [src]/drivers/mmc/core/core.c e usado para definir o valor de um símbolo exportado, mmc_assume_removable . O único local em que isso é usado está em [src]//include/linux/mmc/host.h para influenciar o valor de retorno de uma função in-line.

Isso está longe de uma análise conclusiva - e, claro, pode haver outra maneira de conseguir o que você quer, uma configuração /proc , etc. - mas olhando para alguns dos dev discussão sobre isso , duvido muito que tenha algo a ver com MMC_UNSAFE_RESUME; na maioria dos contextos, seria algo que a maioria das pessoas desejaria evitar a todo custo, especialmente porque os drivers individuais podem realizar a mesma coisa em uma base por dispositivo (considerando que essa opção é global).

    
por 13.11.2013 / 19:17
1

Sim, normalmente o kernel desmonta o sistema de arquivos em mídia removível quando ele adormece devido à preocupação de desconectar a placa enquanto o sistema está em repouso. Em seguida, faz a remontagem quando retoma.

Se você "prometer" que não removerá os cartões MMC, poderá definir a opção do kernel MMC_UNSAFE_RESUME. Essencialmente dirá ao kernel que você considera a unidade MMC como armazenamento permanente. Por isso, não desmontará nem remontará o dispositivo.

Mas você precisa reconstruir o kernel para isso.

Se você ainda estiver tendo problemas para retomar o sono, outra coisa a fazer é adicionar "debug" aos parâmetros de inicialização do kernel. Isso adicionará uma saída detalhada ao console e muitos drivers informarão seu status à medida que eles forem ativados. Então, se um driver parar no currículo, você poderá identificar qual deles.

    
por 28.05.2014 / 19:42