]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: host: Rework job serialization
authorArto Merilainen <amerilainen@nvidia.com>
Tue, 2 Dec 2014 07:51:09 +0000 (09:51 +0200)
committerArto Merilainen <amerilainen@nvidia.com>
Thu, 18 Dec 2014 16:52:19 +0000 (08:52 -0800)
Currently job serialization is done in the beginning of each submit
which is ok as long as the submits are using the same syncpoints.

However, as we are going to support also a mode where multiple
channels can use the same engine and each of the channels will use
their own syncpoints. Therefore channel serialization must be done
at end of work instead of beginning of work.

This patch also enables forced op_done for the clients (VIC) using
serialization feature. This will ensure that we do not stop CDMA
while holding the MLOCK.

Bug 200041935

Change-Id: If13502cee4d24b009670baf6541ab53837491e45
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/660248

drivers/video/tegra/host/host1x/host1x_channel.c
drivers/video/tegra/host/t210/t210.c

index 735d35ae09c0ea3726807d9d693ae702bf9f3879..e9dd2f916f68ee55daed7f6b9c053e7f82318126 100644 (file)
@@ -326,7 +326,6 @@ static int host1x_channel_submit(struct nvhost_job *job)
                goto error;
        }
 
-       serialize(job);
        push_waits(job);
        lock_device(job, true);
 
@@ -359,6 +358,7 @@ static int host1x_channel_submit(struct nvhost_job *job)
        else
                submit_gathers(job);
 
+       serialize(job);
        lock_device(job, false);
        submit_work_done_increment(job);
 
index 49618159bafc56b6fe870410aed0d816d2cbf752..e2311f56319ed66573d08478de7dec740de228e5 100644 (file)
@@ -434,6 +434,7 @@ struct nvhost_device_data t21_vic_info = {
        .actmon_regs            = HOST1X_CHANNEL_ACTMON2_REG_BASE,
        .actmon_enabled         = true,
        .serialize              = true,
+       .push_work_done         = true,
        .firmware_name          = "vic04_ucode.bin",
        .gather_filter_enabled  = true,
        .bond_out_id            = BOND_OUT_VIC,