diff --git a/devicemodel/core/vmmapi.c b/devicemodel/core/vmmapi.c index 2dbdf40b7..6a1310acf 100644 --- a/devicemodel/core/vmmapi.c +++ b/devicemodel/core/vmmapi.c @@ -405,6 +405,12 @@ vm_pause(struct vmctx *ctx) ioctl(ctx->fd, IC_PAUSE_VM, &ctx->vmid); } +void +vm_reset(struct vmctx *ctx) +{ + ioctl(ctx->fd, IC_RESET_VM, &ctx->vmid); +} + static int suspend_mode = VM_SUSPEND_NONE; void diff --git a/devicemodel/include/public/vhm_ioctl_defs.h b/devicemodel/include/public/vhm_ioctl_defs.h index 1e6c239b8..356d95cd7 100644 --- a/devicemodel/include/public/vhm_ioctl_defs.h +++ b/devicemodel/include/public/vhm_ioctl_defs.h @@ -72,6 +72,7 @@ #define IC_START_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x02) #define IC_PAUSE_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x03) #define IC_CREATE_VCPU _IC_ID(IC_ID, IC_ID_VM_BASE + 0x04) +#define IC_RESET_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x05) /* IRQ and Interrupts */ #define IC_ID_IRQ_BASE 0x20UL diff --git a/devicemodel/include/vmmapi.h b/devicemodel/include/vmmapi.h index 84ea3d894..ba0a9b20e 100644 --- a/devicemodel/include/vmmapi.h +++ b/devicemodel/include/vmmapi.h @@ -99,6 +99,7 @@ int vm_get_device_fd(struct vmctx *ctx); struct vmctx *vm_open(const char *name); void vm_close(struct vmctx *ctx); void vm_pause(struct vmctx *ctx); +void vm_reset(struct vmctx *ctx); int vm_set_shared_io_page(struct vmctx *ctx, uint64_t page_vma); int vm_create_ioreq_client(struct vmctx *ctx); int vm_destroy_ioreq_client(struct vmctx *ctx);