mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-26 23:36:51 +00:00
DM: Add new parameter --rtvm for soft/hard real-time guest
This patch add one new parameter --rtvm to indicate if the guest is a RTVM or not. For RTVM, it may be not interference by SOS. Tracked-On: #2865 Signed-off-by: Kaige Fu <kaige.fu@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
336ed72250
commit
469ce711c5
@ -88,6 +88,7 @@ uint8_t trusty_enabled;
|
|||||||
char *mac_seed;
|
char *mac_seed;
|
||||||
bool stdio_in_use;
|
bool stdio_in_use;
|
||||||
bool lapic_pt;
|
bool lapic_pt;
|
||||||
|
bool is_rtvm;
|
||||||
bool skip_pci_mem64bar_workaround = false;
|
bool skip_pci_mem64bar_workaround = false;
|
||||||
|
|
||||||
static int virtio_msix = 1;
|
static int virtio_msix = 1;
|
||||||
@ -172,7 +173,8 @@ usage(int code)
|
|||||||
" its params: threshold/s,probe-period(s),delay_time(ms),delay_duration(ms)\n"
|
" its params: threshold/s,probe-period(s),delay_time(ms),delay_duration(ms)\n"
|
||||||
" --virtio_poll: enable virtio poll mode with poll interval with ns\n"
|
" --virtio_poll: enable virtio poll mode with poll interval with ns\n"
|
||||||
" --vtpm2: Virtual TPM2 args: sock_path=$PATH_OF_SWTPM_SOCKET\n"
|
" --vtpm2: Virtual TPM2 args: sock_path=$PATH_OF_SWTPM_SOCKET\n"
|
||||||
" --lapic_pt: enable local apic passthrough\n",
|
" --lapic_pt: enable local apic passthrough\n"
|
||||||
|
" --rtvm: indicate that the guest is rtvm\n",
|
||||||
progname, (int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "",
|
progname, (int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "",
|
||||||
(int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "",
|
(int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "",
|
||||||
(int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "");
|
(int)strnlen(progname, PATH_MAX), "", (int)strnlen(progname, PATH_MAX), "");
|
||||||
@ -708,6 +710,7 @@ enum {
|
|||||||
CMD_OPT_INTR_MONITOR,
|
CMD_OPT_INTR_MONITOR,
|
||||||
CMD_OPT_VTPM2,
|
CMD_OPT_VTPM2,
|
||||||
CMD_OPT_LAPIC_PT,
|
CMD_OPT_LAPIC_PT,
|
||||||
|
CMD_OPT_RTVM,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
@ -747,6 +750,7 @@ static struct option long_options[] = {
|
|||||||
{"intr_monitor", required_argument, 0, CMD_OPT_INTR_MONITOR},
|
{"intr_monitor", required_argument, 0, CMD_OPT_INTR_MONITOR},
|
||||||
{"vtpm2", required_argument, 0, CMD_OPT_VTPM2},
|
{"vtpm2", required_argument, 0, CMD_OPT_VTPM2},
|
||||||
{"lapic_pt", no_argument, 0, CMD_OPT_LAPIC_PT},
|
{"lapic_pt", no_argument, 0, CMD_OPT_LAPIC_PT},
|
||||||
|
{"rtvm", no_argument, 0, CMD_OPT_RTVM},
|
||||||
{0, 0, 0, 0 },
|
{0, 0, 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -894,6 +898,9 @@ dm_run(int argc, char *argv[])
|
|||||||
case CMD_OPT_LAPIC_PT:
|
case CMD_OPT_LAPIC_PT:
|
||||||
lapic_pt = true;
|
lapic_pt = true;
|
||||||
break;
|
break;
|
||||||
|
case CMD_OPT_RTVM:
|
||||||
|
is_rtvm = true;
|
||||||
|
break;
|
||||||
case CMD_OPT_VTPM2:
|
case CMD_OPT_VTPM2:
|
||||||
if (acrn_parse_vtpm2(optarg) != 0) {
|
if (acrn_parse_vtpm2(optarg) != 0) {
|
||||||
errx(EX_USAGE, "invalid vtpm2 param %s", optarg);
|
errx(EX_USAGE, "invalid vtpm2 param %s", optarg);
|
||||||
|
@ -149,6 +149,11 @@ vm_create(const char *name, uint64_t req_buf)
|
|||||||
create_vm.vm_flag &= (~GUEST_FLAG_IO_COMPLETION_POLLING);
|
create_vm.vm_flag &= (~GUEST_FLAG_IO_COMPLETION_POLLING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_rtvm) {
|
||||||
|
create_vm.vm_flag |= GUEST_FLAG_RT;
|
||||||
|
create_vm.vm_flag |= GUEST_FLAG_IO_COMPLETION_POLLING;
|
||||||
|
}
|
||||||
|
|
||||||
create_vm.req_buf = req_buf;
|
create_vm.req_buf = req_buf;
|
||||||
while (retry > 0) {
|
while (retry > 0) {
|
||||||
error = ioctl(ctx->fd, IC_CREATE_VM, &create_vm);
|
error = ioctl(ctx->fd, IC_CREATE_VM, &create_vm);
|
||||||
|
@ -46,6 +46,7 @@ extern char *vmname;
|
|||||||
extern bool stdio_in_use;
|
extern bool stdio_in_use;
|
||||||
extern char *mac_seed;
|
extern char *mac_seed;
|
||||||
extern bool lapic_pt;
|
extern bool lapic_pt;
|
||||||
|
extern bool is_rtvm;
|
||||||
|
|
||||||
int vmexit_task_switch(struct vmctx *ctx, struct vhm_request *vhm_req,
|
int vmexit_task_switch(struct vmctx *ctx, struct vhm_request *vhm_req,
|
||||||
int *vcpu);
|
int *vcpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user