Skip to content

voutilad/vmm_clock

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

vmm_clock

This is a Linux clocksource implementation based on the existing Linux kvmclock. It's specifically designed for using when running a Linux kernel as a guest under OpenBSD's vmm(4)/vmd(8) hypervisor framework.

Primary goals:

  • provide a clocksource that doesn't suffer from unmanageable clock-drift as seen when using refined-jiffies with a more recent Linux LTS kernel (e.g. 5.4)
  • provide a clocksource loadable as a module that does not require users build a complete kernel from source
  • be platform independent, i.e. work the same on Intel and AMD hosts.

Secondary goals:

  • make the code as short and tight as possible
  • identify a means of testing clock drift

Known issues:

  • if you try to unload the module, you will probably panic the kernel
  • since kvmclock wasn't designed to be a module, it may never be possible to support module removal

Prerequisites

You'll need OpenBSD 6.8 or newer as it contains fixes I provided for race conditions in vmd(8) that cause stability problems with Linux guests. It is 100% required for this kernel module to work. If you try to use this with an older OpenBSD version, I guarantee you will have runaway vmd(8) processes or crashes.

Building & Installing

For now, follow some of the pre-reqs for virtio_vmmci and you should just be able to:

# make && make install && modprobe vmm_clock

You can load it at boot by creating /etc/modules-load.d/vmm_clock.conf with just the contents:

vmm_clock

Tested Platforms and Configs

I'm testing with the following:

  • Alpine 3.12.2 and their stock v5.4 -virt kernel
  • Debian Buster 10.4 and its v4.19 kernel
  • Ubuntu 20.04 and its v5.4 kernel

As usual, no warranty...use at your own risk, etc.!

License

GPLv2...see LICENSE file.

About

Experimental implementation of a kvmclock-derived clocksource for Linux guests under OpenBSD's hypervisor

Resources

License

Stars

Watchers

Forks

Packages

No packages published