xref: /qemu/hw/xenpv/xen_machine_pv.c (revision 5824fad4e92e3d10de1ce86d900dcde8f8dfaf76)
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