diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2014-08-13 05:34:21 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:52 -0400 |
commit | 4439a8e311e09b1f3af1a70d4111c75e002a607d (patch) | |
tree | 749630a76e0aededf4d21b6ebd14f271156d1d29 /drivers/gpu/nvgpu | |
parent | 67887cc61ae18c0278eec8ff8ae758297765f3b8 (diff) |
gpu: nvgpu: add ioctl to force reset channel
Add below ioctl to force channel reset/recovery.
NVHOST_IOCTL_CHANNEL_FORCE_RESET
This recovery/reset is initiated by triggering
mmu fault on channel so as to force the channel
out (as oppose to waiting until channel is
preempted)
Bug 200027958
Change-Id: Idd3c10ef5fa691d746e34a8b890bd79aca815a20
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/456084
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index f7cafc52..45757884 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |||
@@ -2306,6 +2306,19 @@ long gk20a_channel_ioctl(struct file *filp, | |||
2306 | err = gk20a_fifo_preempt_channel(ch->g, ch->hw_chid); | 2306 | err = gk20a_fifo_preempt_channel(ch->g, ch->hw_chid); |
2307 | gk20a_idle(dev); | 2307 | gk20a_idle(dev); |
2308 | break; | 2308 | break; |
2309 | case NVHOST_IOCTL_CHANNEL_FORCE_RESET: | ||
2310 | err = gk20a_busy(dev); | ||
2311 | if (err) { | ||
2312 | dev_err(&dev->dev, | ||
2313 | "%s: failed to host gk20a for ioctl cmd: 0x%x", | ||
2314 | __func__, cmd); | ||
2315 | return err; | ||
2316 | } | ||
2317 | gk20a_set_error_notifier(ch, | ||
2318 | NVHOST_CHANNEL_RESETCHANNEL_VERIF_ERROR); | ||
2319 | gk20a_fifo_recover_ch(ch->g, ch->hw_chid, true); | ||
2320 | gk20a_idle(dev); | ||
2321 | break; | ||
2309 | default: | 2322 | default: |
2310 | dev_err(&dev->dev, "unrecognized ioctl cmd: 0x%x", cmd); | 2323 | dev_err(&dev->dev, "unrecognized ioctl cmd: 0x%x", cmd); |
2311 | err = -ENOTTY; | 2324 | err = -ENOTTY; |