Browse Prior Art Database

Software Method for Controlling Hardware Peripherals from Inside a Virtual Machine

IP.com Disclosure Number: IPCOM000244215D
Publication Date: 2015-Nov-24
Document File: 2 page(s) / 103K

Publishing Venue

The IP.com Prior Art Database

Related People

Chiang Yeh: INVENTOR [+2]

Abstract

Described is a hardware agnostic and fully extensible software architecture for a chassis based switch which utilizes a virtual machine VM to manage different hardware components in a context where these VMs need to access these components at the device driver level yet the abstraction of the VMs is at the user space level precluding necessary access privilege

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 54% of the total text.

Software Method for Controlling Hardware Peripherals from Inside a Virtual Machine

Authors: Chiang Yeh, Vadivel Poonathan

Described is a hardware agnostic and fully extensible software architecture for a chassis-based switch which utilizes a virtual machine (VM) to manage different hardware components, in a context where these VMs need to access these components at the device driver level, yet the abstraction of the VMs is at the user space level, precluding necessary access privilege.

Typically, the operating system (OS) controls a peripheral on the PCIe bus through a set of memory addresses that it would share with the peripheral, (aka MMIO).  These addresses are initialized when the peripheral is enumerated and initialized by the OS.  Some of these addresses are dictated by the board design of the embedded system and exclusively programmed into the initialization routines of the OS.  Some are determined by the OS during the bootstrap procedures and programmed into the peripheral.

Upon successful bootstrapping the OS, the peripheral shall be controlled by the OS by reading and writing to these specific memory addresses.  The contents and offsets of these addresses are both important to the operations of the overall system, but are usually only visible and accessible in the kernel space of the OS and not to the applications resident in the user space of the OS.

To manage and control the peripherals inside the VMs, one has to somehow make these addresses visible and accessible to the guest OS inside the VM.  In fact, the VM itself is an artificial environment emulating a whole microprocessor subsystem inside a user space application, (which is QEMU, an open source CPU virtualizer/emulator).  Thus the QEMU process is first allowed to create and manage the VM to access these memory addresses. The QEMU software is modified so as to request and enable this access.

If these addresses are fixed by the board desig...