struct drm_device *dev;
        unsigned long flags = ent->driver_data;
        int ret, retry = 0;
+       bool supports_atomic = false;
+
+       if (!amdgpu_virtual_display &&
+           amdgpu_device_asic_has_dc_support(flags & AMD_ASIC_MASK))
+               supports_atomic = true;
 
        if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) {
                DRM_INFO("This hardware requires experimental hardware support.\n"
        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);