Arnd Bergman, Desenvolvedor de kernel Linux da filial arm-soc e gerente de pacotes de kernel da SUSE, lançou um proposta em que ele coloca na mesa a questão da remoção do kernel baseado no GCC e criar ferramentas de código para oferecer suporte a CPUs ARM mais antigas, suas ABIs associadas, conjuntos de instruções e recursos de kernel.
Arnd Bergmann, menciona que a base da proposta de cessação do apoio para CPUs ARM velho no Kernel é devido à descontinuação no GCC, já que algumas das CPUs propostas para remoção não são mais suportadas pelas versões mais recentes do GCC e outras estão planejadas para serem removidas em versões futuras.
Mencione que, ao aplicar isso, Será facilitada a modernização e implementação de novas funções no compilador. EA remoção do suporte para uma arquitetura no GCC exigirá sua remoção do kernel se a versão mínima do GCC suportada pelo kernel for aumentada (atualmente, pelo menos a versão 5.1 do GCC é necessária para compilar o kernel).
Entre arquiteturas, chips e extensões que são propostos para serem removidos do kernel, são mencionados os seguintes:
- ARMv3: Removido no GCC-9, portanto, eventualmente será removido do kernel à medida que as versões mínimas do compilador aumentam.
- ARMv4: Usado para CPUs StrongARM e FA526, ainda em algumas placas. Até os chips mais novos têm quase 20 anos. A última versão do Debian que os suportou foi Lenny (5.0). Seis famílias de SoC com núcleos ARMv4T (ARM720T, ARM920T e ARM922T) ainda são suportadas. Embora sejam antigos, eles têm mais usuários e desenvolvedores que o ARMv4. O Debian Stretch (9.0) foi o último a apoiá-los.
- ARMv5: Cerca de um terço das plataformas suportadas usam ARMv5, mas a maioria está perto do fim do suporte.
- ARMv6 cedo: inclui ARM1136r0p em NXP i.MX31 e OMAP24xx, principalmente o tablet Nokia N8xx. Requer hacks especiais para suportar kernels com SMP. Existe um patch que altera o ARMv6 de compatível com ARMv7 para compatível com ARMv5, mas precisa de mais trabalho.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 são os únicos núcleos suportados sem MMU, atualmente em 5 plataformas de microcontroladores. Eles poderão ser removidos em 2027, mas o GCC ainda precisará suportá-los em outros sistemas operacionais. - iWMMXt: não há usuários restantes conhecidos para iWMMXt e o suporte para CPUs ARMv7 PJ4 foi removido. É compatível apenas com Intel/Marvell PXA e MMP1.
- Kernel big endian ARMv5 (BE32): Apenas um SoC o utiliza, o Intel IXP4xx. O Debian suportava no modo little-endian, mas os drivers estão quebrados no LE.
- Kernel big endian ARMv7 (BE8)
- Param_struct pré-ATAGS: Este foi depreciado em 2001, para ser eliminado em “5 anos”, o que já aconteceu.
- Arquivos de placas baseados em ATAGS: Após a limpeza acima, restam 29 arquivos da placa em 10 plataformas SoC.
- Núcleos OABI: Praticamente todo mundo usa EABI hoje, e o suporte OABI foi removido como alvo no GCC-4.8. O kernel ainda permite ser construído como OABI com -mabi=apcs-gnu, usado por padrão em kernels ARMv4/ARMv5.
- Modo de compatibilidade OABI: Isso permite executar binários OABI com um kernel EABI.
- NWFPE
- Alto-mem: A maioria das máquinas ARM pode funcionar sem suporte a highmem usando CONFIG_VMSPLIT_2GB para endereçar até 2GB de memória física. Máquinas maiores apareceram com o Cortex-A15 em 2012, rapidamente substituídas por chips de 64 bits.
- Esparso: Há uma discussão sobre a remoção do suporte ao sparsemem tradicional. Isso também se aplica a máquinas que precisam de mais memória para usar toda a sua RAM
- Risco PC: Esta é a plataforma mais antiga suportada e eventualmente será removida, pois não funciona com GCC-9 ou superior devido à remoção do ARMv3.
- SA1100, Passarela: outras plataformas baseadas em StrongARM, relevantes apenas para nostalgia.
- Gêmeos, Moxart: Ambos usam o núcleo da CPU Faraday FA526, que como o StrongARM implementa ARMv4 em vez de ARMv4T com polegar. Os chips também têm mais de 20 anos, mas o código do kernel foi atualizado e não representa um fardo de manutenção.
- Arquivos da placa PXA: Restam dois arquivos de placas no código PXA não removidos há dois anos, esperando que isso ajude na conversão para DT
- OMAP1: a única plataforma ARMv4T/ARMv5 sem suporte DT, tornando-a alvo de remoção em algum momento.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/integrador com 1136r0
- S3C64xx (Cragganmore): Esta é a única placa ARMv6K sem suporte a devicetree, e o arquivo da placa contém uma complexidade semelhante a todos os outros arquivos da placa combinados. arch/arm/mach-s3c/Kconfig.s3c64xx lista-o para remoção no início do próximo ano, o que permitiria uma grande limpeza da infraestrutura e dos drivers da plataforma.
- Orion5x, mv78xx0, arquivos da placa pomba: Assim como o PXA, eles ficaram pendentes do progresso em direção à conversão do DT, mas nada aconteceu, exceto algumas pequenas correções no mv78xx0. Em contraste, o Debian removeu o binário do kernel orion5x alegando falta de usuários, então parece muito menos provável que seja concluído.
- iMX35, WM8750, AST2500, BCM2835: Essas quatro são plataformas ARMv6K e são bem suportadas, embora apenas AST2500 e BCM2835 tenham uma base de usuários ativa.
- Microcontroladores Stm32f4/f7/h7: Esses são os únicos chips Arm não MMU que apresentam desenvolvimento contínuo à medida que a ST continua a oferecer suporte a seus clientes existentes.
Finalmente, deve ser mencionado que este plano ainda está em fase de RFC, isto é, publicado para discussão da comunidade. Se aprovado, propõe-se o início da remoção dos antigos processadores ARM do kernel Linux 6.12, prevista para dezembro. Os primeiros candidatos a serem removidos são ARMv4 (sem remover ARMv4T), iWMMXt, BE32 e OABI.
fonte: https://lkml.org