lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Fri, 6 Dec 2019 11:02:40 +0200
From:   Lionel Landwerlin <lionel.g.landwerlin@...el.com>
To:     linux-kernel@...r.kernel.org, linux-tip-commits@...r.kernel.org
Cc:     Adrian Hunter <adrian.hunter@...el.com>,
        Chris Wilson <chris@...is-wilson.co.uk>,
        Daniele Ceraolo Spurio <daniele.ceraolospurio@...el.com>,
        Jiri Olsa <jolsa@...nel.org>,
        Namhyung Kim <namhyung@...nel.org>,
        Arnaldo Carvalho de Melo <acme@...hat.com>,
        x86 <x86@...nel.org>
Subject: Re: [tip: perf/urgent] tools headers UAPI: Sync drm/i915_drm.h with
 the kernel sources

On 06/12/2019 10:03, tip-bot2 for Arnaldo Carvalho de Melo wrote:
> The following commit has been merged into the perf/urgent branch of tip:
>
> Commit-ID:     0b3fca6ad3283866e9d2376554b3e4fbf23bfd5d
> Gitweb:        https://git.kernel.org/tip/0b3fca6ad3283866e9d2376554b3e4fbf23bfd5d
> Author:        Arnaldo Carvalho de Melo <acme@...hat.com>
> AuthorDate:    Wed, 04 Dec 2019 12:49:43 -03:00
> Committer:     Arnaldo Carvalho de Melo <acme@...hat.com>
> CommitterDate: Wed, 04 Dec 2019 16:22:28 -03:00
>
> tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
>
> To pick the change in:
>
>    a0e047156cde ("drm/i915/gem: Make context persistence optional")
>    9cd20ef7803c ("drm/i915/perf: allow holding preemption on filtered ctx")
>    7831e9a965ea ("drm/i915/perf: Allow dynamic reconfiguration of the OA stream")
>    4f6ccc74a85c ("drm/i915: add support for perf configuration queries")
>    b8d49f28aa03 ("drm/i915/perf: introduce a versioning of the i915-perf uapi")
>    601734f7aabd ("drm/i915/tgl: s/ss/eu fuse reading support")
>
> That don't result in any changes in tooling, just silences this perf
> build warning:
>
>    Warning: Kernel ABI header at 'tools/include/uapi/drm/i915_drm.h' differs from latest version at 'include/uapi/drm/i915_drm.h'
>    diff -u tools/include/uapi/drm/i915_drm.h include/uapi/drm/i915_drm.h
>
> Cc: Adrian Hunter <adrian.hunter@...el.com>
> Cc: Chris Wilson <chris@...is-wilson.co.uk>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@...el.com>
> Cc: Jiri Olsa <jolsa@...nel.org>
> Cc: Lionel Landwerlin <lionel.g.landwerlin@...el.com>
> Cc: Namhyung Kim <namhyung@...nel.org>
> Link: https://lkml.kernel.org/n/tip-qwzjrgwj55y3g6rjdf9spkpr@git.kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@...el.com>
> ---
>   tools/include/uapi/drm/i915_drm.h | 128 ++++++++++++++++++++++++++++-
>   1 file changed, 125 insertions(+), 3 deletions(-)
>
> diff --git a/tools/include/uapi/drm/i915_drm.h b/tools/include/uapi/drm/i915_drm.h
> index 469dc51..5400d7e 100644
> --- a/tools/include/uapi/drm/i915_drm.h
> +++ b/tools/include/uapi/drm/i915_drm.h
> @@ -611,6 +611,13 @@ typedef struct drm_i915_irq_wait {
>    * See I915_EXEC_FENCE_OUT and I915_EXEC_FENCE_SUBMIT.
>    */
>   #define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
> +
> +/*
> + * Revision of the i915-perf uAPI. The value returned helps determine what
> + * i915-perf features are available. See drm_i915_perf_property_id.
> + */
> +#define I915_PARAM_PERF_REVISION	54
> +
>   /* Must be kept compact -- no holes and well documented */
>   
>   typedef struct drm_i915_getparam {
> @@ -1565,6 +1572,21 @@ struct drm_i915_gem_context_param {
>    *   i915_context_engines_bond (I915_CONTEXT_ENGINES_EXT_BOND)
>    */
>   #define I915_CONTEXT_PARAM_ENGINES	0xa
> +
> +/*
> + * I915_CONTEXT_PARAM_PERSISTENCE:
> + *
> + * Allow the context and active rendering to survive the process until
> + * completion. Persistence allows fire-and-forget clients to queue up a
> + * bunch of work, hand the output over to a display server and then quit.
> + * If the context is marked as not persistent, upon closing (either via
> + * an explicit DRM_I915_GEM_CONTEXT_DESTROY or implicitly from file closure
> + * or process termination), the context and any outstanding requests will be
> + * cancelled (and exported fences for cancelled requests marked as -EIO).
> + *
> + * By default, new contexts allow persistence.
> + */
> +#define I915_CONTEXT_PARAM_PERSISTENCE	0xb
>   /* Must be kept compact -- no holes and well documented */
>   
>   	__u64 value;
> @@ -1844,23 +1866,31 @@ enum drm_i915_perf_property_id {
>   	 * Open the stream for a specific context handle (as used with
>   	 * execbuffer2). A stream opened for a specific context this way
>   	 * won't typically require root privileges.
> +	 *
> +	 * This property is available in perf revision 1.
>   	 */
>   	DRM_I915_PERF_PROP_CTX_HANDLE = 1,
>   
>   	/**
>   	 * A value of 1 requests the inclusion of raw OA unit reports as
>   	 * part of stream samples.
> +	 *
> +	 * This property is available in perf revision 1.
>   	 */
>   	DRM_I915_PERF_PROP_SAMPLE_OA,
>   
>   	/**
>   	 * The value specifies which set of OA unit metrics should be
>   	 * be configured, defining the contents of any OA unit reports.
> +	 *
> +	 * This property is available in perf revision 1.
>   	 */
>   	DRM_I915_PERF_PROP_OA_METRICS_SET,
>   
>   	/**
>   	 * The value specifies the size and layout of OA unit reports.
> +	 *
> +	 * This property is available in perf revision 1.
>   	 */
>   	DRM_I915_PERF_PROP_OA_FORMAT,
>   
> @@ -1870,9 +1900,22 @@ enum drm_i915_perf_property_id {
>   	 * from this exponent as follows:
>   	 *
>   	 *   80ns * 2^(period_exponent + 1)
> +	 *
> +	 * This property is available in perf revision 1.
>   	 */
>   	DRM_I915_PERF_PROP_OA_EXPONENT,
>   
> +	/**
> +	 * Specifying this property is only valid when specify a context to
> +	 * filter with DRM_I915_PERF_PROP_CTX_HANDLE. Specifying this property
> +	 * will hold preemption of the particular context we want to gather
> +	 * performance data about. The execbuf2 submissions must include a
> +	 * drm_i915_gem_execbuffer_ext_perf parameter for this to apply.
> +	 *
> +	 * This property is available in perf revision 3.
> +	 */
> +	DRM_I915_PERF_PROP_HOLD_PREEMPTION,
> +
>   	DRM_I915_PERF_PROP_MAX /* non-ABI */
>   };
>   
> @@ -1901,6 +1944,8 @@ struct drm_i915_perf_open_param {
>    * to close and re-open a stream with the same configuration.
>    *
>    * It's undefined whether any pending data for the stream will be lost.
> + *
> + * This ioctl is available in perf revision 1.
>    */
>   #define I915_PERF_IOCTL_ENABLE	_IO('i', 0x0)
>   
> @@ -1908,10 +1953,25 @@ struct drm_i915_perf_open_param {
>    * Disable data capture for a stream.
>    *
>    * It is an error to try and read a stream that is disabled.
> + *
> + * This ioctl is available in perf revision 1.
>    */
>   #define I915_PERF_IOCTL_DISABLE	_IO('i', 0x1)
>   
>   /**
> + * Change metrics_set captured by a stream.
> + *
> + * If the stream is bound to a specific context, the configuration change
> + * will performed inline with that context such that it takes effect before
> + * the next execbuf submission.
> + *
> + * Returns the previously bound metrics set id, or a negative error code.
> + *
> + * This ioctl is available in perf revision 2.
> + */
> +#define I915_PERF_IOCTL_CONFIG	_IO('i', 0x2)
> +
> +/**
>    * Common to all i915 perf records
>    */
>   struct drm_i915_perf_record_header {
> @@ -1984,6 +2044,7 @@ struct drm_i915_query_item {
>   	__u64 query_id;
>   #define DRM_I915_QUERY_TOPOLOGY_INFO    1
>   #define DRM_I915_QUERY_ENGINE_INFO	2
> +#define DRM_I915_QUERY_PERF_CONFIG      3
>   /* Must be kept compact -- no holes and well documented */
>   
>   	/*
> @@ -1995,9 +2056,18 @@ struct drm_i915_query_item {
>   	__s32 length;
>   
>   	/*
> -	 * Unused for now. Must be cleared to zero.
> +	 * When query_id == DRM_I915_QUERY_TOPOLOGY_INFO, must be 0.
> +	 *
> +	 * When query_id == DRM_I915_QUERY_PERF_CONFIG, must be one of the
> +	 * following :
> +	 *         - DRM_I915_QUERY_PERF_CONFIG_LIST
> +	 *         - DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID
> +	 *         - DRM_I915_QUERY_PERF_CONFIG_FOR_UUID
>   	 */
>   	__u32 flags;
> +#define DRM_I915_QUERY_PERF_CONFIG_LIST          1
> +#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2
> +#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID   3
>   
>   	/*
>   	 * Data will be written at the location pointed by data_ptr when the
> @@ -2033,8 +2103,10 @@ struct drm_i915_query {
>    *           (data[X / 8] >> (X % 8)) & 1
>    *
>    * - the subslice mask for each slice with one bit per subslice telling
> - *   whether a subslice is available. The availability of subslice Y in slice
> - *   X can be queried with the following formula :
> + *   whether a subslice is available. Gen12 has dual-subslices, which are
> + *   similar to two gen11 subslices. For gen12, this array represents dual-
> + *   subslices. The availability of subslice Y in slice X can be queried
> + *   with the following formula :
>    *
>    *           (data[subslice_offset +
>    *                 X * subslice_stride +
> @@ -2123,6 +2195,56 @@ struct drm_i915_query_engine_info {
>   	struct drm_i915_engine_info engines[];
>   };
>   
> +/*
> + * Data written by the kernel with query DRM_I915_QUERY_PERF_CONFIG.
> + */
> +struct drm_i915_query_perf_config {
> +	union {
> +		/*
> +		 * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_LIST, i915 sets
> +		 * this fields to the number of configurations available.
> +		 */
> +		__u64 n_configs;
> +
> +		/*
> +		 * When query_id == DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID,
> +		 * i915 will use the value in this field as configuration
> +		 * identifier to decide what data to write into config_ptr.
> +		 */
> +		__u64 config;
> +
> +		/*
> +		 * When query_id == DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID,
> +		 * i915 will use the value in this field as configuration
> +		 * identifier to decide what data to write into config_ptr.
> +		 *
> +		 * String formatted like "%08x-%04x-%04x-%04x-%012x"
> +		 */
> +		char uuid[36];
> +	};
> +
> +	/*
> +	 * Unused for now. Must be cleared to zero.
> +	 */
> +	__u32 flags;
> +
> +	/*
> +	 * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_LIST, i915 will
> +	 * write an array of __u64 of configuration identifiers.
> +	 *
> +	 * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_DATA, i915 will
> +	 * write a struct drm_i915_perf_oa_config. If the following fields of
> +	 * drm_i915_perf_oa_config are set not set to 0, i915 will write into
> +	 * the associated pointers the values of submitted when the
> +	 * configuration was created :
> +	 *
> +	 *         - n_mux_regs
> +	 *         - n_boolean_regs
> +	 *         - n_flex_regs
> +	 */
> +	__u8 data[];
> +};
> +
>   #if defined(__cplusplus)
>   }
>   #endif


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ