Enable Gen 7 Observation Architecture

Submitted by Robert Bragg on Feb. 2, 2016, 9:30 p.m.

Details

Reviewer None
Submitted Feb. 2, 2016, 9:30 p.m.
Last Updated Aug. 15, 2016, 3:13 p.m.
Revision 5

Cover Letter(s)

Revision 1
      This series enables support for the Observation Architecture on Haswell

Compared to the last series I sent out, the main changes are:

* The terminology changed so we open a 'stream' not an 'event'.

* A stream is configured with an array of u64 properties after finding
  the previous config struct quite awkward to validate and not well
  suited to supporting multiple kinds of streams sharing common config
  options (which arises with work Sourab Gupta is looking at based on
  this driver)

* No pre-defined enum of metric set IDs and metric sets are now
  advertised via sysfs. This is to allow for configs being loaded at
  runtime in the future and the use of uuids that can be unambiguously
  mapped to corresponding normalization equations in userspace. Another
  consideration here was that we might need to add new versions of a
  particular config like 'compute basic' (more likely for newer configs
  with less testing) at which point the enum doesn't really make life
  easier for userspace if you have to be aware of the versioning
  relationships and attempt different IDs to find the latest version the
  kernel supports.

I haven't written igt tests for this yet, but can hopefully start
looking at that next if there's no major issue with the general api. So
far the interface has been tested and iterated based on what's worked
out well for GPU Top[1], an implementation of GL_INTEL_performance_query
in Mesa and an implementation of an API called MDAPI used by GPA/VTune
to capture metrics (private a.t.m as I'm not sure there would be much
general interest in it.)

The PRM for Haswell's OA unit can be found here:

https://01.org/sites/default/files/documentation/
observability_performance_counters_haswell.pdf

(though unfortunately it's not very complete documentation)

An example of opening an i915 perf stream can be seen in Mesa here:

https://github.com/rib/mesa/blob/wip/rib/oa-next/src/mesa/drivers/
dri/i965/brw_performance_query.c#L904

A summary of the stream format can seen here:

https://github.com/rib/linux/wiki/i915-perf-stream-format

There's an open issue to do with how to properly clear the status bits
in the OASTATUS1 register which I noticed the other day can't be right
a.t.m and I'm waiting for feedback on from the Windows team or OA
architect. I don't expect it will have much impact so it still seemed
worth sending this series now.

Another thing to mention is that I just noticed gputop is hitting the
cpu more than expected in its overview mode, polling for OA data and I
need to double check it's not a driver issue. Hopefully a minor issue;
probably not worth holding things up for.

Although this series only adds basic infrastructure and enables Haswell
it's probably good to keep in mind other work that builds on top. I've
also enabled Gen8+; there's some further work by Sourab Gupta to access
metrics in sync with command stream processing and Matthew Auld has
experimented with an interface for registering new OA configurations at
runtime.

In case it's helpful to reference, the Gen 8 enabling can be seen here:
https://github.com/rib/linux/tree/wip/rib/oa-next

Sourab's work can be seen here:
https://github.com/sourabgu/linux/tree/rebase-4.4-testing

Matt's patch for runtime configs can be seen here:
https://github.com/matt-auld/linux/tree/wip/matt-auld/oa-4.4-dynamic-testing

Regards,
- Robert

[1]
https://github.com/rib/gputop
https://github.com/rib/gputop/wiki/Build-Instructions


Robert Bragg (8):
  drm/i915: Add i915 perf infrastructure
  drm/i915: rename OACONTROL GEN7_OACONTROL
  drm/i915: Add 'render basic' Haswell OA unit config
  drm/i915: Add i915 perf event for Haswell OA unit
  drm/i915: advertise available metrics via sysfs
  drm/i915: Add dev.i915.perf_event_paranoid sysctl option
  drm/i915: add oa_event_min_timer_exponent sysctl
  drm/i915: Add more Haswell OA metric sets

 drivers/gpu/drm/i915/Makefile           |    4 +
 drivers/gpu/drm/i915/i915_cmd_parser.c  |    4 +-
 drivers/gpu/drm/i915/i915_dma.c         |    7 +
 drivers/gpu/drm/i915/i915_drv.h         |  154 ++++
 drivers/gpu/drm/i915/i915_gem_context.c |   23 +-
 drivers/gpu/drm/i915/i915_oa_hsw.c      |  658 ++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_hsw.h      |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1283 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  340 +++++++-
 include/uapi/drm/i915_drm.h             |  121 +++
 10 files changed, 2625 insertions(+), 7 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
 create mode 100644 drivers/gpu/drm/i915/i915_perf.c
    
Revision 2
      Compared to the last revision, this is just rebased on drm-intel-nightly

Robert Bragg (8):
  drm/i915: Add i915 perf infrastructure
  drm/i915: rename OACONTROL GEN7_OACONTROL
  drm/i915: Add 'render basic' Haswell OA unit config
  drm/i915: Add i915 perf event for Haswell OA unit
  drm/i915: advertise available metrics via sysfs
  drm/i915: Add dev.i915.perf_event_paranoid sysctl option
  drm/i915: add oa_event_min_timer_exponent sysctl
  drm/i915: Add more Haswell OA metric sets

 drivers/gpu/drm/i915/Makefile           |    4 +
 drivers/gpu/drm/i915/i915_cmd_parser.c  |    4 +-
 drivers/gpu/drm/i915/i915_dma.c         |    7 +
 drivers/gpu/drm/i915/i915_drv.h         |  154 ++++
 drivers/gpu/drm/i915/i915_gem_context.c |   23 +-
 drivers/gpu/drm/i915/i915_oa_hsw.c      |  658 ++++++++++++++++
 drivers/gpu/drm/i915/i915_oa_hsw.h      |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1283 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  340 +++++++-
 include/uapi/drm/i915_drm.h             |  121 +++
 10 files changed, 2625 insertions(+), 7 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
 create mode 100644 drivers/gpu/drm/i915/i915_perf.c
    
Revision 3
      I've been working on some i-g-t tests for this new interface and while I still
have some more tests to write, it still seemed worth sending out another updated
series in the mean time.


Firstly this includes updates based on Emil's previous comments.

Then there have been a few issue hit while writing tests:

* It seems it can take a fairly long time for the MUX config to apply after
  the register writes have finished, and now the driver inserts a delay after
  configuration, before enabling periodic sampling.
* I've found that sometimes the HW tail pointer can get ahead of OA buffer
  writes, especially with higher sampling frequencies, and so now the driver
  maintains a margin behind the HW tail pointer to ensure the most recent
  reports have some time to land before attempting to copy them to userspace.
* As a sanity check that a report is valid before it's copied to userspace the
  driver checks the report-id field != 0
* The _BUFFER_OVERFLOW record has been replaced with a _BUFFER_LOST record with
  more specific semantics.
* Since we can't clear the overflow status on Haswell while periodic sampling
  is enabled, if an overflow occurs we now restart the unit.
* The maximum OA periodic sampling exponent is now 31
* We verify the head/tail pointers read back from HW look sane before using as
  offsets to read reports from the OA buffer. We reset the HW if they look bad.


For reference the work-in-progress i-g-t tests can be found here:

https://github.com/rib/intel-gpu-tools
branch = wip/rib/i915-perf-tests

or browsed here:
https://github.com/rib/intel-gpu-tools/commits/wip/rib/i915-perf-tests

Also for reference these patches can be fetched from here:

https://github.com/rib/linux
branch = wip/rib/oa-2016-04-19-nightly

Regards,
- Robert


Robert Bragg (9):
  drm/i915: Add i915 perf infrastructure
  drm/i915: rename OACONTROL GEN7_OACONTROL
  drm/i915: don't whitelist oacontrol in cmd parser
  drm/i915: Add 'render basic' Haswell OA unit config
  drm/i915: Enable i915 perf stream for Haswell OA unit
  drm/i915: advertise available metrics via sysfs
  drm/i915: Add dev.i915.perf_event_paranoid sysctl option
  drm/i915: add oa_event_min_timer_exponent sysctl
  drm/i915: Add more Haswell OA metric sets

 drivers/gpu/drm/i915/Makefile           |    4 +
 drivers/gpu/drm/i915/i915_cmd_parser.c  |   33 +-
 drivers/gpu/drm/i915/i915_dma.c         |    8 +
 drivers/gpu/drm/i915/i915_drv.h         |  155 ++++
 drivers/gpu/drm/i915/i915_gem_context.c |   24 +-
 drivers/gpu/drm/i915/i915_oa_hsw.c      |  658 ++++++++++++++
 drivers/gpu/drm/i915/i915_oa_hsw.h      |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1439 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  340 +++++++-
 include/uapi/drm/i915_drm.h             |  133 +++
 10 files changed, 2795 insertions(+), 37 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
 create mode 100644 drivers/gpu/drm/i915/i915_perf.c
    
Revision 4
      Hopefully covers the last issues raised by Chris and addresses the open issue I
had with removing OACONTROL from the command parser whitelist.

- Robert

Robert Bragg (10):
  drm/i915: Add i915 perf infrastructure
  drm/i915: rename OACONTROL GEN7_OACONTROL
  drm/i915: return EACCES for check_cmd() failures
  drm/i915: don't whitelist oacontrol in cmd parser
  drm/i915: Add 'render basic' Haswell OA unit config
  drm/i915: Enable i915 perf stream for Haswell OA unit
  drm/i915: advertise available metrics via sysfs
  drm/i915: Add dev.i915.perf_event_paranoid sysctl option
  drm/i915: add oa_event_min_timer_exponent sysctl
  drm/i915: Add more Haswell OA metric sets

 drivers/gpu/drm/i915/Makefile           |    4 +
 drivers/gpu/drm/i915/i915_cmd_parser.c  |   35 +-
 drivers/gpu/drm/i915/i915_dma.c         |    8 +
 drivers/gpu/drm/i915/i915_drv.h         |  161 ++++
 drivers/gpu/drm/i915/i915_gem_context.c |   24 +-
 drivers/gpu/drm/i915/i915_oa_hsw.c      |  658 ++++++++++++++
 drivers/gpu/drm/i915/i915_oa_hsw.h      |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1418 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  340 +++++++-
 include/uapi/drm/i915_drm.h             |  133 +++
 10 files changed, 2781 insertions(+), 38 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
 create mode 100644 drivers/gpu/drm/i915/i915_perf.c
    
Revision 5
      Mostly just a rebase on a more recent nightly, except for an update to how
POLLIN events are reported to reduce the CPU overhead that was otherwise seen
while running gputop.

The problem seen with poll was largely a fault with gputop having multiple
redundant 200ms, but out-of-phase, timers tracked in its mainloop resulting in
excessive poll wake ups due to timeouts. This was fixed, but still it
highlighted that the per-fd code that runs after a poll wait wakes (regardless
of the cause of the wake up) can easily become hot and i915 mmio reads here can
quickly jump to the top of a cpu profile.

The main value of the i915-perf poll implementation is for throttling more than
for having a quick notification of new data, so it works nicely to only rely on
the hrtimer callback that's polling for new data to be the thing that flags
POLLIN events and check for that after the wait without any mmio.


Just to plug gputop as a tool for visualising these metrics with, I'm now
automatically publishing a demo of the interface via Travis to
http://gputop.github.io which is also usable with local targets if you point a
browser at E.g.: http://gputop.github.io?target=localhost while you have the
gputop server running. Apologies that currently the demo site on its own (not
connected to real hardware) doesn't show much since it doesn't have any fake
metric values to graph, though it is possible to at least browse the different
platform metric sets and selecting individual counters will show the
description + normalization equation.  Having the web UI hosted on github
hopefully lowers the bar to trying it out since it avoids needing to set up
Emscripten first as a build dependency.

Regards,
- Robert

Robert Bragg (11):
  drm/i915: Add i915 perf infrastructure
  drm/i915: rename OACONTROL GEN7_OACONTROL
  drm/i915: return EACCES for check_cmd() failures
  drm/i915: don't whitelist oacontrol in cmd parser
  drm/i915: Add 'render basic' Haswell OA unit config
  drm/i915: Enable i915 perf stream for Haswell OA unit
  drm/i915: advertise available metrics via sysfs
  drm/i915: Add dev.i915.perf_event_paranoid sysctl option
  drm/i915: add oa_event_min_timer_exponent sysctl
  drm/i915: Add more Haswell OA metric sets
  drm/i915: Add a kerneldoc summary for i915_perf.c

 drivers/gpu/drm/i915/Makefile           |    4 +
 drivers/gpu/drm/i915/i915_cmd_parser.c  |   40 +-
 drivers/gpu/drm/i915/i915_drv.c         |    6 +
 drivers/gpu/drm/i915/i915_drv.h         |  157 +++
 drivers/gpu/drm/i915/i915_gem_context.c |   22 +-
 drivers/gpu/drm/i915/i915_oa_hsw.c      |  659 +++++++++++++
 drivers/gpu/drm/i915/i915_oa_hsw.h      |   38 +
 drivers/gpu/drm/i915/i915_perf.c        | 1615 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h         |  340 ++++++-
 drivers/gpu/drm/i915/intel_ringbuffer.c |    7 +-
 include/uapi/drm/i915_drm.h             |  133 +++
 11 files changed, 2979 insertions(+), 42 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
 create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
 create mode 100644 drivers/gpu/drm/i915/i915_perf.c
    

Revisions

Patches download mbox

Tests

Series 3024v1 Enable Gen 7 Observation Architecture
2016-02-02T21:31:17.176759 http://patchwork.freedesktop.org/api/1.0/series/3024/revisions/1/mbox/
Applying: drm/i915: Add i915 perf infrastructure
Using index info to reconstruct a base tree...
M	drivers/gpu/drm/i915/Makefile
M	drivers/gpu/drm/i915/i915_dma.c
M	drivers/gpu/drm/i915/i915_drv.h
M	include/uapi/drm/i915_drm.h
Falling back to patching base and 3-way merge...
Auto-merging include/uapi/drm/i915_drm.h
Auto-merging drivers/gpu/drm/i915/i915_drv.h
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/i915_drv.h
Auto-merging drivers/gpu/drm/i915/i915_dma.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/i915_dma.c
Auto-merging drivers/gpu/drm/i915/Makefile
Patch failed at 0001 drm/i915: Add i915 perf infrastructure

Patches download mbox

Tests

Series 3024v2 Enable Gen 7 Observation Architecture
http://patchwork.freedesktop.org/api/1.0/series/3024/revisions/2/mbox/


bdw-nuci7        total:156  pass:147  dwarn:0   dfail:0   fail:0   skip:9  
bdw-ultra        total:159  pass:147  dwarn:0   dfail:0   fail:0   skip:12 
bsw-nuc-2        total:159  pass:131  dwarn:0   dfail:0   fail:0   skip:28 
byt-nuc          total:159  pass:136  dwarn:0   dfail:0   fail:0   skip:23 
hsw-brixbox      total:159  pass:146  dwarn:0   dfail:0   fail:0   skip:13 
hsw-gt2          total:159  pass:149  dwarn:0   dfail:0   fail:0   skip:10 
ilk-hp8440p      total:159  pass:111  dwarn:0   dfail:0   fail:0   skip:48 
ivb-t430s        total:159  pass:145  dwarn:0   dfail:0   fail:0   skip:14 
skl-i5k-2        total:159  pass:144  dwarn:1   dfail:0   fail:0   skip:14 
skl-i7k-2        total:159  pass:144  dwarn:1   dfail:0   fail:0   skip:14 
snb-dellxps      total:159  pass:137  dwarn:0   dfail:0   fail:0   skip:22 

Results at /archive/results/CI_IGT_test/Patchwork_1359/

1ff67c58aa3d7cacd37451397c740b8df27994e6 drm-intel-nightly: 2016y-02m-03d-18h-22m-38s UTC integration manifest
302f43ab1f73bfa02331cf48d09c0a4633a09a2a drm/i915: Add more Haswell OA metric sets
2d51257b0c7989ed1dae829ce4fe2b737342fbb3 drm/i915: add oa_event_min_timer_exponent sysctl
e25850343facd37fa0db9e1f564fc4a1aa2d04a9 drm/i915: Add dev.i915.perf_event_paranoid sysctl option
4068269d6f53b90ef589684279714086887d1070 drm/i915: advertise available metrics via sysfs
9541e82d530e05442ce06e52a608545003edd8c2 drm/i915: Add i915 perf event for Haswell OA unit
730c581d81a0588abb81d846069d614f489548a9 drm/i915: Add 'render basic' Haswell OA unit config
de7203e5abe978328f41dcad28f96b306aacf684 drm/i915: rename OACONTROL GEN7_OACONTROL
d73e9b28435b554910bf1449f5261945b482bac7 drm/i915: Add i915 perf infrastructure

Patches download mbox

Tests

Series 3024v3 Enable Gen 7 Observation Architecture
http://patchwork.freedesktop.org/api/1.0/series/3024/revisions/3/mbox/


byt-nuc          total:192  pass:154  dwarn:0   dfail:0   fail:0   skip:38 
ilk-hp8440p      total:193  pass:136  dwarn:0   dfail:0   fail:0   skip:57 
ivb-t430s        total:193  pass:165  dwarn:0   dfail:0   fail:0   skip:28 
snb-dellxps      total:193  pass:155  dwarn:0   dfail:0   fail:0   skip:38 

Results at /archive/results/CI_IGT_test/Patchwork_2048/

1e81bacf1f7fdbdf83f46b55389713fa13cb1256 drm-intel-nightly: 2016y-04m-24d-10h-36m-11s UTC integration manifest
78cae1b drm/i915: Add more Haswell OA metric sets
7866967 drm/i915: add oa_event_min_timer_exponent sysctl
f9d868d drm/i915: Add dev.i915.perf_event_paranoid sysctl option
030301f drm/i915: advertise available metrics via sysfs
440ee27 drm/i915: Enable i915 perf stream for Haswell OA unit
7b10cf5 drm/i915: Add 'render basic' Haswell OA unit config
1f4d04b drm/i915: don't whitelist oacontrol in cmd parser
9950d98 drm/i915: rename OACONTROL GEN7_OACONTROL
b4467d8 drm/i915: Add i915 perf infrastructure



Test drv_hangman:
        Subgroup error-state-basic:
                pass       -> FAIL       (ro-ilk1-i5-650)
Test drv_module_reload_basic:
                pass       -> INCOMPLETE (ro-hsw-i7-4770r)
                pass       -> INCOMPLETE (ro-hsw-i3-4010u)
Test gem_busy:
        Subgroup basic-blt:
                pass       -> SKIP       (ro-bsw-n3050)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                pass       -> SKIP       (ro-bdw-i5-5250u)
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-b:
                skip       -> PASS       (ro-bdw-i5-5250u)

fi-byt-n2820     total:191  pass:153  dwarn:0   dfail:0   fail:0   skip:38 
fi-skl-i7-6700k  total:192  pass:167  dwarn:0   dfail:0   fail:0   skip:25 
ro-bdw-i5-5250u  total:192  pass:175  dwarn:1   dfail:0   fail:0   skip:16 
ro-bdw-i7-5600u  total:192  pass:169  dwarn:0   dfail:0   fail:0   skip:23 
ro-bsw-n3050     total:192  pass:152  dwarn:0   dfail:0   fail:0   skip:40 
ro-byt-n2820     total:192  pass:158  dwarn:0   dfail:0   fail:0   skip:34 
ro-hsw-i3-4010u  total:136  pass:120  dwarn:0   dfail:0   fail:0   skip:15 
ro-hsw-i7-4770r  total:120  pass:103  dwarn:0   dfail:0   fail:0   skip:16 
ro-ilk1-i5-650   total:191  pass:133  dwarn:0   dfail:0   fail:1   skip:57 
ro-ivb-i7-3770   total:192  pass:159  dwarn:0   dfail:0   fail:0   skip:33 
ro-ivb3-i7-3770  total:192  pass:163  dwarn:0   dfail:0   fail:0   skip:29 
ro-skl-i7-6700hq total:187  pass:166  dwarn:0   dfail:0   fail:0   skip:21 
BOOT FAILED for ro-ilk-i7-620lm

Results at /archive/results/CI_IGT_test/RO_Patchwork_637/

4dc4ce0 drm-intel-nightly: 2016y-04m-20d-16h-33m-39s UTC integration manifest
c6cf8b9 drm/i915: Add more Haswell OA metric sets
cad6ce2 drm/i915: add oa_event_min_timer_exponent sysctl
2c8abe0 drm/i915: Add dev.i915.perf_event_paranoid sysctl option
bbcc1b1 drm/i915: advertise available metrics via sysfs
8bbf6c1 drm/i915: Enable i915 perf stream for Haswell OA unit
0759257 drm/i915: Add 'render basic' Haswell OA unit config
4e589b5 drm/i915: don't whitelist oacontrol in cmd parser
3d62df0 drm/i915: rename OACONTROL GEN7_OACONTROL
a3e97ea drm/i915: Add i915 perf infrastructure

Patches download mbox

Tests




Test core_auth:
        Subgroup basic-auth:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test core_prop_blob:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test drv_getparams_basic:
        Subgroup basic-eu-total:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-subslice-total:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test drv_hangman:
        Subgroup error-state-basic:
                pass       -> FAIL       (ro-ilk1-i5-650)
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test drv_module_reload_basic:
                pass       -> INCOMPLETE (ro-hsw-i7-4770r)
                pass       -> INCOMPLETE (ro-hsw-i3-4010u)
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_basic:
        Subgroup bad-close:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup create-close:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup create-fd-close:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_busy:
        Subgroup basic-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-parallel-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_close_race:
        Subgroup basic-process:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-threads:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_cpu_reloc:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_cs_prefetch:
        Subgroup basic-default:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test gem_cs_tlb:
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ctx_basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ctx_create:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ctx_exec:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ctx_param:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ctx_switch:
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_basic:
        Subgroup basic-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup gtt-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup readonly-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_create:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_nop:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_parallel:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_parse:
        Subgroup basic-allowed:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
        Subgroup basic-rejected:
                pass       -> FAIL       (ro-hsw-i3-4010u)
                incomplete -> SKIP       (ro-bdw-i5-5250u)
                pass       -> FAIL       (ro-ivb-i7-3770)
                pass       -> FAIL       (ro-ivb2-i7-3770)
                pass       -> FAIL       (ro-byt-n2820)
                pass       -> FAIL       (fi-byt-n2820)
Test gem_exec_store:
        Subgroup basic-all:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_exec_suspend:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-s3:
                incomplete -> DMESG-WARN (ro-bdw-i5-5250u)
        Subgroup basic-s4:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test gem_exec_whisper:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_flink_basic:
        Subgroup bad-flink:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-open:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup double-flink:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup flink-lifetime:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_linear_blits:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_mmap:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-bo:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_mmap_gtt:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-copy:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-read:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-read-no-prefault:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-read-write:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-read-write-distinct:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-short:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-bo:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-bo-tiledx:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-bo-tiledy:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-copy:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-small-copy-xy:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-cpu-read-gtt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-gtt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-gtt-no-prefault:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-no-prefault:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-read:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-write-read-distinct:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_pread:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_pwrite:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_render_linear_blits:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_render_tiled_blits:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_ringfill:
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default-forked:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default-hang:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default-interruptible:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_storedw_loop:
        Subgroup basic-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_sync:
        Subgroup basic-all:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-blt:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-bsd2:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-default:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-each:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-render:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-vebox:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_tiled_blits:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_tiled_fence_blits:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test gem_tiled_pread_basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test kms_addfb_basic:
        Subgroup addfb25-bad-modifier:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-framebuffer-vs-set-tiling:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-modifier-no-flag:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-x-tiled:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-x-tiled-mismatch:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-y-tiled:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup addfb25-y-tiled-small:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
        Subgroup addfb25-yf-tiled:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-0:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-1024:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-128:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-256:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-32:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-63:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-65536:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pitch-999:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-x-tiled:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-y-tiled:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bo-too-small:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bo-too-small-due-to-tiling:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup clobberred-modifier:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup framebuffer-vs-set-tiling:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup no-handle:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup size-max:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup small-bo:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup tile-pitch-mismatch:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup too-high:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup too-wide:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup unused-handle:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup unused-modifier:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup unused-offsets:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup unused-pitches:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test kms_flip:
        Subgroup basic-flip-vs-dpms:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-flip-vs-modeset:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-flip-vs-wf_vblank:
                fail       -> PASS       (ro-ivb2-i7-3770)
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-plain-flip:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test kms_force_connector_basic:
        Subgroup force-connector-state:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
        Subgroup force-edid:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
        Subgroup force-load-detect:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
        Subgroup prune-stale-modes:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test kms_pipe_crc_basic:
        Subgroup bad-nb-words-1:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-nb-words-3:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-pipe:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup bad-source:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup hang-read-crc-pipe-a:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup hang-read-crc-pipe-b:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup hang-read-crc-pipe-c:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-a:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-a-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-b:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-b-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-c:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup nonblocking-crc-pipe-c-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-a:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-a-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-b:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-b-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-c:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup read-crc-pipe-c-frame-sequence:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup suspend-read-crc-pipe-a:
                incomplete -> DMESG-WARN (ro-bdw-i5-5250u)
        Subgroup suspend-read-crc-pipe-b:
                incomplete -> DMESG-WARN (ro-bdw-i5-5250u)
        Subgroup suspend-read-crc-pipe-c:
                incomplete -> DMESG-WARN (ro-bdw-i5-5250u)
Test kms_psr_sink_crc:
        Subgroup psr_basic:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test kms_setmode:
        Subgroup basic-clone-single-crtc:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test kms_sink_crc_basic:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test pm_backlight:
        Subgroup basic-brightness:
                incomplete -> SKIP       (ro-bdw-i5-5250u)
Test pm_rpm:
        Subgroup basic-pci-d3-state:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-rte:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test pm_rps:
        Subgroup basic-api:
                incomplete -> PASS       (ro-bdw-i5-5250u)
Test prime_self_import:
        Subgroup basic-llseek-bad:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-llseek-size:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-with_fd_dup:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-with_one_bo:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-with_one_bo_two_files:
                incomplete -> PASS       (ro-bdw-i5-5250u)
        Subgroup basic-with_two_bos:
                incomplete -> PASS       (ro-bdw-i5-5250u)

fi-byt-n2820     total:200  pass:158  dwarn

Patches download mbox

Tests

Applying: drm/i915: Add i915 perf infrastructure
Using index info to reconstruct a base tree...
M	drivers/gpu/drm/i915/Makefile
M	drivers/gpu/drm/i915/i915_drv.c
M	drivers/gpu/drm/i915/i915_drv.h
M	include/uapi/drm/i915_drm.h
Falling back to patching base and 3-way merge...
Auto-merging include/uapi/drm/i915_drm.h
Auto-merging drivers/gpu/drm/i915/i915_drv.h
Auto-merging drivers/gpu/drm/i915/i915_drv.c
Auto-merging drivers/gpu/drm/i915/Makefile
Applying: drm/i915: rename OACONTROL GEN7_OACONTROL
Applying: drm/i915: return EACCES for check_cmd() failures
Applying: drm/i915: don't whitelist oacontrol in cmd parser
Applying: drm/i915: Add 'render basic' Haswell OA unit config
Applying: drm/i915: Enable i915 perf stream for Haswell OA unit
fatal: sha1 information is lacking or useless (drivers/gpu/drm/i915/i915_drv.h).
error: could not build fake ancestor
Patch failed at 0006 drm/i915: Enable i915 perf stream for Haswell OA unit
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".