From: Ramalingam C <ramalingam.c@intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>,
Vandana Kannan <vandana.kannan@intel.com>,
intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com,
rodrigo.vivi@intel.com
Subject: Re: [PATCH 2/10] drm/i915: Initialize DRRS delayed work
Date: Wed, 21 Jan 2015 16:34:11 +0530 [thread overview]
Message-ID: <54BF87AB.80709@intel.com> (raw)
In-Reply-To: <20150111125208.GB27134@nuc-i3427.alporthouse.com>
[-- Attachment #1.1: Type: text/plain, Size: 3688 bytes --]
Hi chris
On Sunday 11 January 2015 06:22 PM, Chris Wilson wrote:
> On Sat, Jan 10, 2015 at 02:25:57AM +0530, Vandana Kannan wrote:
>> Add DRRS work function to trigger a switch to low refresh rate when activity
>> is detected on screen.
> Where is this function used? How can I judge that it does the right
> thing?
Thanks for catching this. There is an error in the commit message. This
DRRS work function
will trigger a switch to low refresh rate, when there is no activity on
the screen for more than 1 sec.
And this function is set as a deferred work from intel_edp_drrs_flush().
Functionality of this function can be verified from the debug logs in
dmesg (lower refresh rate set
will be printed out). Addition to that I am working to enable a debugfs
to share the refreshrate
switch info also for the debugging/testing purpose.
>
>> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_dp.c | 36 ++++++++++++++++++++++++++++--------
>> 1 file changed, 28 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index 778dcd0..30b3aa1 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -4814,20 +4814,38 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
>> I915_WRITE(reg, val);
>> }
>>
>> + dev_priv->drrs.refresh_rate_type = index;
>> +
>> + DRM_DEBUG_KMS("eDP Refresh Rate set to : %dHz\n", refresh_rate);
>> +}
>> +
>> +static void intel_edp_drrs_work(struct work_struct *work)
> intel_edp_drrs_downclock_work() would be more self-descriptive
Agreed. I will rename it in next iteration
>
>> +{
>> + struct drm_i915_private *dev_priv =
>> + container_of(work, typeof(*dev_priv), drrs.work.work);
>> + struct intel_dp *intel_dp = dev_priv->drrs.dp;
>> +
>> + mutex_lock(&dev_priv->drrs.mutex);
>> +
>> + if (!intel_dp)
>> + goto unlock;
> Does dev_priv->drrs.mutex not also protect dev_priv->drrs.dp?
It should have protected. Will cover drrs.dp with drrs.mutex in next patch
>> +
>> /*
>> - * mutex taken to ensure that there is no race between differnt
>> - * drrs calls trying to update refresh rate. This scenario may occur
>> - * in future when idleness detection based DRRS in kernel and
>> - * possible calls from user space to set differnt RR are made.
>> + * The delayed work can race with an invalidate hence we need to
>> + * recheck.
>> */
> This comment no longer applies to all the other callers of
> intel_dp_set_drrs_state()? Or did you miss adding the
> lockdep_assert_held(&dev_priv->drrs.mutex)?
This comment was added considering the requests from userspace for new
refreshrates.
But a part of MIPI DRRS and media playback DRRS implementation
(currently in development),
I am addressing the possible race condition. So at this point in time
this comment is irrelevant,
hence vandana removed it.
>
>> - mutex_lock(&dev_priv->drrs.mutex);
>> + if (dev_priv->drrs.busy_frontbuffer_bits)
>> + goto unlock;
>>
>> - dev_priv->drrs.refresh_rate_type = index;
>> + if (dev_priv->drrs.refresh_rate_type != DRRS_LOW_RR)
>> + intel_dp_set_drrs_state(dev_priv->dev,
> Would it not be sensible for intel_dp_set_drrs_state() check for the
> no-op itself?
If refresh_rate_type is already LOW_RR then we should exit the work
function with no call to intel_dp_set_drrs_state().
Thats the reason the call is kept under the if condition.
intel_dp_set_drrs_state() already handles if the
requested vrefresh is same as the vrefresh of the current refresh_rate type.
>
>> + intel_dp->attached_connector->panel.
>> + downclock_mode->vrefresh);
> -Chris
>
-Ram
[-- Attachment #1.2: Type: text/html, Size: 5686 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-01-21 11:09 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-09 20:55 [PATCH v3 0/10] eDP DRRS based on frontbuffer tracking Vandana Kannan
2015-01-09 20:55 ` [PATCH 1/10] drm/i915: Modifying structures related to DRRS Vandana Kannan
2015-01-14 1:27 ` Rodrigo Vivi
2015-01-22 6:48 ` Daniel Vetter
2015-01-22 11:35 ` Ramalingam C
2015-01-09 20:55 ` [PATCH 2/10] drm/i915: Initialize DRRS delayed work Vandana Kannan
2015-01-11 12:52 ` Chris Wilson
2015-01-21 11:04 ` Ramalingam C [this message]
2015-01-22 9:44 ` [PATCH] " Ramalingam C
2015-01-23 23:24 ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 3/10] drm/i915: Enable/disable DRRS Vandana Kannan
2015-01-15 22:46 ` Rodrigo Vivi
2015-01-21 11:15 ` Ramalingam C
2015-01-22 9:47 ` [PATCH] " Ramalingam C
2015-01-23 23:25 ` Rodrigo Vivi
2015-01-26 7:31 ` Daniel Vetter
2015-01-26 19:00 ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 4/10] drm/i915: DRRS calls based on frontbuffer Vandana Kannan
2015-01-15 22:49 ` Rodrigo Vivi
2015-01-26 7:44 ` Daniel Vetter
2015-02-11 12:43 ` [PATCH 1/6] drm/i915: Add support for DRRS in intel_dp_set_m_n Ramalingam C
2015-02-11 12:58 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 5/10] drm/i915/bdw: Add support for DRRS to switch RR Vandana Kannan
2015-01-15 23:00 ` Rodrigo Vivi
2015-01-21 11:19 ` Ramalingam C
2015-01-22 9:50 ` [PATCH] " Ramalingam C
2015-01-22 16:40 ` Ramalingam C
2015-01-24 0:00 ` Rodrigo Vivi
2015-02-11 12:48 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 6/10] drm/i915: Support for RR switching on VLV Vandana Kannan
2015-01-15 23:06 ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 7/10] drm/i915: Enable eDP DRRS for CHV Vandana Kannan
2015-01-15 23:11 ` Rodrigo Vivi
2015-01-21 12:13 ` Ramalingam C
2015-01-21 15:03 ` Rodrigo Vivi
2015-01-22 10:54 ` Ramalingam C
2015-01-24 0:05 ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 8/10] Documentation/drm: DocBook integration for DRRS Vandana Kannan
2015-01-15 23:16 ` Rodrigo Vivi
2015-01-20 9:12 ` Daniel Vetter
2015-01-09 20:56 ` [PATCH 9/10] drm/i915: Add debugfs entry " Vandana Kannan
2015-01-11 12:40 ` Chris Wilson
2015-01-15 23:18 ` Rodrigo Vivi
2015-01-21 12:26 ` Ramalingam C
2015-01-22 16:45 ` [PATCH] " Ramalingam C
2015-01-23 16:03 ` Daniel Vetter
2015-01-23 17:47 ` Ramalingam C
2015-01-23 17:52 ` Ramalingam C
2015-01-24 0:13 ` Rodrigo Vivi
2015-02-11 12:52 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 10/10] kms_drrs: Test DRRS entry and exit Vandana Kannan
2015-01-15 23:24 ` Rodrigo Vivi
2015-01-20 9:11 ` Daniel Vetter
2015-01-21 12:31 ` Ramalingam C
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54BF87AB.80709@intel.com \
--to=ramalingam.c@intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=vandana.kannan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.