Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153147843
D40452.id.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
D40452.id.diff
View Options
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -72,6 +72,7 @@
smbiostbl.c \
sockstream.c \
task_switch.c \
+ tpm_device.c \
uart_emul.c \
usb_emul.c \
usb_mouse.c \
diff --git a/usr.sbin/bhyve/tpm_device.h b/usr.sbin/bhyve/tpm_device.h
new file mode 100644
--- /dev/null
+++ b/usr.sbin/bhyve/tpm_device.h
@@ -0,0 +1,18 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2023 Beckhoff Automation GmbH & Co. KG
+ * Author: Corvin Köhne <corvink@FreeBSD.org>
+ */
+
+#pragma once
+
+#include <vmmapi.h>
+
+#include "config.h"
+
+struct tpm_device;
+
+int tpm_device_create(struct tpm_device **new_dev, struct vmctx *vm_ctx,
+ nvlist_t *nvl);
+void tpm_device_destroy(struct tpm_device *dev);
diff --git a/usr.sbin/bhyve/tpm_device.c b/usr.sbin/bhyve/tpm_device.c
new file mode 100644
--- /dev/null
+++ b/usr.sbin/bhyve/tpm_device.c
@@ -0,0 +1,68 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2023 Beckhoff Automation GmbH & Co. KG
+ * Author: Corvin Köhne <corvink@FreeBSD.org>
+ */
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vmmapi.h>
+
+#include "config.h"
+#include "tpm_device.h"
+
+struct tpm_device {
+ struct vmctx *vm_ctx;
+};
+
+void
+tpm_device_destroy(struct tpm_device *const dev)
+{
+ if (dev == NULL)
+ return;
+
+ free(dev);
+}
+
+int
+tpm_device_create(struct tpm_device **const new_dev, struct vmctx *const vm_ctx,
+ nvlist_t *const nvl)
+{
+ struct tpm_device *dev = NULL;
+ const char *value;
+ int error;
+
+ if (new_dev == NULL || vm_ctx == NULL) {
+ error = EINVAL;
+ goto err_out;
+ }
+
+ value = get_config_value_node(nvl, "version");
+ if (value == NULL || strcmp(value, "2.0")) {
+ warnx("%s: unsupported tpm version %s", __func__, value);
+ error = EINVAL;
+ goto err_out;
+ }
+
+ dev = calloc(1, sizeof(*dev));
+ if (dev == NULL) {
+ error = ENOMEM;
+ goto err_out;
+ }
+
+ dev->vm_ctx = vm_ctx;
+
+ *new_dev = dev;
+
+ return (0);
+
+err_out:
+ tpm_device_destroy(dev);
+
+ return (error);
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 20, 11:41 AM (6 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31836923
Default Alt Text
D40452.id.diff (2 KB)
Attached To
Mode
D40452: bhyve: add basic TPM device
Attached
Detach File
Event Timeline
Log In to Comment