STRUCT DRM_I915_PERF_OA_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_i915_perf_oa_config(9) β€” the Kernel API Manual edition

okay so real talk, bestie: this one lives in the Kernel API Manual, and it's genuinely lowkey iconic. It's the little struct you hand to the kernel when you wanna upload a perf dynamic configuration. That's the whole vibe. Let's get into it. πŸŽ€


✨ NAME ✨

struct drm_i915_perf_oa_config β€” that's the name, that's the struct, no notes. πŸ’–


🌸 SYNOPSIS 🌸

here's the whole shape of her, look at her go:

struct drm_i915_perf_oa_config {
    char uuid[36];
    __u32 n_mux_regs;
    __u32 n_boolean_regs;
    __u32 n_flex_regs;
    __u64 mux_regs_ptr;
    __u64 boolean_regs_ptr;
    __u64 flex_regs_ptr;
 };

πŸ¦‹ Members πŸ¦‹

okay member-by-member, i'm obsessed actually:

  • uuid β€” a string formatted exactly like "% 8x-% 4x-% 4x-% 4x-% 12x". that's the format spec, keep it exact, don't be cute with it. ✨
  • n_mux_regs β€” the number of mux regs living in mux_regs_ptr.
  • n_boolean_regs β€” the number of boolean regs living in boolean_regs_ptr.
  • n_flex_regs β€” the number of flex regs living in flex_regs_ptr.
  • mux_regs_ptr β€” pointer to tuples of u32 values (that's register address, value β€” address first, value second 🫢) for mux registers. the expected length of the buffer is (2 * sizeof(u32) * n_mux_regs).
  • boolean_regs_ptr β€” pointer to tuples of u32 values (register address, value) for mux registers. yes, it says mux registers, that's what the doc says and i'm just the messenger πŸ’€. the expected length of the buffer is (2 * sizeof(u32) * n_boolean_regs).
  • flex_regs_ptr β€” pointer to tuples of u32 values (register address, value) for mux registers. same deal, bestie, quoting it faithfully πŸ™ˆ. the expected length of the buffer is (2 * sizeof(u32) * n_flex_regs).

πŸ‘‘ Description πŸ‘‘

it's giving "purpose-built and unbothered": this is the structure to upload perf dynamic configuration into the kernel. that's the whole job. that's her main character energy. no cap. 🌈


πŸ”₯ SEE ALSO πŸ”₯

a whole friend group, literally. go say hi:

  • Kernel file ./tools/perf/trace/beauty/include/uapi/drm/i915_drm.h
  • uevents generated by i915 on its device node(9)
  • struct i915_user_extension(9)
  • enum drm_i915_gem_engine_class(9)
  • struct i915_engine_class_instance(9)
  • perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915(9)
  • struct drm_i915_getparam(9)
  • drm_i915_getparam_t(9)
  • struct drm_i915_gem_mmap_offset(9)
  • struct drm_i915_gem_set_domain(9)
  • struct drm_i915_gem_exec_fence(9)
  • struct drm_i915_gem_execbuffer_ext_timeline_fences(9)
  • struct drm_i915_gem_execbuffer2(9)
  • struct drm_i915_gem_caching(9)
  • struct drm_i915_gem_context_create_ext(9)
  • struct drm_i915_gem_context_param(9)
  • Virtual Engine uAPI(9)
  • struct i915_context_engines_parallel_submit(9)
  • Context Engine Map uAPI(9)
  • struct drm_i915_gem_context_create_ext_setparam(9)
  • struct drm_i915_gem_vm_control(9)
  • struct drm_i915_gem_userptr(9)
  • struct drm_i915_query_item(9)
  • struct drm_i915_query(9)
  • struct drm_i915_query_topology_info(9)
  • Engine Discovery uAPI(9)
  • struct drm_i915_engine_info(9)
  • struct drm_i915_query_engine_info(9)
  • struct drm_i915_query_perf_config(9)
  • enum drm_i915_gem_memory_class(9)
  • struct drm_i915_gem_memory_class_instance(9)
  • struct drm_i915_memory_region_info(9)
  • struct drm_i915_query_memory_regions(9)
  • struct drm_i915_query_guc_submission_version(9)
  • GuC HWCONFIG blob uAPI(9)
  • struct drm_i915_gem_create_ext(9)
  • struct drm_i915_gem_create_ext_memory_regions(9)
  • struct drm_i915_gem_create_ext_protected_content(9)
  • struct drm_i915_gem_create_ext_set_pat(9)

fr fr, this page's source path shows up as ./tools/perf/trace/beauty/incl... and it's dated October 2026, and the whole thing is filed under struct drm_i...rf_oa_config(9) β€” a true icon, no further questions πŸ’…πŸ’–

that's the page, bestie. go upload some perf dynamic configuration. slay. 🧚✨

πŸ“¦ where this page comes from