Age | Commit message (Collapse) | Author |
|
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
igt_save_module_param is an internal static function and therefore isn't
included in the public API documentation.
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
The section id is generated from the section title and is used to create
the html output filename, which therefore causes problems if it includes
a '/' character.
Cc: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
In order to keep the GPU in a consistent state between samples, we have
to wait for it to fall asleep before proceeding.
For fun hook up igt_stats.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
https://en.wikipedia.org/wiki/Trimean
The trimean is a the most efficient 3-point L-estimator (estimator
of central tendency, i.e. average), even more robust than the
median at estimating the average of a sample population.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
https://en.wikipedia.org/wiki/Interquartile_mean
The IQM is a truncated mean and so is very similar to the scoring
method used in sports that are evaluated by a panel of judges:
discard the lowest and the highest scores; calculate the mean
value of the remaining scores.
It's useful to hide outliers in measurements (due to cold cache etc),
without having to worry too much about the actual distribution.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
So we can inspect fw headers. Sample output:
Firmware: skl_dmc_ver1_18.bin (7892 bytes)
CSS header (128 bytes)
module_type: DMC (9)
header_len: 32
header_ver: 0x10000
module_id: 0x0
module_vendor: 0x0
date: 0x7df060c
size: 1973
key_size: 0
modulus_size: 0
exponent_size: 0
version: 1.18 (0x10012)
kernel_header_info: 0x0
Package header (256 bytes)
header_len: 64
header_ver: 1
num_entries: 3
Firmware #1
stepping: A.*
offset: 4294967295
Firmware #2
stepping: B.*
offset: 4294967295
Firmware #3
stepping: *.*
offset: 0
0x7f0867143000
0x7f0867143180
signature: 0x40403e3e
header_len: 128
header_ver: 1
dmcc_ver: 520
project: 0x900
fw_size: 1845
fw_version: 0x10008
mmio_count: 3
write(0x0008f074, 0x00002fc0)
write(0x0008f004, 0x02500204)
write(0x0008f034, 0xc003b400)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Add forking subtests to gem_ringfill. Tests cause consistent GPU
hangs on SKL.
v2: Removed noop parts.
v3:
- Allow executing the tests in order too (Chris Wilson).
- Rename the tests to -forked-1
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
[ickle: Extend to cover forked-N]
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89959
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
It's all about good looking APIs.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Chris mentioned he wanted to be able to measure a variable "for one
second" and use igt_stats to store them. That's one case where we don't
know the number of data points upfront.
We should really support that, so here it is.
v2: Just free ->sorted when a new capacity is needed.
ensure_sorted_values() will then reallocate the array to the new
capacity on demand (Chris)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Chris had a doubt, and I was lazy and didn't do a similar test for the
quartiles/median than for the mean (test_invalidate_mean()). Plug that
gap.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
IQR is a good measure of dispersion.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
More stuff, quite useful characteristics of a dataset.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
In case we want to push a bunch of values in one go.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Lucky enough to have exact values, == works!
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Somewhat useful, for instance to size an histogram.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
We're going to use this simple fixture once more, might as well make a
function instead of copy/pasting code.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
This changes how we compute the variance. We want an unbiased variance
when reasoning about a sample.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Sigh.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Looks better!
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Because the structure started small, I initialized every member
directly, but that means that the new fields added weren't properly
initialized (sigh!). Zero the whole thing first then.
Also, the punishment for introducing a bug should be to write the
corresponding unit test. It's not a perfect one, but I'll take it.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Sure, that's an implementation details, but make sure we do recompute
the mean when we add a new value.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Sure, it'll be freed at exit(), but might as well be a bit pedantic.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
There are several types of averages eg. mean, median and mode.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
With this, we don't need to worry about what happened to the buffer
before.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
I often run "sudo ./test 2>&1 | tee output.txt", and when we're
succeeding - never printing to stderr - the output gets buffered and
is never flushed (because it doesn't point to a terminal), so I never
know which test is running. With this fflush, I'm able to know when
each test finishes.
v2: Add blank line too (Chris)
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
gem_fenced_exec_thrash was not freeing any resources between
subtests. On 1Gb android systems this resulted in the test
failing with an OOM error.
Added cleanup code to free BOs at the end of each subtest.
Signed-off-by: Derek Morton <derek.j.morton@intel.com>
|
|
And they keep it disabled until something else enables it. So let's
consider this on the draw subtests.
With this, some PSR tests that were failing will now start passing.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
Because the GTT mmaps "permanently" disable PSR and this can mess
some of our assertions. So let's just use the CPU domain to keep the
implementation simple.
With this, some PSR tests that were failing will now start passing.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
It doesn't make sense to write on the sprite/cursor plane of the
"offscreen" screen. The pick_target() function was just returning the
offscreen_fb pointer for those cases, so we were not really testing
any cursor or sprite code. So the tests were just the same as
offscreen-pri.
That kills 24 subtests for each feature (72 in total).
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
This test exercies the dev_priv->fb_tracking.busy_bits bug I recently
found and Daniel fixed.
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
deviation
Paulo suggested that we could short-circuit the search for a good
divider if we find a 0 deviation of the DCO frequency from the central
frequency.
Out of the 373 test frequencies, 34 hit that fast path.
Suggested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Might as well try to keep the code in both this test and the kernel as
close as possible.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Paulo noticed that, because we were only comparing positive deviations
with positive deviations and negative deviations with negative
deviations, we weren't actually always using the absolute minimal
deviation at all.
This improves the average deviation across all tested frequencies (373):
before: average deviation: 215.13
after: average deviation: 194.47
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Follow Paulo's comment on the corresponding kernel patch.
This means we also have to move the break when we have cycled through
the even dividers as well.
This improves the number of even dividers used across the tested
frequencies (373) (at the expense of a slightly worse average deviation,
but "even dividers take precedence over a lower deviation".
before:
even/odd dividers: 338/35
average deviation: 206.52
after:
even/odd dividers: 363/10
average deviation: 215.13
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|