drm/nouveau: allocate kernel channel(s) before initialising display
authorBen Skeggs <bskeggs@redhat.com>
Tue, 12 Feb 2019 12:28:13 +0000 (22:28 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 19 Feb 2019 22:59:59 +0000 (08:59 +1000)
Some of the pre-NV50 depends on SW methods to implement synchronisation
for page flips, and we want to move this setup out of common code, thus
we require the channel to have been allocation before display init.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_drm.c

index f900e94592f8c1ab1f7c54bd8810f241363933c9..2c665f9aba93a25e278cb856ae2bb32658dc2b29 100644 (file)
@@ -504,6 +504,8 @@ nouveau_drm_device_init(struct drm_device *dev)
        if (ret)
                goto fail_bios;
 
+       nouveau_accel_init(drm);
+
        ret = nouveau_display_create(dev);
        if (ret)
                goto fail_dispctor;
@@ -516,7 +518,6 @@ nouveau_drm_device_init(struct drm_device *dev)
 
        nouveau_debugfs_init(drm);
        nouveau_hwmon_init(dev);
-       nouveau_accel_init(drm);
        nouveau_fbcon_init(dev);
        nouveau_led_init(dev);
 
@@ -534,6 +535,7 @@ nouveau_drm_device_init(struct drm_device *dev)
 fail_dispinit:
        nouveau_display_destroy(dev);
 fail_dispctor:
+       nouveau_accel_fini(drm);
        nouveau_bios_takedown(dev);
 fail_bios:
        nouveau_ttm_fini(drm);
@@ -559,7 +561,6 @@ nouveau_drm_device_fini(struct drm_device *dev)
 
        nouveau_led_fini(dev);
        nouveau_fbcon_fini(dev);
-       nouveau_accel_fini(drm);
        nouveau_hwmon_fini(dev);
        nouveau_debugfs_fini(drm);
 
@@ -567,6 +568,7 @@ nouveau_drm_device_fini(struct drm_device *dev)
                nouveau_display_fini(dev, false, false);
        nouveau_display_destroy(dev);
 
+       nouveau_accel_fini(drm);
        nouveau_bios_takedown(dev);
 
        nouveau_ttm_fini(drm);