Running Barrelfish on the Xeon Phi

This page describes how to build and run Barrelfish on the Intel Xeon Phi co-processor.

Environment Setup

In order to build Barrelfish for the Xeon Phi the user must have setup the GCC toolchain for the K1OM architecture and a NFS share accessible from the machine with the Xeon Phis. In summary, the Intel MPSS SDK has to be installed on the build host.

A detailed environment setup guide can be found here: Environment Setup Guide.

Compiling for Xeon Phi architecture

The system architecture for the Xeon Phi depends on host-based components as well as software running on the Xeon Phi co-processor. Hence, we need to configure Hake with two targets:

$ ../barrelfish/hake/hake.sh -s ../barrelfish -a k1om -a x86_64
$ make

This will generate the Xeon Phi boot image and the boot loader

Installing The Xeon Phi Boot Image

During the installation the boot image will be copied to the location specified in the symbolic targets file.

# symbolic_targets.mk
BARRELFISH_NFS_DIR ?="emmentaler.ethz.ch:/local/nfs/barrelfish/xeon_phi"

Booting The Xeon Phi

In order to boot a your Xeon Phi, you will need a network card with is supported by Barrelfish. Further, your host machine needs access to the NFS share where the Xeon Phi bootimage gets copied to. Following a sample menu.lst to boot the Xeon Phi cards.

# host menu.lst
title   Barrelfish
root    (nd)
kernel  /x86_64/sbin/elver loglevel=4
module  /x86_64/sbin/cpu loglevel=4
module  /x86_64/sbin/init

# Domains spawned by init
module  /x86_64/sbin/mem_serv
module  /x86_64/sbin/monitor

# Special boot time domains spawned by monitor
module  /x86_64/sbin/ramfsd boot
module  /x86_64/sbin/skb boot
modulenounzip /skb_ramfs.cpio.gz nospawn
module  /x86_64/sbin/kaluga boot
module  /x86_64/sbin/acpi boot
module  /x86_64/sbin/spawnd boot
module  /x86_64/sbin/startd boot
module /x86_64/sbin/routing_setup boot

# Device Managers
module /x86_64/sbin/xeon_phi_mgr

# Drivers
module /x86_64/sbin/pci auto skb_bridge_program=bridge_bios
module /x86_64/sbin/corectrl auto
module /x86_64/sbin/xeon_phi auto -nfs=nfs://<IP>/path/to/barrelfish/xeon_phi/ 

## For networking
module /x86_64/sbin/netd auto
module /x86_64/sbin/e1000n auto noirq
module /x86_64/sbin/NGD_mng auto

## add your domains here

# co-processor menu.lst
title   Barrelfish
root    (nd)
kernel  /k1om/sbin/cpu loglevel=4
module  /k1om/sbin/init

# Domains spawned by init
module  /k1om/sbin/mem_serv
module  /k1om/sbin/monitor

# Special boot time domains spawned by monitor
module  /k1om/sbin/ramfsd boot
module  /k1om/sbin/skb boot
module  /k1om/sbin/xeon_phi boot
module  /k1om/sbin/spawnd boot
module  /k1om/sbin/startd boot

# drivers
# specify the number of cores you want to boot
module /k1om/sbin/corectrl boot 1:55

#add your domains here

# GDDR Memory we have 6GB on our Xeon PHi
mmap map 0x0000000000 0x00FEE00000 1
# memory hole for the APIC and the flash rom 
mmap map 0x00FEE00000 0x120000 3
mmap map 0x0100000000 0x80000000 1   

BarrelfishWiki: Running_on_Xeon_Phi (last edited 2015-01-08 15:29:07 by RetoAchermann)