Lines Matching refs:data
74 static void sev_irq_handler(int irq, void *data, unsigned int status)
76 struct sev_device *sev = data;
153 static int __sev_do_cmd_locked(int cmd, void *data, int *psp_ret)
170 if (WARN_ON_ONCE(!data != !buf_len))
174 * Copy the incoming data to driver's scratch buffer as __pa() will not
175 * work for some memory, e.g. vmalloc'd addresses, and @data may not be
178 if (data)
179 memcpy(sev->cmd_buf, data, buf_len);
182 phys_lsb = data ? lower_32_bits(__psp_pa(sev->cmd_buf)) : 0;
183 phys_msb = data ? upper_32_bits(__psp_pa(sev->cmd_buf)) : 0;
188 print_hex_dump_debug("(in): ", DUMP_PREFIX_OFFSET, 16, 2, data,
224 print_hex_dump_debug("(out): ", DUMP_PREFIX_OFFSET, 16, 2, data,
228 * Copy potential output from the PSP back to data. Do this even on
231 if (data)
232 memcpy(data, sev->cmd_buf, buf_len);
237 static int sev_do_cmd(int cmd, void *data, int *psp_ret)
242 rc = __sev_do_cmd_locked(cmd, data, psp_ret);
342 struct sev_user_data_status data;
345 rc = __sev_do_cmd_locked(SEV_CMD_PLATFORM_STATUS, &data, error);
349 *state = data.state;
387 struct sev_user_data_status data;
390 memset(&data, 0, sizeof(data));
392 ret = __sev_do_cmd_locked(SEV_CMD_PLATFORM_STATUS, &data, &argp->error);
396 if (copy_to_user((void __user *)argp->data, &data, sizeof(data)))
423 struct sev_data_pek_csr data;
431 if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
434 memset(&data, 0, sizeof(data));
449 data.address = __psp_pa(blob);
450 data.len = input.length;
459 ret = __sev_do_cmd_locked(SEV_CMD_PEK_CSR, &data, &argp->error);
461 /* If we query the CSR length, FW responded with expected data. */
462 input.length = data.len;
464 if (copy_to_user((void __user *)argp->data, &input, sizeof(input))) {
551 struct sev_data_download_firmware *data;
566 * FW. Allocate enough memory for data structure + alignment
579 * Copy firmware data to a kernel allocated contiguous
582 data = page_address(p);
583 memcpy(page_address(p) + data_size, firmware->data, firmware->size);
585 data->address = __psp_pa(page_address(p) + data_size);
586 data->len = firmware->size;
588 ret = sev_do_cmd(SEV_CMD_DOWNLOAD_FIRMWARE, data, &error);
606 struct sev_data_pek_cert_import data;
613 if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
621 data.reserved = 0;
622 data.pek_cert_address = __psp_pa(pek_blob);
623 data.pek_cert_len = input.pek_cert_len;
632 data.oca_cert_address = __psp_pa(oca_blob);
633 data.oca_cert_len = input.oca_cert_len;
642 ret = __sev_do_cmd_locked(SEV_CMD_PEK_CERT_IMPORT, &data, &argp->error);
654 struct sev_data_get_id data;
663 if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
680 data.address = __psp_pa(id_blob);
681 data.len = input.length;
683 data.address = 0;
684 data.len = 0;
687 ret = __sev_do_cmd_locked(SEV_CMD_GET_ID, &data, &argp->error);
693 input.length = data.len;
695 if (copy_to_user((void __user *)argp->data, &input, sizeof(input))) {
701 if (copy_to_user(input_address, id_blob, data.len)) {
715 struct sev_data_get_id *data;
726 * hold data structure + alignment padding + memory
736 data = mem;
739 data->address = __psp_pa(id_blob);
740 data->len = user_size;
742 ret = __sev_do_cmd_locked(SEV_CMD_GET_ID, data, &argp->error);
744 if (copy_to_user((void __user *)argp->data, id_blob, data->len))
758 struct sev_data_pdh_cert_export data;
773 if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
776 memset(&data, 0, sizeof(data));
799 data.pdh_cert_address = __psp_pa(pdh_blob);
800 data.pdh_cert_len = input.pdh_cert_len;
808 data.cert_chain_address = __psp_pa(cert_blob);
809 data.cert_chain_len = input.cert_chain_len;
812 ret = __sev_do_cmd_locked(SEV_CMD_PDH_CERT_EXPORT, &data, &argp->error);
814 /* If we query the length, FW responded with expected data. */
815 input.cert_chain_len = data.cert_chain_len;
816 input.pdh_cert_len = data.pdh_cert_len;
818 if (copy_to_user((void __user *)argp->data, &input, sizeof(input))) {
913 int sev_platform_status(struct sev_user_data_status *data, int *error)
915 return sev_do_cmd(SEV_CMD_PLATFORM_STATUS, data, error);
919 int sev_guest_deactivate(struct sev_data_deactivate *data, int *error)
921 return sev_do_cmd(SEV_CMD_DEACTIVATE, data, error);
925 int sev_guest_activate(struct sev_data_activate *data, int *error)
927 return sev_do_cmd(SEV_CMD_ACTIVATE, data, error);
931 int sev_guest_decommission(struct sev_data_decommission *data, int *error)
933 return sev_do_cmd(SEV_CMD_DECOMMISSION, data, error);
1014 dev_err(dev, "sev: missing driver data\n");
1072 void *data, int *error)
1077 return sev_do_cmd(cmd, data, error);
1113 * validation of SEV related persistent data has