remoteproc: Update max_notifyid as we allocate vrings
authorBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 20 Oct 2016 02:40:10 +0000 (19:40 -0700)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 15 Nov 2016 05:52:17 +0000 (21:52 -0800)
Vrings are now allocated as we parse the resource table, before we
boot the rproc or register any virtio devices, so it's safe to bump
max_notifyid as part of this process.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/remoteproc_core.c

index 57c66397f31f1b8c5aaa251c45f45e6685a59d7d..53a31edf8b3ab38088d5fd1388a1066a41a55cb1 100644 (file)
@@ -236,6 +236,10 @@ int rproc_alloc_vring(struct rproc_vdev *rvdev, int i)
        }
        notifyid = ret;
 
+       /* Potentially bump max_notifyid */
+       if (notifyid > rproc->max_notifyid)
+               rproc->max_notifyid = notifyid;
+
        dev_dbg(dev, "vring%d: va %p dma %pad size 0x%x idr %d\n",
                i, va, &dma, size, notifyid);
 
@@ -719,15 +723,6 @@ free_carv:
        return ret;
 }
 
-static int rproc_count_vrings(struct rproc *rproc, struct fw_rsc_vdev *rsc,
-                             int offset, int avail)
-{
-       /* Summarize the number of notification IDs */
-       rproc->max_notifyid += rsc->num_of_vrings;
-
-       return 0;
-}
-
 /*
  * A lookup table for resource handlers. The indices are defined in
  * enum fw_resource_type.
@@ -736,7 +731,7 @@ static rproc_handle_resource_t rproc_loading_handlers[RSC_LAST] = {
        [RSC_CARVEOUT] = (rproc_handle_resource_t)rproc_handle_carveout,
        [RSC_DEVMEM] = (rproc_handle_resource_t)rproc_handle_devmem,
        [RSC_TRACE] = (rproc_handle_resource_t)rproc_handle_trace,
-       [RSC_VDEV] = (rproc_handle_resource_t)rproc_count_vrings,
+       [RSC_VDEV] = NULL,
 };
 
 static rproc_handle_resource_t rproc_vdev_handler[RSC_LAST] = {