I processori Intel dovrebbero avere tutti gli aggiornamenti del microcodice della CPU caricati in anticipo durante il processo di avvio di Linux per evitare vari problemi noti. Quando si”carica in ritardo”il microcodice della CPU dopo che il sistema è attivo e funzionante, possono verificarsi vari problemi sui processori Intel che li hanno portati a contrassegnare il kernel Linux come contaminato in tali condizioni. La contaminazione del kernel si è verificata anche durante il caricamento tardivo del microcodice sulle CPU AMD, ma ora è stato ritenuto non necessario e il microcodice della CPU con caricamento tardivo sui processori AMD è considerato sicuro.
Il caricamento tardivo del microcodice della CPU sui processori Intel è stato definito”pericoloso”a causa di problemi di sincronizzazione sulle CPU con SMT/Hyper Threading, la possibilità di scomparire registri specifici del modello (MSR) con microcodice aggiornato, problemi di gestione del controllo della macchina e interrupt problemi di gestione.
“Il caricamento tardivo viene eseguito quando il sistema è completamente operativo e sta eseguendo carichi di lavoro reali. Il comportamento del caricamento tardivo dipende da qual è la patch di base sulla CPU prima dell’aggiornamento alla nuova patch.
Questo è vero per le CPU Intel.
Si consideri, ad esempio, che una CPU abbia il livello di patch 1 e l’aggiornamento sia al livello di patch 3.
Tra la patch1 e la patch3, la patch2 potrebbe aver deprecato una funzionalità visibile dal software.
Questo non è accettabile se il software sta persino potenzialmente utilizzando quella funzione. Ad esempio, diciamo che MSR_X non è più disponibile dopo un aggiornamento, l’accesso a tale MSR causerà un errore #GP.
Fondamentalmente non c’è modo di dichiarare adatto un nuovo aggiornamento del microcodice per il caricamento tardivo. Questo è un altro dei problemi per cui il caricamento tardivo non era abilitato per impostazione predefinita.”
Il kernel di Linux documentazione del microcodice espone tutti i dettagli sul caricamento tardivo per gli interessati.
Inviata oggi da Borislav Petkov di AMD è una dichiarazione che il caricamento tardivo del microcodice è sicuro sui sistemi AMD e non contamina più il kernel Linux in un simile evento.
“Il caricamento tardivo su AMD non presenta i problemi di concorrenza sopra descritti: quando si tenta il caricamento su T0, T1 è inattivo e non esegue le istruzioni. Pertanto, anche se si verifica un interrupt con priorità più alta o un errore, l’intero core lo vedrà prima o dopo l’applicazione della patch del microcodice. In entrambi i casi, T0 e T1 avranno la stessa revisione del microcodice e niente di intermedio.”
Quindi con questa patch in sospeso, l’aggiornamento del microcodice della CPU al caricamento tardivo attiverà solo una contaminazione del kernel per i sistemi non AMD. Idealmente, tuttavia, tutti gli aggiornamenti del microcodice della CPU dovrebbero essere caricati in anticipo durante l’avvio.