nouveau_bo_move_m2mf() needs to lock the kernel channel, and it may be
called from the pushbuf IOCTL with an user channel already locked. Use
a separate subclass for the kernel channel mutex because this is
legitimate mutex nesting.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
        chan = nvbo->channel;
        if (!chan || nvbo->no_vm) {
                chan = dev_priv->channel;
-               mutex_lock(&chan->mutex);
+               mutex_lock_nested(&chan->mutex, NOUVEAU_KCHANNEL_MUTEX);
        }
 
        if (dev_priv->card_type < NV_50)
 
        uint64_t offset;
 };
 
+enum nouveau_channel_mutex_class {
+       NOUVEAU_UCHANNEL_MUTEX,
+       NOUVEAU_KCHANNEL_MUTEX
+};
+
 struct nouveau_channel {
        struct drm_device *dev;
        int id;