Linux 6.14 implementerà un’importante ristrutturazione del codice per il codice relativo alla funzionalità Intel Trust Domain Extensions (TDX), integrata nei più recenti processori Xeon, al fine di aumentarne la robustezza nel prossimo futuro, preparandone le prossime funzionalità.
Intel TDX è una delle caratteristiche che distingue i processori Xeon, e permette di fornire isolamento hardware per macchine virtuali, dal VMM/hypervisor dell’host e altro tipo di software, sul server host. Nel corso dello sviluppo, sono stati implementati molti adattamenti a Linux per abilitare TDX e supportare le sue funzionalità nel kernel stabile, mentre gli sviluppatori sono correntemente al lavoro per una ristrutturazione del codice sulla futura versione.
Linux 6.14 implementerà importanti cambiamenti per Intel TDX
Tutte le novità sono state spiegate nel dettaglio nella richiesta di invio del ramo x86/tdx dall’ingegnere Dave Hansen di Intel:
“Il codice TDX esistente necessita di un _bit_ di metadati dal modulo TDX. Ma KVM ne avrà bisogno molto di più a breve. Rielabora l’interfaccia con il modulo TDX per renderla più coerente e gestire il nuovo volume più alto.
Il modulo TDX ha aggiunto alcune nuove funzionalità. La prima è la promessa di non sovraccaricare RBP in nessuna circostanza. Fondamentalmente il kernel ora rifiuterà di usare qualsiasi modulo che non abbia questa promessa. In secondo luogo, abilita la nuova funzionalità “REDUCE_VE”. Ciò garantisce che il modulo TDX non invierà alcune stupide eccezioni di virtualizzazione che il guest non aveva comunque un buon modo di gestire.”
In particolare, è anche presente una modifica che consente anche di utilizzare il codice generato automaticamente per la lettura dei metadati globali, come si legge da ulteriori dettagli condivisi da Paolo Bonzini, un ingegnere molto esperto di Red Hat:
“Il modulo TDX fornisce un set di “Campi metadati globali”. Attualmente il kernel legge solo i campi correlati a “Regione di memoria TD” (TDMR) per l’inizializzazione del modulo. C’è la necessità di leggere più campi metadati globali, tra cui la versione del modulo TDX, le funzionalità supportate e le “Regioni di memoria convertibili” (CMR) per correggere un errore di inizializzazione del modulo. Le modifiche future per supportare KVM TDX e altre funzionalità come TDX Connect richiederanno di leggere di più.
L’attuale codice di lettura dei metadati globali presenta delle limitazioni (ad esempio, ha solo un helper primitivo per leggere il campo metadati con dimensione elemento a 16 bit, mentre TDX supporta dimensioni elemento metadati a 8/16/32/64 bit). Ha bisogno di modifiche per leggere più campi metadati.
Ma anche con le modifiche, quando viene aggiunto nuovo codice per leggere un nuovo campo, i revisori dovranno comunque esaminare la specifica per assicurarsi che il nuovo codice non rovini cose come l’utilizzo dell’ID campo metadati sbagliato (ogni campo metadati è associato a un campo univoco ID, che è una costante u64 definita da TDX) ecc.
TDX documenta tutti i campi di metadati globali in un file ‘global_metadata.json’ come parte della specifica TDX. Il formato JSON è leggibile dalla macchina. Invece di modificare il codice di lettura dei metadati, usa uno script per generare il codice in modo che:
1) L’utilizzo del C generato sia semplice.
2) L’aggiunta di un campo sia semplice, ad esempio, lo script estrae semplicemente l’ID del campo dal JSON per un dato campo, quindi non è necessaria alcuna revisione manuale.”
Il nuovo codice consentirà quindi una gestione più solida e affidabile dei metadati TDX, man mano che il kernel Linux/KVM espanderà le sue funzionalità nella prossima versione.