![]() |
|
|||
0001 /* SPDX-License-Identifier: GPL-2.0-only */ 0002 /* 0003 * AMD Secure Encrypted Virtualization (SEV) driver interface 0004 * 0005 * Copyright (C) 2016-2017 Advanced Micro Devices, Inc. 0006 * 0007 * Author: Brijesh Singh <brijesh.singh@amd.com> 0008 * 0009 * SEV API spec is available at https://developer.amd.com/sev 0010 */ 0011 0012 #ifndef __PSP_SEV_H__ 0013 #define __PSP_SEV_H__ 0014 0015 #include <uapi/linux/psp-sev.h> 0016 0017 #ifdef CONFIG_X86 0018 #include <linux/mem_encrypt.h> 0019 0020 #define __psp_pa(x) __sme_pa(x) 0021 #else 0022 #define __psp_pa(x) __pa(x) 0023 #endif 0024 0025 #define SEV_FW_BLOB_MAX_SIZE 0x4000 /* 16KB */ 0026 0027 /** 0028 * SEV platform state 0029 */ 0030 enum sev_state { 0031 SEV_STATE_UNINIT = 0x0, 0032 SEV_STATE_INIT = 0x1, 0033 SEV_STATE_WORKING = 0x2, 0034 0035 SEV_STATE_MAX 0036 }; 0037 0038 /** 0039 * SEV platform and guest management commands 0040 */ 0041 enum sev_cmd { 0042 /* platform commands */ 0043 SEV_CMD_INIT = 0x001, 0044 SEV_CMD_SHUTDOWN = 0x002, 0045 SEV_CMD_FACTORY_RESET = 0x003, 0046 SEV_CMD_PLATFORM_STATUS = 0x004, 0047 SEV_CMD_PEK_GEN = 0x005, 0048 SEV_CMD_PEK_CSR = 0x006, 0049 SEV_CMD_PEK_CERT_IMPORT = 0x007, 0050 SEV_CMD_PDH_CERT_EXPORT = 0x008, 0051 SEV_CMD_PDH_GEN = 0x009, 0052 SEV_CMD_DF_FLUSH = 0x00A, 0053 SEV_CMD_DOWNLOAD_FIRMWARE = 0x00B, 0054 SEV_CMD_GET_ID = 0x00C, 0055 SEV_CMD_INIT_EX = 0x00D, 0056 0057 /* Guest commands */ 0058 SEV_CMD_DECOMMISSION = 0x020, 0059 SEV_CMD_ACTIVATE = 0x021, 0060 SEV_CMD_DEACTIVATE = 0x022, 0061 SEV_CMD_GUEST_STATUS = 0x023, 0062 0063 /* Guest launch commands */ 0064 SEV_CMD_LAUNCH_START = 0x030, 0065 SEV_CMD_LAUNCH_UPDATE_DATA = 0x031, 0066 SEV_CMD_LAUNCH_UPDATE_VMSA = 0x032, 0067 SEV_CMD_LAUNCH_MEASURE = 0x033, 0068 SEV_CMD_LAUNCH_UPDATE_SECRET = 0x034, 0069 SEV_CMD_LAUNCH_FINISH = 0x035, 0070 SEV_CMD_ATTESTATION_REPORT = 0x036, 0071 0072 /* Guest migration commands (outgoing) */ 0073 SEV_CMD_SEND_START = 0x040, 0074 SEV_CMD_SEND_UPDATE_DATA = 0x041, 0075 SEV_CMD_SEND_UPDATE_VMSA = 0x042, 0076 SEV_CMD_SEND_FINISH = 0x043, 0077 SEV_CMD_SEND_CANCEL = 0x044, 0078 0079 /* Guest migration commands (incoming) */ 0080 SEV_CMD_RECEIVE_START = 0x050, 0081 SEV_CMD_RECEIVE_UPDATE_DATA = 0x051, 0082 SEV_CMD_RECEIVE_UPDATE_VMSA = 0x052, 0083 SEV_CMD_RECEIVE_FINISH = 0x053, 0084 0085 /* Guest debug commands */ 0086 SEV_CMD_DBG_DECRYPT = 0x060, 0087 SEV_CMD_DBG_ENCRYPT = 0x061, 0088 0089 SEV_CMD_MAX, 0090 }; 0091 0092 /** 0093 * struct sev_data_init - INIT command parameters 0094 * 0095 * @flags: processing flags 0096 * @tmr_address: system physical address used for SEV-ES 0097 * @tmr_len: len of tmr_address 0098 */ 0099 struct sev_data_init { 0100 u32 flags; /* In */ 0101 u32 reserved; /* In */ 0102 u64 tmr_address; /* In */ 0103 u32 tmr_len; /* In */ 0104 } __packed; 0105 0106 /** 0107 * struct sev_data_init_ex - INIT_EX command parameters 0108 * 0109 * @length: len of the command buffer read by the PSP 0110 * @flags: processing flags 0111 * @tmr_address: system physical address used for SEV-ES 0112 * @tmr_len: len of tmr_address 0113 * @nv_address: system physical address used for PSP NV storage 0114 * @nv_len: len of nv_address 0115 */ 0116 struct sev_data_init_ex { 0117 u32 length; /* In */ 0118 u32 flags; /* In */ 0119 u64 tmr_address; /* In */ 0120 u32 tmr_len; /* In */ 0121 u32 reserved; /* In */ 0122 u64 nv_address; /* In/Out */ 0123 u32 nv_len; /* In */ 0124 } __packed; 0125 0126 #define SEV_INIT_FLAGS_SEV_ES 0x01 0127 0128 /** 0129 * struct sev_data_pek_csr - PEK_CSR command parameters 0130 * 0131 * @address: PEK certificate chain 0132 * @len: len of certificate 0133 */ 0134 struct sev_data_pek_csr { 0135 u64 address; /* In */ 0136 u32 len; /* In/Out */ 0137 } __packed; 0138 0139 /** 0140 * struct sev_data_cert_import - PEK_CERT_IMPORT command parameters 0141 * 0142 * @pek_address: PEK certificate chain 0143 * @pek_len: len of PEK certificate 0144 * @oca_address: OCA certificate chain 0145 * @oca_len: len of OCA certificate 0146 */ 0147 struct sev_data_pek_cert_import { 0148 u64 pek_cert_address; /* In */ 0149 u32 pek_cert_len; /* In */ 0150 u32 reserved; /* In */ 0151 u64 oca_cert_address; /* In */ 0152 u32 oca_cert_len; /* In */ 0153 } __packed; 0154 0155 /** 0156 * struct sev_data_download_firmware - DOWNLOAD_FIRMWARE command parameters 0157 * 0158 * @address: physical address of firmware image 0159 * @len: len of the firmware image 0160 */ 0161 struct sev_data_download_firmware { 0162 u64 address; /* In */ 0163 u32 len; /* In */ 0164 } __packed; 0165 0166 /** 0167 * struct sev_data_get_id - GET_ID command parameters 0168 * 0169 * @address: physical address of region to place unique CPU ID(s) 0170 * @len: len of the region 0171 */ 0172 struct sev_data_get_id { 0173 u64 address; /* In */ 0174 u32 len; /* In/Out */ 0175 } __packed; 0176 /** 0177 * struct sev_data_pdh_cert_export - PDH_CERT_EXPORT command parameters 0178 * 0179 * @pdh_address: PDH certificate address 0180 * @pdh_len: len of PDH certificate 0181 * @cert_chain_address: PDH certificate chain 0182 * @cert_chain_len: len of PDH certificate chain 0183 */ 0184 struct sev_data_pdh_cert_export { 0185 u64 pdh_cert_address; /* In */ 0186 u32 pdh_cert_len; /* In/Out */ 0187 u32 reserved; /* In */ 0188 u64 cert_chain_address; /* In */ 0189 u32 cert_chain_len; /* In/Out */ 0190 } __packed; 0191 0192 /** 0193 * struct sev_data_decommission - DECOMMISSION command parameters 0194 * 0195 * @handle: handle of the VM to decommission 0196 */ 0197 struct sev_data_decommission { 0198 u32 handle; /* In */ 0199 } __packed; 0200 0201 /** 0202 * struct sev_data_activate - ACTIVATE command parameters 0203 * 0204 * @handle: handle of the VM to activate 0205 * @asid: asid assigned to the VM 0206 */ 0207 struct sev_data_activate { 0208 u32 handle; /* In */ 0209 u32 asid; /* In */ 0210 } __packed; 0211 0212 /** 0213 * struct sev_data_deactivate - DEACTIVATE command parameters 0214 * 0215 * @handle: handle of the VM to deactivate 0216 */ 0217 struct sev_data_deactivate { 0218 u32 handle; /* In */ 0219 } __packed; 0220 0221 /** 0222 * struct sev_data_guest_status - SEV GUEST_STATUS command parameters 0223 * 0224 * @handle: handle of the VM to retrieve status 0225 * @policy: policy information for the VM 0226 * @asid: current ASID of the VM 0227 * @state: current state of the VM 0228 */ 0229 struct sev_data_guest_status { 0230 u32 handle; /* In */ 0231 u32 policy; /* Out */ 0232 u32 asid; /* Out */ 0233 u8 state; /* Out */ 0234 } __packed; 0235 0236 /** 0237 * struct sev_data_launch_start - LAUNCH_START command parameters 0238 * 0239 * @handle: handle assigned to the VM 0240 * @policy: guest launch policy 0241 * @dh_cert_address: physical address of DH certificate blob 0242 * @dh_cert_len: len of DH certificate blob 0243 * @session_address: physical address of session parameters 0244 * @session_len: len of session parameters 0245 */ 0246 struct sev_data_launch_start { 0247 u32 handle; /* In/Out */ 0248 u32 policy; /* In */ 0249 u64 dh_cert_address; /* In */ 0250 u32 dh_cert_len; /* In */ 0251 u32 reserved; /* In */ 0252 u64 session_address; /* In */ 0253 u32 session_len; /* In */ 0254 } __packed; 0255 0256 /** 0257 * struct sev_data_launch_update_data - LAUNCH_UPDATE_DATA command parameter 0258 * 0259 * @handle: handle of the VM to update 0260 * @len: len of memory to be encrypted 0261 * @address: physical address of memory region to encrypt 0262 */ 0263 struct sev_data_launch_update_data { 0264 u32 handle; /* In */ 0265 u32 reserved; 0266 u64 address; /* In */ 0267 u32 len; /* In */ 0268 } __packed; 0269 0270 /** 0271 * struct sev_data_launch_update_vmsa - LAUNCH_UPDATE_VMSA command 0272 * 0273 * @handle: handle of the VM 0274 * @address: physical address of memory region to encrypt 0275 * @len: len of memory region to encrypt 0276 */ 0277 struct sev_data_launch_update_vmsa { 0278 u32 handle; /* In */ 0279 u32 reserved; 0280 u64 address; /* In */ 0281 u32 len; /* In */ 0282 } __packed; 0283 0284 /** 0285 * struct sev_data_launch_measure - LAUNCH_MEASURE command parameters 0286 * 0287 * @handle: handle of the VM to process 0288 * @address: physical address containing the measurement blob 0289 * @len: len of measurement blob 0290 */ 0291 struct sev_data_launch_measure { 0292 u32 handle; /* In */ 0293 u32 reserved; 0294 u64 address; /* In */ 0295 u32 len; /* In/Out */ 0296 } __packed; 0297 0298 /** 0299 * struct sev_data_launch_secret - LAUNCH_SECRET command parameters 0300 * 0301 * @handle: handle of the VM to process 0302 * @hdr_address: physical address containing the packet header 0303 * @hdr_len: len of packet header 0304 * @guest_address: system physical address of guest memory region 0305 * @guest_len: len of guest_paddr 0306 * @trans_address: physical address of transport memory buffer 0307 * @trans_len: len of transport memory buffer 0308 */ 0309 struct sev_data_launch_secret { 0310 u32 handle; /* In */ 0311 u32 reserved1; 0312 u64 hdr_address; /* In */ 0313 u32 hdr_len; /* In */ 0314 u32 reserved2; 0315 u64 guest_address; /* In */ 0316 u32 guest_len; /* In */ 0317 u32 reserved3; 0318 u64 trans_address; /* In */ 0319 u32 trans_len; /* In */ 0320 } __packed; 0321 0322 /** 0323 * struct sev_data_launch_finish - LAUNCH_FINISH command parameters 0324 * 0325 * @handle: handle of the VM to process 0326 */ 0327 struct sev_data_launch_finish { 0328 u32 handle; /* In */ 0329 } __packed; 0330 0331 /** 0332 * struct sev_data_send_start - SEND_START command parameters 0333 * 0334 * @handle: handle of the VM to process 0335 * @policy: policy information for the VM 0336 * @pdh_cert_address: physical address containing PDH certificate 0337 * @pdh_cert_len: len of PDH certificate 0338 * @plat_certs_address: physical address containing platform certificate 0339 * @plat_certs_len: len of platform certificate 0340 * @amd_certs_address: physical address containing AMD certificate 0341 * @amd_certs_len: len of AMD certificate 0342 * @session_address: physical address containing Session data 0343 * @session_len: len of session data 0344 */ 0345 struct sev_data_send_start { 0346 u32 handle; /* In */ 0347 u32 policy; /* Out */ 0348 u64 pdh_cert_address; /* In */ 0349 u32 pdh_cert_len; /* In */ 0350 u32 reserved1; 0351 u64 plat_certs_address; /* In */ 0352 u32 plat_certs_len; /* In */ 0353 u32 reserved2; 0354 u64 amd_certs_address; /* In */ 0355 u32 amd_certs_len; /* In */ 0356 u32 reserved3; 0357 u64 session_address; /* In */ 0358 u32 session_len; /* In/Out */ 0359 } __packed; 0360 0361 /** 0362 * struct sev_data_send_update - SEND_UPDATE_DATA command 0363 * 0364 * @handle: handle of the VM to process 0365 * @hdr_address: physical address containing packet header 0366 * @hdr_len: len of packet header 0367 * @guest_address: physical address of guest memory region to send 0368 * @guest_len: len of guest memory region to send 0369 * @trans_address: physical address of host memory region 0370 * @trans_len: len of host memory region 0371 */ 0372 struct sev_data_send_update_data { 0373 u32 handle; /* In */ 0374 u32 reserved1; 0375 u64 hdr_address; /* In */ 0376 u32 hdr_len; /* In/Out */ 0377 u32 reserved2; 0378 u64 guest_address; /* In */ 0379 u32 guest_len; /* In */ 0380 u32 reserved3; 0381 u64 trans_address; /* In */ 0382 u32 trans_len; /* In */ 0383 } __packed; 0384 0385 /** 0386 * struct sev_data_send_update - SEND_UPDATE_VMSA command 0387 * 0388 * @handle: handle of the VM to process 0389 * @hdr_address: physical address containing packet header 0390 * @hdr_len: len of packet header 0391 * @guest_address: physical address of guest memory region to send 0392 * @guest_len: len of guest memory region to send 0393 * @trans_address: physical address of host memory region 0394 * @trans_len: len of host memory region 0395 */ 0396 struct sev_data_send_update_vmsa { 0397 u32 handle; /* In */ 0398 u64 hdr_address; /* In */ 0399 u32 hdr_len; /* In/Out */ 0400 u32 reserved2; 0401 u64 guest_address; /* In */ 0402 u32 guest_len; /* In */ 0403 u32 reserved3; 0404 u64 trans_address; /* In */ 0405 u32 trans_len; /* In */ 0406 } __packed; 0407 0408 /** 0409 * struct sev_data_send_finish - SEND_FINISH command parameters 0410 * 0411 * @handle: handle of the VM to process 0412 */ 0413 struct sev_data_send_finish { 0414 u32 handle; /* In */ 0415 } __packed; 0416 0417 /** 0418 * struct sev_data_send_cancel - SEND_CANCEL command parameters 0419 * 0420 * @handle: handle of the VM to process 0421 */ 0422 struct sev_data_send_cancel { 0423 u32 handle; /* In */ 0424 } __packed; 0425 0426 /** 0427 * struct sev_data_receive_start - RECEIVE_START command parameters 0428 * 0429 * @handle: handle of the VM to perform receive operation 0430 * @pdh_cert_address: system physical address containing PDH certificate blob 0431 * @pdh_cert_len: len of PDH certificate blob 0432 * @session_address: system physical address containing session blob 0433 * @session_len: len of session blob 0434 */ 0435 struct sev_data_receive_start { 0436 u32 handle; /* In/Out */ 0437 u32 policy; /* In */ 0438 u64 pdh_cert_address; /* In */ 0439 u32 pdh_cert_len; /* In */ 0440 u32 reserved1; 0441 u64 session_address; /* In */ 0442 u32 session_len; /* In */ 0443 } __packed; 0444 0445 /** 0446 * struct sev_data_receive_update_data - RECEIVE_UPDATE_DATA command parameters 0447 * 0448 * @handle: handle of the VM to update 0449 * @hdr_address: physical address containing packet header blob 0450 * @hdr_len: len of packet header 0451 * @guest_address: system physical address of guest memory region 0452 * @guest_len: len of guest memory region 0453 * @trans_address: system physical address of transport buffer 0454 * @trans_len: len of transport buffer 0455 */ 0456 struct sev_data_receive_update_data { 0457 u32 handle; /* In */ 0458 u32 reserved1; 0459 u64 hdr_address; /* In */ 0460 u32 hdr_len; /* In */ 0461 u32 reserved2; 0462 u64 guest_address; /* In */ 0463 u32 guest_len; /* In */ 0464 u32 reserved3; 0465 u64 trans_address; /* In */ 0466 u32 trans_len; /* In */ 0467 } __packed; 0468 0469 /** 0470 * struct sev_data_receive_update_vmsa - RECEIVE_UPDATE_VMSA command parameters 0471 * 0472 * @handle: handle of the VM to update 0473 * @hdr_address: physical address containing packet header blob 0474 * @hdr_len: len of packet header 0475 * @guest_address: system physical address of guest memory region 0476 * @guest_len: len of guest memory region 0477 * @trans_address: system physical address of transport buffer 0478 * @trans_len: len of transport buffer 0479 */ 0480 struct sev_data_receive_update_vmsa { 0481 u32 handle; /* In */ 0482 u32 reserved1; 0483 u64 hdr_address; /* In */ 0484 u32 hdr_len; /* In */ 0485 u32 reserved2; 0486 u64 guest_address; /* In */ 0487 u32 guest_len; /* In */ 0488 u32 reserved3; 0489 u64 trans_address; /* In */ 0490 u32 trans_len; /* In */ 0491 } __packed; 0492 0493 /** 0494 * struct sev_data_receive_finish - RECEIVE_FINISH command parameters 0495 * 0496 * @handle: handle of the VM to finish 0497 */ 0498 struct sev_data_receive_finish { 0499 u32 handle; /* In */ 0500 } __packed; 0501 0502 /** 0503 * struct sev_data_dbg - DBG_ENCRYPT/DBG_DECRYPT command parameters 0504 * 0505 * @handle: handle of the VM to perform debug operation 0506 * @src_addr: source address of data to operate on 0507 * @dst_addr: destination address of data to operate on 0508 * @len: len of data to operate on 0509 */ 0510 struct sev_data_dbg { 0511 u32 handle; /* In */ 0512 u32 reserved; 0513 u64 src_addr; /* In */ 0514 u64 dst_addr; /* In */ 0515 u32 len; /* In */ 0516 } __packed; 0517 0518 /** 0519 * struct sev_data_attestation_report - SEV_ATTESTATION_REPORT command parameters 0520 * 0521 * @handle: handle of the VM 0522 * @mnonce: a random nonce that will be included in the report. 0523 * @address: physical address where the report will be copied. 0524 * @len: length of the physical buffer. 0525 */ 0526 struct sev_data_attestation_report { 0527 u32 handle; /* In */ 0528 u32 reserved; 0529 u64 address; /* In */ 0530 u8 mnonce[16]; /* In */ 0531 u32 len; /* In/Out */ 0532 } __packed; 0533 0534 #ifdef CONFIG_CRYPTO_DEV_SP_PSP 0535 0536 /** 0537 * sev_platform_init - perform SEV INIT command 0538 * 0539 * @error: SEV command return code 0540 * 0541 * Returns: 0542 * 0 if the SEV successfully processed the command 0543 * -%ENODEV if the SEV device is not available 0544 * -%ENOTSUPP if the SEV does not support SEV 0545 * -%ETIMEDOUT if the SEV command timed out 0546 * -%EIO if the SEV returned a non-zero return code 0547 */ 0548 int sev_platform_init(int *error); 0549 0550 /** 0551 * sev_platform_status - perform SEV PLATFORM_STATUS command 0552 * 0553 * @status: sev_user_data_status structure to be processed 0554 * @error: SEV command return code 0555 * 0556 * Returns: 0557 * 0 if the SEV successfully processed the command 0558 * -%ENODEV if the SEV device is not available 0559 * -%ENOTSUPP if the SEV does not support SEV 0560 * -%ETIMEDOUT if the SEV command timed out 0561 * -%EIO if the SEV returned a non-zero return code 0562 */ 0563 int sev_platform_status(struct sev_user_data_status *status, int *error); 0564 0565 /** 0566 * sev_issue_cmd_external_user - issue SEV command by other driver with a file 0567 * handle. 0568 * 0569 * This function can be used by other drivers to issue a SEV command on 0570 * behalf of userspace. The caller must pass a valid SEV file descriptor 0571 * so that we know that it has access to SEV device. 0572 * 0573 * @filep - SEV device file pointer 0574 * @cmd - command to issue 0575 * @data - command buffer 0576 * @error: SEV command return code 0577 * 0578 * Returns: 0579 * 0 if the SEV successfully processed the command 0580 * -%ENODEV if the SEV device is not available 0581 * -%ENOTSUPP if the SEV does not support SEV 0582 * -%ETIMEDOUT if the SEV command timed out 0583 * -%EIO if the SEV returned a non-zero return code 0584 * -%EINVAL if the SEV file descriptor is not valid 0585 */ 0586 int sev_issue_cmd_external_user(struct file *filep, unsigned int id, 0587 void *data, int *error); 0588 0589 /** 0590 * sev_guest_deactivate - perform SEV DEACTIVATE command 0591 * 0592 * @deactivate: sev_data_deactivate structure to be processed 0593 * @sev_ret: sev command return code 0594 * 0595 * Returns: 0596 * 0 if the sev successfully processed the command 0597 * -%ENODEV if the sev device is not available 0598 * -%ENOTSUPP if the sev does not support SEV 0599 * -%ETIMEDOUT if the sev command timed out 0600 * -%EIO if the sev returned a non-zero return code 0601 */ 0602 int sev_guest_deactivate(struct sev_data_deactivate *data, int *error); 0603 0604 /** 0605 * sev_guest_activate - perform SEV ACTIVATE command 0606 * 0607 * @activate: sev_data_activate structure to be processed 0608 * @sev_ret: sev command return code 0609 * 0610 * Returns: 0611 * 0 if the sev successfully processed the command 0612 * -%ENODEV if the sev device is not available 0613 * -%ENOTSUPP if the sev does not support SEV 0614 * -%ETIMEDOUT if the sev command timed out 0615 * -%EIO if the sev returned a non-zero return code 0616 */ 0617 int sev_guest_activate(struct sev_data_activate *data, int *error); 0618 0619 /** 0620 * sev_guest_df_flush - perform SEV DF_FLUSH command 0621 * 0622 * @sev_ret: sev command return code 0623 * 0624 * Returns: 0625 * 0 if the sev successfully processed the command 0626 * -%ENODEV if the sev device is not available 0627 * -%ENOTSUPP if the sev does not support SEV 0628 * -%ETIMEDOUT if the sev command timed out 0629 * -%EIO if the sev returned a non-zero return code 0630 */ 0631 int sev_guest_df_flush(int *error); 0632 0633 /** 0634 * sev_guest_decommission - perform SEV DECOMMISSION command 0635 * 0636 * @decommission: sev_data_decommission structure to be processed 0637 * @sev_ret: sev command return code 0638 * 0639 * Returns: 0640 * 0 if the sev successfully processed the command 0641 * -%ENODEV if the sev device is not available 0642 * -%ENOTSUPP if the sev does not support SEV 0643 * -%ETIMEDOUT if the sev command timed out 0644 * -%EIO if the sev returned a non-zero return code 0645 */ 0646 int sev_guest_decommission(struct sev_data_decommission *data, int *error); 0647 0648 void *psp_copy_user_blob(u64 uaddr, u32 len); 0649 0650 #else /* !CONFIG_CRYPTO_DEV_SP_PSP */ 0651 0652 static inline int 0653 sev_platform_status(struct sev_user_data_status *status, int *error) { return -ENODEV; } 0654 0655 static inline int sev_platform_init(int *error) { return -ENODEV; } 0656 0657 static inline int 0658 sev_guest_deactivate(struct sev_data_deactivate *data, int *error) { return -ENODEV; } 0659 0660 static inline int 0661 sev_guest_decommission(struct sev_data_decommission *data, int *error) { return -ENODEV; } 0662 0663 static inline int 0664 sev_guest_activate(struct sev_data_activate *data, int *error) { return -ENODEV; } 0665 0666 static inline int sev_guest_df_flush(int *error) { return -ENODEV; } 0667 0668 static inline int 0669 sev_issue_cmd_external_user(struct file *filep, unsigned int id, void *data, int *error) { return -ENODEV; } 0670 0671 static inline void *psp_copy_user_blob(u64 __user uaddr, u32 len) { return ERR_PTR(-EINVAL); } 0672 0673 #endif /* CONFIG_CRYPTO_DEV_SP_PSP */ 0674 0675 #endif /* __PSP_SEV_H__ */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |