mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
bhyve: add basic TPM device
Add an empty TPM device struct which will be used for TPM emulation in subsequent commits. Reviewed by: markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D40452
This commit is contained in:
parent
4e46ab0ebe
commit
d5edf13d01
|
@ -72,6 +72,7 @@ SRCS= \
|
|||
smbiostbl.c \
|
||||
sockstream.c \
|
||||
task_switch.c \
|
||||
tpm_device.c \
|
||||
uart_emul.c \
|
||||
usb_emul.c \
|
||||
usb_mouse.c \
|
||||
|
|
68
usr.sbin/bhyve/tpm_device.c
Normal file
68
usr.sbin/bhyve/tpm_device.c
Normal file
|
@ -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);
|
||||
}
|
18
usr.sbin/bhyve/tpm_device.h
Normal file
18
usr.sbin/bhyve/tpm_device.h
Normal file
|
@ -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);
|
Loading…
Reference in a new issue