On Fri, 03 Jan 2025 23:04:13 +0800
"WanRenyong" <wa...@yunsilicon.com> wrote:

> +static int
> +xsc_vfio_destroy_qp(void *qp)
> +{
> +     int ret;
> +     int in_len, out_len, cmd_len;
> +     struct xsc_cmd_destroy_qp_mbox_in *in;
> +     struct xsc_cmd_destroy_qp_mbox_out *out;
> +     struct xsc_vfio_qp *data = (struct xsc_vfio_qp *)qp;
> +
> +     in_len = sizeof(struct xsc_cmd_destroy_qp_mbox_in);
> +     out_len = sizeof(struct xsc_cmd_destroy_qp_mbox_out);
> +     cmd_len = RTE_MAX(in_len, out_len);
> +
> +     in = malloc(cmd_len);
> +     if (in == NULL) {
> +             rte_errno = ENOMEM;
> +             PMD_DRV_LOG(ERR, "Failed to alloc qp destroy cmd memory");
> +             return -rte_errno;
> +     }
> +     memset(in, 0, cmd_len);

If this data structure needs to be shared between primary and secondary process,
then it needs to be allocated with rte_malloc(). If it does not need to be
shared, then it can come from heap with malloc().

Reply via email to