diff options
author | Patrick Mooney <pmooney@pfmooney.com> | 2022-09-26 20:59:56 +0000 |
---|---|---|
committer | Patrick Mooney <pmooney@oxide.computer> | 2022-10-02 01:02:06 +0000 |
commit | 3f6fd99d844f7d4b62e4e1ddb0c29a4c2f7eca15 (patch) | |
tree | 495821bf09970e63556179d2f4e412c8e3c76d77 /usr/src/cmd | |
parent | 17c4dadf772c2bfb28130f501dc6e1f46f8b1250 (diff) | |
download | illumos-gate-3f6fd99d844f7d4b62e4e1ddb0c29a4c2f7eca15.tar.gz |
14952 bhyve should expose PAGING exits to userspace
Reviewed by: Andy Fiddaman <illumos@fiddaman.net>
Approved by: Gordon Ross <gordon.w.ross@gmail.com>
Diffstat (limited to 'usr/src/cmd')
-rw-r--r-- | usr/src/cmd/bhyve/bhyverun.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/usr/src/cmd/bhyve/bhyverun.c b/usr/src/cmd/bhyve/bhyverun.c index 63dd6a129a..3ad546ddb8 100644 --- a/usr/src/cmd/bhyve/bhyverun.c +++ b/usr/src/cmd/bhyve/bhyverun.c @@ -39,7 +39,7 @@ * * Copyright 2015 Pluribus Networks Inc. * Copyright 2018 Joyent, Inc. - * Copyright 2021 Oxide Computer Company + * Copyright 2022 Oxide Computer Company * Copyright 2022 OmniOS Community Edition (OmniOSce) Association. */ @@ -836,6 +836,18 @@ vmexit_run_state(struct vmctx *ctx, struct vm_exit *vme, int *pvcpu) fprintf(stderr, "unexpected run-state VM exit"); return (VMEXIT_ABORT); } + +static int +vmexit_paging(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) +{ + fprintf(stderr, "vm exit[%d]\n", *pvcpu); + fprintf(stderr, "\treason\t\tPAGING\n"); + fprintf(stderr, "\trip\t\t0x%016lx\n", vmexit->rip); + fprintf(stderr, "\tgpa\t\t0x%016lx\n", vmexit->u.paging.gpa); + fprintf(stderr, "\tfault_type\t\t%d\n", vmexit->u.paging.fault_type); + + return (VMEXIT_ABORT); +} #endif /* __FreeBSD__ */ #ifdef __FreeBSD__ @@ -1109,6 +1121,7 @@ static vmexit_handler_t handler[VM_EXITCODE_MAX] = { [VM_EXITCODE_SPINUP_AP] = vmexit_spinup_ap, #else [VM_EXITCODE_RUN_STATE] = vmexit_run_state, + [VM_EXITCODE_PAGING] = vmexit_paging, #endif [VM_EXITCODE_SUSPENDED] = vmexit_suspend, [VM_EXITCODE_TASK_SWITCH] = vmexit_task_switch, |