#include "palacios.h"
#include "mm.h"
#include "vm.h"
+#include "allow_devmem.h"
#include "linux-exts.h"
-
MODULE_LICENSE("GPL");
// Module parameter
module_param_array(cpu_list, int, &cpu_list_len, 0644);
MODULE_PARM_DESC(cpu_list, "Comma-delimited list of CPUs that Palacios will run on");
+static int allow_devmem = 0;
+module_param(allow_devmem, int, 0);
+MODULE_PARM_DESC(allow_devmem, "Allow general user-space /dev/mem access even if kernel is strict");
+
+// Palacios options parameter
+static char *options;
+module_param(options, charp, 0);
+MODULE_PARM_DESC(options, "Generic options to internal Palacios modules");
+
+
int mod_allocs = 0;
int mod_frees = 0;
-
static int v3_major_num = 0;
static struct v3_guest * guest_map[MAX_VMS] = {[0 ... MAX_VMS - 1] = 0};
}
+
+
+
static int __init v3_init(void) {
dev_t dev = MKDEV(0, 0); // We dynamicallly assign the major number
int ret = 0;
palacios_init_mm();
+ if (allow_devmem) {
+ palacios_allow_devmem();
+ }
+
// Initialize Palacios
- palacios_vmm_init();
+ palacios_vmm_init(options);
// initialize extensions
deinit_lnx_extensions();
+ if (allow_devmem) {
+ palacios_restore_devmem();
+ }
+
palacios_deinit_mm();
remove_proc_entry("v3-guests", dir);