From: Jeff McGee <jeff.mcgee@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 4/4 v2] pm_rps: Require that cur reaches min at idle
Date: Mon, 27 Jan 2014 16:23:26 -0600 [thread overview]
Message-ID: <20140127222326.GB2511@jeffdesk> (raw)
In-Reply-To: <20140127165004.GG9772@phenom.ffwll.local>
On Mon, Jan 27, 2014 at 05:50:04PM +0100, Daniel Vetter wrote:
> On Mon, Jan 27, 2014 at 10:24:53AM -0600, Jeff McGee wrote:
> > On Sat, Jan 25, 2014 at 08:46:45PM +0100, Daniel Vetter wrote:
> > > On Thu, Jan 23, 2014 at 03:54:50PM -0600, jeff.mcgee@intel.com wrote:
> > > > From: Jeff McGee <jeff.mcgee@intel.com>
> > > >
> > > > The current frequency should reach the minimum frequency within a
> > > > reasonable time during idle.
> > > >
> > > > v2: Not using forcewake for this particular subtest per Daniel's
> > > > suggestion.
> > > >
> > > > Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
> > >
> > > Hm, I guess I wasn't clear enough: I've thought about adding a new subtest
> > > which just does the check that the actual frequency reaches the lowest
> > > level on idle a new subtest, not extend the existing one.
> > >
> > > Same somewhat holds for your first patch, atm the testcase is a very basic
> > > test of the kernel error checking.
> > >
> > > But even ignoring that I'm not really sure what you're aiming at. Imo the
> > > current coverage is good enough since it makes sure that we have at least
> > > a bit of error checking in place. Any extensions to this test should imo
> > > only be done when we add new features or to exercise bugs (or classes of
> > > bugs) that actually happened. Iirc (and I didn't check olds mails, so this
> > > might be wrong) we have some corner-cases across suspend/resume and some
> > > with the in-kernel code to adjust the requested frequency under load. So
> > > imo that's what we should test for.
> > >
> > > Reading through my test requirements write-up I've just noticed that I
> > > didn't emphasis that there's also too much testing possible imho. I'm not
> > > a big proponent of test driven developement and similar validate
> > > everything approaches. I guess I need to write up my thoughts about too
> > > much testing, too ;-)
> > >
> > > Anyway I'm a bit confused about what's the overall goal here, so please
> > > elaborate.
> > >
> > > Cheers, Daniel
> > >
> > Hi Daniel. I guess it would have helped if I described my overall goals
> > with this test development in the beginning. I have two rps related
> > driver patches on hold from a few months ago because you felt the igt
> > testing wasn't adequate to accept these. They are:
> >
> > "Update rps interrupt limits"
> > "Restore rps/rc6 on reset"
> >
> > It took me some time to get around to this, but now I am intent on
> > expanding pm_rps with the proper subtests to expose the issues. An outline
> > of the subtests I have in mind:
> >
> > min-max-config-at-idle
> > - Manipulate min and max through sysfs and make sure driver does the right
> > thing. Right thing includes accepting valid values, rejecting invalid
> > values, ensuring that cur remains between min and max, and (for idle)
> > ensuring that cur reaches min after such changes. This last requirement
> > is not being met in part because interrupt limits are not being updated
> > properly when min and max are changed. That will be justification for
> > patch "Update rps interrupt limits".
> > - I have been forming this subtest as an expansion of Ben's original test.
> > His cases for min/max checking are a subset of this.
>
> Oh, I didn't realize that the idle limits are currently broken and that
> your first patches fixes that. I think I now also understand why do you
> the idle-check at each step, so that this actually gets properly
> exercised.
>
> Problem with your approach here is that this will cause a spurious
> regression report from our QA since the current min-max-config-at-idle
> will suddenly starts failing (since it will test more and currently broken
> things with your patches applied). And that might shadow other basic
> issues (yeah, unlikely but still).
>
> So I think the right approach here is to keep the current subtest as-is
> (maybe rename it to "basic-api" since that's pretty much the only thing it
> does), and then add a completely new set of subtests like you've laid out
> here. So just leave the existing code as-is and copypaste the code for all
> your new tests (where you make changes at least).
>
Ah yes, expanding the subtest to the point that it uncovers an old problem
will appear as a regression from recent driver updates, which it is not. I
didn't consider this. I agree with your approach to have the current subtest
cover only basic min/max parameter validation. But I would recommend taking
patches 1-3 of this set - they work within that scope and will not cause
failures. Can we just drop patch 4? I will re-introduce it as part of adding
the new subtests.
-Jeff
> It's probably simplest if you do this shuffling to avoid a rebase mess
> with your existing patches.
>
> > min-max-config-at-load
> > - Manipulate min and max as above, but do so during load. Check for the
> > same basic requirements. When heavily loaded, cur should reach max. There
> > is also potentially some problem with this scenario due to interrupt
> > limits not being updated reliably. If cur is at max, and max is then
> > increased, cur may stay at old max.
> > - This will be a new subtest that re-uses the min/max manipulation function
> > but just do so under load.
> >
> > restore-on-reset
> > - Trigger gpu reset, then test that user-set (non-default) min/max settings
> > were retained and that turbo functions correctly when load is applied and
> > removed. This scenario will fail today and is the point of "Restore rps/rc6
> > on reset".
> > - This will be another new subtest not yet submitted,
> >
> > So the subtests are focused on known issues. I'm open to any suggestions on
> > their design or implementation. Thanks.
>
> Excellent test plan imo and thanks a lot for unconfusing me.
>
> Cheers, Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-01-27 22:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-21 23:14 Expansion of pm_rps subtest min-max-config-at-idle jeff.mcgee
2014-01-21 23:14 ` [PATCH 1/4] pm_rps: Expand on min and max config testing jeff.mcgee
2014-01-21 23:14 ` [PATCH 2/4] pm_rps: Remove repeat sysfs reads jeff.mcgee
2014-01-21 23:14 ` [PATCH 3/4] pm_rps: Make frequency logging more compact jeff.mcgee
2014-01-21 23:14 ` [PATCH 4/4] pm_rps: Require that cur reaches min at idle jeff.mcgee
2014-01-23 10:40 ` Daniel Vetter
2014-01-23 17:15 ` Jeff McGee
2014-01-23 18:49 ` Daniel Vetter
2014-01-23 20:24 ` Jeff McGee
2014-01-23 21:54 ` [PATCH 4/4 v2] " jeff.mcgee
2014-01-25 19:46 ` Daniel Vetter
2014-01-27 16:24 ` Jeff McGee
2014-01-27 16:50 ` Daniel Vetter
2014-01-27 22:23 ` Jeff McGee [this message]
2014-01-27 22:39 ` Daniel Vetter
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=20140127222326.GB2511@jeffdesk \
--to=jeff.mcgee@intel.com \
--cc=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox