XEN has support for ARM and it is also possible to run it on a cpu without VHE (virtual hardware extension) cap that was introduced with ARMV8.1-A extension. As I understand linux kernel of a guest vm communicates with xen hypervisor over HVC calls. HVC call is a hardware feature, as I think only available in VHE enabled system. But how does it work without VHE? Also with HVCs but as some kind of software call? Please correct me if I'm wrong in my understanding.

1 Answer 1


Xen on Arm normally uses the virtualization extensions which have been present on high-end ARMv7 chips since around 2010, and are a non-optional part of ARMv8. Arm virtualization adds an extra privilege level, the hypervisor, which has its own memory virtualization. The relationship between system and hypervisor is very similar to the relationship between user and system: the MMU performs a translation from user virtual addresses (VA) (using each user partition's memory mapping) to system addresses (IPA — “intermediate physical address”), and then another translation (using each system partition's memory mapping) from system addresses to physical addresses (PA). User mode code calls the SVC instruction to enter system mode, and system mode code calls the HVC instruction to enter hypervisor mode.

When a kernel contains a hypervisor, the hypervisor itself runs in hypervisor mode. The rest of the kernel can run either in hypervisor mode or in system mode, depending on the design of that kernel. As far as I know, Xen runs Linux in system mode plus Xen-specific parts in hypervisor mode.

The v8.1-A virtualization host extensions simplify the design of a kernel-plus-hypervisor like Xen by allowing a mostly unmodified kernel to run with hypervisor privileges. The kernel parts (invoked by SVC instructions or by system-level interrupts) don't need to make HVC calls to perform hypervisor operations. This helps performance because HVC calls require additional context switches which require some cache invalidation, register saving, and extra TLB entries since each level has its own memory mappings.

(There was also an early version of Xen ARM which didn't use the virtualization extensions. Although that project was called “Secure Xen on ARM”, as far as I can tell, it could only run paravirtualized guest kernels and there was no security boundary between the guest kernels and the host.)

  • So virtualization extensions (VE) are not the same as virtualization host extensions (VHE) and are already part of armv8.0-a? Can I tell that for example cortex-a53, because of armv8.0-a has already VE and the page xen on arm describes exactly this case? Commented Apr 25, 2023 at 12:35
  • @ptiza_v_nebe Yes, virtualization is part of basic armv8.0, and also present in high-end v7A chips (see en.wikipedia.org/wiki/Comparison_of_ARM_processors#ARMv7-A). Commented Apr 25, 2023 at 13:30
  • From your answer what does mean when the kernel contains hypervisor? You mean if I activate xen options in menuconfig? Commented Apr 25, 2023 at 15:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .