cpu_entry_area
contém todos os dados e códigos necessários para permitir que a CPU controle manualmente o kernel. Quando o KPTI está ativado, apenas essa parte do kernel é mapeada quando o espaço do usuário está em execução. Você pode ver sua definição em arch/x86/include/asm/cpu_entry_area.h
: contém
- o GDT;
- a pilha de entrada;
- o TSS;
- um conjunto de trampolins;
- as pilhas de exceções;
- depurar lojas e buffers.
Os trampolins contêm os pontos de entrada para syscalls; veja, por exemplo, arch/x86/entry/entry_64.S
que define o ponto de entrada para chamadas de 64 bits.
Nada disso é acessível diretamente do anel 3, mas o código do anel 3 pode saltar para ele usando mecanismos mediados pela CPU que permitem alterar os níveis de privilégios ( por exemplo, a instrução SYSCALL
da CPU).
Documentation/x86/pti.txt
fornece mais contexto.