mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
drm/amdgpu: set DRIVER_ATOMIC flag early
The atomic debugfs stuff gets created in drm_dev_alloc() but this gets called before we've enumerated all of our IPs, so move the DRIVER_ATOMIC flag setting to fix that. Since DRIVER_ATOMIC is a driver flag it's currently global to the driver so setting it affects all GPUs driven by the driver. Unfortunately, not all GPUs support atomic. Warn the user if that is the case. This is the same as our current behavior, but at least the atomic debugfs stuff gets created now. Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
367e66870e
commit
3fa203af4b
2 changed files with 12 additions and 2 deletions
|
@ -578,6 +578,11 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
|
|||
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"
|
||||
|
@ -598,6 +603,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);
|
||||
|
|
|
@ -1619,8 +1619,6 @@ static int dm_early_init(void *handle)
|
|||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
adev->ddev->driver->driver_features |= DRIVER_ATOMIC;
|
||||
|
||||
switch (adev->asic_type) {
|
||||
case CHIP_BONAIRE:
|
||||
case CHIP_HAWAII:
|
||||
|
|
Loading…
Reference in a new issue