Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157816485
D14473.id39622.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D14473.id39622.diff
View Options
Index: stand/userboot/userboot.h
===================================================================
--- stand/userboot/userboot.h
+++ stand/userboot/userboot.h
@@ -41,6 +41,14 @@
*/
#define USERBOOT_VERSION_4 4
+/*
+ * Version 5 adds callbacks to set unrestricted guest
+ * capabilities and reset the vcpu state. The callback
+ * structure backward compatible (new callbacks have
+ * been added at the tail end).
+ */
+#define USERBOOT_VERSION_5 5
+
/*
* Exit codes from the loader
*/
@@ -210,4 +218,22 @@
int (*vm_set_register)(void *arg, int vcpu, int reg, uint64_t val);
int (*vm_set_desc)(void *arg, int vcpu, int reg, uint64_t base,
u_int limit, u_int access);
+
+ /*
+ * Version 5 additions.
+ *
+ * vm_get_unrestricted_guest checks support for the UNRESTRICTED_GUEST
+ * capability and if supported, sets 'retval'. If unsupported, an error
+ * code is returned.
+ *
+ * vm_set_unrestricted_guest sets the UNRESTRICTED_GUEST capability if
+ * supported, and returns an error code otherwise.
+ *
+ * vcpu_reset initializes the vCPU state as defined in
+ * Intel Vol 3a, Table 9.1. IA-32 Processor States Following Power-up,
+ * Reset or INIT
+ */
+ int (*vm_get_unrestricted_guest)(void* arg, int vcpu, int *retval);
+ int (*vm_set_unrestricted_guest)(void* arg, int vcpu, int val);
+ int (*vcpu_reset)(void* arg, int vcpu);
};
Index: usr.sbin/bhyveload/bhyveload.c
===================================================================
--- usr.sbin/bhyveload/bhyveload.c
+++ usr.sbin/bhyveload/bhyveload.c
@@ -560,6 +560,33 @@
return (vm_set_desc(ctx, vcpu, reg, base, limit, access));
}
+static int
+cb_vm_get_unrestricted_guest(void* arg, int vcpu, int *retval)
+{
+
+ return (vm_get_capability(ctx, vcpu,
+ VM_CAP_UNRESTRICTED_GUEST, retval));
+}
+
+static int
+cb_vm_set_unrestricted_guest(void* arg, int vcpu, int val)
+{
+ int error, tmp;
+
+ if ((error = cb_vm_get_unrestricted_guest(arg, vcpu, &tmp)))
+ return (error);
+
+ return (vm_set_capability(ctx, vcpu,
+ VM_CAP_UNRESTRICTED_GUEST, val));
+}
+
+static int
+cb_vcpu_reset(void* arg, int vcpu)
+{
+
+ return (vcpu_reset(ctx, vcpu));
+}
+
static struct loader_callbacks cb = {
.getc = cb_getc,
.putc = cb_putc,
@@ -593,6 +620,11 @@
/* Version 4 additions */
.vm_set_register = cb_vm_set_register,
.vm_set_desc = cb_vm_set_desc,
+
+ /* Version 5 additions */
+ .vm_set_unrestricted_guest = cb_vm_set_unrestricted_guest,
+ .vm_get_unrestricted_guest = cb_vm_get_unrestricted_guest,
+ .vcpu_reset = cb_vcpu_reset,
};
static int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, May 26, 12:38 PM (10 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33530642
Default Alt Text
D14473.id39622.diff (2 KB)
Attached To
Mode
D14473: userboot: add callbacks to set unrestricted guest mode
Attached
Detach File
Event Timeline
Log In to Comment