C'è un altro motivo per l'IPI di sé.
Se si inizializza un gestore SMI, viene prima posizionato su un indirizzo basso nella ram. L'intero stato della CPU viene salvato nella SMI. Tuttavia, tutte le CPU inizialmente utilizzano la stessa area di stato e il nuovo indirizzo trasferito viene impostato manipolando una variabile di stato.
In questo caso, si desidera inviare l'SMI iniziale a una CPU alla volta. Se lo invii a tutti, useranno tutti la stessa area per la memorizzazione dello stato e questo sarà un disastro.
È conveniente utilizzare la stessa routine di inizializzazione per il riposizionamento del gestore SMI per tutte le CPU, quindi è possibile utilizzare l'IPI automatico con il tipo SMI per immettere il codice di trasferimento SMI.
Il BSP può inviare l'IPI SMI a se stesso e quindi un AP alla volta. Saranno quindi trasferiti uno ad uno in aree non conflittuali.
Sono sicuro che ci sono molte altre situazioni in cui è necessario un IPI autonomo. Ogni volta che le CPU condividono un'area critica come nello stato SMI iniziale, l'IPI di sé è motivato per coerenza.
fonte
2013-03-14 09:25:02
Entrambi i motivi sono sbagliati, penso. Ogni processore logico (quindi ogni core) ha il proprio APIC locale. Ciò significa che un IPI di sé viene ricevuto solo da quel particolare core che lo ha inviato.In secondo luogo, esiste una speciale stenografia della destinazione disponibile per inviare un IPI a tutti gli APICS locali in un sistema che include se stesso. – jmiller
Si prega di rileggere, perché ho dato solo una ragione per avere IPI (consistenza) auto e due esempi che illustrano la coerenza. –