#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_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
} __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));
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;