History

Merge tag 'drm-next-2022-05-25' of git://anongit.freedesktop.org/drm/drm

Pull drm updates from Dave Airlie: "Intel have enabled DG2 on certain SKUs for laptops, AMD has started some new GPU support, msm has user allocated VA controls dma-buf: - add dma_resv_replace_fences - add dma_resv_get_singleton - make dma_excl_fence private core: - EDID parser refactorings - switch drivers to drm_mode_copy/duplicate - DRM managed mutex initialization display-helper: - put HDMI, SCDC, HDCP, DSC and DP into new module gem: - rework fence handling ttm: - rework bulk move handling - add common debugfs for resource managers - convert to kvcalloc format helpers: - support monochrome formats - RGB888, RGB565 to XRGB8888 conversions fbdev: - cfb/sys_imageblit fixes - pagelist corruption fix - create offb platform device - deferred io improvements sysfb: - Kconfig rework - support for VESA mode selection bridge: - conversions to devm_drm_of_get_bridge - conversions to panel_bridge - analogix_dp - autosuspend support - it66121 - audio support - tc358767 - DSI to DPI support - icn6211 - PLL/I2C fixes, DT property - adv7611 - enable DRM_BRIDGE_OP_HPD - anx7625 - fill ELD if no monitor - dw_hdmi - add audio support - lontium LT9211 support, i.MXMP LDB - it6505: Kconfig fix, DPCD set power fix - adv7511 - CEC support for ADV7535 panel: - ltk035c5444t, B133UAN01, NV3052C panel support - DataImage FG040346DSSWBG04 support - st7735r - DT bindings fix - ssd130x - fixes i915: - DG2 laptop PCI-IDs ("motherboard down") - Initial RPL-P PCI IDs - compute engine ABI - DG2 Tile4 support - DG2 CCS clear color compression support - DG2 render/media compression formats support - ATS-M platform info - RPL-S PCI IDs added - Bump ADL-P DMC version to v2.16 - Support static DRRS - Support multiple eDP/LVDS native mode refresh rates - DP HDR support for HSW+ - Lots of display refactoring + fixes - GuC hwconfig support and query - sysfs support for multi-tile - fdinfo per-client gpu utilisation - add geometry subslices query - fix prime mmap with LMEM - fix vm open count and remove vma refcounts - contiguous allocation fixes - steered register write support - small PCI BAR enablement - GuC error capture support - sunset igpu legacy mmap support for newer devices - GuC version 70.1.1 support amdgpu: - Initial SoC21 support - SMU 13.x enablement - SMU 13.0.4 support - ttm_eu cleanups - USB-C, GPUVM updates - TMZ fixes for RV - RAS support for VCN - PM sysfs code cleanup - DC FP rework - extend CG/PG flags to 64-bit - SI dpm lockdep fix - runtime PM fixes amdkfd: - RAS/SVM fixes - TLB flush fixes - CRIU GWS support - ignore bogus MEC signals more efficiently msm: - Fourcc modifier for tiled but not compressed layouts - Support for userspace allocated IOVA (GPU virtual address) - DPU: DSC (Display Stream Compression) support - DP: eDP support - DP: conversion to use drm_bridge and drm_bridge_connector - Merge DPU1 and MDP5 MDSS driver - DPU: writeback support nouveau: - make some structures static - make some variables static - switch to drm_gem_plane_helper_prepare_fb radeon: - misc fixes/cleanups mxsfb: - rework crtc mode setting - LCDIF CRC support etnaviv: - fencing improvements - fix address space collisions - cleanup MMU reference handling gma500: - GEM/GTT improvements - connector handling fixes komeda: - switch to plane reset helper mediatek: - MIPI DSI improvements omapdrm: - GEM improvements qxl: - aarch64 support vc4: - add a CL submission tracepoint - HDMI YUV support - HDMI/clock improvements - drop is_hdmi caching virtio: - remove restriction of non-zero blob types vmwgfx: - support for cursormob and cursorbypass 4 - fence improvements tidss: - reset DISPC on startup solomon: - SPI support - DT improvements sun4i: - allwinner D1 support - drop is_hdmi caching imx: - use swap() instead of open-coding - use devm_platform_ioremap_resource - remove redunant initializations ast: - Displayport support rockchip: - Refactor IOMMU initialisation - make some structures static - replace drm_detect_hdmi_monitor with drm_display_info.is_hdmi - support swapped YUV formats, - clock improvements - rk3568 support - VOP2 support mediatek: - MT8186 support tegra: - debugabillity improvements" * tag 'drm-next-2022-05-25' of git://anongit.freedesktop.org/drm/drm: (1740 commits) drm/i915/dsi: fix VBT send packet port selection for ICL+ drm/i915/uc: Fix undefined behavior due to shift overflowing the constant drm/i915/reg: fix undefined behavior due to shift overflowing the constant drm/i915/gt: Fix use of static in macro mismatch drm/i915/audio: fix audio code enable/disable pipe logging drm/i915: Fix CFI violation with show_dynamic_id() drm/i915: Fix 'mixing different enum types' warnings in intel_display_power.c drm/i915/gt: Fix build error without CONFIG_PM drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path drm/msm/dpu: add DRM_MODE_ROTATE_180 back to supported rotations drm/msm: don't free the IRQ if it was not requested drm/msm/dpu: limit writeback modes according to max_linewidth drm/amd: Don't reset dGPUs if the system is going to s2idle drm/amdgpu: Unmap legacy queue when MES is enabled drm: msm: fix possible memory leak in mdp5_crtc_cursor_set() drm/msm: Fix fb plane offset calculation drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init drm/msm/dsi: don't powerup at modeset time for parade-ps8640 drm/rockchip: Change register space names in vop2 dt-bindings: display: rockchip: make reg-names mandatory for VOP2 ...

Linus Torvalds committed 4 years ago

Commit 2518f222 parents 86c87be c4955d91297 files · +495698 −31991Browse files

Showing the changes to include/uapi (5 of 1297 files). Show all

Unified · Split

5 files
  1. include/uapi/drm/amdgpu_drm.h +2 −0
  2. include/uapi/drm/drm_fourcc.h +69 −0
  3. include/uapi/drm/i915_drm.h +272 −81
  4. include/uapi/drm/msm_drm.h +7 −0
  5. include/uapi/drm/vmwgfx_drm.h +8 −1
include/uapi/drm/amdgpu_drm.h+2−0
@@ -1150,7 +1150,9 @@ struct drm_amdgpu_info_video_caps { · 1149 unmodified lines
11501150 #define AMDGPU_FAMILY_RV 142 /* Raven */
11511151 #define AMDGPU_FAMILY_NV 143 /* Navi10 */
11521152 #define AMDGPU_FAMILY_VGH 144 /* Van Gogh */
1153+#define AMDGPU_FAMILY_GC_11_0_0 145 /* GC 11.0.0 */
11531154 #define AMDGPU_FAMILY_YC 146 /* Yellow Carp */
1155+#define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */
11541156 #define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
11551157 #define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
11561158
include/uapi/drm/drm_fourcc.h+69−0
@@ -572,6 +572,53 @@ extern "C" { · 571 unmodified lines
572572 */
573573 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
574574
575+/*
576+ * Intel Tile 4 layout
577+ *
578+ * This is a tiled layout using 4KB tiles in a row-major layout. It has the same
579+ * shape as Tile Y at two granularities: 4KB (128B x 32) and 64B (16B x 4). It
580+ * only differs from Tile Y at the 256B granularity in between. At this
581+ * granularity, Tile Y has a shape of 16B x 32 rows, but this tiling has a shape
582+ * of 64B x 8 rows.
583+ */
584+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
585+
586+/*
587+ * Intel color control surfaces (CCS) for DG2 render compression.
588+ *
589+ * The main surface is Tile 4 and at plane index 0. The CCS data is stored
590+ * outside of the GEM object in a reserved memory area dedicated for the
591+ * storage of the CCS data for all RC/RC_CC/MC compressible GEM objects. The
592+ * main surface pitch is required to be a multiple of four Tile 4 widths.
593+ */
594+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
595+
596+/*
597+ * Intel color control surfaces (CCS) for DG2 media compression.
598+ *
599+ * The main surface is Tile 4 and at plane index 0. For semi-planar formats
600+ * like NV12, the Y and UV planes are Tile 4 and are located at plane indices
601+ * 0 and 1, respectively. The CCS for all planes are stored outside of the
602+ * GEM object in a reserved memory area dedicated for the storage of the
603+ * CCS data for all RC/RC_CC/MC compressible GEM objects. The main surface
604+ * pitch is required to be a multiple of four Tile 4 widths.
605+ */
606+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
607+
608+/*
609+ * Intel Color Control Surface with Clear Color (CCS) for DG2 render compression.
610+ *
611+ * The main surface is Tile 4 and at plane index 0. The CCS data is stored
612+ * outside of the GEM object in a reserved memory area dedicated for the
613+ * storage of the CCS data for all RC/RC_CC/MC compressible GEM objects. The
614+ * main surface pitch is required to be a multiple of four Tile 4 widths. The
615+ * clear color is stored at plane index 1 and the pitch should be ignored. The
616+ * format of the 256 bits of clear color data matches the one used for the
617+ * I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier, see its description
618+ * for details.
619+ */
620+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
621+
575622 /*
576623 * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
577624 *
@@ -609,6 +656,28 @@ extern "C" { · 31 unmodified lines
609656 */
610657 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
611658
659+/*
660+ * Qualcomm Tiled Format
661+ *
662+ * Similar to DRM_FORMAT_MOD_QCOM_COMPRESSED but not compressed.
663+ * Implementation may be platform and base-format specific.
664+ *
665+ * Each macrotile consists of m x n (mostly 4 x 4) tiles.
666+ * Pixel data pitch/stride is aligned with macrotile width.
667+ * Pixel data height is aligned with macrotile height.
668+ * Entire pixel data buffer is aligned with 4k(bytes).
669+ */
670+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
671+
672+/*
673+ * Qualcomm Alternate Tiled Format
674+ *
675+ * Alternate tiled format typically only used within GMEM.
676+ * Implementation may be platform and base-format specific.
677+ */
678+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
679+
680+
612681 /* Vivante framebuffer modifiers */
613682
614683 /*
include/uapi/drm/i915_drm.h+272−81
@@ -154,25 +154,77 @@ enum i915_mocs_table_index { · 153 unmodified lines
154154 I915_MOCS_CACHED,
155155 };
156156
157−/*
157+/**
158+ * enum drm_i915_gem_engine_class - uapi engine type enumeration
159+ *
158160 * Different engines serve different roles, and there may be more than one
159− * engine serving each role. enum drm_i915_gem_engine_class provides a
160− * classification of the role of the engine, which may be used when requesting
161− * operations to be performed on a certain subset of engines, or for providing
162− * information about that group.
161+ * engine serving each role. This enum provides a classification of the role
162+ * of the engine, which may be used when requesting operations to be performed
163+ * on a certain subset of engines, or for providing information about that
164+ * group.
163165 */
164166 enum drm_i915_gem_engine_class {
167+ /**
168+ * @I915_ENGINE_CLASS_RENDER:
169+ *
170+ * Render engines support instructions used for 3D, Compute (GPGPU),
171+ * and programmable media workloads. These instructions fetch data and
172+ * dispatch individual work items to threads that operate in parallel.
173+ * The threads run small programs (called "kernels" or "shaders") on
174+ * the GPU's execution units (EUs).
175+ */
165176 I915_ENGINE_CLASS_RENDER = 0,
177+
178+ /**
179+ * @I915_ENGINE_CLASS_COPY:
180+ *
181+ * Copy engines (also referred to as "blitters") support instructions
182+ * that move blocks of data from one location in memory to another,
183+ * or that fill a specified location of memory with fixed data.
184+ * Copy engines can perform pre-defined logical or bitwise operations
185+ * on the source, destination, or pattern data.
186+ */
166187 I915_ENGINE_CLASS_COPY = 1,
188+
189+ /**
190+ * @I915_ENGINE_CLASS_VIDEO:
191+ *
192+ * Video engines (also referred to as "bit stream decode" (BSD) or
193+ * "vdbox") support instructions that perform fixed-function media
194+ * decode and encode.
195+ */
167196 I915_ENGINE_CLASS_VIDEO = 2,
197+
198+ /**
199+ * @I915_ENGINE_CLASS_VIDEO_ENHANCE:
200+ *
201+ * Video enhancement engines (also referred to as "vebox") support
202+ * instructions related to image enhancement.
203+ */
168204 I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
169205
170− /* should be kept compact */
206+ /**
207+ * @I915_ENGINE_CLASS_COMPUTE:
208+ *
209+ * Compute engines support a subset of the instructions available
210+ * on render engines: compute engines support Compute (GPGPU) and
211+ * programmable media workloads, but do not support the 3D pipeline.
212+ */
213+ I915_ENGINE_CLASS_COMPUTE = 4,
214+
215+ /* Values in this enum should be kept compact. */
171216
217+ /**
218+ * @I915_ENGINE_CLASS_INVALID:
219+ *
220+ * Placeholder value to represent an invalid engine class assignment.
221+ */
172222 I915_ENGINE_CLASS_INVALID = -1
173223 };
174224
175−/*
225+/**
226+ * struct i915_engine_class_instance - Engine class/instance identifier
227+ *
176228 * There may be more than one engine fulfilling any role within the system.
177229 * Each engine of a class is given a unique instance number and therefore
178230 * any engine can be specified by its class:instance tuplet. APIs that allow
@@ -180,10 +232,21 @@ enum drm_i915_gem_engine_class { · 1 unmodified line
180232 * for this identification.
181233 */
182234 struct i915_engine_class_instance {
183− __u16 engine_class; /* see enum drm_i915_gem_engine_class */
184− __u16 engine_instance;
235+ /**
236+ * @engine_class:
237+ *
238+ * Engine class from enum drm_i915_gem_engine_class
239+ */
240+ __u16 engine_class;
185241 #define I915_ENGINE_CLASS_INVALID_NONE -1
186242 #define I915_ENGINE_CLASS_INVALID_VIRTUAL -2
243+
244+ /**
245+ * @engine_instance:
246+ *
247+ * Engine instance.
248+ */
249+ __u16 engine_instance;
187250 };
188251
189252 /**
@@ -2657,24 +2720,65 @@ enum drm_i915_perf_record_type { · 2467 unmodified lines
26572720 DRM_I915_PERF_RECORD_MAX /* non-ABI */
26582721 };
26592722
2660−/*
2723+/**
2724+ * struct drm_i915_perf_oa_config
2725+ *
26612726 * Structure to upload perf dynamic configuration into the kernel.
26622727 */
26632728 struct drm_i915_perf_oa_config {
2664− /** String formatted like "%08x-%04x-%04x-%04x-%012x" */
2729+ /**
2730+ * @uuid:
2731+ *
2732+ * String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x"
2733+ */
26652734 char uuid[36];
26662735
2736+ /**
2737+ * @n_mux_regs:
2738+ *
2739+ * Number of mux regs in &mux_regs_ptr.
2740+ */
26672741 __u32 n_mux_regs;
2742+
2743+ /**
2744+ * @n_boolean_regs:
2745+ *
2746+ * Number of boolean regs in &boolean_regs_ptr.
2747+ */
26682748 __u32 n_boolean_regs;
2749+
2750+ /**
2751+ * @n_flex_regs:
2752+ *
2753+ * Number of flex regs in &flex_regs_ptr.
2754+ */
26692755 __u32 n_flex_regs;
26702756
2671− /*
2672− * These fields are pointers to tuples of u32 values (register address,
2673− * value). For example the expected length of the buffer pointed by
2674− * mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs).
2757+ /**
2758+ * @mux_regs_ptr:
2759+ *
2760+ * Pointer to tuples of u32 values (register address, value) for mux
2761+ * registers. Expected length of buffer is (2 * sizeof(u32) *
2762+ * &n_mux_regs).
26752763 */
26762764 __u64 mux_regs_ptr;
2765+
2766+ /**
2767+ * @boolean_regs_ptr:
2768+ *
2769+ * Pointer to tuples of u32 values (register address, value) for mux
2770+ * registers. Expected length of buffer is (2 * sizeof(u32) *
2771+ * &n_boolean_regs).
2772+ */
26772773 __u64 boolean_regs_ptr;
2774+
2775+ /**
2776+ * @flex_regs_ptr:
2777+ *
2778+ * Pointer to tuples of u32 values (register address, value) for mux
2779+ * registers. Expected length of buffer is (2 * sizeof(u32) *
2780+ * &n_flex_regs).
2781+ */
26782782 __u64 flex_regs_ptr;
26792783 };
26802784
@@ -2685,12 +2789,24 @@ struct drm_i915_perf_oa_config { · 4 unmodified lines
26852789 * @data_ptr is also depends on the specific @query_id.
26862790 */
26872791 struct drm_i915_query_item {
2688− /** @query_id: The id for this query */
2792+ /**
2793+ * @query_id:
2794+ *
2795+ * The id for this query. Currently accepted query IDs are:
2796+ * - %DRM_I915_QUERY_TOPOLOGY_INFO (see struct drm_i915_query_topology_info)
2797+ * - %DRM_I915_QUERY_ENGINE_INFO (see struct drm_i915_engine_info)
2798+ * - %DRM_I915_QUERY_PERF_CONFIG (see struct drm_i915_query_perf_config)
2799+ * - %DRM_I915_QUERY_MEMORY_REGIONS (see struct drm_i915_query_memory_regions)
2800+ * - %DRM_I915_QUERY_HWCONFIG_BLOB (see `GuC HWCONFIG blob uAPI`)
2801+ * - %DRM_I915_QUERY_GEOMETRY_SUBSLICES (see struct drm_i915_query_topology_info)
2802+ */
26892803 __u64 query_id;
2690−#define DRM_I915_QUERY_TOPOLOGY_INFO 1
2691−#define DRM_I915_QUERY_ENGINE_INFO 2
2692−#define DRM_I915_QUERY_PERF_CONFIG 3
2693−#define DRM_I915_QUERY_MEMORY_REGIONS 4
2804+#define DRM_I915_QUERY_TOPOLOGY_INFO 1
2805+#define DRM_I915_QUERY_ENGINE_INFO 2
2806+#define DRM_I915_QUERY_PERF_CONFIG 3
2807+#define DRM_I915_QUERY_MEMORY_REGIONS 4
2808+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
2809+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
26942810 /* Must be kept compact -- no holes and well documented */
26952811
26962812 /**
@@ -2706,14 +2822,17 @@ struct drm_i915_query_item { · 9 unmodified lines
27062822 /**
27072823 * @flags:
27082824 *
2709− * When query_id == DRM_I915_QUERY_TOPOLOGY_INFO, must be 0.
2825+ * When &query_id == %DRM_I915_QUERY_TOPOLOGY_INFO, must be 0.
27102826 *
2711− * When query_id == DRM_I915_QUERY_PERF_CONFIG, must be one of the
2827+ * When &query_id == %DRM_I915_QUERY_PERF_CONFIG, must be one of the
27122828 * following:
27132829 *
2714− * - DRM_I915_QUERY_PERF_CONFIG_LIST
2715− * - DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID
2716− * - DRM_I915_QUERY_PERF_CONFIG_FOR_UUID
2830+ * - %DRM_I915_QUERY_PERF_CONFIG_LIST
2831+ * - %DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID
2832+ * - %DRM_I915_QUERY_PERF_CONFIG_FOR_UUID
2833+ *
2834+ * When &query_id == %DRM_I915_QUERY_GEOMETRY_SUBSLICES must contain
2835+ * a struct i915_engine_class_instance that references a render engine.
27172836 */
27182837 __u32 flags;
27192838 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -2771,66 +2890,112 @@ struct drm_i915_query { · 51 unmodified lines
27712890 __u64 items_ptr;
27722891 };
27732892
2774−/*
2775− * Data written by the kernel with query DRM_I915_QUERY_TOPOLOGY_INFO :
2776− *
2777− * data: contains the 3 pieces of information :
2778− *
2779− * - the slice mask with one bit per slice telling whether a slice is
2780− * available. The availability of slice X can be queried with the following
2781− * formula :
2782− *
2783− * (data[X / 8] >> (X % 8)) & 1
2784− *
2785− * - the subslice mask for each slice with one bit per subslice telling
2786− * whether a subslice is available. Gen12 has dual-subslices, which are
2787− * similar to two gen11 subslices. For gen12, this array represents dual-
2788− * subslices. The availability of subslice Y in slice X can be queried
2789− * with the following formula :
2790− *
2791− * (data[subslice_offset +
2792− * X * subslice_stride +
2793− * Y / 8] >> (Y % 8)) & 1
2794− *
2795− * - the EU mask for each subslice in each slice with one bit per EU telling
2796− * whether an EU is available. The availability of EU Z in subslice Y in
2797− * slice X can be queried with the following formula :
2893+/**
2894+ * struct drm_i915_query_topology_info
27982895 *
2799− * (data[eu_offset +
2800− * (X * max_subslices + Y) * eu_stride +
2801− * Z / 8] >> (Z % 8)) & 1
2896+ * Describes slice/subslice/EU information queried by
2897+ * %DRM_I915_QUERY_TOPOLOGY_INFO
28022898 */
28032899 struct drm_i915_query_topology_info {
2804− /*
2900+ /**
2901+ * @flags:
2902+ *
28052903 * Unused for now. Must be cleared to zero.
28062904 */
28072905 __u16 flags;
28082906
2907+ /**
2908+ * @max_slices:
2909+ *
2910+ * The number of bits used to express the slice mask.
2911+ */
28092912 __u16 max_slices;
2913+
2914+ /**
2915+ * @max_subslices:
2916+ *
2917+ * The number of bits used to express the subslice mask.
2918+ */
28102919 __u16 max_subslices;
2920+
2921+ /**
2922+ * @max_eus_per_subslice:
2923+ *
2924+ * The number of bits in the EU mask that correspond to a single
2925+ * subslice's EUs.
2926+ */
28112927 __u16 max_eus_per_subslice;
28122928
2813− /*
2929+ /**
2930+ * @subslice_offset:
2931+ *
28142932 * Offset in data[] at which the subslice masks are stored.
28152933 */
28162934 __u16 subslice_offset;
28172935
2818− /*
2936+ /**
2937+ * @subslice_stride:
2938+ *
28192939 * Stride at which each of the subslice masks for each slice are
28202940 * stored.
28212941 */
28222942 __u16 subslice_stride;
28232943
2824− /*
2944+ /**
2945+ * @eu_offset:
2946+ *
28252947 * Offset in data[] at which the EU masks are stored.
28262948 */
28272949 __u16 eu_offset;
28282950
2829− /*
2951+ /**
2952+ * @eu_stride:
2953+ *
28302954 * Stride at which each of the EU masks for each subslice are stored.
28312955 */
28322956 __u16 eu_stride;
28332957
2958+ /**
2959+ * @data:
2960+ *
2961+ * Contains 3 pieces of information :
2962+ *
2963+ * - The slice mask with one bit per slice telling whether a slice is
2964+ * available. The availability of slice X can be queried with the
2965+ * following formula :
2966+ *
2967+ * .. code:: c
2968+ *
2969+ * (data[X / 8] >> (X % 8)) & 1
2970+ *
2971+ * Starting with Xe_HP platforms, Intel hardware no longer has
2972+ * traditional slices so i915 will always report a single slice
2973+ * (hardcoded slicemask = 0x1) which contains all of the platform's
2974+ * subslices. I.e., the mask here does not reflect any of the newer
2975+ * hardware concepts such as "gslices" or "cslices" since userspace
2976+ * is capable of inferring those from the subslice mask.
2977+ *
2978+ * - The subslice mask for each slice with one bit per subslice telling
2979+ * whether a subslice is available. Starting with Gen12 we use the
2980+ * term "subslice" to refer to what the hardware documentation
2981+ * describes as a "dual-subslices." The availability of subslice Y
2982+ * in slice X can be queried with the following formula :
2983+ *
2984+ * .. code:: c
2985+ *
2986+ * (data[subslice_offset + X * subslice_stride + Y / 8] >> (Y % 8)) & 1
2987+ *
2988+ * - The EU mask for each subslice in each slice, with one bit per EU
2989+ * telling whether an EU is available. The availability of EU Z in
2990+ * subslice Y in slice X can be queried with the following formula :
2991+ *
2992+ * .. code:: c
2993+ *
2994+ * (data[eu_offset +
2995+ * (X * max_subslices + Y) * eu_stride +
2996+ * Z / 8
2997+ * ] >> (Z % 8)) & 1
2998+ */
28342999 __u8 data[];
28353000 };
28363001
@@ -2951,52 +3116,68 @@ struct drm_i915_query_engine_info { · 114 unmodified lines
29513116 struct drm_i915_engine_info engines[];
29523117 };
29533118
2954−/*
2955− * Data written by the kernel with query DRM_I915_QUERY_PERF_CONFIG.
3119+/**
3120+ * struct drm_i915_query_perf_config
3121+ *
3122+ * Data written by the kernel with query %DRM_I915_QUERY_PERF_CONFIG and
3123+ * %DRM_I915_QUERY_GEOMETRY_SUBSLICES.
29563124 */
29573125 struct drm_i915_query_perf_config {
29583126 union {
2959− /*
2960− * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_LIST, i915 sets
2961− * this fields to the number of configurations available.
3127+ /**
3128+ * @n_configs:
3129+ *
3130+ * When &drm_i915_query_item.flags ==
3131+ * %DRM_I915_QUERY_PERF_CONFIG_LIST, i915 sets this fields to
3132+ * the number of configurations available.
29623133 */
29633134 __u64 n_configs;
29643135
2965− /*
2966− * When query_id == DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID,
2967− * i915 will use the value in this field as configuration
2968− * identifier to decide what data to write into config_ptr.
3136+ /**
3137+ * @config:
3138+ *
3139+ * When &drm_i915_query_item.flags ==
3140+ * %DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID, i915 will use the
3141+ * value in this field as configuration identifier to decide
3142+ * what data to write into config_ptr.
29693143 */
29703144 __u64 config;
29713145
2972− /*
2973− * When query_id == DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID,
2974− * i915 will use the value in this field as configuration
2975− * identifier to decide what data to write into config_ptr.
3146+ /**
3147+ * @uuid:
3148+ *
3149+ * When &drm_i915_query_item.flags ==
3150+ * %DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID, i915 will use the
3151+ * value in this field as configuration identifier to decide
3152+ * what data to write into config_ptr.
29763153 *
29773154 * String formatted like "%08x-%04x-%04x-%04x-%012x"
29783155 */
29793156 char uuid[36];
29803157 };
29813158
2982− /*
3159+ /**
3160+ * @flags:
3161+ *
29833162 * Unused for now. Must be cleared to zero.
29843163 */
29853164 __u32 flags;
29863165
2987− /*
2988− * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_LIST, i915 will
2989− * write an array of __u64 of configuration identifiers.
3166+ /**
3167+ * @data:
29903168 *
2991− * When query_item.flags == DRM_I915_QUERY_PERF_CONFIG_DATA, i915 will
2992− * write a struct drm_i915_perf_oa_config. If the following fields of
2993− * drm_i915_perf_oa_config are set not set to 0, i915 will write into
2994− * the associated pointers the values of submitted when the
3169+ * When &drm_i915_query_item.flags == %DRM_I915_QUERY_PERF_CONFIG_LIST,
3170+ * i915 will write an array of __u64 of configuration identifiers.
3171+ *
3172+ * When &drm_i915_query_item.flags == %DRM_I915_QUERY_PERF_CONFIG_DATA,
3173+ * i915 will write a struct drm_i915_perf_oa_config. If the following
3174+ * fields of struct drm_i915_perf_oa_config are not set to 0, i915 will
3175+ * write into the associated pointers the values of submitted when the
29953176 * configuration was created :
29963177 *
2997− * - n_mux_regs
2998− * - n_boolean_regs
2999− * - n_flex_regs
3178+ * - &drm_i915_perf_oa_config.n_mux_regs
3179+ * - &drm_i915_perf_oa_config.n_boolean_regs
3180+ * - &drm_i915_perf_oa_config.n_flex_regs
30003181 */
30013182 __u8 data[];
30023183 };
@@ -3134,6 +3315,16 @@ struct drm_i915_query_memory_regions { · 131 unmodified lines
31343315 struct drm_i915_memory_region_info regions[];
31353316 };
31363317
3318+/**
3319+ * DOC: GuC HWCONFIG blob uAPI
3320+ *
3321+ * The GuC produces a blob with information about the current device.
3322+ * i915 reads this blob from GuC and makes it available via this uAPI.
3323+ *
3324+ * The format and meaning of the blob content are documented in the
3325+ * Programmer's Reference Manual.
3326+ */
3327+
31373328 /**
31383329 * struct drm_i915_gem_create_ext - Existing gem_create behaviour, with added
31393330 * extension support using struct i915_user_extension.
include/uapi/drm/msm_drm.h+7−0
@@ -82,6 +82,10 @@ struct drm_msm_timespec { · 81 unmodified lines
8282 #define MSM_PARAM_FAULTS 0x09 /* RO */
8383 #define MSM_PARAM_SUSPENDS 0x0a /* RO */
8484 #define MSM_PARAM_SYSPROF 0x0b /* WO: 1 preserves perfcntrs, 2 also disables suspend */
85+#define MSM_PARAM_COMM 0x0c /* WO: override for task->comm */
86+#define MSM_PARAM_CMDLINE 0x0d /* WO: override for task cmdline */
87+#define MSM_PARAM_VA_START 0x0e /* RO: start of valid GPU iova range */
88+#define MSM_PARAM_VA_SIZE 0x0f /* RO: size of valid GPU iova range (bytes) */
8589
8690 /* For backwards compat. The original support for preemption was based on
8791 * a single ring per priority level so # of priority levels equals the #
@@ -95,6 +99,8 @@ struct drm_msm_param { · 7 unmodified lines
9599 __u32 pipe; /* in, MSM_PIPE_x */
96100 __u32 param; /* in, MSM_PARAM_x */
97101 __u64 value; /* out (get_param) or in (set_param) */
102+ __u32 len; /* zero for non-pointer params */
103+ __u32 pad; /* must be zero */
98104 };
99105
100106 /*
@@ -131,6 +137,7 @@ struct drm_msm_gem_new { · 30 unmodified lines
131137 #define MSM_INFO_GET_IOVA 0x01 /* get iova, returned by value */
132138 #define MSM_INFO_SET_NAME 0x02 /* set the debug name (by pointer) */
133139 #define MSM_INFO_GET_NAME 0x03 /* get debug name, returned by pointer */
140+#define MSM_INFO_SET_IOVA 0x04 /* set the iova, passed by value */
134141
135142 struct drm_msm_gem_info {
136143 __u32 handle; /* in */
include/uapi/drm/vmwgfx_drm.h+8−1
@@ -1,6 +1,6 @@
11 /**************************************************************************
22 *
3− * Copyright © 2009-2015 VMware, Inc., Palo Alto, CA., USA
3+ * Copyright © 2009-2022 VMware, Inc., Palo Alto, CA., USA
44 * All Rights Reserved.
55 *
66 * Permission is hereby granted, free of charge, to any person obtaining a
@@ -92,6 +92,12 @@ extern "C" { · 85 unmodified lines
9292 *
9393 * DRM_VMW_PARAM_SM5
9494 * SM5 support is enabled.
95+ *
96+ * DRM_VMW_PARAM_GL43
97+ * SM5.1+GL4.3 support is enabled.
98+ *
99+ * DRM_VMW_PARAM_DEVICE_ID
100+ * PCI ID of the underlying SVGA device.
95101 */
96102
97103 #define DRM_VMW_PARAM_NUM_STREAMS 0
@@ -111,6 +117,7 @@ extern "C" { · 13 unmodified lines
111117 #define DRM_VMW_PARAM_SM4_1 14
112118 #define DRM_VMW_PARAM_SM5 15
113119 #define DRM_VMW_PARAM_GL43 16
120+#define DRM_VMW_PARAM_DEVICE_ID 17
114121
115122 /**
116123 * enum drm_vmw_handle_type - handle type for ref ioctls

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t