= 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 [[https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss#downloads|Intel MPSS SDK]] has to be installed on the build host. A detailed environment setup guide can be found here: [[Running_on_Xeon_Phi/Environment_Setup|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:///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 }}}