Skip to main content

Making the NOVA microhypervisor fit for thousands of devices and interrupts

K.4.201 | Day 2 | 11:50 - 12:25 | Speakers: Udo Steinberg

Making the NOVA microhypervisor fit for thousands of devices and interrupts
A picture of a devroom at FOSDEM 2024
Open in browser
Get involved in the conversation!Join the chat

Notes

Abstract

NOVA is a modern open-source (GPLv2) microhypervisor that can host and harden unmodified guest operating systems. NOVA is typically accompanied by a component-based OS that runs deprivileged and implements additional functionality, such as platform services and user-mode device drivers.

Over the years, the interrupt subsystem of modern client and server platforms has evolved significantly, by (1) scaling up from only a few pin-based to thousands of message-signaled interrupts and (2) scaling out the delivery of those interrupts across dozens or hundreds of CPU cores.

Architectural differences between ARMv8-A and x86_64, such as

  • Interrupt types: PIN/MSI (x86) vs. (E)SPI/(E)PPI/LPI (Arm)
  • CPU-local vectors (x86) vs. global INTIDs (Arm)
  • Interrupt remapping by IOMMU (x86) vs. interrupt translation by GIC ITS (Arm)
  • Source identifier as bus/device/function (x86) vs. device/stream ID (Arm)

pose a challenge to the design of a uniform API for managing interrupts and devices and motivated the introduction of a new type of kernel object in NOVA: Device Contexts

After a brief discussion of NOVA features added recently, the majority of the talk will focus on NOVA's new interfaces for managing hardware devices and interrupts.

Links:

Speakers

Udo Steinberg

Udo Steinberg is a Fellow and Co-Founder of BlueRock Security, where he leads kernel architecture and development with a strong focus on Arm and x86, hardware virtualization, trusted computing, security and performance. He is also the author and maintainer of the open-source NOVA microhypervisor.

Udo studied Computer Science at TU Dresden and has more than 20 years of experience building microkernels and microkernel-based systems.


Notice: The placeholder video image is licensed under CC BY-SA 4.0. The original image can be found hereChanges made to the image are: Cropped the image to a new ratio, part of the image was cut off.