gpu: nvgpu: channel: use u32 for syncpt id

Make the APIs nvgpu_channel_sync_get_syncpt_id() and
channel_sync_syncpt_get_id() return u32s rather than converting to
ints and back.

Also define FIFO_INVAL_SYNCPT_ID to use for invalid syncpt IDs rather
than using magic numbers.

JIRA NVGPU-1008

Change-Id: I4dde6b15fd3708fb0126b46c6fea8ac1b447c7ce
Signed-off-by: Philip Elcan <pelcan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2014821
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Philip Elcan
2019-02-08 10:22:32 -05:00
committed by mobile promotions
parent fa81cf9000
commit ab5684ce1b
6 changed files with 13 additions and 11 deletions

View File

@@ -307,7 +307,7 @@ static void channel_sync_syncpt_set_safe_state(struct nvgpu_channel_sync *s)
nvgpu_nvhost_syncpt_set_safe_state(sp->nvhost_dev, sp->id);
}
static int channel_sync_syncpt_get_id(struct nvgpu_channel_sync_syncpt *sp)
static u32 channel_sync_syncpt_get_id(struct nvgpu_channel_sync_syncpt *sp)
{
return sp->id;
}
@@ -330,7 +330,7 @@ static void channel_sync_syncpt_destroy(struct nvgpu_channel_sync *s)
nvgpu_kfree(sp->c->g, sp);
}
int nvgpu_channel_sync_get_syncpt_id(struct nvgpu_channel_sync_syncpt *s)
u32 nvgpu_channel_sync_get_syncpt_id(struct nvgpu_channel_sync_syncpt *s)
{
return channel_sync_syncpt_get_id(s);
}

View File

@@ -199,7 +199,7 @@ void gk20a_init_fence(struct gk20a_fence *f,
return;
}
f->ops = ops;
f->syncpt_id = -1;
f->syncpt_id = FIFO_INVAL_SYNCPT_ID;
f->semaphore = NULL;
f->os_fence = os_fence;
}

View File

@@ -44,6 +44,7 @@ struct tsg_gk20a;
#define FIFO_INVAL_CHANNEL_ID (~U32(0U))
#define FIFO_INVAL_TSG_ID (~U32(0U))
#define FIFO_INVAL_RUNLIST_ID (~U32(0U))
#define FIFO_INVAL_SYNCPT_ID (~U32(0U))
#define ID_TYPE_CHANNEL 0U
#define ID_TYPE_TSG 1U

View File

@@ -157,9 +157,10 @@ int gp10b_fifo_resetup_ramfc(struct channel_gk20a *c)
if (c->sync != NULL) {
sync_syncpt = nvgpu_channel_sync_to_syncpt(c->sync);
if (sync_syncpt != NULL) {
new_syncpt = nvgpu_channel_sync_get_syncpt_id(sync_syncpt);
new_syncpt =
nvgpu_channel_sync_get_syncpt_id(sync_syncpt);
} else {
new_syncpt = -EINVAL;
new_syncpt = FIFO_INVAL_SYNCPT_ID;
}
}
if ((new_syncpt != 0U) && (new_syncpt != old_syncpt)) {

View File

@@ -2,7 +2,7 @@
*
* Nvgpu Channel Synchronization Abstraction (Syncpoints)
*
* Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -38,7 +38,7 @@ struct nvgpu_channel_sync_syncpt;
/*
* Returns the sync point id or negative number if no syncpt
*/
int nvgpu_channel_sync_get_syncpt_id(struct nvgpu_channel_sync_syncpt *s);
u32 nvgpu_channel_sync_get_syncpt_id(struct nvgpu_channel_sync_syncpt *s);
/*
* Returns the sync point address of sync point or 0 if not supported
@@ -69,10 +69,10 @@ nvgpu_channel_sync_syncpt_create(struct channel_gk20a *c,
#else
static inline int nvgpu_channel_sync_get_syncpt_id(
static inline u32 nvgpu_channel_sync_get_syncpt_id(
struct nvgpu_channel_sync_syncpt *s)
{
return -EINVAL;
return FIFO_INVAL_SYNCPT_ID;
}
static inline u64 nvgpu_channel_sync_get_syncpt_address(
struct nvgpu_channel_sync_syncpt *s)

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2018, NVIDIA Corporation. All rights reserved.
* Copyright (c) 2011-2019, NVIDIA Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -443,7 +443,7 @@ static int gk20a_ctrl_prepare_compressible_read(
args->fence.syncpt_value =
fence_out->syncpt_value;
} else {
args->fence.syncpt_id = -1;
args->fence.syncpt_id = FIFO_INVAL_SYNCPT_ID;
args->fence.syncpt_value = 0;
}
}