i915_perf_open_ioctl_locked(9)
π i915_perf_open_ioctl_locked(9) π
okay so first things first: this page is from the Kernel API Manual, and the title is i915_perf_open_ioctl_locked(9). Yes bestie, we're in kernel land. Buckle up. π
β¨ NAME β¨
i915_perf_open_ioctl_locked β DRM ioctl() for userspace to open a stream FD. That's the whole name vibe. π
πΈ SYNOPSIS πΈ
int i915_perf_open_ioctl_locked (struct i915_perf *perf , struct
drm_i915_perf_open_param *param , struct perf_open_properties *props ,
struct drm_file *file );
π¦ ARGUMENTS π¦
perfβ i915 perf instance. Your perf main character. πparamβ The open parameters passed toDRM_I915_PERF_OPENpropsβ individually validated u64 property value pairsfileβ drm file
π DESCRIPTION π
For the interface details, go see i915_perf_ioctl_open β that's the reference, periodt. π
This one implements further stream config validation and stream initialization on behalf of i915_perf_open_ioctl, with the gt->perf.lock mutex taken to serialize with any non-file-operation driver hooks. So the lock is held, bestie, and that's the whole serialize with any non-file-operation driver hooks situation. π
π«Ά NOTE π«Ά
At this point the props have only been validated in isolation, and it's still necessary to validate that the combination of properties makes sense. Not me side-eyeing isolated validation β the combination check is still required. π
In the case where userspace is interested in OA unit metrics, then further config validation and stream initialization details will be handled by i915_oa_stream_init. The code here should only validate config state that will be relevant to all stream types / backends. So keep this bit universal. π
π₯ RETURN π₯
zero on success or a negative error code. That's it. Zero = slay, negative = the error code vibe. π
β SEE ALSO β
Kernel file: ./drivers/gpu/drm/i915/i915_perf.c
Then the whole reference squad, no cap:
i915 Perf Overview(9)i915 Perf History and Comparison with Core Perf(9)OA Tail Pointer Race(9)struct perf_open_properties(9)oa_buffer_check_unlocked(9)append_oa_status(9)append_oa_sample(9)gen8_append_oa_reports(9)gen8_oa_read(9)gen7_append_oa_reports(9)gen7_oa_read(9)i915_oa_wait_unlocked(9)i915_oa_poll_wait(9)i915_oa_read(9)oa_get_render_ctx_id(9)oa_put_render_ctx_id(9)i915_oa_stream_enable(9)i915_oa_stream_disable(9)i915_oa_stream_init(9)i915_perf_read(9)i915_perf_poll_locked(9)i915_perf_poll(9)i915_perf_enable_locked(9)i915_perf_disable_locked(9)i915_perf_ioctl_locked(9)i915_perf_ioctl(9)i915_perf_destroy_locked(9)i915_perf_release(9)read_properties_unlocked(9)i915_perf_open_ioctl(9)i915_perf_register(9)i915_perf_unregister(9)i915_perf_add_config_ioctl(9)i915_perf_remove_config_ioctl(9)i915_perf_init(9)i915_perf_fini(9)i915_perf_ioctl_version(9)
that's the page, bestie! π source/version: ./drivers/gpu/drm/i915; date: October 2026; page: i915_perf_open_ioctl_locked(9). hydrate and don't forget the mutex. π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms