Lines Matching refs:sev

62 	struct sev_device *sev = psp_master->sev_data;  in sev_version_greater_or_equal()  local
64 if (sev->api_major > maj) in sev_version_greater_or_equal()
67 if (sev->api_major == maj && sev->api_minor >= min) in sev_version_greater_or_equal()
75 struct sev_device *sev = data; in sev_irq_handler() local
83 reg = ioread32(sev->io_regs + sev->vdata->cmdresp_reg); in sev_irq_handler()
85 sev->int_rcvd = 1; in sev_irq_handler()
86 wake_up(&sev->int_queue); in sev_irq_handler()
90 static int sev_wait_cmd_ioc(struct sev_device *sev, in sev_wait_cmd_ioc() argument
95 ret = wait_event_timeout(sev->int_queue, in sev_wait_cmd_ioc()
96 sev->int_rcvd, timeout * HZ); in sev_wait_cmd_ioc()
100 *reg = ioread32(sev->io_regs + sev->vdata->cmdresp_reg); in sev_wait_cmd_ioc()
144 struct sev_device *sev; in __sev_do_cmd_locked() local
154 sev = psp->sev_data; in __sev_do_cmd_locked()
163 dev_dbg(sev->dev, "sev command id %#x buffer 0x%08x%08x timeout %us\n", in __sev_do_cmd_locked()
169 iowrite32(phys_lsb, sev->io_regs + sev->vdata->cmdbuff_addr_lo_reg); in __sev_do_cmd_locked()
170 iowrite32(phys_msb, sev->io_regs + sev->vdata->cmdbuff_addr_hi_reg); in __sev_do_cmd_locked()
172 sev->int_rcvd = 0; in __sev_do_cmd_locked()
177 iowrite32(reg, sev->io_regs + sev->vdata->cmdresp_reg); in __sev_do_cmd_locked()
180 ret = sev_wait_cmd_ioc(sev, &reg, psp_timeout); in __sev_do_cmd_locked()
185 dev_err(sev->dev, "sev command %#x timed out, disabling PSP\n", cmd); in __sev_do_cmd_locked()
197 dev_dbg(sev->dev, "sev command %#x failed (%#010x)\n", in __sev_do_cmd_locked()
222 struct sev_device *sev; in __sev_platform_init_locked() local
228 sev = psp->sev_data; in __sev_platform_init_locked()
230 if (sev->state == SEV_STATE_INIT) in __sev_platform_init_locked()
242 sev->init_cmd_buf.flags |= SEV_INIT_FLAGS_SEV_ES; in __sev_platform_init_locked()
243 sev->init_cmd_buf.tmr_address = tmr_pa; in __sev_platform_init_locked()
244 sev->init_cmd_buf.tmr_len = SEV_ES_TMR_SIZE; in __sev_platform_init_locked()
247 rc = __sev_do_cmd_locked(SEV_CMD_INIT, &sev->init_cmd_buf, error); in __sev_platform_init_locked()
251 sev->state = SEV_STATE_INIT; in __sev_platform_init_locked()
259 dev_dbg(sev->dev, "SEV firmware initialized\n"); in __sev_platform_init_locked()
278 struct sev_device *sev = psp_master->sev_data; in __sev_platform_shutdown_locked() local
281 if (!sev || sev->state == SEV_STATE_UNINIT) in __sev_platform_shutdown_locked()
288 sev->state = SEV_STATE_UNINIT; in __sev_platform_shutdown_locked()
289 dev_dbg(sev->dev, "SEV firmware shutdown\n"); in __sev_platform_shutdown_locked()
307 struct sev_device *sev = psp_master->sev_data; in sev_get_platform_state() local
311 &sev->status_cmd_buf, error); in sev_get_platform_state()
315 *state = sev->status_cmd_buf.state; in sev_get_platform_state()
353 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_platform_status() local
354 struct sev_user_data_status *data = &sev->status_cmd_buf; in sev_ioctl_do_platform_status()
369 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_pdh_gen() local
375 if (sev->state == SEV_STATE_UNINIT) { in sev_ioctl_do_pek_pdh_gen()
386 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_csr() local
424 if (sev->state == SEV_STATE_UNINIT) { in sev_ioctl_do_pek_csr()
467 struct sev_device *sev = psp_master->sev_data; in sev_get_api_version() local
471 status = &sev->status_cmd_buf; in sev_get_api_version()
474 dev_err(sev->dev, in sev_get_api_version()
479 sev->api_major = status->api_major; in sev_get_api_version()
480 sev->api_minor = status->api_minor; in sev_get_api_version()
481 sev->build = status->build; in sev_get_api_version()
482 sev->state = status->state; in sev_get_api_version()
578 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pek_import() local
615 if (sev->state != SEV_STATE_INIT) { in sev_ioctl_do_pek_import()
733 struct sev_device *sev = psp_master->sev_data; in sev_ioctl_do_pdh_export() local
742 if (sev->state != SEV_STATE_INIT) { in sev_ioctl_do_pdh_export()
938 static int sev_misc_init(struct sev_device *sev) in sev_misc_init() argument
940 struct device *dev = sev->dev; in sev_misc_init()
971 init_waitqueue_head(&sev->int_queue); in sev_misc_init()
972 sev->misc = misc_dev; in sev_misc_init()
981 struct sev_device *sev; in sev_dev_init() local
984 sev = devm_kzalloc(dev, sizeof(*sev), GFP_KERNEL); in sev_dev_init()
985 if (!sev) in sev_dev_init()
988 psp->sev_data = sev; in sev_dev_init()
990 sev->dev = dev; in sev_dev_init()
991 sev->psp = psp; in sev_dev_init()
993 sev->io_regs = psp->io_regs; in sev_dev_init()
995 sev->vdata = (struct sev_vdata *)psp->vdata->sev; in sev_dev_init()
996 if (!sev->vdata) { in sev_dev_init()
1002 psp_set_sev_irq_handler(psp, sev_irq_handler, sev); in sev_dev_init()
1004 ret = sev_misc_init(sev); in sev_dev_init()
1015 devm_kfree(dev, sev); in sev_dev_init()
1024 static void sev_firmware_shutdown(struct sev_device *sev) in sev_firmware_shutdown() argument
1040 struct sev_device *sev = psp->sev_data; in sev_dev_destroy() local
1042 if (!sev) in sev_dev_destroy()
1045 sev_firmware_shutdown(sev); in sev_dev_destroy()
1047 if (sev->misc) in sev_dev_destroy()
1065 struct sev_device *sev = psp_master->sev_data; in sev_pci_init() local
1069 if (!sev) in sev_pci_init()
1078 sev_update_firmware(sev->dev) == 0) in sev_pci_init()
1087 dev_warn(sev->dev, in sev_pci_init()
1101 dev_dbg(sev->dev, "SEV: retrying INIT command"); in sev_pci_init()
1106 dev_err(sev->dev, "SEV: failed to INIT error %#x\n", error); in sev_pci_init()
1110 dev_info(sev->dev, "SEV API:%d.%d build:%d\n", sev->api_major, in sev_pci_init()
1111 sev->api_minor, sev->build); in sev_pci_init()
1121 struct sev_device *sev = psp_master->sev_data; in sev_pci_exit() local
1123 if (!sev) in sev_pci_exit()
1126 sev_firmware_shutdown(sev); in sev_pci_exit()