diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-11-06 08:44:23 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-11-27 12:23:11 -0500 |
commit | c6b9177cfff8a41c3c3c78f5c47c7df677ced58c (patch) | |
tree | b402ccda611d85ec88f8557cb26d949617d92466 /drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c | |
parent | a0cea295e7b7f917c6b52221ab34c3a6111fb224 (diff) |
gpu: nvgpu: define error_notifiers in common code
All the linux specific error_notifier codes are defined in linux specific
header file <uapi/linux/nvgpu.h> and used in all the common driver
But since they are defined in linux specific file, we need to move all the
uses of those error_notifiers in linux specific code only
Hence define new error_notifiers in include/nvgpu/error_notifier.h and
use them in the common code
Add new API nvgpu_error_notifier_to_channel_notifier() to convert common
error_notifier of the form NVGPU_ERR_NOTIFIER_* to linux specific error
notifier of the form NVGPU_CHANNEL_*
Any future additions to error notifiers requires update to both the form
of error notifiers
Move all error notifier related metadata from channel_gk20a (common code)
to linux specific structure nvgpu_channel_linux
Update all accesses to this data from new structure instead of channel_gk20a
Move and rename below APIs to linux specific file and declare them
in error_notifier.h
nvgpu_set_error_notifier_locked()
nvgpu_set_error_notifier()
nvgpu_is_error_notifier_set()
Add below new API and use it in fifo_vgpu.c
nvgpu_set_error_notifier_if_empty()
Include <nvgpu/error_notifier.h> wherever new error_notifier codes are used
NVGPU-426
Change-Id: Iaa5bfc150e6e9ec17d797d445c2d6407afe9f4bd
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1593361
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c b/drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c index dd2ae306..33551d17 100644 --- a/drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c +++ b/drivers/gpu/nvgpu/common/linux/vgpu/gr_vgpu.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <nvgpu/kmem.h> | 21 | #include <nvgpu/kmem.h> |
22 | #include <nvgpu/bug.h> | 22 | #include <nvgpu/bug.h> |
23 | #include <nvgpu/error_notifier.h> | ||
23 | 24 | ||
24 | #include "vgpu.h" | 25 | #include "vgpu.h" |
25 | #include "gr_vgpu.h" | 26 | #include "gr_vgpu.h" |
@@ -941,31 +942,31 @@ int vgpu_gr_isr(struct gk20a *g, struct tegra_vgpu_gr_intr_info *info) | |||
941 | nvgpu_cond_broadcast_interruptible(&ch->semaphore_wq); | 942 | nvgpu_cond_broadcast_interruptible(&ch->semaphore_wq); |
942 | break; | 943 | break; |
943 | case TEGRA_VGPU_GR_INTR_SEMAPHORE_TIMEOUT: | 944 | case TEGRA_VGPU_GR_INTR_SEMAPHORE_TIMEOUT: |
944 | gk20a_set_error_notifier(ch, | 945 | nvgpu_set_error_notifier(ch, |
945 | NVGPU_CHANNEL_GR_SEMAPHORE_TIMEOUT); | 946 | NVGPU_ERR_NOTIFIER_GR_SEMAPHORE_TIMEOUT); |
946 | break; | 947 | break; |
947 | case TEGRA_VGPU_GR_INTR_ILLEGAL_NOTIFY: | 948 | case TEGRA_VGPU_GR_INTR_ILLEGAL_NOTIFY: |
948 | gk20a_set_error_notifier(ch, | 949 | nvgpu_set_error_notifier(ch, |
949 | NVGPU_CHANNEL_GR_ILLEGAL_NOTIFY); | 950 | NVGPU_ERR_NOTIFIER_GR_ILLEGAL_NOTIFY); |
950 | case TEGRA_VGPU_GR_INTR_ILLEGAL_METHOD: | 951 | case TEGRA_VGPU_GR_INTR_ILLEGAL_METHOD: |
951 | break; | 952 | break; |
952 | case TEGRA_VGPU_GR_INTR_ILLEGAL_CLASS: | 953 | case TEGRA_VGPU_GR_INTR_ILLEGAL_CLASS: |
953 | gk20a_set_error_notifier(ch, | 954 | nvgpu_set_error_notifier(ch, |
954 | NVGPU_CHANNEL_GR_ERROR_SW_NOTIFY); | 955 | NVGPU_ERR_NOTIFIER_GR_ERROR_SW_NOTIFY); |
955 | break; | 956 | break; |
956 | case TEGRA_VGPU_GR_INTR_FECS_ERROR: | 957 | case TEGRA_VGPU_GR_INTR_FECS_ERROR: |
957 | break; | 958 | break; |
958 | case TEGRA_VGPU_GR_INTR_CLASS_ERROR: | 959 | case TEGRA_VGPU_GR_INTR_CLASS_ERROR: |
959 | gk20a_set_error_notifier(ch, | 960 | nvgpu_set_error_notifier(ch, |
960 | NVGPU_CHANNEL_GR_ERROR_SW_NOTIFY); | 961 | NVGPU_ERR_NOTIFIER_GR_ERROR_SW_NOTIFY); |
961 | break; | 962 | break; |
962 | case TEGRA_VGPU_GR_INTR_FIRMWARE_METHOD: | 963 | case TEGRA_VGPU_GR_INTR_FIRMWARE_METHOD: |
963 | gk20a_set_error_notifier(ch, | 964 | nvgpu_set_error_notifier(ch, |
964 | NVGPU_CHANNEL_GR_ERROR_SW_NOTIFY); | 965 | NVGPU_ERR_NOTIFIER_GR_ERROR_SW_NOTIFY); |
965 | break; | 966 | break; |
966 | case TEGRA_VGPU_GR_INTR_EXCEPTION: | 967 | case TEGRA_VGPU_GR_INTR_EXCEPTION: |
967 | gk20a_set_error_notifier(ch, | 968 | nvgpu_set_error_notifier(ch, |
968 | NVGPU_CHANNEL_GR_ERROR_SW_NOTIFY); | 969 | NVGPU_ERR_NOTIFIER_GR_ERROR_SW_NOTIFY); |
969 | break; | 970 | break; |
970 | case TEGRA_VGPU_GR_INTR_SM_EXCEPTION: | 971 | case TEGRA_VGPU_GR_INTR_SM_EXCEPTION: |
971 | gk20a_dbg_gpu_post_events(ch); | 972 | gk20a_dbg_gpu_post_events(ch); |