On Wed, Oct 11, 2017 at 11:50:30AM -0500, Brijesh Singh wrote: > +static int sev_do_cmd(int cmd, void *data, int *psp_ret) > +{ > + unsigned int phys_lsb, phys_msb; > + struct psp_device *psp; > + unsigned int reg, ret; > + struct sp_device *sp; > + > + sp = sp_get_psp_master_device(); > + if (!sp) > + return -ENODEV; > + > + psp = sp->psp_data; > + if (!psp) > + return -ENODEV; > + > + /* Get the physical address of the command buffer */ > + phys_lsb = data ? lower_32_bits(__psp_pa(data)) : 0; > + phys_msb = data ? upper_32_bits(__psp_pa(data)) : 0; > + > + dev_dbg(psp->dev, "sev command id %#x buffer 0x%08x%08x\n", > + cmd, phys_msb, phys_lsb); > + > + print_hex_dump_debug("(in): ", DUMP_PREFIX_OFFSET, 16, 2, data, > + sev_cmd_buffer_len(cmd), false); > + > + /* Only one command at a time... */ > + mutex_lock(&sev_cmd_mutex); > + > + iowrite32(phys_lsb, psp->io_regs + PSP_CMDBUFF_ADDR_LO); > + iowrite32(phys_msb, psp->io_regs + PSP_CMDBUFF_ADDR_HI); > + > + reg = cmd; > + reg <<= PSP_CMDRESP_CMD_SHIFT; > + reg |= PSP_CMDRESP_IOC; > + iowrite32(reg, psp->io_regs + PSP_CMDRESP); > + > + ret = sev_wait_cmd_ioc(psp, ®); Btw, that function returns 0 unconditionally. So you can make it return void and... > + if (ret) > + goto unlock; ... remove this check and initialize ret to 0 at the beginning. -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --