[Intel-gfx] [PATCH 1/2] drm/i915: Implement I915_PERF_ADD/REMOVE_CONFIG interface
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Thu Jul 13 12:46:19 UTC 2017
On 07/07/17 18:31, Chris Wilson wrote:
> Quoting Lionel Landwerlin (2017-07-07 18:08:37)
>> +static bool gen8_is_valid_flex_addr(struct drm_i915_private *dev_priv, u32 addr)
>> +{
>> + static const i915_reg_t flex_eu_regs[] = {
>> + EU_PERF_CNTL0,
>> + EU_PERF_CNTL1,
>> + EU_PERF_CNTL2,
>> + EU_PERF_CNTL3,
>> + EU_PERF_CNTL4,
>> + EU_PERF_CNTL5,
>> + EU_PERF_CNTL6,
>> + };
>> + int i;
>> +
>> + for (i = 0; i < ARRAY_SIZE(flex_eu_regs); i++) {
>> + if (flex_eu_regs[i].reg == addr)
>> + return true;
>> + }
>> + return false;
>> +}
>> +
>> +static bool gen7_is_valid_b_counter_addr(struct drm_i915_private *dev_priv, u32 addr)
>> +{
>> + return (addr >= 0x2380 && addr <= 0x27ac);
>> +}
>> +
>> +static bool gen7_is_valid_mux_addr(struct drm_i915_private *dev_priv, u32 addr)
>> +{
>> + return addr == NOA_WRITE.reg ||
>> + (addr >= 0xd0c && addr <= 0xd3c) ||
>> + (addr >= 0x25100 && addr <= 0x2FB9C);
>> +}
>> +
>> +static bool hsw_is_valid_mux_addr(struct drm_i915_private *dev_priv, u32 addr)
>> +{
>> + return (addr >= 0x25100 && addr <= 0x2FF90) ||
>> + gen7_is_valid_mux_addr(dev_priv, addr);
>> +}
>> +
>> +static bool chv_is_valid_mux_addr(struct drm_i915_private *dev_priv, u32 addr)
>> +{
>> + return (addr >= 0x182300 && addr <= 0x1823A4) ||
>> + gen7_is_valid_mux_addr(dev_priv, addr);
>> +}
> Looks like you've already thought of what I was about to say: we need
> whitelisting of what userspace can read/tweak. It's a nuisance, but we
> could let the privileged (oa_paranoid?) client load an arbitrary config
> (though again that may have to be within reason).
> -Chris
>
Sorry, forgot to press send.
It doesn't look like there is much point in doing this, mostly because
on gen8+ we already require oa_paranoid to use perf :(
-
Lionel
More information about the Intel-gfx
mailing list