Lines Matching refs:sev
81 struct sev_device *sev = psp_master->sev_data; in sev_version_greater_or_equal() local
83 if (sev->api_major > maj) in sev_version_greater_or_equal()
86 if (sev->api_major == maj && sev->api_minor >= min) in sev_version_greater_or_equal()
94 struct sev_device *sev = data; in sev_irq_handler() local
102 reg = ioread32(sev->io_regs + sev->vdata->cmdresp_reg); in sev_irq_handler()
104 sev->int_rcvd = 1; in sev_irq_handler()
105 wake_up(&sev->int_queue); in sev_irq_handler()
109 static int sev_wait_cmd_ioc(struct sev_device *sev, in sev_wait_cmd_ioc() argument
114 ret = wait_event_timeout(sev->int_queue, in sev_wait_cmd_ioc()
115 sev->int_rcvd, timeout * HZ); in sev_wait_cmd_ioc()
119 *reg = ioread32(sev->io_regs + sev->vdata->cmdresp_reg); in sev_wait_cmd_ioc()
201 struct sev_device *sev = psp_master->sev_data; in sev_read_init_ex_file() local
215 dev_info(sev->dev, in sev_read_init_ex_file()
220 dev_err(sev->dev, in sev_read_init_ex_file()
229 dev_info(sev->dev, in sev_read_init_ex_file()
234 dev_dbg(sev->dev, "SEV: read %ld bytes from NV file\n", nread); in sev_read_init_ex_file()
242 struct sev_device *sev = psp_master->sev_data; in sev_write_init_ex_file() local
256 dev_err(sev->dev, in sev_write_init_ex_file()
267 dev_err(sev->dev, in sev_write_init_ex_file()
273 dev_dbg(sev->dev, "SEV: write successful to NV file\n"); in sev_write_init_ex_file()
307 struct sev_device *sev; in __sev_do_cmd_locked() local
318 sev = psp->sev_data; in __sev_do_cmd_locked()
330 memcpy(sev->cmd_buf, data, buf_len); in __sev_do_cmd_locked()
333 phys_lsb = data ? lower_32_bits(__psp_pa(sev->cmd_buf)) : 0; in __sev_do_cmd_locked()
334 phys_msb = data ? upper_32_bits(__psp_pa(sev->cmd_buf)) : 0; in __sev_do_cmd_locked()
336 dev_dbg(sev->dev, "sev command id %#x buffer 0x%08x%08x timeout %us\n", in __sev_do_cmd_locked()
342 iowrite32(phys_lsb, sev->io_regs + sev->vdata->cmdbuff_addr_lo_reg); in __sev_do_cmd_locked()
343 iowrite32(phys_msb, sev->io_regs + sev->vdata->cmdbuff_addr_hi_reg); in __sev_do_cmd_locked()
345 sev->int_rcvd = 0; in __sev_do_cmd_locked()
350 iowrite32(reg, sev->io_regs + sev->vdata->cmdresp_reg); in __sev_do_cmd_locked()
353 ret = sev_wait_cmd_ioc(sev, ®, psp_timeout); in __sev_do_cmd_locked()
358 dev_err(sev->dev, "sev command %#x timed out, disabling PSP\n", cmd); in __sev_do_cmd_locked()
370 dev_dbg(sev->dev, "sev command %#x failed (%#010x)\n", in __sev_do_cmd_locked()
385 memcpy(data, sev->cmd_buf, buf_len); in __sev_do_cmd_locked()
446 struct sev_device *sev; in __sev_platform_init_locked() local
453 sev = psp->sev_data; in __sev_platform_init_locked()
455 if (sev->state == SEV_STATE_INIT) in __sev_platform_init_locked()
476 …dev_err(sev->dev, "SEV: retrying INIT command because of SECURE_DATA_INVALID error. Retrying once … in __sev_platform_init_locked()
485 sev->state = SEV_STATE_INIT; in __sev_platform_init_locked()
493 dev_dbg(sev->dev, "SEV firmware initialized\n"); in __sev_platform_init_locked()
495 dev_info(sev->dev, "SEV API:%d.%d build:%d\n", sev->api_major, in __sev_platform_init_locked()
496 sev->api_minor, sev->build); in __sev_platform_init_locked()
515 struct sev_device *sev = psp_master->sev_data; in __sev_platform_shutdown_locked() local
518 if (!sev || sev->state == SEV_STATE_UNINIT) in __sev_platform_shutdown_locked()
525 sev->state = SEV_STATE_UNINIT; in __sev_platform_shutdown_locked()
526 dev_dbg(sev->dev, "SEV firmware shutdown\n"); in __sev_platform_shutdown_locked()
606 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_pdh_gen() local
612 if (sev->state == SEV_STATE_UNINIT) { in sev_ioctl_do_pek_pdh_gen()
623 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_csr() local
655 if (sev->state == SEV_STATE_UNINIT) { in sev_ioctl_do_pek_csr()
696 struct sev_device *sev = psp_master->sev_data; in sev_get_api_version() local
702 dev_err(sev->dev, in sev_get_api_version()
707 sev->api_major = status.api_major; in sev_get_api_version()
708 sev->api_minor = status.api_minor; in sev_get_api_version()
709 sev->build = status.build; in sev_get_api_version()
710 sev->state = status.state; in sev_get_api_version()
819 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_import() local
851 if (sev->state != SEV_STATE_INIT) { in sev_ioctl_do_pek_import()
963 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pdh_export() local
972 if (sev->state != SEV_STATE_INIT) { in sev_ioctl_do_pdh_export()
1158 static int sev_misc_init(struct sev_device *sev) in sev_misc_init() argument
1160 struct device *dev = sev->dev; in sev_misc_init()
1191 init_waitqueue_head(&sev->int_queue); in sev_misc_init()
1192 sev->misc = misc_dev; in sev_misc_init()
1201 struct sev_device *sev; in sev_dev_init() local
1209 sev = devm_kzalloc(dev, sizeof(*sev), GFP_KERNEL); in sev_dev_init()
1210 if (!sev) in sev_dev_init()
1213 sev->cmd_buf = (void *)devm_get_free_pages(dev, GFP_KERNEL, 0); in sev_dev_init()
1214 if (!sev->cmd_buf) in sev_dev_init()
1217 psp->sev_data = sev; in sev_dev_init()
1219 sev->dev = dev; in sev_dev_init()
1220 sev->psp = psp; in sev_dev_init()
1222 sev->io_regs = psp->io_regs; in sev_dev_init()
1224 sev->vdata = (struct sev_vdata *)psp->vdata->sev; in sev_dev_init()
1225 if (!sev->vdata) { in sev_dev_init()
1231 psp_set_sev_irq_handler(psp, sev_irq_handler, sev); in sev_dev_init()
1233 ret = sev_misc_init(sev); in sev_dev_init()
1244 devm_free_pages(dev, (unsigned long)sev->cmd_buf); in sev_dev_init()
1246 devm_kfree(dev, sev); in sev_dev_init()
1255 static void sev_firmware_shutdown(struct sev_device *sev) in sev_firmware_shutdown() argument
1277 struct sev_device *sev = psp->sev_data; in sev_dev_destroy() local
1279 if (!sev) in sev_dev_destroy()
1282 sev_firmware_shutdown(sev); in sev_dev_destroy()
1284 if (sev->misc) in sev_dev_destroy()
1302 struct sev_device *sev = psp_master->sev_data; in sev_pci_init() local
1305 if (!sev) in sev_pci_init()
1313 if (sev_update_firmware(sev->dev) == 0) in sev_pci_init()
1322 dev_err(sev->dev, in sev_pci_init()
1331 dev_warn(sev->dev, in sev_pci_init()
1340 dev_err(sev->dev, "SEV: failed to INIT error %#x, rc %d\n", in sev_pci_init()
1351 struct sev_device *sev = psp_master->sev_data; in sev_pci_exit() local
1353 if (!sev) in sev_pci_exit()
1356 sev_firmware_shutdown(sev); in sev_pci_exit()