1e37630caSaliguori /*
2e37630caSaliguori * QEMU Xen PV Machine
3e37630caSaliguori *
4e37630caSaliguori * Copyright (c) 2007 Red Hat
5e37630caSaliguori *
6e37630caSaliguori * Permission is hereby granted, free of charge, to any person obtaining a copy
7e37630caSaliguori * of this software and associated documentation files (the "Software"), to deal
8e37630caSaliguori * in the Software without restriction, including without limitation the rights
9e37630caSaliguori * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10e37630caSaliguori * copies of the Software, and to permit persons to whom the Software is
11e37630caSaliguori * furnished to do so, subject to the following conditions:
12e37630caSaliguori *
13e37630caSaliguori * The above copyright notice and this permission notice shall be included in
14e37630caSaliguori * all copies or substantial portions of the Software.
15e37630caSaliguori *
16e37630caSaliguori * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17e37630caSaliguori * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18e37630caSaliguori * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19e37630caSaliguori * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20e37630caSaliguori * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21e37630caSaliguori * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22e37630caSaliguori * THE SOFTWARE.
23e37630caSaliguori */
24e37630caSaliguori
2521cbfe5fSPeter Maydell #include "qemu/osdep.h"
2647d17c0aSAlistair Francis #include "qemu/error-report.h"
2783c9f4caSPaolo Bonzini #include "hw/boards.h"
282d0ed5e6SPaul Durrant #include "hw/xen/xen-legacy-backend.h"
29108f7bbaSPaul Durrant #include "hw/xen/xen-bus.h"
30*32cad1ffSPhilippe Mathieu-Daudé #include "system/block-backend.h"
31*32cad1ffSPhilippe Mathieu-Daudé #include "system/system.h"
32e37630caSaliguori
xen_init_pv(MachineState * machine)333ef96221SMarcel Apfelbaum static void xen_init_pv(MachineState *machine)
34e37630caSaliguori {
35670d8c6eSDavid Woodhouse setup_xen_backend_ops();
36670d8c6eSDavid Woodhouse
370973996fSPaolo Bonzini xen_bus_init();
389306acb5Saliguori
399306acb5Saliguori switch (xen_mode) {
409306acb5Saliguori case XEN_ATTACH:
411077bcacSAnthony PERARD /* nothing to do, libxl handles everything */
429306acb5Saliguori break;
439306acb5Saliguori case XEN_EMULATE:
4447d17c0aSAlistair Francis error_report("xen emulation not implemented (yet)");
459306acb5Saliguori exit(1);
469306acb5Saliguori break;
4764a7ad6fSIan Campbell default:
4847d17c0aSAlistair Francis error_report("unhandled xen_mode %d", xen_mode);
4964a7ad6fSIan Campbell exit(1);
5064a7ad6fSIan Campbell break;
519306acb5Saliguori }
529306acb5Saliguori
5394909d9fSaliguori /* configure framebuffer */
54d9018fbbSThomas Huth if (vga_interface_type == VGA_XENFB) {
5594909d9fSaliguori xen_config_dev_vfb(0, "vnc");
5694909d9fSaliguori xen_config_dev_vkbd(0);
57f9bcb2d6SGautam Agrawal vga_interface_created = true;
5894909d9fSaliguori }
5994909d9fSaliguori
602c8b24a3Saliguori /* config cleanup hook */
6128695489SAnthony Liguori atexit(xen_config_cleanup);
62e37630caSaliguori }
63e37630caSaliguori
xenpv_machine_init(MachineClass * mc)64e264d29dSEduardo Habkost static void xenpv_machine_init(MachineClass *mc)
65f80f9ec9SAnthony Liguori {
66e264d29dSEduardo Habkost mc->desc = "Xen Para-virtualized PC";
67e264d29dSEduardo Habkost mc->init = xen_init_pv;
68e264d29dSEduardo Habkost mc->max_cpus = 1;
69e264d29dSEduardo Habkost mc->default_machine_opts = "accel=xen";
70f80f9ec9SAnthony Liguori }
71f80f9ec9SAnthony Liguori
72e264d29dSEduardo Habkost DEFINE_MACHINE("xenpv", xenpv_machine_init)
73