This allows intel_gpu_top to run both in statistics-collecting mode
(collecting the per-ring statistics in gnuplot-friendly format) and
ncurses top-like mode at the same time.
It also allows to output the statistics directly to stdout, by using "-o
-", so the results can be parsed directly via a popen() parsing.
If you are using intel_gpu_top as previously (without any command-line
arguments), it should change nothing for you. If you were using its
logging facilities (e.g., the '-o file'), note that the logging will keep
running, but the detailed top-like interface will be on the screen at the
same time.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
According to docs, this should work with ppgtt and just convert to
noops otherwise. In reality, it hangs the machine.
So just disable these for the moment.
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
We use the "ret" variable to check function return values, and these
values are not necessarily 0 on the successful cases, so we need to
reset "ret" after we finish using it.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
getstats.c:48:2: warning: comparison of unsigned expression >= 0 is
always true
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
It seems that the kernel patches required by the TEST_PLANES feature are
still not upstream, so I didn't test this patch.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
If calls inside update_display fail, the function returns and we don't
quit the program if dump_info or test_all_modes. So we enter the main
loop and keep waiting for user input, even on cases where we are not
supposed to require user input. To fix this, we move the check to
outside the update_display function. As a side effect, we also do
cleanup instead of just exit(0) and we return 1 in case update_display
failed.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Previously, when called without any arguments, the application required
user input to finish. However, testdisplay is ran by "make check", and
it is not a good idea to run a program that requires user input in "make
check". So we change the default behavior to something that doesn't
require user input. You can still access the previous behavior using the
"-m" argument.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
testdisplay.c:117:1: warning: comparison between signed and unsigned
integer expressions
testdisplay.c:125:1: warning: comparison between signed and unsigned
integer expressions
testdisplay.c:145:1: warning: comparison between signed and unsigned
integer expressions
testdisplay.c:1060:16: warning: comparison between signed and unsigned
integer expressions
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Creating a zero-length bo should fail, so check that. Still run
the minimal batchbuffer, but without the zero-length reloc.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Hangs gen3 and simply writes garbage into the unmappable part of
gtt on gen4+, which might cause issues later on.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
- now also handles ascii dumps like i915_ringbuffer_data
- getoptified
- totally lazy binary detector
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Using a dummy reloc that doesn't matter to trick the kernel into
synchroizing the rings.
v2: properly apply MI_NOOP workaround to MI_FLUSH_DW and
switch to MI_COND_BATCH_BUFFER_END as a dummy command on the
render ring to avoid PIPE_CONTROL errata.
v3: somebody clever decided that in C, you cound from 1,
i.e. I915_EXEC_RENDER == 1. It works now ...
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Also start to shortly explain testcases with an easily-greppable
header like this:
/*
* Testcase:
*
* [Possible further explanation.]
*
*/
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
MI_*/PIPE_CONTROL writes need to be in DOMAIN_INSTRUCTION, because
that is what mesa uses and I plan to use this to work around a
gen6 ppgtt issue.
Also testing with intentionally b0rked GFX_MODE on my snb shows that
we need to increase the loop counter a bit to reliably hit the tlb
invalidation problem. Test still completes within a few seconds.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Previously, "make check" failed because the main() function was not
defined.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Tested-By: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Without this patch, intel_gpu_top will try to get access to the hardware
after running the profiling command in the background. In case such access
fails, the main process quits, but the background one will continue
running.
So let's move this test up, so it is done before we fork.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This patch adds support for running intel_gpu_top to profile specific
commands. The required command will be carried out in separate process,
and main intel_gpu_top will leave when the child process will exit.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This patch adds support for non-interactive mode, invoked by running with
'-o output' switch. In this case, no interactive output is being
performed, but the execution statistics are being saved into the output
file.
The output file is generated in both human and gnuplot-readable format.
Unlike interactive mode, where non-supported pipes and non-active
registers are skipped, the content of such pipes and registers is recorded
into the log file to simplify parsing and standardize the list of columns.
Also, unlike interactive mode, the registers are not sorted according to
the usage - this way, their variation over time can be analysed offline.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
the monitoring itself. This way, the first measure will already contain
the difference from the previous value instead of non-initialized value.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This patch initializes the last_stats[] for registers prior to starting
the monitoring itself. This way, the first measure will already contain
the difference from the previous value instead of non-initialized value.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This patch adds initial support for non-stdio output, to be used for
non-interactive monitoring.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
second
This patch adds support for getopt, and adds two default parameters to it:
-h to show usage notes; and -s to allow user to define number of samples
to acquire per second.
Manpage documentation is also adjusted accordingly.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This allows intel_gpu_top to properly account for time spent inside system
calls. Effectively, with previous implementation, intel_gpu_top could
spent longer than 1s between consecutive measures. This attempts to
minimize the extra time spent while polling for data.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>