diff options
author | Marcin Slusarz <marcin.slusarz@gmail.com> | 2013-03-03 17:58:45 (GMT) |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-03-10 22:43:05 (GMT) |
commit | 2b77c1c01b556045c451f034389932efb5b71c58 (patch) | |
tree | 45a8002914ec8d2089913f277b21849238ac09e7 /drivers/gpu/drm/nouveau/nouveau_abi16.c | |
parent | c8f28f89566321842afb81d3ddd79d611e3587ce (diff) | |
download | linux-2b77c1c01b556045c451f034389932efb5b71c58.tar.xz |
drm/nouveau: idle channel before releasing notify object
Unmapping it while it's still in use (e.g. by M2MF) can lead to page faults
and a lot of TRAP_M2MF spam in dmesg.
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_abi16.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_abi16.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c index 4124192..3b6dc88 100644 --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c @@ -116,6 +116,11 @@ nouveau_abi16_chan_fini(struct nouveau_abi16 *abi16, { struct nouveau_abi16_ntfy *ntfy, *temp; + /* wait for all activity to stop before releasing notify object, which + * may be still in use */ + if (chan->chan && chan->ntfy) + nouveau_channel_idle(chan->chan); + /* cleanup notifier state */ list_for_each_entry_safe(ntfy, temp, &chan->notifiers, head) { nouveau_abi16_ntfy_fini(chan, ntfy); |