Features

  • allows you to boot your own 3rd-party OS on the Xeon Phi without directly integrating with the Intel stack
  • color support for legacy text-mode VGA console
  • batch mode
  • output to files
  • small and simple to integrate a kernel with
  • includes a small example kernel
  • includes a custom bootloader

How it works

philix works by leveraging Intel's existing MPSS suite. This suite includes a sysfs interface that allows you to boot Linux or ELF images. However, for an ELF image you need a bootloader included in your kernel. This is the case for Linux, but it takes some time to implement in your own kernel. philix provides a bootloader that you can use out of the box and takes care of the sysfs integration for you.

To see output from your kernel using MPSS, you have to have an implementation of the SCIF protocol in your kernel. This is because the Xeon Phi virtual console implementation in the host driver speaks SCIF. philix gets around that by emulating a virtual text-mode VGA console as a memory-mapped device (at the standard VGA framebuffer address).

The philix host-side program works with the implementation on the kernel-side by mapping the Xeon Phi's physical address space into the philix host process using /dev/mem. Both sides then communicate using polled I/O. In theory we could set up interrupt-driven I/O, but since the console doesn't really need to be high-performance, this wasn't a priority.

Below is philix booting a kernel we're building (called Nautilus) on the Xeon Phi.

Our Nautilus kernel booting on the Xeon Phi with Philix
The Philix console, showing a kernel booting on the Xeon Phi