Um dos mais poderosos lemas do Software Livre é “não reinventar a roda”! Graças a disponibilidade do código-fonte e da cultura do compartilhamento, promovida pelas licenças livres de código aberto, os desenvolvedores podem tirar proveito de programas já escritos e adaptá-los, para atender as suas necessidades (e liberá-los posteriormente sob os termos da licença GNU GPL). Este aspecto é particularmente útil para o kernel Linux, no que concerne ao suporte de arquiteturas de processadores, baseados no mesmo set de instruções…
“First up, the x86/cpu pull for Linux 5.18 merges the AMD and Intel PPIN code paths into a shared one that works for both vendors. This is about the Protected Processor Inventory Number / Protected Processor Identification Number supported by both AMD and Intel CPUs. Currently the kernel has different code paths depending upon the vendor but that is being unified in Linux 5.18.”
— by Phoronix.
No caso do set de instruções x86, grande parte do código x86/x86_64 do kernel Linux é compartilhado entre AMD e Intel (além da VIA, Centaur e Hygon, entre outros), nas áreas em que elas são aplicáveis. Já em relação a tecnologias e recursos implementados de forma diferentes (ou exclusivas) por cada fabricante ou arquitetura, estas por sua vez são suportadas de forma independente, na qual são estabelecidas linhas de código específicas para o seu funcionamento. Ainda assim, muitos destes recursos possuem certas similaridades ou são aplicadas ao mesmo propósito, que poderiam ser perfeitamente suportados através de uma base de código comum, a qual funcionariam para ambas as implementações.
A partir do kernel 5.18, teremos dois recursos que terão as suas bases de códigos unificadas, uma vez que até então eram exclusivas para os fabricantes Intel e a AMD! A principal delas se referem a identificação das CPUs (PPIN), o qual é um número exclusivo atribuído a cada uma e, com o anel decodificador correto, também pode ser usado para descobrir a fabricação e a execução da produção da unidade (como uma espécie de número de série). Após a unificação da base de código, PPIN agora será exposto de uma forma mais simples e prática, através do subsistema sysfs via /sys/devices/system/cpu/cpu*/topology/ppin. Antes disso, tal informação era acessada somente através de exibição de logs, após a ocorrência de eventos específicos como o machine-check exception (MCE).
As demais são em referência a permissão de mais código de computação confidencial compartilhado dentro do kernel (x86/cc), bem como as tecnologias utilizadas para a virtualização criptografada, já que tanto a Intel (TDX) quanto a AMD (SEV) possuem bastante semelhanças em seu contexto e aplicação. No geral, a idéia não se resume apenas em promover um melhor aproveitamento dos códigos já existentes, mas também prover uma maior robustez no que concerne a sua manutenção e suporte da base unificada, por parte de ambas as empresas!
Só espero que as demais empresas também façam as suas contribuições… &;-D