diff mbox series

[i-g-t] lib/pm_rpm: Reload the module with full mmio debugging

Message ID 20180904102004.5726-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [i-g-t] lib/pm_rpm: Reload the module with full mmio debugging | expand

Commit Message

Chris Wilson Sept. 4, 2018, 10:20 a.m. UTC
Our unclaimed mmio access debugging is lazy, doing cheap checks
periodically and only if they fail do a full check around every mmio
access. When testing for runtime pm, enable the full mmio debugging from
the initial load.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
---
 tests/pm_rpm.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Imre Deak Sept. 4, 2018, 2:14 p.m. UTC | #1
On Tue, Sep 04, 2018 at 11:20:04AM +0100, Chris Wilson wrote:
> Our unclaimed mmio access debugging is lazy, doing cheap checks
> periodically and only if they fail do a full check around every mmio
> access. When testing for runtime pm, enable the full mmio debugging from
> the initial load.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Imre Deak <imre.deak@intel.com>
> ---
>  tests/pm_rpm.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> index e3bb6227a..91aef0889 100644
> --- a/tests/pm_rpm.c
> +++ b/tests/pm_rpm.c
> @@ -2058,7 +2058,7 @@ int main(int argc, char *argv[])
>  	igt_subtest("module-reload") {
>  		igt_debug("Reload w/o display\n");
>  		igt_i915_driver_unload();
> -		igt_assert_eq(igt_i915_driver_load("disable_display=1"), 0);
> +		igt_assert_eq(igt_i915_driver_load("disable_display=1 mmio_debug=2147483647"), 0);
>  
>  		igt_assert(setup_environment());
>  		igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
> @@ -2066,13 +2066,16 @@ int main(int argc, char *argv[])
>  
>  		igt_debug("Reload as normal\n");
>  		igt_i915_driver_unload();
> -		igt_assert_eq(igt_i915_driver_load(NULL), 0);
> +		igt_assert_eq(igt_i915_driver_load("mmio_debug=2147483647"), 0);

Could've been in hex.

>  
>  		igt_assert(setup_environment());
>  		igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
>  		if (enable_one_screen_with_type(&ms_data, SCREEN_TYPE_ANY))
>  			drm_resources_equal_subtest();
>  		teardown_environment();
> +
> +		/* Remove our mmio_debugging module */
> +		igt_i915_driver_unload();

What loads it again?

>  	}
>  
>  	igt_exit();
> -- 
> 2.19.0.rc1
>
Chris Wilson Sept. 4, 2018, 2:21 p.m. UTC | #2
Quoting Imre Deak (2018-09-04 15:14:06)
> On Tue, Sep 04, 2018 at 11:20:04AM +0100, Chris Wilson wrote:
> > Our unclaimed mmio access debugging is lazy, doing cheap checks
> > periodically and only if they fail do a full check around every mmio
> > access. When testing for runtime pm, enable the full mmio debugging from
> > the initial load.
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Imre Deak <imre.deak@intel.com>
> > ---
> >  tests/pm_rpm.c | 7 +++++--
> >  1 file changed, 5 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> > index e3bb6227a..91aef0889 100644
> > --- a/tests/pm_rpm.c
> > +++ b/tests/pm_rpm.c
> > @@ -2058,7 +2058,7 @@ int main(int argc, char *argv[])
> >       igt_subtest("module-reload") {
> >               igt_debug("Reload w/o display\n");
> >               igt_i915_driver_unload();
> > -             igt_assert_eq(igt_i915_driver_load("disable_display=1"), 0);
> > +             igt_assert_eq(igt_i915_driver_load("disable_display=1 mmio_debug=2147483647"), 0);
> >  
> >               igt_assert(setup_environment());
> >               igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
> > @@ -2066,13 +2066,16 @@ int main(int argc, char *argv[])
> >  
> >               igt_debug("Reload as normal\n");
> >               igt_i915_driver_unload();
> > -             igt_assert_eq(igt_i915_driver_load(NULL), 0);
> > +             igt_assert_eq(igt_i915_driver_load("mmio_debug=2147483647"), 0);
> 
> Could've been in hex.
-1 should work as well as INT_MAX, I was just a bit dubious about that
claim at the time. But the kernel looks to be happy enough to start
counting down from -1.

> >               igt_assert(setup_environment());
> >               igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
> >               if (enable_one_screen_with_type(&ms_data, SCREEN_TYPE_ANY))
> >                       drm_resources_equal_subtest();
> >               teardown_environment();
> > +
> > +             /* Remove our mmio_debugging module */
> > +             igt_i915_driver_unload();
> 
> What loads it again?

We automatically load it upon a failed drm_driver_open(). We have a list
of modules to try and modprobe if we find no matching /dev/dri/* fd.
-Chris
Imre Deak Sept. 4, 2018, 2:50 p.m. UTC | #3
On Tue, Sep 04, 2018 at 03:21:09PM +0100, Chris Wilson wrote:
> Quoting Imre Deak (2018-09-04 15:14:06)
> > On Tue, Sep 04, 2018 at 11:20:04AM +0100, Chris Wilson wrote:
> > > Our unclaimed mmio access debugging is lazy, doing cheap checks
> > > periodically and only if they fail do a full check around every mmio
> > > access. When testing for runtime pm, enable the full mmio debugging from
> > > the initial load.
> > > 
> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > Cc: Imre Deak <imre.deak@intel.com>
> > > ---
> > >  tests/pm_rpm.c | 7 +++++--
> > >  1 file changed, 5 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> > > index e3bb6227a..91aef0889 100644
> > > --- a/tests/pm_rpm.c
> > > +++ b/tests/pm_rpm.c
> > > @@ -2058,7 +2058,7 @@ int main(int argc, char *argv[])
> > >       igt_subtest("module-reload") {
> > >               igt_debug("Reload w/o display\n");
> > >               igt_i915_driver_unload();
> > > -             igt_assert_eq(igt_i915_driver_load("disable_display=1"), 0);
> > > +             igt_assert_eq(igt_i915_driver_load("disable_display=1 mmio_debug=2147483647"), 0);
> > >  
> > >               igt_assert(setup_environment());
> > >               igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
> > > @@ -2066,13 +2066,16 @@ int main(int argc, char *argv[])
> > >  
> > >               igt_debug("Reload as normal\n");
> > >               igt_i915_driver_unload();
> > > -             igt_assert_eq(igt_i915_driver_load(NULL), 0);
> > > +             igt_assert_eq(igt_i915_driver_load("mmio_debug=2147483647"), 0);
> > 
> > Could've been in hex.
> -1 should work as well as INT_MAX, I was just a bit dubious about that
> claim at the time. But the kernel looks to be happy enough to start
> counting down from -1.
> 
> > >               igt_assert(setup_environment());
> > >               igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
> > >               if (enable_one_screen_with_type(&ms_data, SCREEN_TYPE_ANY))
> > >                       drm_resources_equal_subtest();
> > >               teardown_environment();
> > > +
> > > +             /* Remove our mmio_debugging module */
> > > +             igt_i915_driver_unload();
> > 
> > What loads it again?
> 
> We automatically load it upon a failed drm_driver_open(). We have a list
> of modules to try and modprobe if we find no matching /dev/dri/* fd.

Ok, missed that. Looks ok:
Reviewed-by: Imre Deak <imre.deak@intel.com>

> -Chris
diff mbox series

Patch

diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index e3bb6227a..91aef0889 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -2058,7 +2058,7 @@  int main(int argc, char *argv[])
 	igt_subtest("module-reload") {
 		igt_debug("Reload w/o display\n");
 		igt_i915_driver_unload();
-		igt_assert_eq(igt_i915_driver_load("disable_display=1"), 0);
+		igt_assert_eq(igt_i915_driver_load("disable_display=1 mmio_debug=2147483647"), 0);
 
 		igt_assert(setup_environment());
 		igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
@@ -2066,13 +2066,16 @@  int main(int argc, char *argv[])
 
 		igt_debug("Reload as normal\n");
 		igt_i915_driver_unload();
-		igt_assert_eq(igt_i915_driver_load(NULL), 0);
+		igt_assert_eq(igt_i915_driver_load("mmio_debug=2147483647"), 0);
 
 		igt_assert(setup_environment());
 		igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
 		if (enable_one_screen_with_type(&ms_data, SCREEN_TYPE_ANY))
 			drm_resources_equal_subtest();
 		teardown_environment();
+
+		/* Remove our mmio_debugging module */
+		igt_i915_driver_unload();
 	}
 
 	igt_exit();