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, &reg);

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)
-- 

Reply via email to