f23c2e37d5c866f68a7253a24cb240bdc71e712b
[barrelfish] / usr / drivers / xeon_phi / main.c
1 /**
2  * \file
3  * \brief Driver for booting the Xeon Phi Coprocessor card on a Barrelfish Host
4  */
5
6 /*
7  * Copyright (c) 2014 ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Universitaetsstrasse 6, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #include <stdio.h>
16 #include <string.h>
17 #include <barrelfish/barrelfish.h>
18
19 #include "xeon_phi.h"
20 #include "smpt.h"
21
22
23 volatile uint32_t bootstrap_done = 0;
24
25 struct xeon_phi xphi;
26
27 int main(int argc,
28          char *argv[])
29 {
30     errval_t err;
31     debug_printf("Xeon Phi host module started.\n");
32
33     err = host_bootstrap();
34     if (err_is_fail(err)) {
35         USER_PANIC_ERR(err, "could not do the host bootstrap\n");
36     }
37
38     while (bootstrap_done == 0) {
39         messages_wait_and_handle_next();
40     }
41
42     xphi.state = XEON_PHI_STATE_NULL;
43
44     err = xeon_phi_init(&xphi);
45     if (err_is_fail(err)) {
46         USER_PANIC_ERR(err, "could not do the card initialization\n");
47     }
48
49     err = xeon_phi_boot(&xphi,
50                   XEON_PHI_BOOTLOADER,
51                   XEON_PHI_MULTIBOOT);
52     if (err_is_fail(err)) {
53             DEBUG_ERR(err, "could not boot the card\n");
54     }
55
56     debug_printf("Xeon Phi host module terminated.\n");
57
58     return 0;
59 }