STRUCT PERF_OPEN_PROPERTIES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ struct perf_open_properties(9) β€” the Kernel API Manual, bestie edition ✨

okay so we're in the kernel API manual, section 9, and today's main character is struct perf_open_properties πŸŽ€ β€” literally the struct where all your validated properties hang out before you open a stream. iykyk.


🌸 NAME 🌸

struct perf_open_properties β€” for validated properties given to open a stream. that's it, that's the vibe. no cap. πŸ’…


✨ SYNOPSIS ✨

here's the whole squad, member by member, no skips:

struct perf_open_properties {
    u32 sample_flags;
    u64 single_context:1;
    u64 hold_preemption:1;
    u64 ctx_handle;
    int metrics_set;
    int oa_format;
    bool oa_periodic;
    int oa_period_exponent;
    struct intel_engine_cs *engine;
    bool has_sseu;
    struct intel_sseu sseu;
    u64 poll_oa_period;
 };

(yeah there's a little extra space before that closing brace, she's just standing like that, leave her alone πŸ™ˆ)


πŸ¦‹ Members πŸ¦‹

okay bestie, meet the members one by one:

  • sample_flags β€” the DRM_I915_PERF_PROP_SAMPLE_* properties get tracked as flags in here. flags! like a little checklist of sample props πŸ”₯
  • single_context β€” whether we're monitoring a single gpu context or all of them. choose your fighter ✨
  • hold_preemption β€” whether preemption is disabled for the filtered context. heads up, that's a real behaviour switch, not just a cute name πŸ’€
  • ctx_handle β€” a gem ctx handle, for use with single_context. they're a package deal 🫢
  • metrics_set β€” an ID for an OA unit metric set, advertised via sysfs. she's official πŸ‘‘
  • oa_format β€” an OA unit HW report format. it's giving "formatting era" 🌈
  • oa_periodic β€” whether to enable periodic OA unit sampling. tick tock ⭐
  • oa_period_exponent β€” the OA unit sampling period is derived from this. math queen 🧚
  • engine β€” the engine being monitored by the OA unit, typically rcs0. main character engine energy πŸ’œ
  • has_sseu β€” whether sseu was specified by userspace. yes/no, that's the whole job πŸŽ€
  • sseu β€” the internal SSEU configuration, computed either from the userspace-specified configuration in the opening parameters or from a default value (see get_default_sseu_config). two paths, one struct 🌸
  • poll_oa_period β€” the period in nanoseconds at which the CPU will check for OA data availability. nanoseconds!! she's precise πŸ¦‹

πŸ’– Description πŸ’–

so basically β€” while read_properties_unlocked is out here enumerating and validating all the properties you handed over to open a stream of metrics, the configuration gets built up in this struct. and plot twist: it starts out zero initialized. clean slate, fresh start, new me πŸ’…βœ¨


πŸ”₯ SEE ALSO πŸ”₯

the whole friend group, in the order the manual says (and yes, every single one, we don't do skipping here):


bestie reminder: the source path for this whole page is ./drivers/gpu/drm/i915, and it's dated October 2026 β€” so yeah, this manual page is from the future, we love a time traveler πŸ‘‘πŸ’«

and that's the page!! struct understood, vibes immaculate, struct perf_open_properties(9) ate and left no crumbs πŸ“πŸ’œ

πŸ“¦ where this page comes from