45 Commits

Author SHA1 Message Date
Daniel Vetter
b38b8a59a8 tests/pm_pc8: subtests for runtime pm for dpms
Very basic since I lack a bit ideas. After all with the latest
patches runtime pm doesn't make much a difference between dpms off
and disabling the outputs completely with SetCrtc.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-04-30 18:07:58 +02:00
Imre Deak
a595a40078 tests/pm_pc8: skip the test if runtime PM is disabled
The PC8 state won't be entered unless runtime PM is enabled, so support
for PC8 residency counters alone is not enough to run this test.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-04-25 20:14:30 +03:00
Paulo Zanoni
1fd9fc0012 tests/pm_pc8: skip tests when no screens are connected
Instead of failing, just skip the tests.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73642
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-04-04 13:32:30 -03:00
Paulo Zanoni
abba92d9cf tests/pm_pc8: add missing newline
Otherwise the output will get even more confusing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-04-04 13:31:49 -03:00
Daniel Vetter
9aea7ae541 lib/igt_fb: switch to igt_ prefix from kmstest_
Shorter and more in line with our general igt_ prefix for everything
which isn't somehow intel or i915-gem or otherwise hw specific - these
helpers here are all fully generic framebuffer handling functions
based on kms + cairo.

Well, the actual buffer alloc is done with i915 gem, but meh ;-)

Two special cases:
- bpp_depth_to_drm_format and drm_format_to_bpp completely lacked
  prefixes, so just add igt_.
- write_fb was a bit misleading given that we have gem_write for
  uploading to buffers. Rename that to write_fb_to_png to make it
  crystal clear what this thing does even without looking at docs.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-26 18:50:27 +01:00
Daniel Vetter
2fc2fa5471 lib/igt_kms: s/kmstest_create_fb2/kmstest_create_fb/
Simplify the name since the old _fb function is now gone.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-26 18:50:27 +01:00
Daniel Vetter
70182167d6 lib: remove kmstest_create_fb
Use the new-style function using drm fourcc codes instead everywhere.

To easily use thew fourcc based interface also expose
bpp_depth_to_drm_format from the library. Finally include drm_fourcc.h
from the igt_kms.h header since pretty much everyone needs this now.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-26 18:50:27 +01:00
Daniel Vetter
c03c6ceb29 lib: rename intel_gpu_tools.h to intel_io.h
With the header cleanup we can now give this header a suitable name,
since it now really only contains register access and other I/O
functions and assorted definitions.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22 21:34:29 +01:00
Daniel Vetter
e49ceb8690 lib: unnecessary header removal for drmtest.h, part 1
Brought a few missing headers to light in ioctl_wrappers.h, too.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22 21:07:37 +01:00
Daniel Vetter
ea18fc16cd lib: extract igt_open_forcewake_handle
... and I immediately regret that I've killed the return value
for igt_debugfs_init, since we have callers which need to work
without the forcewake stuff, e.g. the reg dumper needs to work
without i915 loaded.

Put this new helper to good use in the mmio code and the pm_pc8
testcase.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-14 16:00:22 +01:00
Paulo Zanoni
fa6b1516c5 tests/pm_pc8: be more verbose on test_i2c failures
Whenever I see that error, I go and print the numbers so I can check
which one is failing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-26 19:16:38 -03:00
Paulo Zanoni
d406249bed tests/pm_pc8: use intel_gen instead of a big IS_GEN check
Much better!

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-26 19:16:11 -03:00
Paulo Zanoni
0a57d0b8d3 tests/pm_pc8: BDW should also support PC8 residencies
And I'm hoping the MSR register addresses will be the same.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-26 19:15:44 -03:00
Paulo Zanoni
d3582aeade tests/pm_pc8: use XY_COLOR_BLT instead of just COLOR_BLT
And add BDW support to it.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-26 19:15:18 -03:00
Paulo Zanoni
6a6b8a2138 tests/pm_pc8: add "stay" mode
I used to have a binary that would just disable all the screens - so
we can enter PC8/runtime PM - and then sleep forever. I used this
binary many times while debugging PC8 and runtime PM, and I also sent
the binary to many people so they would be able to test these things
without X running.

Since pm_pc8 already implements everything that the separate binary
needs, and it even has some additional code to try to configure the
environment to actually reach PC8, it's easier to just ask people to
run "sudo ./pm_pc8 --stay" instead of sending them a file, asking them
to compile it, setup the environment, and then run it.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-26 19:14:56 -03:00
Paulo Zanoni
37773d91d9 tests/pm_pc8: add pci-d3-state subtest
Currently the test suite just looks at the files provided by the
runtime power management framework to check if the device is runtime
suspended. Add a test that reads the PCI config space to check if the
device is actually in PCI D3 state or not.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-25 18:00:53 -03:00
Paulo Zanoni
31b20f7478 tests/pm_pc8: add reg-read-ioctl subtest
After I finally fixed the code that WARNs if we're runtime suspended
when reading registers I started getting the WARNs, so this test
should reproduce them on a Kernel with the problem.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-25 17:08:44 -03:00
Paulo Zanoni
30c21ffe7f tests/pm_pc8: try to modprobe msr
Just in case it's compile with M instead of Y. If the module is not
there, the other assertions will catch the problem.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-21 10:09:00 -03:00
Paulo Zanoni
41267dca3c tests/pm_pc8: try to modprobe i2c-dev
Just in case the module is compiled with M instead of Y. If the module
is not there, the other assertions will catch the problem.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-21 10:08:35 -03:00
Paulo Zanoni
4eb37bf4c1 tests/pm_pc8: add gem-idle subtest
It's triggering WARNs and DRM_ERRORs on current drm-intel-nighly.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-21 10:07:55 -03:00
Paulo Zanoni
6f288749f4 tests/pm_pc8: remove sleep() call when setting up the environment
This sleep was added because sometimes we didn't reach PC8+
residencies, but it was still not enough to prevent the problem every
time, and it is really not needed most of the times. I have
investigated more and it seems that we only have to wait until after
some minutes have past since the machine booted. So just remove the
sleep for now since when you run each subtest in a separate process,
you end up having to sleep at every subtest.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-02-21 10:07:30 -03:00
Chris Wilson
164d9d26ac kmstest: Fix up lifetimes of cairo objects
cairo_t is the short lived drawing context, whereas cairo_surface_t is
the heavyweight object that persists and is also tied to underlying GEM
objects. So make the kmstest API reflect the different weights and fix
the lifetime and underlying object reference leaks.

Based on the fix by Paulo Zanoni.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-12-31 12:30:30 +00:00
Paulo Zanoni
2a71bff317 tests/pm_pc8: check if we can't become DRM master
QA reported a failure that I believe happened because we couldn't
become DRM master, so add code that checks for this and prints a nice
error message.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-12-16 18:51:39 -02:00
Paulo Zanoni
f6d9e160c9 tests/pm_pc8: add "resuming" state
This one was missing. For some reason we never really detected it on
our test suite. I checked the Kernel source and now we should be fine.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-26 11:37:25 -02:00
Paulo Zanoni
0df88f5e64 tests/pm_pc8: try to reuse FBs when possible
Instead of creating a new FB every time we need one, create a cache of
FBs and reuse whenever possible. That means we'll create at most two
FBs, and reuse them hundreds and hundreds of times.

The kmstest_paint_test_pattern function takes about 1-2 seconds to
run, and we'll avoid it whenever we reuse the FB.

This makes the time taken to run the modeset-lpsp-stress subtest go
from 2:29 to 1:29.

A full "time ./pm_pc8 --quick" goes from 8:14 to 6:27.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-21 18:47:29 -02:00
Paulo Zanoni
78227101e2 tests/pm_pc8: try harder to reach PC8+ residencies
If we want to actually reach PC8+ states, we need to properly
configure all the devices on the system to allow this. This function
will try to setup the things we know we need, but won't scream in case
anything fails: we don't know which devices are present on your
machine, so we can't really expect anything, just try to help with the
more common problems.

Another reason for this commit is that I got tired of having to
readjust the runtime PM policies every time I reboot my machine.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-21 17:36:57 -02:00
Paulo Zanoni
e9363973b1 tests/pm_pc8: rename some subtests
Due to copy/paste error, we had 3 subtests called gem-execbuf-stress.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-21 15:11:21 -02:00
Paulo Zanoni
f7abef6618 tests/pm_pc8: add --quick option
Not meant to be used on the QA cycles, but by developers who just want
to quickly check things while doing development. Reduces the total
time from 27 minutes to 6 minutes on my machine.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:50 -02:00
Paulo Zanoni
4826546746 tests/pm_pc8: add some more stress tests
I was suspecting some problems just happen if we have a bigger wait
than the current ones we have, so add a new WAIT_EXTRA flag just to
see if the problems really happen. Also, add support for the wait
flags on the gem stress tests, and use them.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:44 -02:00
Paulo Zanoni
4fa9dde799 tests/pm_pc8: remove compare_registers subtest
It's not executed by default, and it's completely relying on Haswell
registers and on internal knowledge of how the Kernel is supposed to
work. Since we plan to test generic runtime PM on all supported
platforms, maintaining this test so it works on all those platforms
will be a pain. We already have some ideas on how to verify registers
that must stay at specific values from inside the Kernel, so let's
kill this test and wait until the proper Kernel code gets merged.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:37 -02:00
Paulo Zanoni
a8610a4776 tests/pm_pc8: rename some variables
Since we're not only testing PC8 anymore, we're resting "PM", rename
some variables from something_pc8 to something_suspend, just to make
it not-so-confusing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:30 -02:00
Paulo Zanoni
19c8d5f4ff tests/pm_pc8: fix debugfs-forcewake-user for PC8-only cases
We don't wake up from forcewake when we only have PC8, but not runtime
PM, so make the test pass.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:23 -02:00
Paulo Zanoni
63e4dafb32 tests/pm_pc8: check for PC8 status, not residency in most cases
If you really want to reach the PC8+ states and consequently get PC8+
residency, you need to properly configure all the devices on your
machine to allow PC8+, not just graphics. The current code for PC8
checks for PC8+ residency everywhere, so if you have a machine that's
not properly configured you'll fail every test. OTOH, even if your
machine can't reach the PC8+ states, it will still try to enable and
disable PC8, so we can try to test the feature even if we're never
really reaching the PC8+ states. Also, if your machine does allow PC8+
residencies, but some other driver/program decides to keep the machine
busy while you're running the test suite, you'll also get failures
which you shouldn't be getting.

Based on the arguments above, I'm changing most of the subtests to
only check for the PC8 status reported by sysfs (enabled/disabled),
not check real PC8+ residency. I also added two tests that should
check for PC8+ residency, so we will stil be able to diagnose badly
configured machines.

As a bonus, we won't sleep for full 5 seconds every time we expect PC8
to be disabled: we'll just read i915_pc8_status, which quickly gives
the result we're expecting. Considering how many modeset stress
subtests we have in the program, we'll save a *lot* of time with this
change.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:16 -02:00
Paulo Zanoni
a4e96a95ca tests/pm_pc8: add support for runtime PM
We try to detect if we have runtime PM or if we just have PC8. In case
there's runtime PM, the functions that wait will wait for the runtime
PM status reported by the sysfs file instead of waiting for PC8
residencies to move.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-14 19:59:09 -02:00
Chris Wilson
217bd8d55e tests/pm_pc8: Fix invalid pointer-to-integer casting
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71592
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-11-14 09:48:24 +00:00
Oscar Mateo
37f26d17b1 lib: Move kms stuff from drmtest.c over to igt_kms.c
This makes cairo dependencies easier to handle. Otherwise, we
would have to litter drmtest all over with "#ifndef ANDROID"

Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
[danvet: Add missing _GNU_SOURCE to igt_kms.c and missing include to
intel_sprite_on.c]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-11-12 12:04:12 +01:00
Paulo Zanoni
0d902cad5f tests/pm_pc8: reorganize main function
Split the tests into categories. There are too many tests, it's
getting harder to locate the ones we need.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 19:38:03 -02:00
Paulo Zanoni
c527a29325 tests/pm_pc8: add some GEM tests
These are more complete tests than the previous test_batch() one. We
test CPU/GTT mmaps, pread/pwrite and batch buffers.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 19:38:03 -02:00
Paulo Zanoni
79670c54eb tests/pm_pc8: remove "batch" and "stress-test" subtests
They use a bad BLT command and don't check its result. The next patch
will add proper GEM tests that contain commands that work and code
that checks if the command is really working.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 19:38:03 -02:00
Paulo Zanoni
3775eae051 tests/pm_pc8: add debugfs/sysfs tests
They don't really exercise any particular special code path for PC8,
but the runtime D3 code will touch these code paths, so we'll need the
tests.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 18:40:22 -02:00
Paulo Zanoni
0fbb834646 tests/pm_pc8: add modeset-lpsp-stress
It's the only one we were missing form the possible combinations.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 18:40:22 -02:00
Paulo Zanoni
1bcae02e5c tests/pm_pc8: extract i2c_subtest_check_environment
Just to make it more organized and consistent with the other tests.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 18:40:22 -02:00
Paulo Zanoni
2fd0eb53aa tests/pm_pc8: return void on test_i2c
And do the assertion in the code line that actually verifies the
condition we need. Makes it easier to debug failed tests.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 18:40:22 -02:00
Paulo Zanoni
514efb507d tests/pm_pc8: move teardown_environment next to setup_environment
So I can add/remove/verify code more easily.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-11-08 18:40:22 -02:00
Daniel Vetter
5738f1952d tests: establish pm_ prefix
Imo power management, power consumption and performance are tightly
enough coupled that we can throw them all into one bin.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-11-04 19:49:10 +01:00