summaryrefslogtreecommitdiff
path: root/usr/src/uts/i86pc/sys/vmm_drv.h
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2022-03-31 01:21:59 -0400
committerDan McDonald <danmcd@joyent.com>2022-03-31 01:21:59 -0400
commit57c509a3a6c67a2c86ae463acfdc0a5fcc3a1723 (patch)
treec4ff6085f3151a646787991689b03dbc49ce6ee4 /usr/src/uts/i86pc/sys/vmm_drv.h
parent32bb949b910b504c06c2385bfe84e5a566d1f834 (diff)
parent5103e761e384621c5728a6d1f4b0bfdc1be233a4 (diff)
downloadillumos-joyent-57c509a3a6c67a2c86ae463acfdc0a5fcc3a1723.tar.gz
[illumos-gate merge]
commit 5103e761e384621c5728a6d1f4b0bfdc1be233a4 14569 bhyve should consolidate on hrtime 14486 bhyve needs instruction emul tests commit db9aa506ce275f82ee72f31fc2e6e3c53d1212b7 13912 viona should track held pages commit 899b7fc7762875c5244567fbc6bb4ccace75d6f7 12315 errors in section 4i of the manual commit a677d6730e287aadab3cc68d0c46fb01b25d72eb 14583 developer/opensolaris/osnet requirements cleanup
Diffstat (limited to 'usr/src/uts/i86pc/sys/vmm_drv.h')
-rw-r--r--usr/src/uts/i86pc/sys/vmm_drv.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/usr/src/uts/i86pc/sys/vmm_drv.h b/usr/src/uts/i86pc/sys/vmm_drv.h
index 1f2b3d9254..0b7f622e53 100644
--- a/usr/src/uts/i86pc/sys/vmm_drv.h
+++ b/usr/src/uts/i86pc/sys/vmm_drv.h
@@ -12,7 +12,7 @@
/*
* Copyright 2019 Joyent, Inc.
- * Copyright 2020 Oxide Computer Company
+ * Copyright 2021 Oxide Computer Company
*/
#ifndef _VMM_DRV_H_
@@ -30,6 +30,14 @@ struct vmm_lease;
typedef struct vmm_lease vmm_lease_t;
/*
+ * This is effectively a synonym for the bhyve-internal 'struct vm_page' type.
+ * Use of `vmm_page_t *` instead allows us to keep those implementation details
+ * hidden from vmm_drv consumers.
+ */
+struct vmm_page;
+typedef struct vmm_page vmm_page_t;
+
+/*
* Because of tangled headers, this definitions mirrors its ioport_handler_t
* counterpart in vmm_kernel.h.
*/
@@ -44,7 +52,14 @@ extern vmm_lease_t *vmm_drv_lease_sign(vmm_hold_t *, boolean_t (*)(void *),
extern void vmm_drv_lease_break(vmm_hold_t *, vmm_lease_t *);
extern boolean_t vmm_drv_lease_expired(vmm_lease_t *);
-extern void *vmm_drv_gpa2kva(vmm_lease_t *, uintptr_t, size_t);
+extern vmm_page_t *vmm_drv_page_hold(vmm_lease_t *, uintptr_t, int);
+extern void vmm_drv_page_release(vmm_page_t *);
+extern void vmm_drv_page_release_chain(vmm_page_t *);
+extern const void *vmm_drv_page_readable(const vmm_page_t *);
+extern void *vmm_drv_page_writable(const vmm_page_t *);
+extern void vmm_drv_page_chain(vmm_page_t *, vmm_page_t *);
+extern vmm_page_t *vmm_drv_page_next(const vmm_page_t *);
+
extern int vmm_drv_msi(vmm_lease_t *, uint64_t, uint64_t);
extern int vmm_drv_ioport_hook(vmm_hold_t *, uint16_t, vmm_drv_iop_cb_t, void *,