3.5 KiB
Conjunto de patches de core do Linux
English: docs/en/patches.md.
Status atual: VAZIO
O port exige zero modificações no core do Linux 7.3.4. O design
(spec §5) previa um patch obrigatório — P1: exportar símbolos usados pelo
módulo PF — mas o compile-port do M1 provou que ele é desnecessário: o
modpost reportou nenhum símbolo indefinido para o pf.ko. A camada de
compat foi escrita contra APIs que o kernel puro já exporta
(__inet_lookup_established, __inet_lookup_listener,
__inet6_lookup_established, inet6_lookup_listener, __udp4_lib_lookup,
__udp6_lib_lookup, ip_route_output_flow/ip6_route_output_flags via
wrappers inline, icmp_send, …). A evidência e a lista exata estão em
patches/kernel/p1-needs.txt, que também traz uma watch list: por
exemplo, tcp_v4_send_reset só precisaria de export se helpers de RST de
userland forem usados.
Portanto, patches/kernel/ não contém nenhum 000N-*.patch hoje, e aplicar
o conjunto (vazio) é um no-op.
Nota honesta:
scripts/apply-patches.sh,scripts/unpatch.shepatches/kernel/seriesestão na árvore. Oseriesé vazio por projeto, então aplicá-lo é um no-op verificado (PATCHES_APPLIED=0). Quando um patch real for necessário, o commit que o adiciona também atualiza oseriese as regras abaixo.
O mecanismo (como o conjunto deve funcionar)
- Toda mudança no core do kernel é um arquivo independente
patches/kernel/000N-descricao-curta.patch, listado em ordem empatches/kernel/series, aplicado à árvore pristina com ferramenta no estilogit applye revertido do mesmo jeito (unpatch.shaplica ao contrário). - A árvore nunca pode ficar suja em silêncio: builds reproduzíveis aplicam,
compilam e registram o estado (
out/.config,out/kernelversion). - Regras obrigatórias para qualquer patch futuro:
- Aditivo, zero mudança de comportamento (por exemplo, linhas
EXPORT_SYMBOL_GPL()junto aos clusters de export existentes). Qualquer coisa que altere lógica exige antes uma emenda ao design. - Uma preocupação por patch, numerado em sequência — nunca editar um patch já aceito; substitua com um novo número.
- Uma seção neste arquivo (nos dois idiomas) antes do patch entrar: o quê/por quê/impacto/reversão + a evidência em VM.
- O patch tem de sobreviver a
make -C <kerneldir> bzImage modulesa partir de árvore limpa (CI da bancada:vm-run-tests.shdepois de um boot novo).
- Aditivo, zero mudança de comportamento (por exemplo, linhas
Template para uma futura entrada 000N
Copie este bloco para docs/en/patches.md e docs/pt-BR/patches.md (mesma
âncora) ao adicionar 000N-*.patch:
### 000N — <título em uma linha>
- Arquivo: `patches/kernel/000N-<slug>.patch`
- Status: aplicado (kernel 7.3.4) / substituído por 000M
- Toca: <arquivo(s) da árvore do kernel>, <n> linhas adicionadas, 0 removidas
- O quê: <símbolos / hooks / opções de Kconfig adicionados, exatos>
- Por quê: <qual código do PF-on-Linux precisa; por que nenhuma API
exportada basta>
- Impacto: <impacto em runtime/ABI/memória no Linux puro; esperado: nenhum>
- Reversão: `./scripts/unpatch.sh <kerneldir>` (aplicação reversa); o módulo
passa a não linkar, com o símbolo faltante nomeado no modpost.
- Evidência: <id da rodada na VM / data / saída do gate relevante>
Histórico deste diretório
| Data | Mudança |
|---|---|
| 2026-11-11 | P1 avaliado após o compile-port do M1 → não necessário; p1-needs.txt registra a evidência e a watch list. Conjunto permanece vazio. |