[Intel-gfx] [PATCH 4/5] drm/i915: add a new perf configuration execbuf parameter

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu May 30 18:41:26 UTC 2019


On 28/05/2019 11:52, Chris Wilson wrote:
> Quoting Lionel Landwerlin (2019-05-21 15:08:54)
>> @@ -2048,6 +2081,42 @@ static int eb_submit(struct i915_execbuffer *eb)
>>                          return err;
>>          }
> if (eb->oa_config) {
> 	err = i915_active_request_set(&eb->i915->perf.oa.oa_config_active,
> 				      eb->request);
> 	if (err)
> 		return err;
> }
>
> with the addition of
> 	struct i915_active_request oa_config_active;
> to i915->perf.oa, and i915_active_init; That will ensure that the
> oa_config can't be changed before execution (and the ordering restriction
> is essentially a no-op if only one context has a specified oa_config).
>
>> +       if (eb->oa_config &&
>> +           eb->oa_config != eb->i915->perf.oa.exclusive_stream->oa_config) {
> Fwiw, I would move these to eb_oa_config().
>
> if (eb->oa_config) {
> 	err = eb_oa_config(eb);
> 	if (err)
> 		return err;
> }
>
> How does eb_oa_config mix with the global gen8_configure_all_contexts()?


Excellent point, I should document this.


HW configurations have roughly 3 parts :

    - NOA configuration, network configuration to source specific data 
from anywhere (global, non power saved/restored)

    - Boolean counters, filters signals brought by NOA (global, can't 
remember whether saved/restored)

    - Flex counters, filters on events happening within the EUs (per 
context, saved/restored)


First two will affect all running contexts (because global), last one 
will only be applied to the context that triggered the execbuf.

That should be fine because of the other requirement we need (don't 
preempt the context running a performance query).


-Lionel


> -Chris
>



More information about the Intel-gfx mailing list