HVC |
Appel hyperviseur |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| #imm |
Ce paramètre permet d'indiquer une expression à évaluer pour entier dans l'intervalle de 0 à 65535. |
Description
Cette instruction permet d'indiquer un appel hyperviseur.
Remarques
- L'instruction HVC permet d'appel l'hyperviseur à partir d'un niveau inférieur : HVC est utilisée pour effectuer une transition vers EL2 (Exception
Level 2), c'est-à-dire le niveau hyperviseur dans les architectures ARMv7 avec Virtualization Extensions et dans ARMv8. Elle permet à un système invité (comme un OS)
de demander un service à l'hyperviseur.
- Elle est analogue à SVC mais destinée à la virtualisation : Tout comme SVC (supervisor call) permet à une application de demander un service système,
HVC permet à un système d'exploitation invité de faire appel à l'hyperviseur. Cela fait partie de la séparation propre des privilèges dans un environnement
virtualisé.
- Le paramètre immédiat (#imm) permet d'identifier la requête : Le champ #imm sert à passer un code numérique (entre 0 et 65535) permettant à
l'hyperviseur de savoir quel service est demandé. Cela fonctionne un peu comme une API où chaque appel est indexé, facilitant le routage vers la bonne fonction dans
le moniteur.
- Provoque une exception de type HVC à l'exécution : L'exécution de HVC génère une exception spécifique, laquelle entraîne le saut vers le vecteur de gestion
de l'hyperviseur. Celui-ci utilise des registres comme ELR_EL2 pour retrouver l'adresse de retour et ESR_EL2 pour comprendre la cause de l'appel.
- Ne peut être utilisée qu'en mode non-EL2 (par exemple EL1) : HVC ne fait sens que si l'on n'est pas déjà dans EL2. Si elle est exécutée depuis EL2, elle
peut générer une exception invalide. Cela empêche un hyperviseur de s'auto-appeler par accident et garantit que seuls les invités utilisent ce mécanisme.
- Permet l'émulation de services système dans les OS invités : Un hyperviseur peut intercepter les HVC pour émuler des périphériques ou des appels système
dans les systèmes d'exploitation invités, comme dans les hyperviseurs de type 1 (bare-metal). Cela permet une isolation forte tout en donnant une illusion de contrôle
aux OS invités.
- Très utilisée dans les environnements ARM virtualisés comme KVM ou Xen : Dans les solutions comme KVM (Kernel-based Virtual Machine) sur ARM ou Xen ARM,
HVC est l'instruction-clé permettant à un invité de communiquer avec le hyperviseur pour des services comme la gestion des horloges, des timers, des interruptions
virtuelles,...
- Peut être restreinte par les configurations de sécurité : L'usage de HVC peut être désactivé ou limité via certains bits de contrôle dans les registres
de configuration du processeur (comme SCR_EL3 en ARMv8). Cela permet de renforcer la sécurité en empêchant un code non autorisé de déclencher un HVC et de perturber
le système.
Dernière mise à jour : Dimanche, le 12 novembre 2017