drm/amdgpu: Use per-device driver_features to disable atomic
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 13 Sep 2018 16:31:47 +0000 (19:31 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 13 Sep 2018 18:24:06 +0000 (21:24 +0300)
Disable atomic on a per-device basis instead of for all devices.
Made possible by the new device.driver_features thing.

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Michel Dänzer <michel@daenzer.net>
Suggested-by: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180913163147.27900-2-ville.syrjala@linux.intel.com
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

index 6870909..8c1db96 100644 (file)
@@ -816,17 +816,13 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
        if (ret)
                return ret;
 
-       /* warn the user if they mix atomic and non-atomic capable GPUs */
-       if ((kms_driver.driver_features & DRIVER_ATOMIC) && !supports_atomic)
-               DRM_ERROR("Mixing atomic and non-atomic capable GPUs!\n");
-       /* support atomic early so the atomic debugfs stuff gets created */
-       if (supports_atomic)
-               kms_driver.driver_features |= DRIVER_ATOMIC;
-
        dev = drm_dev_alloc(&kms_driver, &pdev->dev);
        if (IS_ERR(dev))
                return PTR_ERR(dev);
 
+       if (!supports_atomic)
+               dev->driver_features &= ~DRIVER_ATOMIC;
+
        ret = pci_enable_device(pdev);
        if (ret)
                goto err_free;
@@ -1078,7 +1074,7 @@ amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
 
 static struct drm_driver kms_driver = {
        .driver_features =
-           DRIVER_USE_AGP |
+           DRIVER_USE_AGP | DRIVER_ATOMIC |
            DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
            DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET | DRIVER_SYNCOBJ,
        .load = amdgpu_driver_load_kms,