Gli aggiornamenti a Linux 6.13, in piena fase di sviluppo con la cosiddetta “finestra di unione” tutt’ora in corso, continuano e aggiungono ulteriori novità per la piattaforma open source RISC-V, basata su ARM.
RISC-V è uno standard aperto di un insieme di istruzioni ISA (Istruction Set Architecture) di tipologia RISC (Reduced Instruciton Set Computer), ovvero uno schema di istruzioni che predilige la semplicità e la linearità, risultando tuttavia meno efficiente sotto certi punti di vista rispetto a CISC (Complex Istruction Set Computer) che invece fa l’esatto opposto. Iniziata come progetto nel 2010, oggi è uno standard diffuso a cui molte aziende aderiscono per realizzare architetture su misura per i propri dispositivi, con una maggior semplificazione hardware e senza la necessità di pagare alcuna licenza.
Linux 6.13: ulteriori patch introducono altre novità per RISC-V
Con Linux 6.13, RISC-V beneficerà del mascheramento dei puntatori nello spazio utente. Questa nuova funzionalità è utile per le funzionalità Arm’s Memory Tagging Extension (MTE) e Intel Linear Address Masking (LAM). Nello specifico, fa uso di bit ignorati dell’indirizzo effettivo sulle piattaforme RISC-V, aiutando in maniera affidabile le applicazioni con lo stato di sicurezza della memoria nello spazio utente.
Il mascheramento delle estensioni per RISC-V sulla nuova versione del kernel è basato su Smnpm o Ssnpm. Questo è tuttavia disabilitato per impostazione predefinita nello spazio utente e, di conseguenza, necessita di un’abilitazione manuale.
Lo sviluppatore che ha lavorato alla patch per Linux 6.13 la descrive nel dettaglio spiegando che:
“RISC-V definisce tre estensioni per il mascheramento dei puntatori:
– Smmpm: configurato in modalità M, influisce sulla modalità M
– Smnpm: configurato in modalità M, influisce sulla modalità immediatamente inferiore (modalità S o U)
– Ssnpm: configurato in modalità S, influisce sulla modalità immediatamente inferiore (modalità VS, VU o U)
Questa serie aggiunge il supporto per la configurazione di Smnpm o Ssnpm (a seconda della modalità di privilegio in cui è in esecuzione il kernel) per consentire il mascheramento dei puntatori nello spazio utente (modalità VU o U), estendendo l’API PR_SET_TAGGED_ADDR_CTRL da arm64. A differenza di arm64 TBI, il mascheramento dei puntatori nello spazio utente non è abilitato per impostazione predefinita su RISC-V. Inoltre, la larghezza del tag (indicata come PMLEN) è variabile, quindi lo spazio utente deve chiedere al kernel una larghezza del tag specifica, che viene interpretata come un limite inferiore sul numero di bit del tag.
Questa serie aggiunge anche il supporto per un’ABI di indirizzo taggata simile ad arm64 e x86. Poiché gli accessi dal kernel alla memoria utente utilizzano la configurazione di mascheramento dei puntatori del kernel, non quella dell’utente, il kernel deve rimuovere i tag dai puntatori utente nel software prima di dereferenziarli. E poiché la larghezza del tag è variabile, come con LAM su x86, deve essere mantenuta uguale in tutti i thread di un processo in modo che untagged_addr_remote() possa funzionare.”
Tutte le informazioni sono consultabili nella relativa richiesta di inserimento.