On 2018-01-23 11:10 PM, Alex Deucher wrote: > 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. > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 12 ++++++++++++ > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 -- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index d1a695864793..367f331b4a54 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -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 && Virtual display can be enabled only for specific GPUs, so this could result in supports_atomic == false when it should be true. > + 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"); This won't catch cases where the first GPU probed has supports_atomic == false, then a later one has supports_atomic == true. All in all this seems a bit messy, it might be worth looking into converting DRIVER_ATOMIC to a per-device flag instead. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer