X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_usr%2Fv3_ctrl.h;h=8b448bccbeef3a522311a0f26be8b3e2cfae4b10;hb=cbbdb1c69dae70c0d8b836a3d9ff92e2aa67f1f9;hp=a210013278d5dfbdffb6d82a3229648950acd856;hpb=008fdde9a6a6ec65b7647d9eec487448094d7f18;p=palacios.git diff --git a/linux_usr/v3_ctrl.h b/linux_usr/v3_ctrl.h index a210013..8b448bc 100644 --- a/linux_usr/v3_ctrl.h +++ b/linux_usr/v3_ctrl.h @@ -16,9 +16,13 @@ #define V3_ADD_MEMORY 50 #define V3_RESET_MEMORY 51 +#define V3_REMOVE_MEMORY 52 + #define V3_ADD_PCI_HW_DEV 55 #define V3_ADD_PCI_USER_DEV 56 +#define V3_DVFS_CTRL 60 + /* VM Specific IOCTLs */ /* VM Specific ioctls */ @@ -41,6 +45,8 @@ #define V3_VM_SEND 34 #define V3_VM_RECEIVE 35 +#define V3_VM_MOVE_MEM 36 + #define V3_VM_FB_INPUT 257 #define V3_VM_FB_QUERY 258 @@ -57,9 +63,17 @@ struct v3_guest_img { } __attribute__((packed)); +typedef enum { PREALLOCATED=0, // user space-allocated (e.g. hot remove) + REQUESTED, // kernel will attempt allocation (anywhere) + REQUESTED32, // kernel will attempt allocation (<4GB) +} v3_mem_region_type_t; + struct v3_mem_region { - unsigned long long base_addr; - unsigned long long num_pages; + v3_mem_region_type_t type; // + int node; // numa node for REQUESTED (-1 = any) + unsigned long long base_addr; // region start (hpa) for PREALLOCATED + unsigned long long num_pages; // size for PREALLOCATED or request size for REQUESTED + // should be power of 2 and > V3_CONFIG_MEM_BLOCK } __attribute__((packed)); @@ -68,6 +82,10 @@ struct v3_core_move_cmd{ unsigned short pcore_id; } __attribute__((packed)); +struct v3_mem_move_cmd{ + unsigned long long gpa; + unsigned short pcore_id; +} __attribute__((packed)); struct v3_debug_cmd { unsigned int core; @@ -77,6 +95,12 @@ struct v3_debug_cmd { struct v3_chkpt_info { char store[128]; char url[256]; /* This might need to be bigger... */ + unsigned long long opts; +#define V3_CHKPT_OPT_NONE 0 +#define V3_CHKPT_OPT_SKIP_MEM 1 // don't write memory to store +#define V3_CHKPT_OPT_SKIP_DEVS 2 // don't write devices to store +#define V3_CHKPT_OPT_SKIP_CORES 4 // don't write core arch ind data to store +#define V3_CHKPT_OPT_SKIP_ARCHDEP 8 // don't write core arch dep data to store } __attribute__((packed)); @@ -110,6 +134,7 @@ int v3_read_file (int fd, int size, unsigned char * buf); int launch_vm (const char * filename); int stop_vm (const char * filename); +unsigned long v3_hash_buffer (unsigned char * msg, unsigned int len); /* XML-related structs */ struct cfg_value { @@ -130,4 +155,12 @@ struct file_info { char id[256]; }; +struct mem_file_hdr { + unsigned int file_idx; + unsigned int file_size; + unsigned long long file_offset; + unsigned long file_hash; +}; + + #endif