Avanço na verificação de sondas de Driver: Introduzindo o novo kselftest para plataformas baseadas em devicetree

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Recentemente, foi desenvolvido um novo kselftest para verificar a sonda do driver em plataformas baseadas em Devicetree. Este trabalho é parte de um esforço contínuo para melhorar a integração do kernel em várias frentes, incluindo a melhoria da qualidade dos testes disponíveis para todos.

Apesar da maioria das funcionalidades de cada plataforma vir dos drivers, que expõem interfaces para permitir que o espaço do usuário interaja com o hardware subjacente, ainda não havia uma maneira estabelecida de detectar regressões em qualquer configuração dos drivers da plataforma. A maioria dos subsistemas no kernel compartilha esse framework comum do driver, então é hora de usá-lo para identificar problemas mais facilmente e de forma genérica.

Um teste autônomo que verifica as sondas do dispositivo já existe, chamado bootrr, e tem sido executado no KernelCI por um tempo. No entanto, foram notados alguns problemas importantes com ele. O maior problema é que ele depende de ABIs instáveis do kernel (especificamente, nomes de dispositivos e drivers), que ocasionalmente mudam de uma versão do kernel para a próxima, resultando em falsas regressões sendo relatadas pelo teste, e exigindo que ele seja atualizado para funcionar de maneira diferente para cada versão do kernel.

Para melhorar a situação, a Collabora trabalhou junto com a comunidade e lançou um novo kselftest upstream. A principal vantagem deste teste é que ele depende do Devicetree, que já é mantido para cada plataforma, para fornecer a lista de dispositivos presentes. Portanto, nenhum esforço adicional é necessário para habilitá-lo em uma nova plataforma ou para mantê-lo compatível com as mudanças no kernel.

O teste funciona iterando sobre os nós na Devicetree atualmente carregada e verificando se há um dispositivo e driver correspondente vinculado a ele através do sysfs. Nem todos os nós Devicetree são esperados para registrar um dispositivo e tê-lo vinculado a um driver, então o teste é capaz de ignorar aqueles com base na lista de compatíveis Devicetree que extrai de todos os drivers na fonte do kernel.

Collabora mt8195 tomato dt kselftest results
Avanço na verificação de sondas de Driver: Introduzindo o novo kselftest para plataformas baseadas em devicetree 3

Recentemente, adicionamos este novo teste no KernelCI. Para o Chromebook Tomato baseado em MT8195, por exemplo, você pode ver os resultados para a árvore Linux-next abaixo. Como pode ser visto, há 181 testes passando – dispositivos que foram verificados para terem sido vinculados com sucesso aos drivers; 34 testes ignorados – dispositivos que não têm um driver correspondente no kernel e, portanto, não são verificados; e 11 testes falhando dos quais: 5 são dispositivos que compõem o pipeline de exibição e estão realmente falhando na sonda, mas serão corrigidos assim que este patch pousar; 3 do pipeline de áudio devido a um problema com a configuração de memória DMA no DSP.

Compartilhe este artigo