xen: Add initialisation of Xen
The xenpv machine use the common init function. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									d5b93ddfef
								
							
						
					
					
						commit
						3285cf4fe7
					
				@ -208,6 +208,15 @@ QEMU_CFLAGS += $(VNC_PNG_CFLAGS)
 | 
				
			|||||||
# xen backend driver support
 | 
					# xen backend driver support
 | 
				
			||||||
obj-i386-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
 | 
					obj-i386-$(CONFIG_XEN) += xen_machine_pv.o xen_domainbuild.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(TARGET_BASE_ARCH), i386)
 | 
				
			||||||
 | 
					  CONFIG_NO_XEN = $(if $(subst n,,$(CONFIG_XEN)),n,y)
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  CONFIG_NO_XEN = y
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					# xen support
 | 
				
			||||||
 | 
					obj-i386-$(CONFIG_XEN) += xen-all.o
 | 
				
			||||||
 | 
					obj-$(CONFIG_NO_XEN) += xen-stub.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Inter-VM PCI shared memory
 | 
					# Inter-VM PCI shared memory
 | 
				
			||||||
CONFIG_IVSHMEM =
 | 
					CONFIG_IVSHMEM =
 | 
				
			||||||
ifeq ($(CONFIG_KVM), y)
 | 
					ifeq ($(CONFIG_KVM), y)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								hw/xen.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								hw/xen.h
									
									
									
									
									
								
							@ -18,4 +18,17 @@ enum xen_mode {
 | 
				
			|||||||
extern uint32_t xen_domid;
 | 
					extern uint32_t xen_domid;
 | 
				
			||||||
extern enum xen_mode xen_mode;
 | 
					extern enum xen_mode xen_mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int xen_allowed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int xen_enabled(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef CONFIG_XEN
 | 
				
			||||||
 | 
					    return xen_allowed;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int xen_init(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* QEMU_HW_XEN_H */
 | 
					#endif /* QEMU_HW_XEN_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -665,9 +665,8 @@ int xen_be_init(void)
 | 
				
			|||||||
        goto err;
 | 
					        goto err;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xen_xc = xen_xc_interface_open(0, 0, 0);
 | 
					 | 
				
			||||||
    if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
 | 
					    if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
 | 
				
			||||||
        xen_be_printf(NULL, 0, "can't open xen interface\n");
 | 
					        /* Check if xen_init() have been called */
 | 
				
			||||||
        goto err;
 | 
					        goto err;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -113,6 +113,7 @@ static QEMUMachine xenpv_machine = {
 | 
				
			|||||||
    .desc = "Xen Para-virtualized PC",
 | 
					    .desc = "Xen Para-virtualized PC",
 | 
				
			||||||
    .init = xen_init_pv,
 | 
					    .init = xen_init_pv,
 | 
				
			||||||
    .max_cpus = 1,
 | 
					    .max_cpus = 1,
 | 
				
			||||||
 | 
					    .default_machine_opts = "accel=xen",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void xenpv_machine_init(void)
 | 
					static void xenpv_machine_init(void)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vl.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								vl.c
									
									
									
									
									
								
							@ -259,6 +259,7 @@ static NotifierList machine_init_done_notifiers =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static int tcg_allowed = 1;
 | 
					static int tcg_allowed = 1;
 | 
				
			||||||
int kvm_allowed = 0;
 | 
					int kvm_allowed = 0;
 | 
				
			||||||
 | 
					int xen_allowed = 0;
 | 
				
			||||||
uint32_t xen_domid;
 | 
					uint32_t xen_domid;
 | 
				
			||||||
enum xen_mode xen_mode = XEN_EMULATE;
 | 
					enum xen_mode xen_mode = XEN_EMULATE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1890,6 +1891,7 @@ static struct {
 | 
				
			|||||||
    int *allowed;
 | 
					    int *allowed;
 | 
				
			||||||
} accel_list[] = {
 | 
					} accel_list[] = {
 | 
				
			||||||
    { "tcg", "tcg", tcg_available, tcg_init, &tcg_allowed },
 | 
					    { "tcg", "tcg", tcg_available, tcg_init, &tcg_allowed },
 | 
				
			||||||
 | 
					    { "xen", "Xen", xen_available, xen_init, &xen_allowed },
 | 
				
			||||||
    { "kvm", "KVM", kvm_available, kvm_init, &kvm_allowed },
 | 
					    { "kvm", "KVM", kvm_available, kvm_init, &kvm_allowed },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								xen-all.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								xen-all.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (C) 2010       Citrix Ltd.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This work is licensed under the terms of the GNU GPL, version 2.  See
 | 
				
			||||||
 | 
					 * the COPYING file in the top-level directory.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "hw/xen_common.h"
 | 
				
			||||||
 | 
					#include "hw/xen_backend.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Initialise Xen */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int xen_init(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    xen_xc = xen_xc_interface_open(0, 0, 0);
 | 
				
			||||||
 | 
					    if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
 | 
				
			||||||
 | 
					        xen_be_printf(NULL, 0, "can't open xen interface\n");
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								xen-stub.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								xen-stub.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (C) 2010       Citrix Ltd.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This work is licensed under the terms of the GNU GPL, version 2.  See
 | 
				
			||||||
 | 
					 * the COPYING file in the top-level directory.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "qemu-common.h"
 | 
				
			||||||
 | 
					#include "hw/xen.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int xen_init(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return -ENOSYS;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user