X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_module%2Fpalacios-dev.c;h=f06f1662f309f1bc8f87c89d603798953a539cac;hb=3d2ae914c0dae420aa777ad0b298060b808434f1;hp=be62f33f88d80787e61e99054a4ddc20be0f46ff;hpb=af8e64fe97d7e075fdc1db893e9bcb550e38db91;p=palacios.releases.git diff --git a/linux_module/palacios-dev.c b/linux_module/palacios-dev.c index be62f33..f06f166 100644 --- a/linux_module/palacios-dev.c +++ b/linux_module/palacios-dev.c @@ -21,20 +21,10 @@ #include "palacios.h" #include "palacios-mm.h" #include "palacios-vm.h" -#include "palacios-stream.h" -#include "palacios-file.h" -#include "palacios-serial.h" -#include "palacios-socket.h" #include "palacios-vnet.h" -#include "palacios-packet.h" -#ifdef V3_CONFIG_EXT_INSPECTOR -#include "palacios-inspector.h" -#endif +#include "linux-exts.h" -#ifdef V3_CONFIG_KEYED_STREAMS -#include "palacios-keyed-stream.h" -#endif MODULE_LICENSE("GPL"); @@ -51,9 +41,6 @@ static u8 v3_minor_map[MAX_VMS / 8] = {[0 ... (MAX_VMS / 8) - 1] = 0}; struct class * v3_class = NULL; static struct cdev ctrl_dev; -void * v3_base_addr = NULL; -unsigned int v3_pages = 0; - static int register_vm( void ) { int i, j = 0; int avail = 0; @@ -61,7 +48,7 @@ static int register_vm( void ) { for (i = 0; i < sizeof(v3_minor_map); i++) { if (v3_minor_map[i] != 0xff) { for (j = 0; j < 8; j++) { - if (!v3_minor_map[i] & (0x1 << j)) { + if (!(v3_minor_map[i] & (0x1 << j))) { avail = 1; v3_minor_map[i] |= (0x1 << j); break; @@ -121,7 +108,7 @@ static long v3_dev_ioctl(struct file * filp, guest->img_size = user_image.size; printk("Allocating kernel memory for guest image (%llu bytes)\n", user_image.size); - guest->img = kmalloc(guest->img_size, GFP_KERNEL); + guest->img = vmalloc(guest->img_size); if (IS_ERR(guest->img)) { printk("Error: Could not allocate space for guest image\n"); @@ -137,12 +124,8 @@ static long v3_dev_ioctl(struct file * filp, printk("Launching VM\n"); - INIT_LIST_HEAD(&(guest->streams)); - INIT_LIST_HEAD(&(guest->files)); - INIT_LIST_HEAD(&(guest->sockets)); -#ifdef V3_CONFIG_HOST_DEVICE - INIT_LIST_HEAD(&(guest->hostdev.devs)); -#endif + INIT_LIST_HEAD(&(guest->exts)); + init_completion(&(guest->start_done)); init_completion(&(guest->thread_done)); @@ -208,8 +191,6 @@ static struct file_operations v3_ctrl_fops = { }; -extern unsigned int v3_pages; -extern void * v3_base_addr; static int __init v3_init(void) { dev_t dev = MKDEV(0, 0); // We dynamicallly assign the major number @@ -218,6 +199,16 @@ static int __init v3_init(void) { palacios_init_mm(); + + // Initialize Palacios + + palacios_vmm_init(); + + + // initialize extensions + init_lnx_extensions(); + + v3_class = class_create(THIS_MODULE, "vms"); if (IS_ERR(v3_class)) { printk("Failed to register V3 VM device class\n"); @@ -251,52 +242,13 @@ static int __init v3_init(void) { goto failure1; } - if ((v3_pages > 0) && (v3_base_addr != NULL)) { - add_palacios_memory(__pa(v3_base_addr), v3_pages); - } - // Initialize Palacios - - palacios_vmm_init(); -#ifdef V3_CONFIG_STREAM - palacios_init_stream(); -#endif -#ifdef V3_CONFIG_FILE - palacios_file_init(); -#endif -#ifdef V3_CONFIG_KEYED_STREAMS - palacios_init_keyed_streams(); -#endif - -#ifdef V3_CONFIG_CONSOLE - palacios_init_console(); -#endif - -#ifdef V3_CONFIG_GRAPHICS_CONSOLE - palacios_init_graphics_console(); -#endif - -#ifdef V3_CONFIG_EXT_INSPECTOR - palacios_init_inspector(); -#endif - -#ifdef V3_CONFIG_SOCKET - palacios_socket_init(); -#endif - -#ifdef V3_CONFIG_PACKET - palacios_init_packet(NULL); -#endif #ifdef V3_CONFIG_VNET - palacios_init_vnet(); -#endif - -#ifdef V3_CONFIG_HOST_DEVICE - palacios_init_host_dev(); + palacios_vnet_init(); #endif return 0; @@ -339,17 +291,12 @@ static void __exit v3_exit(void) { class_destroy(v3_class); + deinit_lnx_extensions(); -#ifdef V3_CONFIG_EXT_INSPECTOR - palacios_deinit_inspector(); -#endif -#ifdef V3_CONFIG_FILE - palacios_file_deinit(); -#endif -#ifdef V3_CONFIG_STREAM - palacios_deinit_stream(); +#ifdef V3_CONFIG_VNET + palacios_vnet_deinit(); #endif palacios_deinit_mm();