First patch ⭐ - Adjust prefix of dcn31_apg construct function name
Obs inicial: Esse relato faz parte da disciplina de Software Livre ministrada pelo Professor Paulo Meirelles dada no IME - USP. Alguns comentários são referentes a prazos que a própria disciplina delimita.
Finalmente chegamos na nossa contribuição para o kernel, depois de fazer várias configurações e decidir utilizar o iio (em primeiro momento).
Por volta da primeira semana de abril
Eu e minha dupla começamos a passar pelo pad de contribuição e vimos algumas contribuições bem tranquilas. Nosso primeiro contato foi com o ajuste de algumas funções em alguma parte do modulo. Rodamos git grep <o nome da função>
que queriamos modificar e acabamos encontrando algumas coisas que poderiam ser modificadas, entramos em contato com o monitor e ele nos orientou a continuar explorando e esperar pela proxima aula para acompanharmos a questão do envio do patch.
Esperado a aula, minha dupla pode comparecer a disciplina e eu estava em um evento, nesse sentido após a aula me reuni com minha dupla para receber orientações de próximo passo e foi decidido que iriamos fazer alterações agora em outra parte do kernel… agora sendo o drm o nosso foco.
Nesse momento entramos de férias (voltei para minha cidade natal e deixei minha maquina com linux ligada para acessar remotamente), tentei iniciar a contribuição, mas de primeiro eu não consegui acessar o pad, então entrei em contato com o monitor que me ajudou enviando o pdf do pad. A partir desse ponto eu consegui iniciar algumas coisas a respeito de clonar a nova ramificação, fazer a procura dos arquivos necessários para a modificação do problema que meu amigo tinha escolhido que no caso era Code Refactor: Add prefix to DC functions to improve the debug with ftrace
.
Vamos começar a contribuição
Depois de preparar o ambiente para agora sim contribuir na ramificação certa, no caso o drm, eu consegui fazer um git grep dcn
que foi uma das indicações dos monitores para alteração.
Apareceu bastante resultado e acabei indo no olho para ver qual funcionava melhor, fui passando por vários arquivos e encontrei dois que poderiam funcionar:
> drivers/gpu/drm/amd/display/dc/dcn31/dcn31_apg.c
> drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.c
Confirmei com o eu amigo sobre a minha hipotese e disse para a gente ir tentando cada um em um para a gente infrentar a barreiras e ir falando para o outro a cada passo…
Obs blackout: Como eu estava remoto eu estava com medo de meu computador desligar, então o dia chegou, no meio da minha visita a minha família eu fiquei off ao meu progresso, mas já tinha dado passos bem interessantes.
Quando voltei a São Paulo, retomei o desenvolvimento e percebi um erro que não tinha notado, o drm não estava buildando, falei com o monitor e ele me disse que isso era problema com a arquitetura da vm, que no caso estava como arm64
, fiz a modificação das configs para rodar em x86_64
rodando:
> kw init --template
> make ARCH=x86_64 allnoconfig
Após isso, consegui buildar o drm tranquilamente e comecei as modificações do arquivo dcn31_apg
, mudei então a função construct
que era a função que estava com o nome faltando informação para o ftrace, a função estava com a declaração como apg31_construct
e foi modificada para dcn31_apg_construct
. modifiquei no .c
e no .h
como vi em um exemplo que o monitor compartilhou.
Então após as modificações eu habilitei todas as dependencias e modulos para que eu conseguisse testar minhas alterações, modifiquei pelo kw com o comando kw build --menu
. Nesse momento eu fiz a busca pelo F8
e procurei pelo DRM_AMD_DC
, config que minha alteração fazia parte, descobri que essa config apenas caminha pelo path de onde minha alteração estava até encontrar um arquivo Kconfig
, ou seja:
$ cd drivers/gpu/drm/amd/display/dc/dcn31
drivers/gpu/drm/amd/display/dc/dcn31/ $ cd ..
drivers/gpu/drm/amd/display/dc/ $ ls # não encontrei Kconfig, repete cd .. até encontrar
Após habilitado, rodei o build e pela minha surpresa e felicidade deu erro ⭐ , significa que o modulo foi habilitado e que agora eu tinha algumas coisas para ajustar, então segue o passo a passo do que aconteceu:
Erro nos arquivos que dependem da função alterada | git grep para buscar arquivos que preciso modificar |
Resultado das alterações |
---|---|---|
Então após fazer as correções eu fiz o:
> git add .
> git commit # escrevi a mensagem detalhada
Após refazer a mensagem de commit várias vezes até ficar satisfeito eu rodei o comando para enviar o email:
> kw send-patch --send -1 --simulate --private --to=freesoftware2025@gmail.com
🎉 AEEE tudo certo ~Infelizmente não~
Eu tinha deixado o --simulate
no comando e não tinha percebido que na verdade eu não tinha enviado e apenas simulado o envio, então eu finalmente removi esse flag fiz as configurações do smtp que precisava e do meu email google (com a ajuda do monitor) e finalmente consegui enviar com o comando:
> kw send-patch --send -1 --private --to=freesoftware2025@gmail.com --cc=leonardodasigomes@gmail.com
Comentários
Foi muito tranquilo a contribuição em si, o que deu mais problema foi a questão de modificação e mudanças de rotas ocorridas nesse processo que ocasionou em mais configurações de ambiente. Além disso houve um atraso por parte da indisponibilidade da minha maquina remota por algum tempo, mas nada que não fosse resolvido um tempinho depois.