summaryrefslogtreecommitdiff
path: root/sys/dev/ic/ccpvar.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/ccpvar.h')
-rw-r--r--sys/dev/ic/ccpvar.h249
1 files changed, 2 insertions, 247 deletions
diff --git a/sys/dev/ic/ccpvar.h b/sys/dev/ic/ccpvar.h
index 7add1e0a46e..59fb2e9e613 100644
--- a/sys/dev/ic/ccpvar.h
+++ b/sys/dev/ic/ccpvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ccpvar.h,v 1.4 2024/09/01 19:25:06 bluhm Exp $ */
+/* $OpenBSD: ccpvar.h,v 1.5 2024/09/03 00:23:05 jsg Exp $ */
/*
* Copyright (c) 2018 David Gwynne <dlg@openbsd.org>
@@ -18,6 +18,7 @@
*/
#include <sys/timeout.h>
+#include <sys/rwlock.h>
struct ccp_softc {
struct device sc_dev;
@@ -28,7 +29,6 @@ struct ccp_softc {
int sc_psp_attached;
-#ifdef __amd64__
bus_dma_tag_t sc_dmat;
uint32_t sc_capabilities;
int (*sc_sev_intr)(struct ccp_softc *, uint32_t);
@@ -45,251 +45,6 @@ struct ccp_softc {
caddr_t sc_tmr_kva;
struct rwlock sc_lock;
-#endif
};
-#ifdef __amd64__
-
-#include <sys/ioctl.h>
-#include <sys/rwlock.h>
-
-/* AMD 17h */
-#define PSP_REG_INTEN 0x10690
-#define PSP_REG_INTSTS 0x10694
-#define PSP_REG_CMDRESP 0x10980
-#define PSP_REG_ADDRLO 0x109e0
-#define PSP_REG_ADDRHI 0x109e4
-#define PSP_REG_CAPABILITIES 0x109fc
-
-#define PSP_PSTATE_UNINIT 0x0
-#define PSP_PSTATE_INIT 0x1
-#define PSP_PSTATE_WORKING 0x2
-
-#define PSP_GSTATE_UNINIT 0x0
-#define PSP_GSTATE_LUPDATE 0x1
-#define PSP_GSTATE_LSECRET 0x2
-#define PSP_GSTATE_RUNNING 0x3
-#define PSP_GSTATE_SUPDATE 0x4
-#define PSP_GSTATE_RUPDATE 0x5
-#define PSP_GSTATE_SENT 0x6
-
-#define PSP_CAP_SEV (1 << 0)
-#define PSP_CAP_TEE (1 << 1)
-#define PSP_CAP_DBC_THRU_EXT (1 << 2)
-#define PSP_CAP_SECURITY_REPORTING (1 << 7)
-#define PSP_CAP_SECURITY_FUSED_PART (1 << 8)
-#define PSP_CAP_SECURITY_DEBUG_LOCK_ON (1 << 10)
-#define PSP_CAP_SECURITY_TSME_STATUS (1 << 13)
-#define PSP_CAP_SECURITY_ANTI_ROLLBACK_STATUS (1 << 15)
-#define PSP_CAP_SECURITY_RPMC_PRODUCTION_ENABLED (1 << 16)
-#define PSP_CAP_SECURITY_RPMC_SPIROM_AVAILABLE (1 << 17)
-#define PSP_CAP_SECURITY_HSP_TPM_AVAILABLE (1 << 18)
-#define PSP_CAP_SECURITY_ROM_ARMOR_ENFORCED (1 << 19)
-
-#define PSP_CAP_BITS "\20\001SEV\002TEE\003DBC_THRU_EXT\010REPORTING\011FUSED_PART\013DEBUG_LOCK_ON\016TSME_STATUS\020ANTI_ROLLBACK_STATUS\021RPMC_PRODUCTION_ENABLED\022RPMC_SPIROM_AVAILABLE\023HSP_TPM_AVAILABLE\024ROM_ARMOR_ENFORCED"
-
-#define PSP_CMDRESP_IOC (1 << 0)
-#define PSP_CMDRESP_COMPLETE (1 << 1)
-#define PSP_CMDRESP_RESPONSE (1 << 31)
-
-#define PSP_STATUS_MASK 0xffff
-#define PSP_STATUS_SUCCESS 0x0000
-#define PSP_STATUS_INVALID_PLATFORM_STATE 0x0001
-
-#define PSP_TMR_SIZE (1024*1024) /* 1 Mb */
-
-#define PSP_SUCCESS 0x0000
-#define PSP_INVALID_ADDRESS 0x0009
-
-/* Selection of PSP commands of the SEV API Version 0.24 */
-
-#define PSP_CMD_INIT 0x1
-#define PSP_CMD_PLATFORMSTATUS 0x4
-#define PSP_CMD_DF_FLUSH 0xa
-#define PSP_CMD_DECOMMISSION 0x20
-#define PSP_CMD_ACTIVATE 0x21
-#define PSP_CMD_DEACTIVATE 0x22
-#define PSP_CMD_GUESTSTATUS 0x23
-#define PSP_CMD_LAUNCH_START 0x30
-#define PSP_CMD_LAUNCH_UPDATE_DATA 0x31
-#define PSP_CMD_LAUNCH_MEASURE 0x33
-#define PSP_CMD_LAUNCH_FINISH 0x35
-#define PSP_CMD_ATTESTATION 0x36
-
-struct psp_platform_status {
- /* Output parameters from PSP_CMD_PLATFORMSTATUS */
- uint8_t api_major;
- uint8_t api_minor;
- uint8_t state;
- uint8_t owner;
- uint32_t cfges_build;
- uint32_t guest_count;
-} __packed;
-
-struct psp_guest_status {
- /* Input parameter for PSP_CMD_GUESTSTATUS */
- uint32_t handle;
-
- /* Output parameters from PSP_CMD_GUESTSTATUS */
- uint32_t policy;
- uint32_t asid;
- uint8_t state;
-} __packed;
-
-struct psp_launch_start {
- /* Input/Output parameter for PSP_CMD_LAUNCH_START */
- uint32_t handle;
-
- /* Input parameters for PSP_CMD_LAUNCH_START */
- uint32_t policy;
-
- /* The following input parameters are not used yet */
- uint64_t dh_cert_paddr;
- uint32_t dh_cert_len;
- uint32_t reserved;
- uint64_t session_paddr;
- uint32_t session_len;
-} __packed;
-
-struct psp_launch_update_data {
- /* Input parameters for PSP_CMD_LAUNCH_UPDATE_DATA */
- uint32_t handle;
- uint32_t reserved;
- uint64_t paddr;
- uint32_t length;
-} __packed;
-
-struct psp_measure {
- /* Output buffer for PSP_CMD_LAUNCH_MEASURE */
- uint8_t measure[32];
- uint8_t measure_nonce[16];
-} __packed;
-
-struct psp_launch_measure {
- /* Input parameters for PSP_CMD_LAUNCH_MEASURE */
- uint32_t handle;
- uint32_t reserved;
- uint64_t measure_paddr;
-
- /* Input/output parameter for PSP_CMD_LAUNCH_MEASURE */
- uint32_t measure_len;
- uint32_t padding;
-
- /* Output buffer from PSP_CMD_LAUNCH_MEASURE */
- struct psp_measure psp_measure; /* 64bit aligned */
-#define measure psp_measure.measure
-#define measure_nonce psp_measure.measure_nonce
-} __packed;
-
-struct psp_launch_finish {
- /* Input parameter for PSP_CMD_LAUNCH_FINISH */
- uint32_t handle;
-} __packed;
-
-struct psp_report {
- /* Output buffer for PSP_CMD_ATTESTATION */
- uint8_t report_nonce[16];
- uint8_t report_launch_digest[32];
- uint32_t report_policy;
- uint32_t report_sig_usage;
- uint32_t report_sig_algo;
- uint32_t reserved2;
- uint8_t report_sig1[144];
-} __packed;
-
-struct psp_attestation {
- /* Input parameters for PSP_CMD_ATTESTATION */
- uint32_t handle;
- uint32_t reserved;
- uint64_t attest_paddr;
- uint8_t attest_nonce[16];
-
- /* Input/output parameter from PSP_CMD_ATTESTATION */
- uint32_t attest_len;
- uint32_t padding;
-
- /* Output parameter from PSP_CMD_ATTESTATION */
- struct psp_report psp_report; /* 64bit aligned */
-#define report_nonce psp_report.report_nonce
-#define report_launch_digest psp_report.report_launch_digest
-#define report_policy psp_report.report_policy
-#define report_sig_usage psp_report.report_sig_usage;
-#define report_report_sig_alg psp_report.report_sig_algo;
-#define report_report_sig1 psp_report.report_sig1;
-} __packed;
-
-struct psp_activate {
- /* Input parameters for PSP_CMD_ACTIVATE */
- uint32_t handle;
- uint32_t asid;
-} __packed;
-
-struct psp_deactivate {
- /* Input parameter for PSP_CMD_DEACTIVATE */
- uint32_t handle;
-} __packed;
-
-struct psp_decommission {
- /* Input parameter for PSP_CMD_DECOMMISSION */
- uint32_t handle;
-} __packed;
-
-struct psp_init {
- /* Output parameters from PSP_CMD_INIT */
- uint32_t enable_es;
- uint32_t reserved;
- uint64_t tmr_paddr;
- uint32_t tmr_length;
-} __packed;
-
-
-struct psp_guest_shutdown {
- /* Input parameter for PSP_CMD_GUEST_SHUTDOWN */
- uint32_t handle;
-} __packed;
-
-/* Selection of PSP commands of the SEV-SNP ABI Version 1.55 */
-
-#define PSP_CMD_SNP_PLATFORMSTATUS 0x81
-
-struct psp_snp_platform_status {
- uint8_t api_major;
- uint8_t api_minor;
- uint8_t state;
- uint8_t is_rmp_init;
- uint32_t build;
- uint32_t features;
- uint32_t guest_count;
- uint64_t current_tcb;
- uint64_t reported_tcb;
-} __packed;
-
-#define PSP_IOC_GET_PSTATUS _IOR('P', 0, struct psp_platform_status)
-#define PSP_IOC_DF_FLUSH _IO('P', 1)
-#define PSP_IOC_DECOMMISSION _IOW('P', 2, struct psp_decommission)
-#define PSP_IOC_GET_GSTATUS _IOWR('P', 3, struct psp_guest_status)
-#define PSP_IOC_LAUNCH_START _IOWR('P', 4, struct psp_launch_start)
-#define PSP_IOC_LAUNCH_UPDATE_DATA \
- _IOW('P', 5, struct psp_launch_update_data)
-#define PSP_IOC_LAUNCH_MEASURE _IOWR('P', 6, struct psp_launch_measure)
-#define PSP_IOC_LAUNCH_FINISH _IOW('P', 7, struct psp_launch_finish)
-#define PSP_IOC_ATTESTATION _IOWR('P', 8, struct psp_attestation)
-#define PSP_IOC_ACTIVATE _IOW('P', 9, struct psp_activate)
-#define PSP_IOC_DEACTIVATE _IOW('P', 10, struct psp_deactivate)
-#define PSP_IOC_SNP_GET_PSTATUS _IOR('P', 11, struct psp_snp_platform_status)
-#define PSP_IOC_GUEST_SHUTDOWN _IOW('P', 255, struct psp_guest_shutdown)
-#endif /* __amd64__ */
-
-#ifdef _KERNEL
-
void ccp_attach(struct ccp_softc *);
-
-#ifdef __amd64__
-int psp_attach(struct ccp_softc *);
-
-int pspclose(dev_t, int, int, struct proc *);
-int pspopen(dev_t, int, int, struct proc *);
-int pspioctl(dev_t, u_long, caddr_t, int, struct proc *);
-#endif
-
-#endif /* _KERNEL */