diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2017-09-28 15:32:18 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-10-14 17:13:18 -0400 |
commit | 7685f60d9dd6ed062f3037d4e72ea124c103d211 (patch) | |
tree | a30185cde3b5f4fe1f4b657c7708e2fe8e07ee96 /drivers/gpu/nvgpu/common | |
parent | c7e0c7e7ce045a9bef53f3fa11377ddb23bd79a3 (diff) |
gpu: nvgpu: Abstract rw_semaphore implementation
Abstract implementation of rw_semaphore. In Linux it's implemented
in terms of rw_semaphore. Change deterministic_busy to use the new
implementation.
JIRA NVGPU-259
Change-Id: Ia9c1b6e397581bff7711c5ab6fb76ef6d23cff87
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1570405
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/driver_common.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/rwsem.c | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/driver_common.c b/drivers/gpu/nvgpu/common/linux/driver_common.c index 734bc1d2..295297b6 100644 --- a/drivers/gpu/nvgpu/common/linux/driver_common.c +++ b/drivers/gpu/nvgpu/common/linux/driver_common.c | |||
@@ -44,7 +44,7 @@ static void nvgpu_init_vars(struct gk20a *g) | |||
44 | gk20a_init_gr(g); | 44 | gk20a_init_gr(g); |
45 | 45 | ||
46 | init_rwsem(&l->busy_lock); | 46 | init_rwsem(&l->busy_lock); |
47 | init_rwsem(&g->deterministic_busy); | 47 | nvgpu_rwsem_init(&g->deterministic_busy); |
48 | 48 | ||
49 | nvgpu_spinlock_init(&g->mc_enable_lock); | 49 | nvgpu_spinlock_init(&g->mc_enable_lock); |
50 | 50 | ||
diff --git a/drivers/gpu/nvgpu/common/linux/rwsem.c b/drivers/gpu/nvgpu/common/linux/rwsem.c new file mode 100644 index 00000000..297ddf11 --- /dev/null +++ b/drivers/gpu/nvgpu/common/linux/rwsem.c | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms and conditions of the GNU General Public License, | ||
6 | * version 2, as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
11 | * more details. | ||
12 | */ | ||
13 | |||
14 | #include <nvgpu/rwsem.h> | ||
15 | |||
16 | void nvgpu_rwsem_init(struct nvgpu_rwsem *rwsem) | ||
17 | { | ||
18 | init_rwsem(&rwsem->rwsem); | ||
19 | } | ||
20 | |||
21 | void nvgpu_rwsem_up_read(struct nvgpu_rwsem *rwsem) | ||
22 | { | ||
23 | up_read(&rwsem->rwsem); | ||
24 | } | ||
25 | |||
26 | void nvgpu_rwsem_down_read(struct nvgpu_rwsem *rwsem) | ||
27 | { | ||
28 | down_read(&rwsem->rwsem); | ||
29 | } | ||
30 | |||
31 | void nvgpu_rwsem_up_write(struct nvgpu_rwsem *rwsem) | ||
32 | { | ||
33 | up_write(&rwsem->rwsem); | ||
34 | } | ||
35 | |||
36 | void nvgpu_rwsem_down_write(struct nvgpu_rwsem *rwsem) | ||
37 | { | ||
38 | down_write(&rwsem->rwsem); | ||
39 | } | ||