#include <linux/nospec.h>
#include "i915_drv.h"
#include "i915_perf.h"
#include "i915_query.h"
#include "gt/intel_engine_user.h"
#include <uapi/drm/i915_drm.h>
static int copy_query_item(void *query_hdr, size_t query_sz,
u32 total_length,
struct drm_i915_query_item *query_item)
{ … }
static int fill_topology_info(const struct sseu_dev_info *sseu,
struct drm_i915_query_item *query_item,
intel_sseu_ss_mask_t subslice_mask)
{ … }
static int query_topology_info(struct drm_i915_private *dev_priv,
struct drm_i915_query_item *query_item)
{ … }
static int query_geometry_subslices(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int
query_engine_info(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int can_copy_perf_config_registers_or_number(u32 user_n_regs,
u64 user_regs_ptr,
u32 kernel_n_regs)
{ … }
static int copy_perf_config_registers_or_number(const struct i915_oa_reg *kernel_regs,
u32 kernel_n_regs,
u64 user_regs_ptr,
u32 *user_n_regs)
{ … }
static int query_perf_config_data(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item,
bool use_uuid)
{ … }
static size_t sizeof_perf_config_list(size_t count)
{ … }
static size_t sizeof_perf_metrics(struct i915_perf *perf)
{ … }
static int query_perf_config_list(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int query_perf_config(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int query_memregion_info(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int query_hwconfig_blob(struct drm_i915_private *i915,
struct drm_i915_query_item *query_item)
{ … }
static int
query_guc_submission_version(struct drm_i915_private *i915,
struct drm_i915_query_item *query)
{ … }
static int (* const i915_query_funcs[])(struct drm_i915_private *dev_priv,
struct drm_i915_query_item *query_item) = …;
int i915_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }