[Intel-gfx] [PATCH 6/7] drm/i915: Toggle binder context ready status
Nirmoy Das
nirmoy.das at linux.intel.com
Fri Sep 15 14:22:33 UTC 2023
On 9/15/2023 11:50 AM, Jani Nikula wrote:
> On Fri, 15 Sep 2023, Nirmoy Das <nirmoy.das at intel.com> wrote:
>> Toggle binder context ready status when needed.
>>
>> To issue gpu commands, the driver must be primed to receive
>> requests. Maintain binder-based GGTT update disablement until driver
>> probing completes. Moreover, implement a temporary disablement
>> of blitter prior to entering suspend, followed by re-enablement
>> post-resume. This is acceptable as those transition periods are
>> mostly single threaded.
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
>> Signed-off-by: Oak Zeng <oak.zeng at intel.com>
> Not a fan of adding more gt (or gem, or display) specific details at the
> top level driver hooks. The direction should be to remove stuff from
> there, and move to lower levels.
>
> The top level functions have become really hard to understand because we
> don't know the ordering constraints. This adds more constraints, and
> looks like very specific and complicated ones too.
Tried to hook this into gt suspend/resume but didn't work well . I will
try again.
Thanks,
Nirmoy
>
> BR,
> Jani.
>
>
>> ---
>> drivers/gpu/drm/i915/i915_driver.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
>> index f8dbee7a5af7..8cc289acdb39 100644
>> --- a/drivers/gpu/drm/i915/i915_driver.c
>> +++ b/drivers/gpu/drm/i915/i915_driver.c
>> @@ -815,6 +815,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>> i915_welcome_messages(i915);
>>
>> i915->do_release = true;
>> + intel_gt_bind_context_set_ready(to_gt(i915), true);
>>
>> return 0;
>>
>> @@ -855,6 +856,7 @@ void i915_driver_remove(struct drm_i915_private *i915)
>> {
>> intel_wakeref_t wakeref;
>>
>> + intel_gt_bind_context_set_ready(to_gt(i915), false);
>> wakeref = intel_runtime_pm_get(&i915->runtime_pm);
>>
>> i915_driver_unregister(i915);
>> @@ -1077,6 +1079,8 @@ static int i915_drm_suspend(struct drm_device *dev)
>> struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
>> pci_power_t opregion_target_state;
>>
>> + intel_gt_bind_context_set_ready(to_gt(dev_priv), false);
>> +
>> disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
>>
>> /* We do a lot of poking in a lot of registers, make sure they work
>> @@ -1264,6 +1268,7 @@ static int i915_drm_resume(struct drm_device *dev)
>> intel_gvt_resume(dev_priv);
>>
>> enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
>> + intel_gt_bind_context_set_ready(to_gt(dev_priv), true);
>>
>> return 0;
>> }
More information about the Intel-gfx
mailing list