* [PATCH v8 00/14] Display Global Histogram
@ 2025-01-28 15:51 Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
` (21 more replies)
0 siblings, 22 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Display histogram is a hardware functionality where a statistics for 'n'
number of frames is generated to form a histogram data. This is notified
to the user via histogram event. Compositor will then upon sensing the
histogram event will read the histogram data from KMD via crtc property.
User can use this histogram and apply various equilization techniques to
enhance the image or use this histogram for shaders.
Display ImageEnhancemenT is a hardware that interpolates the LUT value
to generate the enhanced output image. 1DLUT value is to be provided by
the user via crtc property.
One such library Global Histogram Enhancement(GHE) will take the histogram
as input and apply the algorithm to enhance the density and then
return the enhanced LUT factor. This library can be located @
https://github.com/intel/ghe
The corresponding mutter changes to enable/disable histogram, read the
histogram data, communicate with the library and write the enhanced data
back to the KMD is also pushed for review at https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3873
and https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3873/diffs?commit_id=270808ca7c8be48513553d95b4a47541f5d40206
The IGT changes for validating the histogram event and reading the
histogram is also pushed for review at https://patchwork.freedesktop.org/series/135789/
NOTE: i915 driver changes for histogram and IET LUT is not fully tested
and the series is pushed to get the inital feel of the histogram/IET LUT
usage as well as to get started with the review.
---
Arun R Murthy (14):
drm: Define histogram structures exposed to user
drm: Define ImageEnhancemenT LUT structures exposed to user
drm/crtc: Expose API to create drm crtc property for histogram
drm/crtc: Expose API to create drm crtc property for IET LUT
drm/i915/histogram: Define registers for histogram
drm/i915/histogram: Add support for histogram
drm/xe: Add histogram support to Xe builds
drm/i915/histogram: histogram interrupt handling
drm/i915/histogram: Hook i915 histogram with drm histogram
drm/i915/iet: Add support to writing the IET LUT data
drm/i915/crtc: Hook i915 IET LUT with the drm IET properties
drm/i915/histogram: histogram delay counter doesnt reset
drm/i915/histogram: Histogram changes for Display 20+
drm/i915/histogram: Enable pipe dithering
drivers/gpu/drm/drm_atomic_state_helper.c | 23 ++
drivers/gpu/drm/drm_atomic_uapi.c | 28 ++
drivers/gpu/drm/drm_crtc.c | 127 +++++++
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_crtc.c | 10 +
drivers/gpu/drm/i915/display/intel_display.c | 14 +
drivers/gpu/drm/i915/display/intel_display_irq.c | 6 +-
drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_histogram.c | 396 +++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_histogram.h | 55 +++
.../gpu/drm/i915/display/intel_histogram_regs.h | 75 ++++
drivers/gpu/drm/i915/i915_reg.h | 5 +-
drivers/gpu/drm/xe/Makefile | 1 +
include/drm/drm_crtc.h | 80 +++++
include/uapi/drm/drm_mode.h | 109 ++++++
15 files changed, 929 insertions(+), 3 deletions(-)
---
base-commit: 78526dfb8799485890dae3877fea308e9501879c
change-id: 20241218-dpst-c8ecf18062bb
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
---
Arun R Murthy (14):
drm: Define histogram structures exposed to user
drm: Define ImageEnhancemenT LUT structures exposed to user
drm/crtc: Expose API to create drm crtc property for histogram
drm/crtc: Expose API to create drm crtc property for IET LUT
drm/i915/histogram: Define registers for histogram
drm/i915/histogram: Add support for histogram
drm/xe: Add histogram support to Xe builds
drm/i915/histogram: histogram interrupt handling
drm/i915/histogram: Hook i915 histogram with drm histogram
drm/i915/iet: Add support to writing the IET LUT data
drm/i915/crtc: Hook i915 IET LUT with the drm IET properties
drm/i915/histogram: histogram delay counter doesnt reset
drm/i915/histogram: Histogram changes for Display 20+
drm/i915/histogram: Enable pipe dithering
drivers/gpu/drm/drm_atomic_state_helper.c | 23 ++
drivers/gpu/drm/drm_atomic_uapi.c | 28 ++
drivers/gpu/drm/drm_crtc.c | 127 +++++++
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_crtc.c | 10 +
drivers/gpu/drm/i915/display/intel_display.c | 14 +
drivers/gpu/drm/i915/display/intel_display_irq.c | 6 +-
drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_histogram.c | 404 +++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_histogram.h | 55 +++
.../gpu/drm/i915/display/intel_histogram_regs.h | 75 ++++
drivers/gpu/drm/i915/i915_reg.h | 5 +-
drivers/gpu/drm/xe/Makefile | 1 +
include/drm/drm_crtc.h | 80 ++++
include/uapi/drm/drm_mode.h | 133 +++++++
15 files changed, 961 insertions(+), 3 deletions(-)
---
base-commit: 006a892140827b356eb4ad5a5e9b947477791ba8
change-id: 20241218-dpst-c8ecf18062bb
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
^ permalink raw reply [flat|nested] 63+ messages in thread
* [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 6:38 ` Kandpal, Suraj
2025-02-17 10:08 ` Pekka Paalanen
2025-01-28 15:51 ` [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT " Arun R Murthy
` (20 subsequent siblings)
21 siblings, 2 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Display Histogram is an array of bins and can be generated in many ways
referred to as modes.
Ex: HSV max(RGB), Wighted RGB etc.
Understanding the histogram data format(Ex: HSV max(RGB))
Histogram is just the pixel count.
For a maximum resolution of 10k (10240 x 4320 = 44236800)
25 bits should be sufficient to represent this along with a buffer of 7
bits(future use) u32 is being considered.
max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
bits, hence 32 bins.
Below mentioned algorithm illustrates the histogram generation in
hardware.
hist[32] = {0};
for (i = 0; i < resolution; i++) {
bin = max(RGB[i]);
bin = bin >> 3; /* consider the most significant bits */
hist[bin]++;
}
If the entire image is Red color then max(255,0,0) is 255 so the pixel
count of each pixels will be placed in the last bin. Hence except
hist[31] all other bins will have a value zero.
Generated histogram in this case would be hist[32] = {0,0,....44236800}
Description of the structures, properties defined are documented in the
header file include/uapi/drm/drm_mode.h
v8: Added doc for HDR planes, removed reserved variables (Dmitry)
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
__u32 pad;
};
+/**
+ * enum drm_mode_histogram
+ *
+ * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
+ * Maximum resolution at present 10k, 10240x4320 = 44236800
+ * can be denoted in 25bits. With an additional 7 bits in buffer each bin
+ * can be a u32 value.
+ * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
+ * If the most significant 5 bits are considered, then bins = 2^5
+ * will be 32 bins.
+ * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
+ * For illustration consider a full RED image of 10k resolution considering all
+ * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
+ * plane similarly with HDR the same would look like hist[65535] =
+ * {0,0,0,....44236800}
+ */
+enum drm_mode_histogram {
+ DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
+};
+
+/**
+ * struct drm_histogram_caps
+ *
+ * @histogram_mode: histogram generation modes, defined in the
+ * enum drm_mode_histogram
+ * @bins_count: number of bins for a chosen histogram mode. For illustration
+ * refer the above defined histogram mode.
+ */
+struct drm_histogram_caps {
+ __u32 histogram_mode;
+ __u32 bins_count;
+};
+
+/**
+ * struct drm_histogram_config
+ *
+ * @hist_mode_data: address to the histogram mode specific data if any
+ * @nr_hist_mode_data: number of elements pointed by the address in
+ * hist_mode_data
+ * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
+ * @enable: flag to enable/disable histogram
+ */
+struct drm_histogram_config {
+ __u64 hist_mode_data;
+ __u32 nr_hist_mode_data;
+ enum drm_mode_histogram hist_mode;
+ bool enable;
+};
+
+/**
+ * struct drm_histogram
+ *
+ * @config: histogram configuration data pointed by struct drm_histogram_config
+ * @data_ptr: pointer to the array of histogram.
+ * Histogram is an array of bins. Data format for each bin depends
+ * on the histogram mode. Refer to the above histogram modes for
+ * more information.
+ * @nr_elements: number of bins in the histogram.
+ */
+struct drm_histogram {
+ struct drm_histogram_config config;
+ __u64 data_ptr;
+ __u32 nr_elements;
+};
+
#if defined(__cplusplus)
}
#endif
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT structures exposed to user
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 9:11 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram Arun R Murthy
` (19 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
ImageEnhancemenT(IET) hardware interpolates the LUT value to generate
the enhanced output image. LUT takes an input value, outputs a new
value based on the data within the LUT. 1D LUT can remap individual
input values to new output values based on the LUT sample. LUT can be
interpolated by the hardware by multiple modes Ex: Direct Lookup LUT,
Multiplicative LUT etc
The list of supported mode by hardware along with the format(exponent
mantissa) is exposed to user by the iet_lut_caps property. Maximum
format being 8.24 i.e 8 exponent and 24 mantissa.
For illustration a hardware supporting 1.9 format denotes this as
0x10001FF. In order to know the exponent do a bitwise AND with
0xF000000. The LUT value to be provided by user would be a 10bit value
with 1 bit integer and 9 bit fractional value.
Multiple formats can be supported, hence pointer is used over here.
User can then provide the LUT with any one of the supported modes in
any of the supported formats.
The entries in the LUT can vary depending on the hardware capability
with max being 255. This will also be exposed as iet_lut_caps so user
can generate a LUT with the specified entries.
v8: define enum for iet_mode, add more doc for iet modes (Dmitry)
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
include/uapi/drm/drm_mode.h | 68 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index b8b7b18843ae7224263a9c61b20ac6cbf5df69e9..006be62218bf1e985c2ca6352cb04110a38d1e84 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -1420,6 +1420,74 @@ struct drm_histogram {
__u32 nr_elements;
};
+/**
+ * enum drm_iet_mode
+ * @DRM_MODE_IET_LOOKUP_LUT:
+ * LUT values are points on exponential graph with x axis and y-axis y=f(x)
+ * This f(x) can be the algorithm, defined by the user space algorithm.
+ * When this LUT table is passed to the hardware it signifies how the hardware
+ * should use this table to get the LUT values. In this mode its direct lookup
+ * table. x-axis corresponds to input pixel value and y-axis corresponds to
+ * the output pixel value.
+ *
+ * @DRM_MODE_IET_MULTIPLICATIVE:
+ * LUT values, x and y are points on negative exponential graph with
+ * x-axis and y-axis (y = y/x). The value passed by the user will be
+ * in y/x i.e OutPixel/InPixel. X co-ordinate proportional to pixel value
+ * and Y-cordinate is the multiplier factor, i.e x-axis in pixels and
+ * y-axis is OutPixel/InPixel. so upon multiplying x, y is obtained,
+ * hence multiplicative.
+ * The format of LUT can at max be 8.24(8integer 24 fractional)
+ * represented by u32. 32bit is the container and if 16.16 is chosen
+ * then it doesn't make sense to boost the pixel by 2^16. Hence set aside
+ * 8bit for integer 2^8 thereby boosting the pixel by a value 255 which
+ * itself is a huge boost factor. Remaining 24bits out of the 32bit
+ * container is fractional part. This is also optimal for implementing
+ * in the hardware.
+ * Depending on the hardware capability and exponent mantissa can be
+ * chosen within this limits.
+ */
+enum drm_iet_mode {
+ DRM_MODE_IET_LOOKUP_LUT = 0x01,
+ DRM_MODE_IET_MULTIPLICATIVE = 0x02,
+};
+
+/**
+ * struct drm_iet_caps
+ *
+ * @iet_mode: pixel factor enhancement modes defined in enum drm_iet_mode.
+ * Multiple modes can be supported by hardware, the value can be
+ * ORed.
+ * @iet_sample_format: holds the address of an array of u32 LUT sample formats
+ * depending on the hardware capability. Max being 8.24
+ * Doing a bitwise AND will get the present sample.
+ * Ex: for 1 integer 9 fraction AND with 0x10001FF
+ * @nr_iet_sample_formats: number of iet_sample_formsts supported by the
+ * hardware
+ * @nr_iet_lut_entries: number of LUT entries
+ */
+struct drm_iet_caps {
+ __u32 iet_mode;
+ __u64 iet_sample_format;
+ __u32 nr_iet_sample_formats;
+ __u32 nr_iet_lut_entries;
+};
+
+/**
+ * struct drm_iet_1dlut_sample
+ * @iet_lut: the address in the field describes the format of the data
+ * corresponding to the @iet_mode
+ * In case of direct lookup this is NULL, in case of
+ * multiplicative mode LUT exponent and mantissa format.
+ * @nr_elements: number of entries pointed by the data @iet_lut
+ * @iet_mode: image enhancement mode, this will also convey the channel.
+ */
+struct drm_iet_1dlut_sample {
+ __u64 iet_lut;
+ __u32 nr_elements;
+ enum drm_iet_mode iet_mode;
+};
+
#if defined(__cplusplus)
}
#endif
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT " Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 9:36 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT Arun R Murthy
` (18 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Add drm-crtc property for histogram and for the properties added add
the corresponding get/set_property.
v8: Rebased
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 14 ++++++
drivers/gpu/drm/drm_atomic_uapi.c | 15 +++++++
drivers/gpu/drm/drm_crtc.c | 73 +++++++++++++++++++++++++++++++
include/drm/drm_crtc.h | 44 +++++++++++++++++++
4 files changed, 146 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 519228eb109533d2596e899a57b571fa0995824f..dfe6293f7a42d034da3de593094019ca15014a02 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -143,6 +143,12 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
drm_property_blob_get(state->ctm);
if (state->gamma_lut)
drm_property_blob_get(state->gamma_lut);
+ if (state->histogram_caps)
+ drm_property_blob_get(state->histogram_caps);
+ if (state->histogram_enable)
+ drm_property_blob_get(state->histogram_enable);
+ if (state->histogram_data)
+ drm_property_blob_get(state->histogram_data);
state->mode_changed = false;
state->active_changed = false;
state->planes_changed = false;
@@ -156,6 +162,8 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
/* Self refresh should be canceled when a new update is available */
state->active = drm_atomic_crtc_effectively_active(state);
state->self_refresh_active = false;
+
+ state->histogram_updated = false;
}
EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state);
@@ -215,6 +223,12 @@ void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state)
drm_property_blob_put(state->degamma_lut);
drm_property_blob_put(state->ctm);
drm_property_blob_put(state->gamma_lut);
+ if (state->histogram_caps)
+ drm_property_blob_put(state->histogram_caps);
+ if (state->histogram_enable)
+ drm_property_blob_put(state->histogram_enable);
+ if (state->histogram_data)
+ drm_property_blob_put(state->histogram_data);
}
EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state);
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index 370dc676e3aa543c9827b50df20df78f02b738c9..459d30898196c94392a7f916b1fa9ca3a334eea8 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -415,6 +415,15 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
return -EFAULT;
set_out_fence_for_crtc(state->state, crtc, fence_ptr);
+ } else if (property == crtc->histogram_enable_property) {
+ ret = drm_property_replace_blob_from_id(dev,
+ &state->histogram_enable,
+ val,
+ -1,
+ sizeof(struct drm_histogram_config),
+ &replaced);
+ state->histogram_updated |= replaced;
+ return ret;
} else if (property == crtc->scaling_filter_property) {
state->scaling_filter = val;
} else if (crtc->funcs->atomic_set_property) {
@@ -452,6 +461,12 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
*val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
else if (property == config->prop_out_fence_ptr)
*val = 0;
+ else if (property == crtc->histogram_caps_property)
+ *val = (state->histogram_caps) ? state->histogram_caps->base.id : 0;
+ else if (property == crtc->histogram_enable_property)
+ *val = (state->histogram_enable) ? state->histogram_enable->base.id : 0;
+ else if (property == crtc->histogram_data_property)
+ *val = (state->histogram_data) ? state->histogram_data->base.id : 0;
else if (property == crtc->scaling_filter_property)
*val = state->scaling_filter;
else if (crtc->funcs->atomic_get_property)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 46655339003db2a1b43441434839e26f61d79b4e..d10b29aff725e40bdb93e6bd0828347db40fa3e8 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -959,3 +959,76 @@ bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state)
return hweight32(crtc_state->encoder_mask) > 1;
}
EXPORT_SYMBOL(drm_crtc_in_clone_mode);
+
+/**
+ * drm_crtc_create_histogram_property: create histogram properties
+ *
+ * @crtc: pointer to the struct drm_crtc.
+ * @caps: pointer to the struct drm_histogram_caps, holds the
+ * histogram hardware capabilities.
+ *
+ * The property HISTOGRAM_CAPS exposes the hardware capability for
+ * histogram which includes the histogram mode, number of bins etc
+ * The property HISTOGRAM_ENABLE allows user to enable/disable the
+ * histogram feature and also configure the hardware.
+ * Upon KMD enabling by writing to the hardware registers, histogram
+ * is generated. Histogram is composed of 'n' bins with each bin
+ * being an integer(pixel count).
+ * An event HISTOGRAM will be sent to the user. User upon receiving this
+ * event can read the hardware generated histogram using crtc property
+ * HISTOGRAM_DATA.
+ * User can use this histogram data to enhance the image or in shaders.
+ *
+ * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
+ * Description of the structure is in include/uapi/drm/drm_mode.h
+ * Property HISTOGRAM_ENABLE is a blob pointing to the struct
+ * drm_histogram_config
+ * Description of the structure is in include/uapi/drm/drm_mode.h
+ * Property HISTOGRAM_DATA is a blob pointing to the struct drm_histogram
+ * Description of the structure is in include/uapi/drm/drm_mode.h
+ *
+ * RETURNS:
+ * Zero for success or -errno
+ */
+int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
+ struct drm_histogram_caps *caps)
+{
+ struct drm_property *prop;
+ struct drm_property_blob *blob;
+ struct drm_histogram_caps *blob_data;
+
+ blob = drm_property_create_blob(crtc->dev,
+ sizeof(struct drm_histogram_caps),
+ NULL);
+ if (IS_ERR(blob))
+ return -1;
+ blob_data = blob->data;
+ blob_data->histogram_mode = caps->histogram_mode;
+ blob_data->bins_count = caps->bins_count;
+
+ prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+ DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+ "HISTOGRAM_CAPS", blob->base.id);
+ if (!prop)
+ return -ENOMEM;
+ drm_object_attach_property(&crtc->base, prop, 0);
+ crtc->histogram_caps_property = prop;
+
+ prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+ DRM_MODE_PROP_BLOB, "HISTOGRAM_ENABLE", 0);
+ if (!prop)
+ return -ENOMEM;
+ drm_object_attach_property(&crtc->base, prop, 0);
+ crtc->histogram_enable_property = prop;
+
+ prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+ DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+ "HISTOGRAM_DATA", 0);
+ if (!prop)
+ return -ENOMEM;
+ drm_object_attach_property(&crtc->base, prop, 0);
+ crtc->histogram_data_property = prop;
+
+ return 0;
+}
+EXPORT_SYMBOL(drm_crtc_create_histogram_property);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index caa56e039da2a748cf40ebf45b37158acda439d9..2da803749bdf03c07268be4e075793ef4e4eb99a 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -274,6 +274,32 @@ struct drm_crtc_state {
*/
struct drm_property_blob *gamma_lut;
+ /**
+ * @histogram_caps:
+ *
+ * The blob points to the structure drm_histogram_caps.
+ * For more info on the elements of the struct drm_histogram_caps
+ * see include/uapi/drm/drm_mode.h
+ */
+ struct drm_property_blob *histogram_caps;
+ /**
+ * @histogram_enable:
+ *
+ * The blob points to the structure drm_histogram_config.
+ * For more information on the elements of struct drm_histogram_config
+ * see include/uapi/drm/drm_mode.h
+ */
+ struct drm_property_blob *histogram_enable;
+ /**
+ * @histogram_data:
+ *
+ * The blob points to the structure drm_histogram.
+ * For more information on the elements of struct drm_histogram
+ * see include/uapi/drm/drm_mode.h
+ */
+ struct drm_property_blob *histogram_data;
+ bool histogram_updated;
+
/**
* @target_vblank:
*
@@ -1088,6 +1114,22 @@ struct drm_crtc {
*/
struct drm_property *scaling_filter_property;
+ /**
+ * @histogram_caps_property: Optional CRTC property for getting the
+ * histogram hardware capability.
+ */
+ struct drm_property *histogram_caps_property;
+ /**
+ * @histogram_enable_property: Optional CRTC property for enabling or
+ * disabling global histogram.
+ */
+ struct drm_property *histogram_enable_property;
+ /**
+ * @histogram_data_proeprty: Optional CRTC property for getting the
+ * histogram blob data.
+ */
+ struct drm_property *histogram_data_property;
+
/**
* @state:
*
@@ -1324,4 +1366,6 @@ static inline struct drm_crtc *drm_crtc_find(struct drm_device *dev,
int drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
unsigned int supported_filters);
bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state);
+int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
+ struct drm_histogram_caps *caps);
#endif /* __DRM_CRTC_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (2 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 9:47 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 05/14] drm/i915/histogram: Define registers for histogram Arun R Murthy
` (17 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Add drm-crtc property for IET 1DLUT and for the properties added add
corresponding get/set_property.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 9 ++++++
drivers/gpu/drm/drm_atomic_uapi.c | 13 ++++++++
drivers/gpu/drm/drm_crtc.c | 54 +++++++++++++++++++++++++++++++
include/drm/drm_crtc.h | 36 +++++++++++++++++++++
4 files changed, 112 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index dfe6293f7a42d034da3de593094019ca15014a02..ceab90cec57cc580afcf334e275982827e9b0e0d 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -149,6 +149,10 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
drm_property_blob_get(state->histogram_enable);
if (state->histogram_data)
drm_property_blob_get(state->histogram_data);
+ if (state->iet_lut_caps)
+ drm_property_blob_get(state->iet_lut_caps);
+ if (state->iet_lut)
+ drm_property_blob_get(state->iet_lut);
state->mode_changed = false;
state->active_changed = false;
state->planes_changed = false;
@@ -164,6 +168,7 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
state->self_refresh_active = false;
state->histogram_updated = false;
+ state->iet_lut_updated = false;
}
EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state);
@@ -229,6 +234,10 @@ void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state)
drm_property_blob_put(state->histogram_enable);
if (state->histogram_data)
drm_property_blob_put(state->histogram_data);
+ if (state->iet_lut_caps)
+ drm_property_blob_put(state->iet_lut_caps);
+ if (state->iet_lut)
+ drm_property_blob_put(state->iet_lut);
}
EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state);
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index 459d30898196c94392a7f916b1fa9ca3a334eea8..f31d24d80cc082b38c611b12f36f281fa7404869 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -424,6 +424,15 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
&replaced);
state->histogram_updated |= replaced;
return ret;
+ } else if (property == crtc->iet_lut_property) {
+ ret = drm_property_replace_blob_from_id(dev,
+ &state->iet_lut,
+ val,
+ -1,
+ sizeof(struct drm_iet_1dlut_sample),
+ &replaced);
+ state->iet_lut_updated |= replaced;
+ return ret;
} else if (property == crtc->scaling_filter_property) {
state->scaling_filter = val;
} else if (crtc->funcs->atomic_set_property) {
@@ -467,6 +476,10 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
*val = (state->histogram_enable) ? state->histogram_enable->base.id : 0;
else if (property == crtc->histogram_data_property)
*val = (state->histogram_data) ? state->histogram_data->base.id : 0;
+ else if (property == crtc->iet_lut_caps_property)
+ *val = (state->iet_lut_caps) ? state->iet_lut_caps->base.id : 0;
+ else if (property == crtc->iet_lut_property)
+ *val = (state->iet_lut) ? state->iet_lut->base.id : 0;
else if (property == crtc->scaling_filter_property)
*val = state->scaling_filter;
else if (crtc->funcs->atomic_get_property)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d10b29aff725e40bdb93e6bd0828347db40fa3e8..850d98d7f9c8965c7a5e9ac5505e355042041449 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -1032,3 +1032,57 @@ int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
return 0;
}
EXPORT_SYMBOL(drm_crtc_create_histogram_property);
+
+/**
+ * drm_crtc_create_iet_lut_property
+ *
+ * @crtc: pointer to the struct drm_crtc.
+ * @caps: pointer to the struct drm_iet_caps, holds the
+ * image enhancement LUT hardware capabilities.
+ *
+ * This 1DLUT is used by the hardware to enahance the image. Hardware
+ * interpolates this LUT value to generate the enhanced output image.
+ *
+ * The blob property IET_LUT_CAPS points to the struct drm_iet_lut_caps
+ * The blob property IET_LUT points to the struct drm_iet_1dlut_sample
+ * Description of the structure is in include/uapi/drm/drm_mode.h
+ *
+ * RETURNS:
+ * Zero for success or -errno
+ */
+int drm_crtc_create_iet_lut_property(struct drm_crtc *crtc,
+ struct drm_iet_caps *caps)
+{
+ struct drm_property *prop;
+ struct drm_iet_caps *blob_data;
+ struct drm_property_blob *blob;
+
+ blob = drm_property_create_blob(crtc->dev,
+ sizeof(struct drm_iet_caps),
+ NULL);
+ if (IS_ERR(blob))
+ return -1;
+ blob_data = blob->data;
+ blob_data->iet_mode = caps->iet_mode;
+ blob_data->nr_iet_sample_formats = caps->nr_iet_sample_formats;
+ blob_data->nr_iet_lut_entries = caps->nr_iet_lut_entries;
+ blob_data->iet_sample_format = caps->iet_sample_format;
+
+ prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+ DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+ "IET_LUT_CAPS", blob->base.id);
+ if (!prop)
+ return -ENOMEM;
+ drm_object_attach_property(&crtc->base, prop, 0);
+ crtc->iet_lut_caps_property = prop;
+
+ prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+ DRM_MODE_PROP_BLOB, "IET_LUT", 0);
+ if (!prop)
+ return -ENOMEM;
+ drm_object_attach_property(&crtc->base, prop, 0);
+ crtc->iet_lut_property = prop;
+
+ return 0;
+}
+EXPORT_SYMBOL(drm_crtc_create_iet_lut_property);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 2da803749bdf03c07268be4e075793ef4e4eb99a..bc85ab16d5c817773a1d8b415eb256d08c13c709 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -300,6 +300,29 @@ struct drm_crtc_state {
struct drm_property_blob *histogram_data;
bool histogram_updated;
+ /**
+ * @iet_lut_caps:
+ *
+ * The blob points to the structure drm_iet_lut_caps.
+ * For more info on the elements of the struct drm_iet_lut_caps
+ * see include/uapi/drm/drm_mode.h
+ */
+ struct drm_property_blob *iet_lut_caps;
+ /**
+ * @iet_lut:
+ *
+ * The blob points to the struct drm_lut_sample
+ * For more information on the elements of struct drm_lut_sample
+ * see include/uapi/drm/drm_mode.h
+ */
+ struct drm_property_blob *iet_lut;
+ /**
+ * @iet_lut_updates:
+ *
+ * Convey that the image enhanced data has been updated by the user
+ */
+ bool iet_lut_updated;
+
/**
* @target_vblank:
*
@@ -1130,6 +1153,17 @@ struct drm_crtc {
*/
struct drm_property *histogram_data_property;
+ /**
+ * @iet_lut_caps_property: Optional CRTC property for getting the
+ * iet LUT hardware capability.
+ */
+ struct drm_property *iet_lut_caps_property;
+ /**
+ * @iet_lut_proeprty: Optional CRTC property for writing the
+ * image enhanced LUT
+ */
+ struct drm_property *iet_lut_property;
+
/**
* @state:
*
@@ -1368,4 +1402,6 @@ int drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state);
int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
struct drm_histogram_caps *caps);
+int drm_crtc_create_iet_lut_property(struct drm_crtc *crtc,
+ struct drm_iet_caps *caps);
#endif /* __DRM_CRTC_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 05/14] drm/i915/histogram: Define registers for histogram
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (3 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 06/14] drm/i915/histogram: Add support " Arun R Murthy
` (16 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Add the register/bit definitions for global histogram.
v2: Intended the register contents, removed unused regs (Jani)
Bspec: 4270
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
.../gpu/drm/i915/display/intel_histogram_regs.h | 48 ++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_histogram_regs.h b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
new file mode 100644
index 0000000000000000000000000000000000000000..1252b4f339a63f70f44e249bdeae87805bee20fc
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef __INTEL_HISTOGRAM_REGS_H__
+#define __INTEL_HISTOGRAM_REGS_H__
+
+#include "intel_display_reg_defs.h"
+
+/* GLOBAL_HIST related registers */
+#define _DPST_CTL_A 0x490C0
+#define _DPST_CTL_B 0x491C0
+#define DPST_CTL(pipe) _MMIO_PIPE(pipe, _DPST_CTL_A, _DPST_CTL_B)
+#define DPST_CTL_IE_HIST_EN REG_BIT(31)
+#define DPST_CTL_RESTORE REG_BIT(28)
+#define DPST_CTL_IE_MODI_TABLE_EN REG_BIT(27)
+#define DPST_CTL_HIST_MODE REG_BIT(24)
+#define DPST_CTL_ENHANCEMENT_MODE_MASK REG_GENMASK(14, 13)
+#define DPST_CTL_EN_MULTIPLICATIVE REG_FIELD_PREP(DPST_CTL_ENHANCEMENT_MODE_MASK, 2)
+#define DPST_CTL_IE_TABLE_VALUE_FORMAT REG_BIT(15)
+#define DPST_CTL_BIN_REG_FUNC_SEL REG_BIT(11)
+#define DPST_CTL_BIN_REG_FUNC_TC REG_FIELD_PREP(DPST_CTL_BIN_REG_FUNC_SEL, 0)
+#define DPST_CTL_BIN_REG_FUNC_IE REG_FIELD_PREP(DPST_CTL_BIN_REG_FUNC_SEL, 1)
+#define DPST_CTL_BIN_REG_MASK REG_GENMASK(6, 0)
+#define DPST_CTL_BIN_REG_CLEAR REG_FIELD_PREP(DPST_CTL_BIN_REG_MASK, 0)
+#define DPST_CTL_IE_TABLE_VALUE_FORMAT_2INT_8FRAC REG_FIELD_PREP(DPST_CTL_IE_TABLE_VALUE_FORMAT, 1)
+#define DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC REG_FIELD_PREP(DPST_CTL_IE_TABLE_VALUE_FORMAT, 0)
+#define DPST_CTL_HIST_MODE_YUV REG_FIELD_PREP(DPST_CTL_HIST_MODE, 0)
+#define DPST_CTL_HIST_MODE_HSV REG_FIELD_PREP(DPST_CTL_HIST_MODE, 1)
+
+#define _DPST_GUARD_A 0x490C8
+#define _DPST_GUARD_B 0x491C8
+#define DPST_GUARD(pipe) _MMIO_PIPE(pipe, _DPST_GUARD_A, _DPST_GUARD_B)
+#define DPST_GUARD_HIST_INT_EN REG_BIT(31)
+#define DPST_GUARD_HIST_EVENT_STATUS REG_BIT(30)
+#define DPST_GUARD_INTERRUPT_DELAY_MASK REG_GENMASK(29, 22)
+#define DPST_GUARD_INTERRUPT_DELAY(val) REG_FIELD_PREP(DPST_GUARD_INTERRUPT_DELAY_MASK, val)
+#define DPST_GUARD_THRESHOLD_GB_MASK REG_GENMASK(21, 0)
+#define DPST_GUARD_THRESHOLD_GB(val) REG_FIELD_PREP(DPST_GUARD_THRESHOLD_GB_MASK, val)
+
+#define _DPST_BIN_A 0x490C4
+#define _DPST_BIN_B 0x491C4
+#define DPST_BIN(pipe) _MMIO_PIPE(pipe, _DPST_BIN_A, _DPST_BIN_B)
+#define DPST_BIN_DATA_MASK REG_GENMASK(23, 0)
+#define DPST_BIN_BUSY REG_BIT(31)
+
+#endif /* __INTEL_HISTOGRAM_REGS_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (4 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 05/14] drm/i915/histogram: Define registers for histogram Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 10:02 ` Kandpal, Suraj
2025-02-16 14:32 ` [v8,06/14] " Thasleem, Mohammed
2025-01-28 15:51 ` [PATCH v8 07/14] drm/xe: Add histogram support to Xe builds Arun R Murthy
` (15 subsequent siblings)
21 siblings, 2 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Statistics is generated from the image frame that is coming to display
and an event is sent to user after reading this histogram data.
v2: forward declaration in header file along with error handling (Jani)
v3: Replaced i915 with intel_display (Suraj)
v4: Removed dithering enable/disable (Vandita)
New patch for histogram register definitions (Suraj)
v5: IET LUT pgm follow the seq in spec and removed change to TC at end
(Suraj)
v8: Retained only the Histogram part and move IET LUT to a different
patch.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_histogram.c | 157 +++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_histogram.h | 48 +++++++
4 files changed, 208 insertions(+)
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 4caa8e30bc98387d45212fbc7cea8b38687bd0d5..f993b19174ba79c0bcc34994619937be7d2797ed 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -270,6 +270,7 @@ i915-y += \
display/intel_hdcp.o \
display/intel_hdcp_gsc.o \
display/intel_hdcp_gsc_message.o \
+ display/intel_histogram.o \
display/intel_hotplug.o \
display/intel_hotplug_irq.o \
display/intel_hti.o \
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index cb51b7936f9338caaf14b1c6f7bbcc4327da4ef1..761fefed9376439c0ee5d346e8110a219ad0a586 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1434,6 +1434,8 @@ struct intel_crtc {
/* for loading single buffered registers during vblank */
struct pm_qos_request vblank_pm_qos;
+ struct intel_histogram *histogram;
+
#ifdef CONFIG_DEBUG_FS
struct intel_pipe_crc pipe_crc;
#endif
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
new file mode 100644
index 0000000000000000000000000000000000000000..26eae8f40d0bf642546d583546782e22d5cefa9c
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -0,0 +1,157 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#include <drm/drm_device.h>
+#include <drm/drm_file.h>
+#include <drm/drm_vblank.h>
+
+#include "i915_reg.h"
+#include "i915_drv.h"
+#include "intel_de.h"
+#include "intel_display.h"
+#include "intel_display_types.h"
+#include "intel_histogram.h"
+#include "intel_histogram_regs.h"
+
+/* 3.0% of the pipe's current pixel count, hw does x4 */
+#define HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
+/* Precision factor for threshold guardband */
+#define HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000
+#define HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
+
+int intel_histogram_atomic_check(struct intel_crtc *intel_crtc)
+{
+ struct intel_histogram *histogram = intel_crtc->histogram;
+
+ /* TODO: Restrictions for enabling histogram */
+ histogram->can_enable = true;
+
+ return 0;
+}
+
+static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8 mode)
+{
+ struct intel_display *display = to_intel_display(intel_crtc);
+ struct intel_histogram *histogram = intel_crtc->histogram;
+ int pipe = intel_crtc->pipe;
+ u64 res;
+ u32 gbandthreshold;
+
+ if (!histogram || !histogram->can_enable)
+ return -EINVAL;
+
+ if (histogram->enable)
+ return 0;
+
+ /* enable histogram, clear DPST_CTL bin reg func select to TC */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE | DPST_CTL_IE_TABLE_VALUE_FORMAT |
+ DPST_CTL_ENHANCEMENT_MODE_MASK | DPST_CTL_IE_MODI_TABLE_EN,
+ ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
+ DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE_HSV |
+ DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
+ DPST_CTL_EN_MULTIPLICATIVE | DPST_CTL_IE_MODI_TABLE_EN);
+
+ /* Re-Visit: check if wait for one vblank is required */
+ drm_crtc_wait_one_vblank(&intel_crtc->base);
+
+ /* TODO: Program GuardBand Threshold needs to be moved to modeset path */
+ res = (intel_crtc->config->hw.adjusted_mode.vtotal *
+ intel_crtc->config->hw.adjusted_mode.htotal);
+
+ gbandthreshold = (res * HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT) /
+ HISTOGRAM_GUARDBAND_PRECISION_FACTOR;
+
+ /* Enable histogram interrupt mode */
+ intel_de_rmw(display, DPST_GUARD(pipe),
+ DPST_GUARD_THRESHOLD_GB_MASK |
+ DPST_GUARD_INTERRUPT_DELAY_MASK | DPST_GUARD_HIST_INT_EN,
+ DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
+ DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY) |
+ DPST_GUARD_HIST_INT_EN);
+
+ /* Clear pending interrupts has to be done on separate write */
+ intel_de_rmw(display, DPST_GUARD(pipe),
+ DPST_GUARD_HIST_EVENT_STATUS, 1);
+
+ histogram->enable = true;
+
+ return 0;
+}
+
+static void intel_histogram_disable(struct intel_crtc *intel_crtc)
+{
+ struct intel_display *display = to_intel_display(intel_crtc);
+ struct intel_histogram *histogram = intel_crtc->histogram;
+ int pipe = intel_crtc->pipe;
+
+ if (!histogram)
+ return;
+
+ /* If already disabled return */
+ if (histogram->enable)
+ return;
+
+ /* Clear pending interrupts and disable interrupts */
+ intel_de_rmw(display, DPST_GUARD(pipe),
+ DPST_GUARD_HIST_INT_EN | DPST_GUARD_HIST_EVENT_STATUS, 0);
+
+ /* disable DPST_CTL Histogram mode */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_IE_HIST_EN, 0);
+
+ histogram->enable = false;
+}
+
+int intel_histogram_update(struct intel_crtc *intel_crtc,
+ struct drm_histogram_config *config)
+{
+ struct intel_display *display = to_intel_display(intel_crtc);
+
+ if (config->enable) {
+ if (config->hist_mode != DRM_MODE_HISTOGRAM_HSV_MAX_RGB) {
+ drm_err(display->drm,
+ "Only max(RGB) mode is supported for histogram\n");
+ return -EINVAL;
+ }
+ return intel_histogram_enable(intel_crtc, config->hist_mode);
+ }
+
+ intel_histogram_disable(intel_crtc);
+ return 0;
+}
+
+void intel_histogram_finish(struct intel_crtc *intel_crtc)
+{
+ struct intel_histogram *histogram = intel_crtc->histogram;
+
+ kfree(histogram);
+}
+
+int intel_histogram_init(struct intel_crtc *crtc)
+{
+ struct intel_histogram *histogram;
+ struct drm_histogram_caps *histogram_caps;
+
+ /* Allocate histogram internal struct */
+ histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
+ if (!histogram)
+ return -ENOMEM;
+ histogram_caps = kzalloc(sizeof(*histogram_caps), GFP_KERNEL);
+ if (!histogram_caps)
+ return -ENOMEM;
+
+ histogram_caps->histogram_mode = DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
+ histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
+
+ crtc->histogram = histogram;
+ histogram->crtc = crtc;
+ histogram->can_enable = false;
+ histogram->caps = histogram_caps;
+
+ return 0;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h b/drivers/gpu/drm/i915/display/intel_histogram.h
new file mode 100644
index 0000000000000000000000000000000000000000..5ea19ef2d3ecadf1ac159a784f51278fdde593de
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_histogram.h
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_HISTOGRAM_H__
+#define __INTEL_HISTOGRAM_H__
+
+#include <linux/types.h>
+#include <linux/workqueue.h>
+
+struct delayed_work;
+struct drm_property_blob;
+struct drm_histogram_config;
+struct drm_histogram_caps;
+struct intel_crtc;
+
+#define HISTOGRAM_BIN_COUNT 32
+
+struct intel_histogram {
+ struct drm_histogram_caps *caps;
+ struct intel_crtc *crtc;
+ struct delayed_work work;
+ bool enable;
+ bool can_enable;
+ u32 bin_data[HISTOGRAM_BIN_COUNT];
+};
+
+enum intel_global_hist_status {
+ INTEL_HISTOGRAM_ENABLE,
+ INTEL_HISTOGRAM_DISABLE,
+};
+
+enum intel_global_histogram {
+ INTEL_HISTOGRAM,
+};
+
+enum intel_global_hist_lut {
+ INTEL_HISTOGRAM_PIXEL_FACTOR,
+};
+
+int intel_histogram_atomic_check(struct intel_crtc *intel_crtc);
+int intel_histogram_update(struct intel_crtc *intel_crtc,
+ struct drm_histogram_config *config);
+int intel_histogram_init(struct intel_crtc *intel_crtc);
+void intel_histogram_finish(struct intel_crtc *intel_crtc);
+
+#endif /* __INTEL_HISTOGRAM_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 07/14] drm/xe: Add histogram support to Xe builds
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (5 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 06/14] drm/i915/histogram: Add support " Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling Arun R Murthy
` (14 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Histogram added as part of i915/display driver. Adding the same for xe
as well.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Acked-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/gpu/drm/xe/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 80ab87cfeecbcf9f64183e938a8b15efe71459ed..7ee23d31a1a3584852708c4e17ad179a47e5b6b9 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -248,6 +248,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
i915-display/intel_hdcp.o \
i915-display/intel_hdcp_gsc_message.o \
i915-display/intel_hdmi.o \
+ i915-display/intel_histogram.o \
i915-display/intel_hotplug.o \
i915-display/intel_hotplug_irq.o \
i915-display/intel_hti.o \
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (6 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 07/14] drm/xe: Add histogram support to Xe builds Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 10:19 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram Arun R Murthy
` (13 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Upon enabling histogram an interrupt is trigerred after the generation
of the statistics. This patch registers the histogram interrupt and
handles the interrupt.
v2: Added intel_crtc backpointer to intel_histogram struct (Jani)
Removed histogram_wq and instead use dev_priv->unodered_eq (Jani)
v3: Replaced drm_i915_private with intel_display (Suraj)
Refactored the histogram read code (Jani)
v4: Rebased after addressing comments on patch 1
v5: removed the retry logic and moved to patch7 (Jani)
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_irq.c | 6 +-
drivers/gpu/drm/i915/display/intel_histogram.c | 106 ++++++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_histogram.h | 3 +
drivers/gpu/drm/i915/i915_reg.h | 5 +-
4 files changed, 115 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c
index d9734fcd0d45b9f7c2891730e73b7e1d59c206ad..b62c3cdfd6a0607d9d2e1caa0d71edb0aa99fdbb 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -21,6 +21,7 @@
#include "intel_fdi_regs.h"
#include "intel_fifo_underrun.h"
#include "intel_gmbus.h"
+#include "intel_histogram.h"
#include "intel_hotplug_irq.h"
#include "intel_pipe_crc_regs.h"
#include "intel_pmdemand.h"
@@ -1230,6 +1231,9 @@ void gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
if (iir & GEN8_PIPE_FIFO_UNDERRUN)
intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
+ if (iir & GEN9_PIPE_HISTOGRAM_EVENT)
+ intel_histogram_irq_handler(display, pipe);
+
fault_errors = iir & gen8_de_pipe_fault_mask(dev_priv);
if (fault_errors)
drm_err_ratelimited(&dev_priv->drm,
@@ -1827,7 +1831,7 @@ void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
struct intel_display *display = &dev_priv->display;
u32 de_pipe_masked = gen8_de_pipe_fault_mask(dev_priv) |
- GEN8_PIPE_CDCLK_CRC_DONE;
+ GEN8_PIPE_CDCLK_CRC_DONE | GEN9_PIPE_HISTOGRAM_EVENT;
u32 de_pipe_enables;
u32 de_port_masked = gen8_de_port_aux_mask(dev_priv);
u32 de_port_enables;
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
index 26eae8f40d0bf642546d583546782e22d5cefa9c..4f3dcbabfe96e955a65874718272c4beb53b0827 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.c
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -19,7 +19,104 @@
#define HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
/* Precision factor for threshold guardband */
#define HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000
-#define HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
+#define HISTOGRAM_BIN_READ_RETRY_COUNT 5
+
+static bool intel_histogram_get_data(struct intel_crtc *intel_crtc)
+{
+ struct intel_display *display = to_intel_display(intel_crtc);
+ struct intel_histogram *histogram = intel_crtc->histogram;
+ int index;
+ u32 dpstbin;
+
+ for (index = 0; index < ARRAY_SIZE(histogram->bin_data); index++) {
+ dpstbin = intel_de_read(display, DPST_BIN(intel_crtc->pipe));
+ if (!(dpstbin & DPST_BIN_BUSY)) {
+ histogram->bin_data[index] = dpstbin & DPST_BIN_DATA_MASK;
+ } else
+ return false;
+ }
+ return true;
+}
+
+static void intel_histogram_handle_int_work(struct work_struct *work)
+{
+ struct intel_histogram *histogram = container_of(work,
+ struct intel_histogram, work.work);
+ struct intel_crtc *intel_crtc = histogram->crtc;
+ struct intel_display *display = to_intel_display(intel_crtc);
+ char event[] = "HISTOGRAM=1", pipe_id[21];
+ char *histogram_event[] = { event, pipe_id, NULL };
+ int retry;
+
+ snprintf(pipe_id, sizeof(pipe_id),
+ "PIPE=%u", intel_crtc->base.base.id);
+
+ /*
+ * TODO: PSR to be exited while reading the Histogram data
+ * Set DPST_CTL Bin Reg function select to TC
+ * Set DPST_CTL Bin Register Index to 0
+ */
+ intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_BIN_REG_MASK, 0);
+ for (retry = 0; retry < HISTOGRAM_BIN_READ_RETRY_COUNT; retry++) {
+ if (intel_histogram_get_data(intel_crtc)) {
+ u32 *data;
+ struct drm_histogram *hist;
+
+ data = kzalloc(sizeof(data) * sizeof(histogram->bin_data), GFP_KERNEL);
+ if (!data)
+ return;
+ memcpy(histogram->bin_data, data, sizeof(histogram->bin_data));
+ hist = kzalloc(sizeof(struct drm_histogram), GFP_KERNEL);
+ if (!hist)
+ return;
+ hist->data_ptr = *data;
+ hist->nr_elements = sizeof(histogram->bin_data);
+
+ /* TODO: fill the drm_histogram_config data back this drm_histogram struct */
+ drm_property_replace_global_blob(display->drm,
+ &intel_crtc->base.state->histogram_data,
+ sizeof(struct drm_histogram),
+ hist, &intel_crtc->base.base,
+ intel_crtc->base.histogram_data_property);
+ /* Notify user for Histogram readiness */
+ if (kobject_uevent_env(&display->drm->primary->kdev->kobj,
+ KOBJ_CHANGE, histogram_event))
+ drm_err(display->drm,
+ "Sending HISTOGRAM event failed\n");
+ break;
+ }
+ }
+ if (retry >= HISTOGRAM_BIN_READ_RETRY_COUNT) {
+ drm_err(display->drm, "Histogram bin read failed with max retry\n");
+ return;
+ }
+
+ /* Enable histogram interrupt */
+ intel_de_rmw(display, DPST_GUARD(intel_crtc->pipe), DPST_GUARD_HIST_INT_EN,
+ DPST_GUARD_HIST_INT_EN);
+
+ /* Clear histogram interrupt by setting histogram interrupt status bit*/
+ intel_de_rmw(display, DPST_GUARD(intel_crtc->pipe),
+ DPST_GUARD_HIST_EVENT_STATUS, 1);
+}
+
+void intel_histogram_irq_handler(struct intel_display *display, enum pipe pipe)
+{
+ struct intel_crtc *intel_crtc =
+ to_intel_crtc(drm_crtc_from_index(display->drm, pipe));
+ struct intel_histogram *histogram = intel_crtc->histogram;
+ struct drm_i915_private *i915 = to_i915(intel_crtc->base.dev);
+
+ if (!histogram->enable) {
+ drm_err(display->drm,
+ "Spurious interrupt, histogram not enabled\n");
+ return;
+ }
+
+ queue_delayed_work(i915->unordered_wq,
+ &histogram->work, 0);
+}
int intel_histogram_atomic_check(struct intel_crtc *intel_crtc)
{
@@ -71,7 +168,7 @@ static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8 mode)
DPST_GUARD_THRESHOLD_GB_MASK |
DPST_GUARD_INTERRUPT_DELAY_MASK | DPST_GUARD_HIST_INT_EN,
DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
- DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY) |
+ DPST_GUARD_INTERRUPT_DELAY(0x04) |
DPST_GUARD_HIST_INT_EN);
/* Clear pending interrupts has to be done on separate write */
@@ -104,6 +201,7 @@ static void intel_histogram_disable(struct intel_crtc *intel_crtc)
intel_de_rmw(display, DPST_CTL(pipe),
DPST_CTL_IE_HIST_EN, 0);
+ cancel_delayed_work(&histogram->work);
histogram->enable = false;
}
@@ -129,6 +227,7 @@ void intel_histogram_finish(struct intel_crtc *intel_crtc)
{
struct intel_histogram *histogram = intel_crtc->histogram;
+ cancel_delayed_work_sync(&histogram->work);
kfree(histogram);
}
@@ -153,5 +252,8 @@ int intel_histogram_init(struct intel_crtc *crtc)
histogram->can_enable = false;
histogram->caps = histogram_caps;
+ INIT_DEFERRABLE_WORK(&histogram->work,
+ intel_histogram_handle_int_work);
+
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h b/drivers/gpu/drm/i915/display/intel_histogram.h
index 5ea19ef2d3ecadf1ac159a784f51278fdde593de..b44ba3afc94f79f291f4e5ebdd04dcf9434b48a4 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.h
+++ b/drivers/gpu/drm/i915/display/intel_histogram.h
@@ -14,6 +14,8 @@ struct drm_property_blob;
struct drm_histogram_config;
struct drm_histogram_caps;
struct intel_crtc;
+struct intel_display;
+enum pipe;
#define HISTOGRAM_BIN_COUNT 32
@@ -39,6 +41,7 @@ enum intel_global_hist_lut {
INTEL_HISTOGRAM_PIXEL_FACTOR,
};
+void intel_histogram_irq_handler(struct intel_display *display, enum pipe pipe);
int intel_histogram_atomic_check(struct intel_crtc *intel_crtc);
int intel_histogram_update(struct intel_crtc *intel_crtc,
struct drm_histogram_config *config);
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index b9e2aa1c6f8afefade761b8d291bb62efb96e53c..fc451783c9c23bfdd74a2dfc78be40c9d576fb56 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1599,7 +1599,7 @@
#define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL << 26)
#define PIPE_VSYNC_INTERRUPT_ENABLE (1UL << 25)
#define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL << 24)
-#define PIPE_DPST_EVENT_ENABLE (1UL << 23)
+#define PIPE_HISTOGRAM_EVENT_ENABLE (1UL << 23)
#define SPRITE0_FLIP_DONE_INT_EN_VLV (1UL << 22)
#define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL << 22)
#define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL << 21)
@@ -1622,7 +1622,7 @@
#define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL << 10)
#define PIPE_VSYNC_INTERRUPT_STATUS (1UL << 9)
#define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL << 8)
-#define PIPE_DPST_EVENT_STATUS (1UL << 7)
+#define PIPE_HISTOGRAM_EVENT_STATUS (1UL << 7)
#define PIPE_A_PSR_STATUS_VLV (1UL << 6)
#define PIPE_LEGACY_BLC_EVENT_STATUS (1UL << 6)
#define PIPE_ODD_FIELD_INTERRUPT_STATUS (1UL << 5)
@@ -2224,6 +2224,7 @@
#define GEN12_DSB_1_INT REG_BIT(14) /* tgl+ */
#define GEN12_DSB_0_INT REG_BIT(13) /* tgl+ */
#define GEN12_DSB_INT(dsb_id) REG_BIT(13 + (dsb_id))
+#define GEN9_PIPE_HISTOGRAM_EVENT REG_BIT(12) /* skl+ */
#define GEN9_PIPE_CURSOR_FAULT REG_BIT(11) /* skl+ */
#define GEN9_PIPE_PLANE4_FAULT REG_BIT(10) /* skl+ */
#define GEN8_PIPE_CURSOR_FAULT REG_BIT(10) /* bdw */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (7 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-14 10:22 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data Arun R Murthy
` (12 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Handle histogram caps and histogram config property in i915 driver. Fill
the histogram hardware capability and act upon the histogram config
property to enable/disable histogram in i915.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 7 +++++++
drivers/gpu/drm/i915/display/intel_display.c | 12 ++++++++++++
2 files changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index e69b28779ac551bde56c9c3d394e784275a9b69e..b90017409a23de2a214ca43d32ba537998ea0f78 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -28,6 +28,7 @@
#include "intel_drrs.h"
#include "intel_dsi.h"
#include "intel_fifo_underrun.h"
+#include "intel_histogram.h"
#include "intel_pipe_crc.h"
#include "intel_psr.h"
#include "intel_sprite.h"
@@ -211,6 +212,7 @@ static struct intel_crtc *intel_crtc_alloc(void)
static void intel_crtc_free(struct intel_crtc *crtc)
{
intel_crtc_destroy_state(&crtc->base, crtc->base.state);
+ intel_histogram_finish(crtc);
kfree(crtc);
}
@@ -381,6 +383,11 @@ int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe)
BIT(DRM_SCALING_FILTER_DEFAULT) |
BIT(DRM_SCALING_FILTER_NEAREST_NEIGHBOR));
+ intel_histogram_init(crtc);
+ if (drm_crtc_create_histogram_property(&crtc->base,
+ crtc->histogram->caps))
+ drm_err(&dev_priv->drm, "Failed to initialize histogram properties\n");
+
intel_color_crtc_init(crtc);
intel_drrs_crtc_init(crtc);
intel_crtc_crc_init(crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 7d68d652c1bc91acc68281c4761f688f3779bd79..c38a33ee90aef144931215254f178ba955f998b0 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -93,6 +93,7 @@
#include "intel_fifo_underrun.h"
#include "intel_frontbuffer.h"
#include "intel_hdmi.h"
+#include "intel_histogram.h"
#include "intel_hotplug.h"
#include "intel_link_bw.h"
#include "intel_lvds.h"
@@ -4675,6 +4676,12 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
if (ret)
return ret;
+ if (crtc_state->uapi.histogram_updated) {
+ ret = intel_histogram_atomic_check(crtc);
+ if (ret)
+ return ret;
+ }
+
return 0;
}
@@ -7933,6 +7940,11 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
*/
old_crtc_state->dsb_color_vblank = fetch_and_zero(&new_crtc_state->dsb_color_vblank);
old_crtc_state->dsb_commit = fetch_and_zero(&new_crtc_state->dsb_commit);
+
+ if (new_crtc_state->uapi.histogram_updated)
+ intel_histogram_update(crtc,
+ (struct drm_histogram_config *)
+ new_crtc_state->uapi.histogram_enable->data);
}
/* Underruns don't always raise interrupts, so check manually */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (8 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-17 4:23 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 11/14] drm/i915/crtc: Hook i915 IET LUT with the drm IET properties Arun R Murthy
` (11 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
User created LUT can be fed back to the hardware so that the hardware
can apply this LUT data to see the enhancement in the image.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_histogram.c | 70 ++++++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_histogram.h | 4 ++
2 files changed, 74 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
index 4f3dcbabfe96e955a65874718272c4beb53b0827..aa02e7ce42b930a858de4ad7e0d39d93fa7d4298 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.c
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -20,6 +20,7 @@
/* Precision factor for threshold guardband */
#define HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000
#define HISTOGRAM_BIN_READ_RETRY_COUNT 5
+#define IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
static bool intel_histogram_get_data(struct intel_crtc *intel_crtc)
{
@@ -223,6 +224,60 @@ int intel_histogram_update(struct intel_crtc *intel_crtc,
return 0;
}
+int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
+ struct drm_property_blob *blob)
+{
+ struct intel_histogram *histogram = intel_crtc->histogram;
+ struct intel_display *display = to_intel_display(intel_crtc);
+ int pipe = intel_crtc->pipe;
+ int i = 0;
+ struct drm_iet_1dlut_sample *iet;
+ u32 *data;
+ int ret;
+
+ if (!histogram)
+ return -EINVAL;
+
+ if (!histogram->enable) {
+ drm_err(display->drm, "histogram not enabled");
+ return -EINVAL;
+ }
+
+ if (!data) {
+ drm_err(display->drm, "enhancement LUT data is NULL");
+ return -EINVAL;
+ }
+
+ /* Set DPST_CTL Bin Reg function select to IE & wait for a vblabk */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL, DPST_CTL_BIN_REG_FUNC_IE);
+
+ drm_crtc_wait_one_vblank(&intel_crtc->base);
+
+ /* Set DPST_CTL Bin Register Index to 0 */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_MASK, DPST_CTL_BIN_REG_CLEAR);
+
+ iet = (struct drm_iet_1dlut_sample *)blob->data;
+ data = kzalloc(sizeof(data) * iet->nr_elements, GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+ ret = copy_from_user(data, (uint32_t __user *)(unsigned long)iet->iet_lut,
+ sizeof(uint32_t) * iet->nr_elements);
+ if (ret)
+ return ret;
+
+ for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
+ intel_de_rmw(display, DPST_BIN(pipe),
+ DPST_BIN_DATA_MASK, data[i]);
+ drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n", i, data[i]);
+ }
+ kfree(data);
+ drm_property_blob_put(intel_crtc->base.state->iet_lut);
+
+ return 0;
+}
+
void intel_histogram_finish(struct intel_crtc *intel_crtc)
{
struct intel_histogram *histogram = intel_crtc->histogram;
@@ -235,6 +290,8 @@ int intel_histogram_init(struct intel_crtc *crtc)
{
struct intel_histogram *histogram;
struct drm_histogram_caps *histogram_caps;
+ struct drm_iet_caps *iet_caps;
+ u32 *iet_format;
/* Allocate histogram internal struct */
histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
@@ -247,10 +304,23 @@ int intel_histogram_init(struct intel_crtc *crtc)
histogram_caps->histogram_mode = DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
+ iet_caps = kzalloc(sizeof(*iet_caps), GFP_KERNEL);
+ if (!iet_caps)
+ return -ENOMEM;
+
+ iet_caps->iet_mode = DRM_MODE_IET_MULTIPLICATIVE;
+ iet_caps->nr_iet_sample_formats = 1;
+ iet_caps->nr_iet_lut_entries = HISTOGRAM_IET_LENGTH;
+ iet_format = kzalloc(sizeof(u32)*iet_caps->nr_iet_sample_formats,
+ GFP_KERNEL);
+ *iet_format = IET_SAMPLE_FORMAT_1_INT_9_FRACT;
+ iet_caps->iet_sample_format = *iet_format;
+
crtc->histogram = histogram;
histogram->crtc = crtc;
histogram->can_enable = false;
histogram->caps = histogram_caps;
+ histogram->iet_caps = iet_caps;
INIT_DEFERRABLE_WORK(&histogram->work,
intel_histogram_handle_int_work);
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h b/drivers/gpu/drm/i915/display/intel_histogram.h
index b44ba3afc94f79f291f4e5ebdd04dcf9434b48a4..0999d1720c7abee8907c77896e4b1e6ff756160f 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.h
+++ b/drivers/gpu/drm/i915/display/intel_histogram.h
@@ -18,9 +18,11 @@ struct intel_display;
enum pipe;
#define HISTOGRAM_BIN_COUNT 32
+#define HISTOGRAM_IET_LENGTH 33
struct intel_histogram {
struct drm_histogram_caps *caps;
+ struct drm_iet_caps *iet_caps;
struct intel_crtc *crtc;
struct delayed_work work;
bool enable;
@@ -45,6 +47,8 @@ void intel_histogram_irq_handler(struct intel_display *display, enum pipe pipe);
int intel_histogram_atomic_check(struct intel_crtc *intel_crtc);
int intel_histogram_update(struct intel_crtc *intel_crtc,
struct drm_histogram_config *config);
+int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
+ struct drm_property_blob *blob);
int intel_histogram_init(struct intel_crtc *intel_crtc);
void intel_histogram_finish(struct intel_crtc *intel_crtc);
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 11/14] drm/i915/crtc: Hook i915 IET LUT with the drm IET properties
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (9 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 12/14] drm/i915/histogram: histogram delay counter doesnt reset Arun R Murthy
` (10 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Upon drm getting the IET LUT value from the user through the IET_LUT
property, i915 driver will write the LUT table to the hardware
registers.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 3 +++
drivers/gpu/drm/i915/display/intel_display.c | 2 ++
2 files changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index b90017409a23de2a214ca43d32ba537998ea0f78..4e6c790f53ffe375e1b496fe48e9dc10e05bf11b 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -387,6 +387,9 @@ int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe)
if (drm_crtc_create_histogram_property(&crtc->base,
crtc->histogram->caps))
drm_err(&dev_priv->drm, "Failed to initialize histogram properties\n");
+ if (drm_crtc_create_iet_lut_property(&crtc->base,
+ crtc->histogram->iet_caps))
+ drm_err(&dev_priv->drm, "Failed to initialize histogram properties\n");
intel_color_crtc_init(crtc);
intel_drrs_crtc_init(crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c38a33ee90aef144931215254f178ba955f998b0..673012e716e448b4aef0db530f5eeb44edc14265 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7945,6 +7945,8 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
intel_histogram_update(crtc,
(struct drm_histogram_config *)
new_crtc_state->uapi.histogram_enable->data);
+ if (new_crtc_state->uapi.iet_lut_updated)
+ intel_histogram_set_iet_lut(crtc, new_crtc_state->uapi.iet_lut);
}
/* Underruns don't always raise interrupts, so check manually */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 12/14] drm/i915/histogram: histogram delay counter doesnt reset
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (10 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 11/14] drm/i915/crtc: Hook i915 IET LUT with the drm IET properties Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
` (9 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
The delay counter for histogram does not reset and as a result the
histogram bin never gets updated. Workaround would be to use save and
restore histogram register.
v2: Follow the seq in interrupt handler
Restore DPST bit 0
read/write dpst ctl rg
Restore DPST bit 1 and Guardband Delay Interrupt counter = 0
(Suraj)
v3: updated wa version for display 13 and 14
Wa: 14014889975
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_histogram.c | 14 ++++++++++++++
drivers/gpu/drm/i915/display/intel_histogram_regs.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
index aa02e7ce42b930a858de4ad7e0d39d93fa7d4298..dd4ab30795df48011013c019d7525e046cdd5404 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.c
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -52,6 +52,11 @@ static void intel_histogram_handle_int_work(struct work_struct *work)
snprintf(pipe_id, sizeof(pipe_id),
"PIPE=%u", intel_crtc->base.base.id);
+ /* Wa: 14014889975 */
+ if (IS_DISPLAY_VER(display, 13, 14))
+ intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
+ DPST_CTL_RESTORE, 0);
+
/*
* TODO: PSR to be exited while reading the Histogram data
* Set DPST_CTL Bin Reg function select to TC
@@ -93,6 +98,15 @@ static void intel_histogram_handle_int_work(struct work_struct *work)
return;
}
+ /* Wa: 14014889975 */
+ if (IS_DISPLAY_VER(display, 13, 14))
+ /* Write the value read from DPST_CTL to DPST_CTL.Interrupt Delay Counter(bit 23:16) */
+ intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
+ DPST_CTL_GUARDBAND_INTERRUPT_DELAY_CNT |
+ DPST_CTL_RESTORE,
+ DPST_CTL_GUARDBAND_INTERRUPT_DELAY(0x0) |
+ DPST_CTL_RESTORE);
+
/* Enable histogram interrupt */
intel_de_rmw(display, DPST_GUARD(intel_crtc->pipe), DPST_GUARD_HIST_INT_EN,
DPST_GUARD_HIST_INT_EN);
diff --git a/drivers/gpu/drm/i915/display/intel_histogram_regs.h b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
index 1252b4f339a63f70f44e249bdeae87805bee20fc..213c9f483567cb19a47b44953749f6baf0afe9e7 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
@@ -16,6 +16,8 @@
#define DPST_CTL_RESTORE REG_BIT(28)
#define DPST_CTL_IE_MODI_TABLE_EN REG_BIT(27)
#define DPST_CTL_HIST_MODE REG_BIT(24)
+#define DPST_CTL_GUARDBAND_INTERRUPT_DELAY_CNT REG_GENMASK(23, 16)
+#define DPST_CTL_GUARDBAND_INTERRUPT_DELAY(val) REG_FIELD_PREP(DPST_CTL_GUARDBAND_INTERRUPT_DELAY_CNT, val)
#define DPST_CTL_ENHANCEMENT_MODE_MASK REG_GENMASK(14, 13)
#define DPST_CTL_EN_MULTIPLICATIVE REG_FIELD_PREP(DPST_CTL_ENHANCEMENT_MODE_MASK, 2)
#define DPST_CTL_IE_TABLE_VALUE_FORMAT REG_BIT(15)
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (11 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 12/14] drm/i915/histogram: histogram delay counter doesnt reset Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-17 6:25 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering Arun R Murthy
` (8 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
In Display 20+, new registers are added for setting index, reading
histogram and writing the IET.
v2: Removed duplicate code (Jani)
v3: Moved histogram core changes to earlier patches (Jani/Suraj)
v4: Rebased after addressing comments on patch 1
v5: Added the retry logic from patch3 and rebased the patch series
v6: optimize wite_iet() (Suraj)
Bspec: 68895
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_histogram.c | 108 +++++++++++++++------
.../gpu/drm/i915/display/intel_histogram_regs.h | 25 +++++
2 files changed, 104 insertions(+), 29 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
index dd4ab30795df48011013c019d7525e046cdd5404..f6844449e4bb6167116d223af316e5f3a5e8707c 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.c
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -22,6 +22,37 @@
#define HISTOGRAM_BIN_READ_RETRY_COUNT 5
#define IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
+static void set_bin_index_0(struct intel_display *display, enum pipe pipe)
+{
+ if (DISPLAY_VER(display) >= 20)
+ intel_de_rmw(display, DPST_IE_INDEX(pipe),
+ DPST_IE_BIN_INDEX_MASK, DPST_IE_BIN_INDEX(0));
+ else
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_MASK,
+ DPST_CTL_BIN_REG_CLEAR);
+}
+
+static void write_iet(struct intel_display *display, enum pipe pipe,
+ u32 *data)
+{
+ int i;
+
+ for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
+ if (DISPLAY_VER(display) >= 20)
+ intel_de_rmw(display, DPST_IE_BIN(pipe),
+ DPST_IE_BIN_DATA_MASK,
+ DPST_IE_BIN_DATA(data[i]));
+ else
+ intel_de_rmw(display, DPST_BIN(pipe),
+ DPST_BIN_DATA_MASK,
+ DPST_BIN_DATA(data[i]));
+
+ drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n",
+ i, data[i]);
+ }
+}
+
static bool intel_histogram_get_data(struct intel_crtc *intel_crtc)
{
struct intel_display *display = to_intel_display(intel_crtc);
@@ -29,12 +60,27 @@ static bool intel_histogram_get_data(struct intel_crtc *intel_crtc)
int index;
u32 dpstbin;
+ if (DISPLAY_VER(display) >= 20)
+ intel_de_rmw(display, DPST_HIST_INDEX(intel_crtc->pipe),
+ DPST_HIST_BIN_INDEX_MASK,
+ DPST_HIST_BIN_INDEX(0));
+ else
+ intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_BIN_REG_MASK, 0);
+
for (index = 0; index < ARRAY_SIZE(histogram->bin_data); index++) {
- dpstbin = intel_de_read(display, DPST_BIN(intel_crtc->pipe));
+ dpstbin = intel_de_read(display, (DISPLAY_VER(display) >= 20 ?
+ DPST_HIST_BIN(intel_crtc->pipe) :
+ DPST_BIN(intel_crtc->pipe)));
if (!(dpstbin & DPST_BIN_BUSY)) {
- histogram->bin_data[index] = dpstbin & DPST_BIN_DATA_MASK;
- } else
+ histogram->bin_data[index] = dpstbin & (DISPLAY_VER(display) >= 20 ?
+ DPST_HIST_BIN_DATA_MASK :
+ DPST_BIN_DATA_MASK);
+ } else {
+ drm_err(display->drm, "Histogram bin busy, retyring\n");
+ fsleep(2);
return false;
+ }
}
return true;
}
@@ -62,8 +108,6 @@ static void intel_histogram_handle_int_work(struct work_struct *work)
* Set DPST_CTL Bin Reg function select to TC
* Set DPST_CTL Bin Register Index to 0
*/
- intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
- DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_BIN_REG_MASK, 0);
for (retry = 0; retry < HISTOGRAM_BIN_READ_RETRY_COUNT; retry++) {
if (intel_histogram_get_data(intel_crtc)) {
u32 *data;
@@ -156,17 +200,27 @@ static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8 mode)
if (histogram->enable)
return 0;
-
- /* enable histogram, clear DPST_CTL bin reg func select to TC */
- intel_de_rmw(display, DPST_CTL(pipe),
- DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
- DPST_CTL_HIST_MODE | DPST_CTL_IE_TABLE_VALUE_FORMAT |
- DPST_CTL_ENHANCEMENT_MODE_MASK | DPST_CTL_IE_MODI_TABLE_EN,
- ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
- DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN |
- DPST_CTL_HIST_MODE_HSV |
- DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
- DPST_CTL_EN_MULTIPLICATIVE | DPST_CTL_IE_MODI_TABLE_EN);
+ /* enable histogram, clear DPST_BIN reg and select TC function */
+ if (DISPLAY_VER(display) >= 20)
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE,
+ DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE_HSV);
+ else
+ /* enable histogram, clear DPST_CTL bin reg func select to TC */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE |
+ DPST_CTL_IE_TABLE_VALUE_FORMAT |
+ DPST_CTL_ENHANCEMENT_MODE_MASK |
+ DPST_CTL_IE_MODI_TABLE_EN,
+ ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
+ DPST_CTL_BIN_REG_FUNC_TC : 0) |
+ DPST_CTL_IE_HIST_EN |
+ DPST_CTL_HIST_MODE_HSV |
+ DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
+ DPST_CTL_EN_MULTIPLICATIVE | DPST_CTL_IE_MODI_TABLE_EN);
/* Re-Visit: check if wait for one vblank is required */
drm_crtc_wait_one_vblank(&intel_crtc->base);
@@ -244,7 +298,6 @@ int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
struct intel_histogram *histogram = intel_crtc->histogram;
struct intel_display *display = to_intel_display(intel_crtc);
int pipe = intel_crtc->pipe;
- int i = 0;
struct drm_iet_1dlut_sample *iet;
u32 *data;
int ret;
@@ -262,15 +315,15 @@ int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
return -EINVAL;
}
- /* Set DPST_CTL Bin Reg function select to IE & wait for a vblabk */
- intel_de_rmw(display, DPST_CTL(pipe),
- DPST_CTL_BIN_REG_FUNC_SEL, DPST_CTL_BIN_REG_FUNC_IE);
- drm_crtc_wait_one_vblank(&intel_crtc->base);
+ if (DISPLAY_VER(display) < 20) {
+ /* Set DPST_CTL Bin Reg function select to IE & wait for a vblabk */
+ intel_de_rmw(display, DPST_CTL(pipe),
+ DPST_CTL_BIN_REG_FUNC_SEL,
+ DPST_CTL_BIN_REG_FUNC_IE);
+ }
- /* Set DPST_CTL Bin Register Index to 0 */
- intel_de_rmw(display, DPST_CTL(pipe),
- DPST_CTL_BIN_REG_MASK, DPST_CTL_BIN_REG_CLEAR);
+ set_bin_index_0(display, pipe);
iet = (struct drm_iet_1dlut_sample *)blob->data;
data = kzalloc(sizeof(data) * iet->nr_elements, GFP_KERNEL);
@@ -281,11 +334,8 @@ int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
if (ret)
return ret;
- for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
- intel_de_rmw(display, DPST_BIN(pipe),
- DPST_BIN_DATA_MASK, data[i]);
- drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n", i, data[i]);
- }
+ write_iet(display, pipe, data);
+
kfree(data);
drm_property_blob_put(intel_crtc->base.state->iet_lut);
diff --git a/drivers/gpu/drm/i915/display/intel_histogram_regs.h b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
index 213c9f483567cb19a47b44953749f6baf0afe9e7..3fbb9c2deaae6278d5a832dfb61ef860de0c6f21 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
@@ -45,6 +45,31 @@
#define _DPST_BIN_B 0x491C4
#define DPST_BIN(pipe) _MMIO_PIPE(pipe, _DPST_BIN_A, _DPST_BIN_B)
#define DPST_BIN_DATA_MASK REG_GENMASK(23, 0)
+#define DPST_BIN_DATA(val) REG_FIELD_PREP(DPST_BIN_DATA_MASK, val)
#define DPST_BIN_BUSY REG_BIT(31)
+#define _DPST_HIST_INDEX_A 0x490D8
+#define _DPST_HIST_INDEX_B 0x491D8
+#define DPST_HIST_INDEX(pipe) _MMIO_PIPE(pipe, _DPST_HIST_INDEX_A, _DPST_HIST_INDEX_B)
+#define DPST_HIST_BIN_INDEX_MASK REG_GENMASK(4, 0)
+#define DPST_HIST_BIN_INDEX(val) REG_FIELD_PREP(DPST_HIST_BIN_INDEX_MASK, val)
+
+#define _DPST_HIST_BIN_A 0x490C4
+#define _DPST_HIST_BIN_B 0x491C4
+#define DPST_HIST_BIN(pipe) _MMIO_PIPE(pipe, _DPST_HIST_BIN_A, _DPST_HIST_BIN_B)
+#define DPST_HIST_BIN_BUSY REG_BIT(31)
+#define DPST_HIST_BIN_DATA_MASK REG_GENMASK(30, 0)
+
+#define _DPST_IE_BIN_A 0x490CC
+#define _DPST_IE_BIN_B 0x491CC
+#define DPST_IE_BIN(pipe) _MMIO_PIPE(pipe, _DPST_IE_BIN_A, _DPST_IE_BIN_B)
+#define DPST_IE_BIN_DATA_MASK REG_GENMASK(9, 0)
+#define DPST_IE_BIN_DATA(val) REG_FIELD_PREP(DPST_IE_BIN_DATA_MASK, val)
+
+#define _DPST_IE_INDEX_A 0x490DC
+#define _DPST_IE_INDEX_B 0x491DC
+#define DPST_IE_INDEX(pipe) _MMIO_PIPE(pipe, _DPST_IE_INDEX_A, _DPST_IE_INDEX_B)
+#define DPST_IE_BIN_INDEX_MASK REG_GENMASK(6, 0)
+#define DPST_IE_BIN_INDEX(val) REG_FIELD_PREP(DPST_IE_BIN_INDEX_MASK, val)
+
#endif /* __INTEL_HISTOGRAM_REGS_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (12 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
@ 2025-01-28 15:51 ` Arun R Murthy
2025-02-17 6:20 ` Kandpal, Suraj
2025-01-28 18:16 ` ✓ CI.Patch_applied: success for Display Global Histogram (rev9) Patchwork
` (7 subsequent siblings)
21 siblings, 1 reply; 63+ messages in thread
From: Arun R Murthy @ 2025-01-28 15:51 UTC (permalink / raw)
To: intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov, Arun R Murthy
Enable pipe dithering while enabling histogram to overcome some
atrifacts seen on the screen.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_histogram.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
index f6844449e4bb6167116d223af316e5f3a5e8707c..ead9c2391d460f459dfca8e99ea423a34418e67d 100644
--- a/drivers/gpu/drm/i915/display/intel_histogram.c
+++ b/drivers/gpu/drm/i915/display/intel_histogram.c
@@ -22,6 +22,13 @@
#define HISTOGRAM_BIN_READ_RETRY_COUNT 5
#define IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
+static void intel_histogram_enable_dithering(struct intel_display *display,
+ enum pipe pipe)
+{
+ intel_de_rmw(display, PIPE_MISC(pipe), PIPE_MISC_DITHER_ENABLE,
+ PIPE_MISC_DITHER_ENABLE);
+}
+
static void set_bin_index_0(struct intel_display *display, enum pipe pipe)
{
if (DISPLAY_VER(display) >= 20)
@@ -200,6 +207,10 @@ static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8 mode)
if (histogram->enable)
return 0;
+
+ /* Pipe Dithering should be enabled with histogram */
+ intel_histogram_enable_dithering(display, pipe);
+
/* enable histogram, clear DPST_BIN reg and select TC function */
if (DISPLAY_VER(display) >= 20)
intel_de_rmw(display, DPST_CTL(pipe),
--
2.25.1
^ permalink raw reply related [flat|nested] 63+ messages in thread
* ✓ CI.Patch_applied: success for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (13 preceding siblings ...)
2025-01-28 15:51 ` [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering Arun R Murthy
@ 2025-01-28 18:16 ` Patchwork
2025-01-28 18:16 ` ✗ CI.checkpatch: warning " Patchwork
` (6 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:16 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 20759526c04a drm-tip: 2025y-01m-28d-16h-51m-13s UTC integration manifest
=== git am output follows ===
Applying: drm: Define histogram structures exposed to user
Applying: drm: Define ImageEnhancemenT LUT structures exposed to user
Applying: drm/crtc: Expose API to create drm crtc property for histogram
Applying: drm/crtc: Expose API to create drm crtc property for IET LUT
Applying: drm/i915/histogram: Define registers for histogram
Applying: drm/i915/histogram: Add support for histogram
Applying: drm/xe: Add histogram support to Xe builds
Applying: drm/i915/histogram: histogram interrupt handling
Applying: drm/i915/histogram: Hook i915 histogram with drm histogram
Applying: drm/i915/iet: Add support to writing the IET LUT data
Applying: drm/i915/crtc: Hook i915 IET LUT with the drm IET properties
Applying: drm/i915/histogram: histogram delay counter doesnt reset
Applying: drm/i915/histogram: Histogram changes for Display 20+
Applying: drm/i915/histogram: Enable pipe dithering
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✗ CI.checkpatch: warning for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (14 preceding siblings ...)
2025-01-28 18:16 ` ✓ CI.Patch_applied: success for Display Global Histogram (rev9) Patchwork
@ 2025-01-28 18:16 ` Patchwork
2025-01-28 18:18 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:16 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 11c787d7b474a8eacd12a7ba52c78590fa77dae5
Author: Arun R Murthy <arun.r.murthy@intel.com>
Date: Tue Jan 28 21:21:20 2025 +0530
drm/i915/histogram: Enable pipe dithering
Enable pipe dithering while enabling histogram to overcome some
atrifacts seen on the screen.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
+ /mt/dim checkpatch 20759526c04a7f776f477bee66300dae33b51872 drm-intel
1e96d9ae129d drm: Define histogram structures exposed to user
c32855fe2924 drm: Define ImageEnhancemenT LUT structures exposed to user
620dabc74854 drm/crtc: Expose API to create drm crtc property for histogram
50570e8b7e7f drm/crtc: Expose API to create drm crtc property for IET LUT
a5a167aa1958 drm/i915/histogram: Define registers for histogram
-:15: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#15:
new file mode 100644
-:20: WARNING:SPDX_LICENSE_TAG: Improper SPDX comment style for 'drivers/gpu/drm/i915/display/intel_histogram_regs.h', please use '/*' instead
#20: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:1:
+// SPDX-License-Identifier: MIT
-:20: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1
#20: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:1:
+// SPDX-License-Identifier: MIT
-:39: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#39: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:20:
+#define DPST_CTL_EN_MULTIPLICATIVE REG_FIELD_PREP(DPST_CTL_ENHANCEMENT_MODE_MASK, 2)
-:46: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#46: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:27:
+#define DPST_CTL_IE_TABLE_VALUE_FORMAT_2INT_8FRAC REG_FIELD_PREP(DPST_CTL_IE_TABLE_VALUE_FORMAT, 1)
-:47: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#47: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:28:
+#define DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC REG_FIELD_PREP(DPST_CTL_IE_TABLE_VALUE_FORMAT, 0)
-:53: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#53: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:34:
+#define DPST_GUARD(pipe) _MMIO_PIPE(pipe, _DPST_GUARD_A, _DPST_GUARD_B)
-:57: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#57: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:38:
+#define DPST_GUARD_INTERRUPT_DELAY(val) REG_FIELD_PREP(DPST_GUARD_INTERRUPT_DELAY_MASK, val)
-:59: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#59: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:40:
+#define DPST_GUARD_THRESHOLD_GB(val) REG_FIELD_PREP(DPST_GUARD_THRESHOLD_GB_MASK, val)
total: 0 errors, 9 warnings, 0 checks, 48 lines checked
787b52847d5c drm/i915/histogram: Add support for histogram
-:46: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#46:
new file mode 100644
-:214: WARNING:SPDX_LICENSE_TAG: Improper SPDX comment style for 'drivers/gpu/drm/i915/display/intel_histogram.h', please use '/*' instead
#214: FILE: drivers/gpu/drm/i915/display/intel_histogram.h:1:
+// SPDX-License-Identifier: MIT
-:214: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1
#214: FILE: drivers/gpu/drm/i915/display/intel_histogram.h:1:
+// SPDX-License-Identifier: MIT
total: 0 errors, 3 warnings, 0 checks, 220 lines checked
a2678647014e drm/xe: Add histogram support to Xe builds
f772b6cae6ba drm/i915/histogram: histogram interrupt handling
-:6: WARNING:TYPO_SPELLING: 'trigerred' may be misspelled - perhaps 'triggered'?
#6:
Upon enabling histogram an interrupt is trigerred after the generation
^^^^^^^^^
-:70: WARNING:BRACES: braces {} are not necessary for any arm of this statement
#70: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:33:
+ if (!(dpstbin & DPST_BIN_BUSY)) {
[...]
+ } else
[...]
-:72: CHECK:BRACES: Unbalanced braces around else statement
#72: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:35:
+ } else
-:85: WARNING:STATIC_CONST_CHAR_ARRAY: char * array declaration might be better as static const
#85: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:48:
+ char *histogram_event[] = { event, pipe_id, NULL };
-:107: CHECK:ALLOC_SIZEOF_STRUCT: Prefer kzalloc(sizeof(*hist)...) over kzalloc(sizeof(struct drm_histogram)...)
#107: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:70:
+ hist = kzalloc(sizeof(struct drm_histogram), GFP_KERNEL);
-:113: WARNING:LONG_LINE_COMMENT: line length of 101 exceeds 100 columns
#113: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:76:
+ /* TODO: fill the drm_histogram_config data back this drm_histogram struct */
-:115: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#115: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:78:
+ drm_property_replace_global_blob(display->drm,
+ &intel_crtc->base.state->histogram_data,
total: 0 errors, 4 warnings, 3 checks, 197 lines checked
ec9533731c23 drm/i915/histogram: Hook i915 histogram with drm histogram
6e73b10d47d1 drm/i915/iet: Add support to writing the IET LUT data
-:46: WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements (8, 8)
#46: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:246:
+ if (!data) {
+ drm_err(display->drm, "enhancement LUT data is NULL");
-:62: WARNING:ALLOC_WITH_MULTIPLY: Prefer kcalloc over kzalloc with multiply
#62: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:262:
+ data = kzalloc(sizeof(data) * iet->nr_elements, GFP_KERNEL);
-:104: CHECK:SPACING: spaces preferred around that '*' (ctx:VxV)
#104: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:314:
+ iet_format = kzalloc(sizeof(u32)*iet_caps->nr_iet_sample_formats,
^
-:104: WARNING:ALLOC_WITH_MULTIPLY: Prefer kcalloc over kzalloc with multiply
#104: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:314:
+ iet_format = kzalloc(sizeof(u32)*iet_caps->nr_iet_sample_formats,
+ GFP_KERNEL);
total: 0 errors, 3 warnings, 1 checks, 117 lines checked
502c50b09d12 drm/i915/crtc: Hook i915 IET LUT with the drm IET properties
4600d99f4c78 drm/i915/histogram: histogram delay counter doesnt reset
-:4: WARNING:TYPO_SPELLING: 'doesnt' may be misspelled - perhaps 'doesn't'?
#4:
Subject: [PATCH] drm/i915/histogram: histogram delay counter doesnt reset
^^^^^^
-:43: WARNING:LONG_LINE_COMMENT: line length of 103 exceeds 100 columns
#43: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:103:
+ /* Write the value read from DPST_CTL to DPST_CTL.Interrupt Delay Counter(bit 23:16) */
-:62: WARNING:LONG_LINE: line length of 115 exceeds 100 columns
#62: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:20:
+#define DPST_CTL_GUARDBAND_INTERRUPT_DELAY(val) REG_FIELD_PREP(DPST_CTL_GUARDBAND_INTERRUPT_DELAY_CNT, val)
total: 0 errors, 3 warnings, 0 checks, 34 lines checked
6d9d1e13e60e drm/i915/histogram: Histogram changes for Display 20+
-:39: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#39: FILE: drivers/gpu/drm/i915/display/intel_histogram.c:37:
+static void write_iet(struct intel_display *display, enum pipe pipe,
+ u32 *data)
-:198: WARNING:LONG_LINE: line length of 112 exceeds 100 columns
#198: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:53:
+#define DPST_HIST_INDEX(pipe) _MMIO_PIPE(pipe, _DPST_HIST_INDEX_A, _DPST_HIST_INDEX_B)
-:200: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#200: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:55:
+#define DPST_HIST_BIN_INDEX(val) REG_FIELD_PREP(DPST_HIST_BIN_INDEX_MASK, val)
-:204: WARNING:LONG_LINE: line length of 108 exceeds 100 columns
#204: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:59:
+#define DPST_HIST_BIN(pipe) _MMIO_PIPE(pipe, _DPST_HIST_BIN_A, _DPST_HIST_BIN_B)
-:210: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#210: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:65:
+#define DPST_IE_BIN(pipe) _MMIO_PIPE(pipe, _DPST_IE_BIN_A, _DPST_IE_BIN_B)
-:216: WARNING:LONG_LINE: line length of 108 exceeds 100 columns
#216: FILE: drivers/gpu/drm/i915/display/intel_histogram_regs.h:71:
+#define DPST_IE_INDEX(pipe) _MMIO_PIPE(pipe, _DPST_IE_INDEX_A, _DPST_IE_INDEX_B)
total: 0 errors, 5 warnings, 1 checks, 186 lines checked
11c787d7b474 drm/i915/histogram: Enable pipe dithering
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✓ CI.KUnit: success for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (15 preceding siblings ...)
2025-01-28 18:16 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-01-28 18:18 ` Patchwork
2025-01-28 18:47 ` ✓ CI.Build: " Patchwork
` (4 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:18 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[18:16:58] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:17:02] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[18:17:45] Starting KUnit Kernel (1/1)...
[18:17:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:17:45] ================== guc_buf (11 subtests) ===================
[18:17:45] [PASSED] test_smallest
[18:17:45] [PASSED] test_largest
[18:17:45] [PASSED] test_granular
[18:17:45] [PASSED] test_unique
[18:17:45] [PASSED] test_overlap
[18:17:45] [PASSED] test_reusable
[18:17:45] [PASSED] test_too_big
[18:17:45] [PASSED] test_flush
[18:17:45] [PASSED] test_lookup
[18:17:45] [PASSED] test_data
[18:17:45] [PASSED] test_class
[18:17:45] ===================== [PASSED] guc_buf =====================
[18:17:45] =================== guc_dbm (7 subtests) ===================
[18:17:45] [PASSED] test_empty
[18:17:45] [PASSED] test_default
[18:17:45] ======================== test_size ========================
[18:17:45] [PASSED] 4
[18:17:45] [PASSED] 8
[18:17:45] [PASSED] 32
[18:17:45] [PASSED] 256
[18:17:45] ==================== [PASSED] test_size ====================
[18:17:45] ======================= test_reuse ========================
[18:17:45] [PASSED] 4
[18:17:45] [PASSED] 8
[18:17:45] [PASSED] 32
[18:17:45] [PASSED] 256
[18:17:45] =================== [PASSED] test_reuse ====================
[18:17:45] =================== test_range_overlap ====================
[18:17:45] [PASSED] 4
[18:17:45] [PASSED] 8
[18:17:45] [PASSED] 32
[18:17:45] [PASSED] 256
[18:17:45] =============== [PASSED] test_range_overlap ================
[18:17:45] =================== test_range_compact ====================
[18:17:45] [PASSED] 4
[18:17:45] [PASSED] 8
[18:17:45] [PASSED] 32
[18:17:45] [PASSED] 256
[18:17:45] =============== [PASSED] test_range_compact ================
[18:17:45] ==================== test_range_spare =====================
[18:17:45] [PASSED] 4
[18:17:45] [PASSED] 8
[18:17:45] [PASSED] 32
[18:17:45] [PASSED] 256
[18:17:45] ================ [PASSED] test_range_spare =================
[18:17:45] ===================== [PASSED] guc_dbm =====================
[18:17:45] =================== guc_idm (6 subtests) ===================
[18:17:45] [PASSED] bad_init
[18:17:45] [PASSED] no_init
[18:17:45] [PASSED] init_fini
[18:17:45] [PASSED] check_used
[18:17:45] [PASSED] check_quota
[18:17:45] [PASSED] check_all
[18:17:45] ===================== [PASSED] guc_idm =====================
[18:17:45] ================== no_relay (3 subtests) ===================
[18:17:45] [PASSED] xe_drops_guc2pf_if_not_ready
[18:17:45] [PASSED] xe_drops_guc2vf_if_not_ready
[18:17:45] [PASSED] xe_rejects_send_if_not_ready
[18:17:45] ==================== [PASSED] no_relay =====================
[18:17:45] ================== pf_relay (14 subtests) ==================
[18:17:45] [PASSED] pf_rejects_guc2pf_too_short
[18:17:45] [PASSED] pf_rejects_guc2pf_too_long
[18:17:45] [PASSED] pf_rejects_guc2pf_no_payload
[18:17:45] [PASSED] pf_fails_no_payload
[18:17:45] [PASSED] pf_fails_bad_origin
[18:17:45] [PASSED] pf_fails_bad_type
[18:17:45] [PASSED] pf_txn_reports_error
[18:17:45] [PASSED] pf_txn_sends_pf2guc
[18:17:45] [PASSED] pf_sends_pf2guc
[18:17:45] [SKIPPED] pf_loopback_nop
[18:17:45] [SKIPPED] pf_loopback_echo
[18:17:45] [SKIPPED] pf_loopback_fail
[18:17:45] [SKIPPED] pf_loopback_busy
[18:17:45] [SKIPPED] pf_loopback_retry
[18:17:45] ==================== [PASSED] pf_relay =====================
[18:17:45] ================== vf_relay (3 subtests) ===================
[18:17:45] [PASSED] vf_rejects_guc2vf_too_short
[18:17:45] [PASSED] vf_rejects_guc2vf_too_long
[18:17:45] [PASSED] vf_rejects_guc2vf_no_payload
[18:17:45] ==================== [PASSED] vf_relay =====================
[18:17:45] ================= pf_service (11 subtests) =================
[18:17:45] [PASSED] pf_negotiate_any
[18:17:45] [PASSED] pf_negotiate_base_match
[18:17:45] [PASSED] pf_negotiate_base_newer
[18:17:45] [PASSED] pf_negotiate_base_next
[18:17:45] [SKIPPED] pf_negotiate_base_older
[18:17:45] [PASSED] pf_negotiate_base_prev
[18:17:45] [PASSED] pf_negotiate_latest_match
[18:17:45] [PASSED] pf_negotiate_latest_newer
[18:17:45] [PASSED] pf_negotiate_latest_next
[18:17:45] [SKIPPED] pf_negotiate_latest_older
[18:17:45] [SKIPPED] pf_negotiate_latest_prev
[18:17:45] =================== [PASSED] pf_service ====================
[18:17:45] ===================== lmtt (1 subtest) =====================
[18:17:46] ======================== test_ops =========================
[18:17:46] [PASSED] 2-level
[18:17:46] [PASSED] multi-level
[18:17:46] ==================== [PASSED] test_ops =====================
[18:17:46] ====================== [PASSED] lmtt =======================
[18:17:46] =================== xe_mocs (2 subtests) ===================
[18:17:46] ================ xe_live_mocs_kernel_kunit ================
[18:17:46] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[18:17:46] ================ xe_live_mocs_reset_kunit =================
[18:17:46] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[18:17:46] ==================== [SKIPPED] xe_mocs =====================
[18:17:46] ================= xe_migrate (2 subtests) ==================
[18:17:46] ================= xe_migrate_sanity_kunit =================
[18:17:46] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[18:17:46] ================== xe_validate_ccs_kunit ==================
[18:17:46] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[18:17:46] =================== [SKIPPED] xe_migrate ===================
[18:17:46] ================== xe_dma_buf (1 subtest) ==================
[18:17:46] ==================== xe_dma_buf_kunit =====================
[18:17:46] ================ [SKIPPED] xe_dma_buf_kunit ================
[18:17:46] =================== [SKIPPED] xe_dma_buf ===================
[18:17:46] ================= xe_bo_shrink (1 subtest) =================
[18:17:46] =================== xe_bo_shrink_kunit ====================
[18:17:46] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[18:17:46] ================== [SKIPPED] xe_bo_shrink ==================
[18:17:46] ==================== xe_bo (2 subtests) ====================
[18:17:46] ================== xe_ccs_migrate_kunit ===================
[18:17:46] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
stty: 'standard input': Inappropriate ioctl for device
[18:17:46] ==================== xe_bo_evict_kunit ====================
[18:17:46] =============== [SKIPPED] xe_bo_evict_kunit ================
[18:17:46] ===================== [SKIPPED] xe_bo ======================
[18:17:46] ==================== args (11 subtests) ====================
[18:17:46] [PASSED] count_args_test
[18:17:46] [PASSED] call_args_example
[18:17:46] [PASSED] call_args_test
[18:17:46] [PASSED] drop_first_arg_example
[18:17:46] [PASSED] drop_first_arg_test
[18:17:46] [PASSED] first_arg_example
[18:17:46] [PASSED] first_arg_test
[18:17:46] [PASSED] last_arg_example
[18:17:46] [PASSED] last_arg_test
[18:17:46] [PASSED] pick_arg_example
[18:17:46] [PASSED] sep_comma_example
[18:17:46] ====================== [PASSED] args =======================
[18:17:46] =================== xe_pci (2 subtests) ====================
[18:17:46] [PASSED] xe_gmdid_graphics_ip
[18:17:46] [PASSED] xe_gmdid_media_ip
[18:17:46] ===================== [PASSED] xe_pci ======================
[18:17:46] =================== xe_rtp (2 subtests) ====================
[18:17:46] =============== xe_rtp_process_to_sr_tests ================
[18:17:46] [PASSED] coalesce-same-reg
[18:17:46] [PASSED] no-match-no-add
[18:17:46] [PASSED] match-or
[18:17:46] [PASSED] match-or-xfail
[18:17:46] [PASSED] no-match-no-add-multiple-rules
[18:17:46] [PASSED] two-regs-two-entries
[18:17:46] [PASSED] clr-one-set-other
[18:17:46] [PASSED] set-field
[18:17:46] [PASSED] conflict-duplicate
[18:17:46] [PASSED] conflict-not-disjoint
[18:17:46] [PASSED] conflict-reg-type
[18:17:46] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[18:17:46] ================== xe_rtp_process_tests ===================
[18:17:46] [PASSED] active1
[18:17:46] [PASSED] active2
[18:17:46] [PASSED] active-inactive
[18:17:46] [PASSED] inactive-active
[18:17:46] [PASSED] inactive-1st_or_active-inactive
[18:17:46] [PASSED] inactive-2nd_or_active-inactive
[18:17:46] [PASSED] inactive-last_or_active-inactive
[18:17:46] [PASSED] inactive-no_or_active-inactive
[18:17:46] ============== [PASSED] xe_rtp_process_tests ===============
[18:17:46] ===================== [PASSED] xe_rtp ======================
[18:17:46] ==================== xe_wa (1 subtest) =====================
[18:17:46] ======================== xe_wa_gt =========================
[18:17:46] [PASSED] TIGERLAKE (B0)
[18:17:46] [PASSED] DG1 (A0)
[18:17:46] [PASSED] DG1 (B0)
[18:17:46] [PASSED] ALDERLAKE_S (A0)
[18:17:46] [PASSED] ALDERLAKE_S (B0)
[18:17:46] [PASSED] ALDERLAKE_S (C0)
[18:17:46] [PASSED] ALDERLAKE_S (D0)
[18:17:46] [PASSED] ALDERLAKE_P (A0)
[18:17:46] [PASSED] ALDERLAKE_P (B0)
[18:17:46] [PASSED] ALDERLAKE_P (C0)
[18:17:46] [PASSED] ALDERLAKE_S_RPLS (D0)
[18:17:46] [PASSED] ALDERLAKE_P_RPLU (E0)
[18:17:46] [PASSED] DG2_G10 (C0)
[18:17:46] [PASSED] DG2_G11 (B1)
[18:17:46] [PASSED] DG2_G12 (A1)
[18:17:46] [PASSED] METEORLAKE (g:A0, m:A0)
[18:17:46] [PASSED] METEORLAKE (g:A0, m:A0)
[18:17:46] [PASSED] METEORLAKE (g:A0, m:A0)
[18:17:46] [PASSED] LUNARLAKE (g:A0, m:A0)
[18:17:46] [PASSED] LUNARLAKE (g:B0, m:A0)
[18:17:46] [PASSED] BATTLEMAGE (g:A0, m:A1)
[18:17:46] ==================== [PASSED] xe_wa_gt =====================
[18:17:46] ====================== [PASSED] xe_wa ======================
[18:17:46] ============================================================
[18:17:46] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[18:17:46] Elapsed time: 47.477s total, 4.210s configuring, 42.896s building, 0.339s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[18:17:46] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:17:48] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[18:18:30] Starting KUnit Kernel (1/1)...
[18:18:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:18:30] =========== drm_validate_clone_mode (2 subtests) ===========
[18:18:30] ============== drm_test_check_in_clone_mode ===============
[18:18:30] [PASSED] in_clone_mode
[18:18:30] [PASSED] not_in_clone_mode
[18:18:30] ========== [PASSED] drm_test_check_in_clone_mode ===========
[18:18:30] =============== drm_test_check_valid_clones ===============
[18:18:30] [PASSED] not_in_clone_mode
[18:18:30] [PASSED] valid_clone
[18:18:30] [PASSED] invalid_clone
[18:18:30] =========== [PASSED] drm_test_check_valid_clones ===========
[18:18:30] ============= [PASSED] drm_validate_clone_mode =============
[18:18:30] ============= drm_validate_modeset (1 subtest) =============
[18:18:30] [PASSED] drm_test_check_connector_changed_modeset
[18:18:30] ============== [PASSED] drm_validate_modeset ===============
[18:18:30] ================== drm_buddy (7 subtests) ==================
[18:18:30] [PASSED] drm_test_buddy_alloc_limit
[18:18:30] [PASSED] drm_test_buddy_alloc_optimistic
[18:18:30] [PASSED] drm_test_buddy_alloc_pessimistic
[18:18:30] [PASSED] drm_test_buddy_alloc_pathological
[18:18:30] [PASSED] drm_test_buddy_alloc_contiguous
[18:18:30] [PASSED] drm_test_buddy_alloc_clear
[18:18:30] [PASSED] drm_test_buddy_alloc_range_bias
[18:18:30] ==================== [PASSED] drm_buddy ====================
[18:18:30] ============= drm_cmdline_parser (40 subtests) =============
[18:18:30] [PASSED] drm_test_cmdline_force_d_only
[18:18:30] [PASSED] drm_test_cmdline_force_D_only_dvi
[18:18:30] [PASSED] drm_test_cmdline_force_D_only_hdmi
[18:18:30] [PASSED] drm_test_cmdline_force_D_only_not_digital
[18:18:30] [PASSED] drm_test_cmdline_force_e_only
[18:18:30] [PASSED] drm_test_cmdline_res
[18:18:30] [PASSED] drm_test_cmdline_res_vesa
[18:18:30] [PASSED] drm_test_cmdline_res_vesa_rblank
[18:18:30] [PASSED] drm_test_cmdline_res_rblank
[18:18:30] [PASSED] drm_test_cmdline_res_bpp
[18:18:30] [PASSED] drm_test_cmdline_res_refresh
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[18:18:30] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[18:18:30] [PASSED] drm_test_cmdline_res_margins_force_on
[18:18:30] [PASSED] drm_test_cmdline_res_vesa_margins
[18:18:30] [PASSED] drm_test_cmdline_name
[18:18:30] [PASSED] drm_test_cmdline_name_bpp
[18:18:30] [PASSED] drm_test_cmdline_name_option
[18:18:30] [PASSED] drm_test_cmdline_name_bpp_option
[18:18:30] [PASSED] drm_test_cmdline_rotate_0
[18:18:30] [PASSED] drm_test_cmdline_rotate_90
[18:18:30] [PASSED] drm_test_cmdline_rotate_180
[18:18:30] [PASSED] drm_test_cmdline_rotate_270
[18:18:30] [PASSED] drm_test_cmdline_hmirror
[18:18:30] [PASSED] drm_test_cmdline_vmirror
[18:18:30] [PASSED] drm_test_cmdline_margin_options
[18:18:30] [PASSED] drm_test_cmdline_multiple_options
[18:18:30] [PASSED] drm_test_cmdline_bpp_extra_and_option
[18:18:30] [PASSED] drm_test_cmdline_extra_and_option
[18:18:30] [PASSED] drm_test_cmdline_freestanding_options
[18:18:30] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[18:18:30] [PASSED] drm_test_cmdline_panel_orientation
[18:18:30] ================ drm_test_cmdline_invalid =================
[18:18:30] [PASSED] margin_only
[18:18:30] [PASSED] interlace_only
[18:18:30] [PASSED] res_missing_x
[18:18:30] [PASSED] res_missing_y
[18:18:30] [PASSED] res_bad_y
[18:18:30] [PASSED] res_missing_y_bpp
[18:18:30] [PASSED] res_bad_bpp
[18:18:30] [PASSED] res_bad_refresh
[18:18:30] [PASSED] res_bpp_refresh_force_on_off
[18:18:30] [PASSED] res_invalid_mode
[18:18:30] [PASSED] res_bpp_wrong_place_mode
[18:18:30] [PASSED] name_bpp_refresh
[18:18:30] [PASSED] name_refresh
[18:18:30] [PASSED] name_refresh_wrong_mode
[18:18:30] [PASSED] name_refresh_invalid_mode
[18:18:30] [PASSED] rotate_multiple
[18:18:30] [PASSED] rotate_invalid_val
[18:18:30] [PASSED] rotate_truncated
[18:18:30] [PASSED] invalid_option
[18:18:30] [PASSED] invalid_tv_option
[18:18:30] [PASSED] truncated_tv_option
[18:18:30] ============ [PASSED] drm_test_cmdline_invalid =============
[18:18:30] =============== drm_test_cmdline_tv_options ===============
[18:18:30] [PASSED] NTSC
[18:18:30] [PASSED] NTSC_443
[18:18:30] [PASSED] NTSC_J
[18:18:30] [PASSED] PAL
[18:18:30] [PASSED] PAL_M
[18:18:30] [PASSED] PAL_N
[18:18:30] [PASSED] SECAM
[18:18:30] [PASSED] MONO_525
[18:18:30] [PASSED] MONO_625
[18:18:30] =========== [PASSED] drm_test_cmdline_tv_options ===========
[18:18:30] =============== [PASSED] drm_cmdline_parser ================
[18:18:30] ========== drmm_connector_hdmi_init (20 subtests) ==========
[18:18:30] [PASSED] drm_test_connector_hdmi_init_valid
[18:18:30] [PASSED] drm_test_connector_hdmi_init_bpc_8
[18:18:30] [PASSED] drm_test_connector_hdmi_init_bpc_10
[18:18:30] [PASSED] drm_test_connector_hdmi_init_bpc_12
[18:18:30] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[18:18:30] [PASSED] drm_test_connector_hdmi_init_bpc_null
[18:18:30] [PASSED] drm_test_connector_hdmi_init_formats_empty
[18:18:30] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[18:18:30] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[18:18:30] [PASSED] supported_formats=0x9 yuv420_allowed=1
[18:18:30] [PASSED] supported_formats=0x9 yuv420_allowed=0
[18:18:30] [PASSED] supported_formats=0x3 yuv420_allowed=1
[18:18:30] [PASSED] supported_formats=0x3 yuv420_allowed=0
[18:18:30] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[18:18:30] [PASSED] drm_test_connector_hdmi_init_null_ddc
[18:18:30] [PASSED] drm_test_connector_hdmi_init_null_product
[18:18:30] [PASSED] drm_test_connector_hdmi_init_null_vendor
[18:18:30] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[18:18:30] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[18:18:30] [PASSED] drm_test_connector_hdmi_init_product_valid
[18:18:30] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[18:18:30] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[18:18:30] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[18:18:30] ========= drm_test_connector_hdmi_init_type_valid =========
[18:18:30] [PASSED] HDMI-A
[18:18:30] [PASSED] HDMI-B
[18:18:30] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[18:18:30] ======== drm_test_connector_hdmi_init_type_invalid ========
[18:18:30] [PASSED] Unknown
[18:18:30] [PASSED] VGA
[18:18:30] [PASSED] DVI-I
[18:18:30] [PASSED] DVI-D
[18:18:30] [PASSED] DVI-A
[18:18:30] [PASSED] Composite
[18:18:30] [PASSED] SVIDEO
[18:18:30] [PASSED] LVDS
[18:18:30] [PASSED] Component
[18:18:30] [PASSED] DIN
[18:18:30] [PASSED] DP
[18:18:30] [PASSED] TV
[18:18:30] [PASSED] eDP
[18:18:30] [PASSED] Virtual
[18:18:30] [PASSED] DSI
[18:18:30] [PASSED] DPI
[18:18:30] [PASSED] Writeback
[18:18:30] [PASSED] SPI
[18:18:30] [PASSED] USB
[18:18:30] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[18:18:30] ============ [PASSED] drmm_connector_hdmi_init =============
[18:18:30] ============= drmm_connector_init (3 subtests) =============
[18:18:30] [PASSED] drm_test_drmm_connector_init
[18:18:30] [PASSED] drm_test_drmm_connector_init_null_ddc
[18:18:30] ========= drm_test_drmm_connector_init_type_valid =========
[18:18:30] [PASSED] Unknown
[18:18:30] [PASSED] VGA
[18:18:30] [PASSED] DVI-I
[18:18:30] [PASSED] DVI-D
[18:18:30] [PASSED] DVI-A
[18:18:30] [PASSED] Composite
[18:18:30] [PASSED] SVIDEO
[18:18:30] [PASSED] LVDS
[18:18:30] [PASSED] Component
[18:18:30] [PASSED] DIN
[18:18:30] [PASSED] DP
[18:18:30] [PASSED] HDMI-A
[18:18:30] [PASSED] HDMI-B
[18:18:30] [PASSED] TV
[18:18:30] [PASSED] eDP
[18:18:30] [PASSED] Virtual
[18:18:30] [PASSED] DSI
[18:18:30] [PASSED] DPI
[18:18:30] [PASSED] Writeback
[18:18:30] [PASSED] SPI
[18:18:30] [PASSED] USB
[18:18:30] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[18:18:30] =============== [PASSED] drmm_connector_init ===============
[18:18:30] ========= drm_connector_dynamic_init (6 subtests) ==========
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_init
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_init_properties
[18:18:30] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[18:18:30] [PASSED] Unknown
[18:18:30] [PASSED] VGA
[18:18:30] [PASSED] DVI-I
[18:18:30] [PASSED] DVI-D
[18:18:30] [PASSED] DVI-A
[18:18:30] [PASSED] Composite
[18:18:30] [PASSED] SVIDEO
[18:18:30] [PASSED] LVDS
[18:18:30] [PASSED] Component
[18:18:30] [PASSED] DIN
[18:18:30] [PASSED] DP
[18:18:30] [PASSED] HDMI-A
[18:18:30] [PASSED] HDMI-B
[18:18:30] [PASSED] TV
[18:18:30] [PASSED] eDP
[18:18:30] [PASSED] Virtual
[18:18:30] [PASSED] DSI
[18:18:30] [PASSED] DPI
[18:18:30] [PASSED] Writeback
[18:18:30] [PASSED] SPI
[18:18:30] [PASSED] USB
[18:18:30] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[18:18:30] ======== drm_test_drm_connector_dynamic_init_name =========
[18:18:30] [PASSED] Unknown
[18:18:30] [PASSED] VGA
[18:18:30] [PASSED] DVI-I
[18:18:30] [PASSED] DVI-D
[18:18:30] [PASSED] DVI-A
[18:18:30] [PASSED] Composite
[18:18:30] [PASSED] SVIDEO
[18:18:30] [PASSED] LVDS
[18:18:30] [PASSED] Component
[18:18:30] [PASSED] DIN
[18:18:30] [PASSED] DP
[18:18:30] [PASSED] HDMI-A
[18:18:30] [PASSED] HDMI-B
[18:18:30] [PASSED] TV
[18:18:30] [PASSED] eDP
[18:18:30] [PASSED] Virtual
[18:18:30] [PASSED] DSI
[18:18:30] [PASSED] DPI
[18:18:30] [PASSED] Writeback
[18:18:30] [PASSED] SPI
[18:18:30] [PASSED] USB
[18:18:30] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[18:18:30] =========== [PASSED] drm_connector_dynamic_init ============
[18:18:30] ==== drm_connector_dynamic_register_early (4 subtests) =====
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[18:18:30] ====== [PASSED] drm_connector_dynamic_register_early =======
[18:18:30] ======= drm_connector_dynamic_register (7 subtests) ========
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[18:18:30] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[18:18:30] ========= [PASSED] drm_connector_dynamic_register ==========
[18:18:30] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[18:18:30] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[18:18:30] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[18:18:30] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[18:18:30] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[18:18:30] ========== drm_test_get_tv_mode_from_name_valid ===========
[18:18:30] [PASSED] NTSC
[18:18:30] [PASSED] NTSC-443
[18:18:30] [PASSED] NTSC-J
[18:18:30] [PASSED] PAL
[18:18:30] [PASSED] PAL-M
[18:18:30] [PASSED] PAL-N
[18:18:30] [PASSED] SECAM
[18:18:30] [PASSED] Mono
[18:18:30] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[18:18:30] [PASSED] drm_test_get_tv_mode_from_name_truncated
[18:18:30] ============ [PASSED] drm_get_tv_mode_from_name ============
[18:18:30] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[18:18:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[18:18:30] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[18:18:30] [PASSED] VIC 96
[18:18:30] [PASSED] VIC 97
[18:18:30] [PASSED] VIC 101
[18:18:30] [PASSED] VIC 102
[18:18:30] [PASSED] VIC 106
[18:18:30] [PASSED] VIC 107
[18:18:30] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[18:18:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[18:18:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[18:18:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[18:18:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[18:18:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[18:18:30] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[18:18:30] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[18:18:30] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[18:18:30] [PASSED] Automatic
[18:18:30] [PASSED] Full
[18:18:30] [PASSED] Limited 16:235
[18:18:30] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[18:18:30] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[18:18:30] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[18:18:30] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[18:18:30] === drm_test_drm_hdmi_connector_get_output_format_name ====
[18:18:30] [PASSED] RGB
[18:18:30] [PASSED] YUV 4:2:0
[18:18:30] [PASSED] YUV 4:2:2
[18:18:30] [PASSED] YUV 4:4:4
[18:18:30] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[18:18:30] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[18:18:30] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[18:18:30] ============= drm_damage_helper (21 subtests) ==============
[18:18:30] [PASSED] drm_test_damage_iter_no_damage
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_src_moved
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_not_visible
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[18:18:30] [PASSED] drm_test_damage_iter_no_damage_no_fb
[18:18:30] [PASSED] drm_test_damage_iter_simple_damage
[18:18:30] [PASSED] drm_test_damage_iter_single_damage
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_outside_src
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_src_moved
[18:18:30] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[18:18:30] [PASSED] drm_test_damage_iter_damage
[18:18:30] [PASSED] drm_test_damage_iter_damage_one_intersect
[18:18:30] [PASSED] drm_test_damage_iter_damage_one_outside
[18:18:30] [PASSED] drm_test_damage_iter_damage_src_moved
[18:18:30] [PASSED] drm_test_damage_iter_damage_not_visible
[18:18:30] ================ [PASSED] drm_damage_helper ================
[18:18:30] ============== drm_dp_mst_helper (3 subtests) ==============
[18:18:30] ============== drm_test_dp_mst_calc_pbn_mode ==============
[18:18:30] [PASSED] Clock 154000 BPP 30 DSC disabled
[18:18:30] [PASSED] Clock 234000 BPP 30 DSC disabled
[18:18:30] [PASSED] Clock 297000 BPP 24 DSC disabled
[18:18:30] [PASSED] Clock 332880 BPP 24 DSC enabled
[18:18:30] [PASSED] Clock 324540 BPP 24 DSC enabled
[18:18:30] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[18:18:30] ============== drm_test_dp_mst_calc_pbn_div ===============
[18:18:30] [PASSED] Link rate 2000000 lane count 4
[18:18:30] [PASSED] Link rate 2000000 lane count 2
[18:18:30] [PASSED] Link rate 2000000 lane count 1
[18:18:30] [PASSED] Link rate 1350000 lane count 4
[18:18:30] [PASSED] Link rate 1350000 lane count 2
[18:18:30] [PASSED] Link rate 1350000 lane count 1
[18:18:30] [PASSED] Link rate 1000000 lane count 4
[18:18:30] [PASSED] Link rate 1000000 lane count 2
[18:18:30] [PASSED] Link rate 1000000 lane count 1
[18:18:30] [PASSED] Link rate 810000 lane count 4
[18:18:30] [PASSED] Link rate 810000 lane count 2
[18:18:30] [PASSED] Link rate 810000 lane count 1
[18:18:30] [PASSED] Link rate 540000 lane count 4
[18:18:30] [PASSED] Link rate 540000 lane count 2
[18:18:30] [PASSED] Link rate 540000 lane count 1
[18:18:30] [PASSED] Link rate 270000 lane count 4
[18:18:30] [PASSED] Link rate 270000 lane count 2
[18:18:30] [PASSED] Link rate 270000 lane count 1
[18:18:30] [PASSED] Link rate 162000 lane count 4
[18:18:30] [PASSED] Link rate 162000 lane count 2
[18:18:30] [PASSED] Link rate 162000 lane count 1
[18:18:30] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[18:18:30] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[18:18:30] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[18:18:30] [PASSED] DP_POWER_UP_PHY with port number
[18:18:30] [PASSED] DP_POWER_DOWN_PHY with port number
[18:18:30] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[18:18:30] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[18:18:30] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[18:18:30] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[18:18:30] [PASSED] DP_QUERY_PAYLOAD with port number
[18:18:30] [PASSED] DP_QUERY_PAYLOAD with VCPI
[18:18:30] [PASSED] DP_REMOTE_DPCD_READ with port number
[18:18:30] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[18:18:30] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[18:18:30] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[18:18:30] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[18:18:30] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[18:18:30] [PASSED] DP_REMOTE_I2C_READ with port number
[18:18:30] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[18:18:30] [PASSED] DP_REMOTE_I2C_READ with transactions array
[18:18:30] [PASSED] DP_REMOTE_I2C_WRITE with port number
[18:18:30] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[18:18:30] [PASSED] DP_REMOTE_I2C_WRITE with data array
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[18:18:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[18:18:30] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[18:18:30] ================ [PASSED] drm_dp_mst_helper ================
[18:18:30] ================== drm_exec (7 subtests) ===================
[18:18:30] [PASSED] sanitycheck
[18:18:30] [PASSED] test_lock
[18:18:30] [PASSED] test_lock_unlock
[18:18:30] [PASSED] test_duplicates
[18:18:30] [PASSED] test_prepare
[18:18:30] [PASSED] test_prepare_array
[18:18:30] [PASSED] test_multiple_loops
[18:18:30] ==================== [PASSED] drm_exec =====================
[18:18:30] =========== drm_format_helper_test (17 subtests) ===========
[18:18:30] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[18:18:30] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[18:18:30] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[18:18:30] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[18:18:30] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[18:18:30] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[18:18:30] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[18:18:30] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[18:18:30] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[18:18:30] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[18:18:30] ============== drm_test_fb_xrgb8888_to_mono ===============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[18:18:30] ==================== drm_test_fb_swab =====================
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ================ [PASSED] drm_test_fb_swab =================
[18:18:30] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[18:18:30] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[18:18:30] [PASSED] single_pixel_source_buffer
[18:18:30] [PASSED] single_pixel_clip_rectangle
[18:18:30] [PASSED] well_known_colors
[18:18:30] [PASSED] destination_pitch
[18:18:30] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[18:18:30] ================= drm_test_fb_clip_offset =================
[18:18:30] [PASSED] pass through
[18:18:30] [PASSED] horizontal offset
[18:18:30] [PASSED] vertical offset
[18:18:30] [PASSED] horizontal and vertical offset
[18:18:30] [PASSED] horizontal offset (custom pitch)
[18:18:30] [PASSED] vertical offset (custom pitch)
[18:18:30] [PASSED] horizontal and vertical offset (custom pitch)
[18:18:30] ============= [PASSED] drm_test_fb_clip_offset =============
[18:18:30] ============== drm_test_fb_build_fourcc_list ==============
[18:18:30] [PASSED] no native formats
[18:18:30] [PASSED] XRGB8888 as native format
[18:18:30] [PASSED] remove duplicates
[18:18:30] [PASSED] convert alpha formats
[18:18:30] [PASSED] random formats
[18:18:30] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[18:18:30] =================== drm_test_fb_memcpy ====================
[18:18:30] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[18:18:30] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[18:18:30] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[18:18:30] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[18:18:30] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[18:18:30] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[18:18:30] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[18:18:30] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[18:18:30] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[18:18:30] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[18:18:30] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[18:18:30] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[18:18:30] =============== [PASSED] drm_test_fb_memcpy ================
[18:18:30] ============= [PASSED] drm_format_helper_test ==============
[18:18:30] ================= drm_format (18 subtests) =================
[18:18:30] [PASSED] drm_test_format_block_width_invalid
[18:18:30] [PASSED] drm_test_format_block_width_one_plane
[18:18:30] [PASSED] drm_test_format_block_width_two_plane
[18:18:30] [PASSED] drm_test_format_block_width_three_plane
[18:18:30] [PASSED] drm_test_format_block_width_tiled
[18:18:30] [PASSED] drm_test_format_block_height_invalid
[18:18:30] [PASSED] drm_test_format_block_height_one_plane
[18:18:30] [PASSED] drm_test_format_block_height_two_plane
[18:18:30] [PASSED] drm_test_format_block_height_three_plane
[18:18:30] [PASSED] drm_test_format_block_height_tiled
[18:18:30] [PASSED] drm_test_format_min_pitch_invalid
[18:18:30] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[18:18:30] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[18:18:30] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[18:18:30] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[18:18:30] [PASSED] drm_test_format_min_pitch_two_plane
[18:18:30] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[18:18:30] [PASSED] drm_test_format_min_pitch_tiled
[18:18:30] =================== [PASSED] drm_format ====================
[18:18:30] ============== drm_framebuffer (10 subtests) ===============
[18:18:30] ========== drm_test_framebuffer_check_src_coords ==========
[18:18:30] [PASSED] Success: source fits into fb
[18:18:30] [PASSED] Fail: overflowing fb with x-axis coordinate
[18:18:30] [PASSED] Fail: overflowing fb with y-axis coordinate
[18:18:30] [PASSED] Fail: overflowing fb with source width
[18:18:30] [PASSED] Fail: overflowing fb with source height
[18:18:30] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[18:18:30] [PASSED] drm_test_framebuffer_cleanup
[18:18:30] =============== drm_test_framebuffer_create ===============
[18:18:30] [PASSED] ABGR8888 normal sizes
[18:18:30] [PASSED] ABGR8888 max sizes
[18:18:30] [PASSED] ABGR8888 pitch greater than min required
[18:18:30] [PASSED] ABGR8888 pitch less than min required
[18:18:30] [PASSED] ABGR8888 Invalid width
[18:18:30] [PASSED] ABGR8888 Invalid buffer handle
[18:18:30] [PASSED] No pixel format
[18:18:30] [PASSED] ABGR8888 Width 0
[18:18:30] [PASSED] ABGR8888 Height 0
[18:18:30] [PASSED] ABGR8888 Out of bound height * pitch combination
[18:18:30] [PASSED] ABGR8888 Large buffer offset
[18:18:30] [PASSED] ABGR8888 Buffer offset for inexistent plane
[18:18:30] [PASSED] ABGR8888 Invalid flag
[18:18:30] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[18:18:30] [PASSED] ABGR8888 Valid buffer modifier
[18:18:30] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[18:18:30] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] NV12 Normal sizes
[18:18:30] [PASSED] NV12 Max sizes
[18:18:30] [PASSED] NV12 Invalid pitch
[18:18:30] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[18:18:30] [PASSED] NV12 different modifier per-plane
[18:18:30] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[18:18:30] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] NV12 Modifier for inexistent plane
[18:18:30] [PASSED] NV12 Handle for inexistent plane
[18:18:30] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[18:18:30] [PASSED] YVU420 Normal sizes
[18:18:30] [PASSED] YVU420 Max sizes
[18:18:30] [PASSED] YVU420 Invalid pitch
[18:18:30] [PASSED] YVU420 Different pitches
[18:18:30] [PASSED] YVU420 Different buffer offsets/pitches
[18:18:30] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[18:18:30] [PASSED] YVU420 Valid modifier
[18:18:30] [PASSED] YVU420 Different modifiers per plane
[18:18:30] [PASSED] YVU420 Modifier for inexistent plane
[18:18:30] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[18:18:30] [PASSED] X0L2 Normal sizes
[18:18:30] [PASSED] X0L2 Max sizes
[18:18:30] [PASSED] X0L2 Invalid pitch
[18:18:30] [PASSED] X0L2 Pitch greater than minimum required
[18:18:30] [PASSED] X0L2 Handle for inexistent plane
[18:18:30] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[18:18:30] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[18:18:30] [PASSED] X0L2 Valid modifier
[18:18:30] [PASSED] X0L2 Modifier for inexistent plane
[18:18:30] =========== [PASSED] drm_test_framebuffer_create ===========
[18:18:30] [PASSED] drm_test_framebuffer_free
[18:18:30] [PASSED] drm_test_framebuffer_init
[18:18:30] [PASSED] drm_test_framebuffer_init_bad_format
[18:18:30] [PASSED] drm_test_framebuffer_init_dev_mismatch
[18:18:30] [PASSED] drm_test_framebuffer_lookup
[18:18:30] [PASSED] drm_test_framebuffer_lookup_inexistent
[18:18:30] [PASSED] drm_test_framebuffer_modifiers_not_supported
[18:18:30] ================= [PASSED] drm_framebuffer =================
[18:18:30] ================ drm_gem_shmem (8 subtests) ================
[18:18:30] [PASSED] drm_gem_shmem_test_obj_create
[18:18:30] [PASSED] drm_gem_shmem_test_obj_create_private
[18:18:30] [PASSED] drm_gem_shmem_test_pin_pages
[18:18:30] [PASSED] drm_gem_shmem_test_vmap
[18:18:30] [PASSED] drm_gem_shmem_test_get_pages_sgt
[18:18:30] [PASSED] drm_gem_shmem_test_get_sg_table
[18:18:30] [PASSED] drm_gem_shmem_test_madvise
[18:18:30] [PASSED] drm_gem_shmem_test_purge
[18:18:30] ================== [PASSED] drm_gem_shmem ==================
[18:18:30] === drm_atomic_helper_connector_hdmi_check (23 subtests) ===
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[18:18:30] [PASSED] drm_test_check_disable_connector
[18:18:30] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[18:18:30] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[18:18:30] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[18:18:30] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[18:18:30] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[18:18:30] [PASSED] drm_test_check_output_bpc_dvi
[18:18:30] [PASSED] drm_test_check_output_bpc_format_vic_1
[18:18:30] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[18:18:30] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[18:18:30] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[18:18:30] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[18:18:30] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[18:18:30] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[18:18:30] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[18:18:30] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[18:18:30] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[18:18:30] [PASSED] drm_test_check_broadcast_rgb_value
[18:18:30] [PASSED] drm_test_check_bpc_8_value
[18:18:30] [PASSED] drm_test_check_bpc_10_value
[18:18:30] [PASSED] drm_test_check_bpc_12_value
[18:18:30] [PASSED] drm_test_check_format_value
[18:18:30] [PASSED] drm_test_check_tmds_char_value
[18:18:30] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[18:18:30] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[18:18:30] [PASSED] drm_test_check_mode_valid
[18:18:30] [PASSED] drm_test_check_mode_valid_reject
[18:18:30] [PASSED] drm_test_check_mode_valid_reject_rate
[18:18:30] [PASSED] drm_test_check_mode_valid_reject_max_clock
[18:18:30] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[18:18:30] ================= drm_managed (2 subtests) =================
[18:18:30] [PASSED] drm_test_managed_release_action
[18:18:30] [PASSED] drm_test_managed_run_action
[18:18:30] =================== [PASSED] drm_managed ===================
[18:18:30] =================== drm_mm (6 subtests) ====================
[18:18:30] [PASSED] drm_test_mm_init
[18:18:30] [PASSED] drm_test_mm_debug
[18:18:30] [PASSED] drm_test_mm_align32
[18:18:30] [PASSED] drm_test_mm_align64
[18:18:30] [PASSED] drm_test_mm_lowest
[18:18:30] [PASSED] drm_test_mm_highest
[18:18:30] ===================== [PASSED] drm_mm ======================
[18:18:30] ============= drm_modes_analog_tv (5 subtests) =============
[18:18:30] [PASSED] drm_test_modes_analog_tv_mono_576i
[18:18:30] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[18:18:30] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[18:18:30] [PASSED] drm_test_modes_analog_tv_pal_576i
[18:18:30] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[18:18:30] =============== [PASSED] drm_modes_analog_tv ===============
[18:18:30] ============== drm_plane_helper (2 subtests) ===============
[18:18:30] =============== drm_test_check_plane_state ================
[18:18:30] [PASSED] clipping_simple
[18:18:30] [PASSED] clipping_rotate_reflect
[18:18:30] [PASSED] positioning_simple
[18:18:30] [PASSED] upscaling
[18:18:30] [PASSED] downscaling
[18:18:30] [PASSED] rounding1
[18:18:30] [PASSED] rounding2
[18:18:30] [PASSED] rounding3
[18:18:30] [PASSED] rounding4
[18:18:30] =========== [PASSED] drm_test_check_plane_state ============
[18:18:30] =========== drm_test_check_invalid_plane_state ============
[18:18:30] [PASSED] positioning_invalid
[18:18:30] [PASSED] upscaling_invalid
[18:18:30] [PASSED] downscaling_invalid
[18:18:30] ======= [PASSED] drm_test_check_invalid_plane_state ========
[18:18:30] ================ [PASSED] drm_plane_helper =================
[18:18:30] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[18:18:30] ====== drm_test_connector_helper_tv_get_modes_check =======
[18:18:30] [PASSED] None
[18:18:30] [PASSED] PAL
[18:18:30] [PASSED] NTSC
[18:18:30] [PASSED] Both, NTSC Default
[18:18:30] [PASSED] Both, PAL Default
[18:18:30] [PASSED] Both, NTSC Default, with PAL on command-line
[18:18:30] [PASSED] Both, PAL Default, with NTSC on command-line
[18:18:30] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[18:18:30] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[18:18:30] ================== drm_rect (9 subtests) ===================
[18:18:30] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[18:18:30] [PASSED] drm_test_rect_clip_scaled_not_clipped
[18:18:30] [PASSED] drm_test_rect_clip_scaled_clipped
[18:18:30] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[18:18:30] ================= drm_test_rect_intersect =================
[18:18:30] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[18:18:30] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[18:18:30] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[18:18:30] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[18:18:30] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[18:18:30] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[18:18:30] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[18:18:30] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[18:18:30] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[18:18:30] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[18:18:30] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[18:18:30] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[18:18:30] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[18:18:30] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[18:18:30] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[18:18:30] ============= [PASSED] drm_test_rect_intersect =============
[18:18:30] ================ drm_test_rect_calc_hscale ================
[18:18:30] [PASSED] normal use
[18:18:30] [PASSED] out of max range
[18:18:30] [PASSED] out of min range
[18:18:30] [PASSED] zero dst
[18:18:30] [PASSED] negative src
[18:18:30] [PASSED] negative dst
[18:18:30] ============ [PASSED] drm_test_rect_calc_hscale ============
[18:18:30] ================ drm_test_rect_calc_vscale ================
[18:18:30] [PASSED] normal use
[18:18:30] [PASSED] out of max range
[18:18:30] [PASSED] out of min range
[18:18:30] [PASSED] zero dst
[18:18:30] [PASSED] negative src
[18:18:30] [PASSED] negative dst
[18:18:30] ============ [PASSED] drm_test_rect_calc_vscale ============
[18:18:30] ================== drm_test_rect_rotate ===================
[18:18:30] [PASSED] reflect-x
[18:18:30] [PASSED] reflect-y
[18:18:30] [PASSED] rotate-0
[18:18:30] [PASSED] rotate-90
[18:18:30] [PASSED] rotate-180
[18:18:30] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[18:18:30] ============== [PASSED] drm_test_rect_rotate ===============
[18:18:30] ================ drm_test_rect_rotate_inv =================
[18:18:30] [PASSED] reflect-x
[18:18:30] [PASSED] reflect-y
[18:18:30] [PASSED] rotate-0
[18:18:30] [PASSED] rotate-90
[18:18:30] [PASSED] rotate-180
[18:18:30] [PASSED] rotate-270
[18:18:30] ============ [PASSED] drm_test_rect_rotate_inv =============
[18:18:30] ==================== [PASSED] drm_rect =====================
[18:18:30] ============================================================
[18:18:30] Testing complete. Ran 598 tests: passed: 598
[18:18:30] Elapsed time: 44.090s total, 2.478s configuring, 41.391s building, 0.195s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[18:18:30] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:18:32] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[18:18:45] Starting KUnit Kernel (1/1)...
[18:18:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:18:45] ================= ttm_device (5 subtests) ==================
[18:18:45] [PASSED] ttm_device_init_basic
[18:18:45] [PASSED] ttm_device_init_multiple
[18:18:45] [PASSED] ttm_device_fini_basic
[18:18:45] [PASSED] ttm_device_init_no_vma_man
[18:18:45] ================== ttm_device_init_pools ==================
[18:18:45] [PASSED] No DMA allocations, no DMA32 required
[18:18:45] [PASSED] DMA allocations, DMA32 required
[18:18:45] [PASSED] No DMA allocations, DMA32 required
[18:18:45] [PASSED] DMA allocations, no DMA32 required
[18:18:45] ============== [PASSED] ttm_device_init_pools ==============
[18:18:45] =================== [PASSED] ttm_device ====================
[18:18:45] ================== ttm_pool (8 subtests) ===================
[18:18:45] ================== ttm_pool_alloc_basic ===================
[18:18:45] [PASSED] One page
[18:18:45] [PASSED] More than one page
[18:18:45] [PASSED] Above the allocation limit
[18:18:45] [PASSED] One page, with coherent DMA mappings enabled
[18:18:45] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:18:45] ============== [PASSED] ttm_pool_alloc_basic ===============
[18:18:45] ============== ttm_pool_alloc_basic_dma_addr ==============
[18:18:45] [PASSED] One page
[18:18:45] [PASSED] More than one page
[18:18:45] [PASSED] Above the allocation limit
[18:18:45] [PASSED] One page, with coherent DMA mappings enabled
[18:18:45] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:18:45] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[18:18:45] [PASSED] ttm_pool_alloc_order_caching_match
[18:18:45] [PASSED] ttm_pool_alloc_caching_mismatch
[18:18:45] [PASSED] ttm_pool_alloc_order_mismatch
[18:18:45] [PASSED] ttm_pool_free_dma_alloc
[18:18:45] [PASSED] ttm_pool_free_no_dma_alloc
[18:18:45] [PASSED] ttm_pool_fini_basic
[18:18:45] ==================== [PASSED] ttm_pool =====================
[18:18:45] ================ ttm_resource (8 subtests) =================
[18:18:45] ================= ttm_resource_init_basic =================
[18:18:45] [PASSED] Init resource in TTM_PL_SYSTEM
[18:18:45] [PASSED] Init resource in TTM_PL_VRAM
[18:18:45] [PASSED] Init resource in a private placement
[18:18:45] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[18:18:45] ============= [PASSED] ttm_resource_init_basic =============
[18:18:45] [PASSED] ttm_resource_init_pinned
[18:18:45] [PASSED] ttm_resource_fini_basic
[18:18:45] [PASSED] ttm_resource_manager_init_basic
[18:18:45] [PASSED] ttm_resource_manager_usage_basic
[18:18:45] [PASSED] ttm_resource_manager_set_used_basic
[18:18:45] [PASSED] ttm_sys_man_alloc_basic
[18:18:45] [PASSED] ttm_sys_man_free_basic
[18:18:45] ================== [PASSED] ttm_resource ===================
[18:18:45] =================== ttm_tt (15 subtests) ===================
[18:18:45] ==================== ttm_tt_init_basic ====================
[18:18:45] [PASSED] Page-aligned size
[18:18:45] [PASSED] Extra pages requested
[18:18:45] ================ [PASSED] ttm_tt_init_basic ================
[18:18:45] [PASSED] ttm_tt_init_misaligned
[18:18:45] [PASSED] ttm_tt_fini_basic
[18:18:45] [PASSED] ttm_tt_fini_sg
[18:18:45] [PASSED] ttm_tt_fini_shmem
[18:18:45] [PASSED] ttm_tt_create_basic
[18:18:45] [PASSED] ttm_tt_create_invalid_bo_type
[18:18:45] [PASSED] ttm_tt_create_ttm_exists
[18:18:45] [PASSED] ttm_tt_create_failed
[18:18:45] [PASSED] ttm_tt_destroy_basic
[18:18:45] [PASSED] ttm_tt_populate_null_ttm
[18:18:45] [PASSED] ttm_tt_populate_populated_ttm
[18:18:45] [PASSED] ttm_tt_unpopulate_basic
[18:18:45] [PASSED] ttm_tt_unpopulate_empty_ttm
[18:18:45] [PASSED] ttm_tt_swapin_basic
[18:18:45] ===================== [PASSED] ttm_tt ======================
[18:18:45] =================== ttm_bo (14 subtests) ===================
[18:18:45] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[18:18:45] [PASSED] Cannot be interrupted and sleeps
[18:18:45] [PASSED] Cannot be interrupted, locks straight away
[18:18:45] [PASSED] Can be interrupted, sleeps
[18:18:45] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[18:18:45] [PASSED] ttm_bo_reserve_locked_no_sleep
[18:18:45] [PASSED] ttm_bo_reserve_no_wait_ticket
[18:18:45] [PASSED] ttm_bo_reserve_double_resv
[18:18:45] [PASSED] ttm_bo_reserve_interrupted
[18:18:45] [PASSED] ttm_bo_reserve_deadlock
[18:18:45] [PASSED] ttm_bo_unreserve_basic
[18:18:45] [PASSED] ttm_bo_unreserve_pinned
[18:18:45] [PASSED] ttm_bo_unreserve_bulk
[18:18:45] [PASSED] ttm_bo_put_basic
[18:18:45] [PASSED] ttm_bo_put_shared_resv
[18:18:45] [PASSED] ttm_bo_pin_basic
[18:18:45] [PASSED] ttm_bo_pin_unpin_resource
[18:18:45] [PASSED] ttm_bo_multiple_pin_one_unpin
[18:18:45] ===================== [PASSED] ttm_bo ======================
[18:18:45] ============== ttm_bo_validate (22 subtests) ===============
[18:18:45] ============== ttm_bo_init_reserved_sys_man ===============
[18:18:45] [PASSED] Buffer object for userspace
[18:18:45] [PASSED] Kernel buffer object
[18:18:45] [PASSED] Shared buffer object
[18:18:45] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[18:18:45] ============== ttm_bo_init_reserved_mock_man ==============
[18:18:45] [PASSED] Buffer object for userspace
[18:18:45] [PASSED] Kernel buffer object
[18:18:45] [PASSED] Shared buffer object
[18:18:45] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[18:18:45] [PASSED] ttm_bo_init_reserved_resv
[18:18:45] ================== ttm_bo_validate_basic ==================
[18:18:45] [PASSED] Buffer object for userspace
[18:18:45] [PASSED] Kernel buffer object
[18:18:45] [PASSED] Shared buffer object
[18:18:45] ============== [PASSED] ttm_bo_validate_basic ==============
[18:18:45] [PASSED] ttm_bo_validate_invalid_placement
[18:18:45] ============= ttm_bo_validate_same_placement ==============
[18:18:45] [PASSED] System manager
[18:18:45] [PASSED] VRAM manager
[18:18:45] ========= [PASSED] ttm_bo_validate_same_placement ==========
[18:18:45] [PASSED] ttm_bo_validate_failed_alloc
[18:18:45] [PASSED] ttm_bo_validate_pinned
[18:18:45] [PASSED] ttm_bo_validate_busy_placement
[18:18:45] ================ ttm_bo_validate_multihop =================
[18:18:45] [PASSED] Buffer object for userspace
[18:18:45] [PASSED] Kernel buffer object
[18:18:45] [PASSED] Shared buffer object
[18:18:45] ============ [PASSED] ttm_bo_validate_multihop =============
[18:18:45] ========== ttm_bo_validate_no_placement_signaled ==========
[18:18:45] [PASSED] Buffer object in system domain, no page vector
[18:18:45] [PASSED] Buffer object in system domain with an existing page vector
[18:18:45] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[18:18:45] ======== ttm_bo_validate_no_placement_not_signaled ========
[18:18:45] [PASSED] Buffer object for userspace
[18:18:45] [PASSED] Kernel buffer object
[18:18:45] [PASSED] Shared buffer object
[18:18:45] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[18:18:45] [PASSED] ttm_bo_validate_move_fence_signaled
[18:18:45] ========= ttm_bo_validate_move_fence_not_signaled =========
[18:18:45] [PASSED] Waits for GPU
[18:18:45] [PASSED] Tries to lock straight away
[18:18:45] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[18:18:45] [PASSED] ttm_bo_validate_swapout
[18:18:45] [PASSED] ttm_bo_validate_happy_evict
[18:18:45] [PASSED] ttm_bo_validate_all_pinned_evict
[18:18:45] [PASSED] ttm_bo_validate_allowed_only_evict
[18:18:45] [PASSED] ttm_bo_validate_deleted_evict
[18:18:45] [PASSED] ttm_bo_validate_busy_domain_evict
[18:18:45] [PASSED] ttm_bo_validate_evict_gutting
[18:18:45] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[18:18:45] ================= [PASSED] ttm_bo_validate =================
[18:18:45] ============================================================
[18:18:45] Testing complete. Ran 102 tests: passed: 102
[18:18:46] Elapsed time: 15.572s total, 2.493s configuring, 12.209s building, 0.696s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✓ CI.Build: success for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (16 preceding siblings ...)
2025-01-28 18:18 ` ✓ CI.KUnit: success " Patchwork
@ 2025-01-28 18:47 ` Patchwork
2025-01-28 18:49 ` ✗ CI.Hooks: failure " Patchwork
` (3 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:47 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : success
== Summary ==
lib/modules/6.13.0-xe+/kernel/arch/x86/events/rapl.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm-amd.ko
lib/modules/6.13.0-xe+/kernel/kernel/
lib/modules/6.13.0-xe+/kernel/kernel/kheaders.ko
lib/modules/6.13.0-xe+/kernel/crypto/
lib/modules/6.13.0-xe+/kernel/crypto/ecrdsa_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/xcbc.ko
lib/modules/6.13.0-xe+/kernel/crypto/serpent_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/aria_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_simd.ko
lib/modules/6.13.0-xe+/kernel/crypto/adiantum.ko
lib/modules/6.13.0-xe+/kernel/crypto/tcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_engine.ko
lib/modules/6.13.0-xe+/kernel/crypto/zstd.ko
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/pkcs7_test_key.ko
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/pkcs8_key_parser.ko
lib/modules/6.13.0-xe+/kernel/crypto/des_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/xctr.ko
lib/modules/6.13.0-xe+/kernel/crypto/authenc.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm4_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/keywrap.ko
lib/modules/6.13.0-xe+/kernel/crypto/camellia_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm3.ko
lib/modules/6.13.0-xe+/kernel/crypto/pcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/aegis128.ko
lib/modules/6.13.0-xe+/kernel/crypto/af_alg.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_aead.ko
lib/modules/6.13.0-xe+/kernel/crypto/cmac.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm3_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/aes_ti.ko
lib/modules/6.13.0-xe+/kernel/crypto/chacha_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/poly1305_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/nhpoly1305.ko
lib/modules/6.13.0-xe+/kernel/crypto/crc32_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/essiv.ko
lib/modules/6.13.0-xe+/kernel/crypto/ccm.ko
lib/modules/6.13.0-xe+/kernel/crypto/wp512.ko
lib/modules/6.13.0-xe+/kernel/crypto/streebog_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/authencesn.ko
lib/modules/6.13.0-xe+/kernel/crypto/echainiv.ko
lib/modules/6.13.0-xe+/kernel/crypto/lrw.ko
lib/modules/6.13.0-xe+/kernel/crypto/cryptd.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_user.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_hash.ko
lib/modules/6.13.0-xe+/kernel/crypto/vmac.ko
lib/modules/6.13.0-xe+/kernel/crypto/polyval-generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/hctr2.ko
lib/modules/6.13.0-xe+/kernel/crypto/842.ko
lib/modules/6.13.0-xe+/kernel/crypto/pcbc.ko
lib/modules/6.13.0-xe+/kernel/crypto/ansi_cprng.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast6_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/twofish_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/twofish_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/lz4hc.ko
lib/modules/6.13.0-xe+/kernel/crypto/blowfish_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/md4.ko
lib/modules/6.13.0-xe+/kernel/crypto/chacha20poly1305.ko
lib/modules/6.13.0-xe+/kernel/crypto/curve25519-generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/lz4.ko
lib/modules/6.13.0-xe+/kernel/crypto/rmd160.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_skcipher.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast5_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/fcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/ecdsa_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm4.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/blowfish_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/michael_mic.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_rng.ko
lib/modules/6.13.0-xe+/kernel/block/
lib/modules/6.13.0-xe+/kernel/block/bfq.ko
lib/modules/6.13.0-xe+/kernel/block/kyber-iosched.ko
lib/modules/6.13.0-xe+/build
lib/modules/6.13.0-xe+/modules.alias.bin
lib/modules/6.13.0-xe+/modules.builtin
lib/modules/6.13.0-xe+/modules.softdep
lib/modules/6.13.0-xe+/modules.alias
lib/modules/6.13.0-xe+/modules.order
lib/modules/6.13.0-xe+/modules.symbols
lib/modules/6.13.0-xe+/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1738090020:package_x86_64_nodebug\r\e[0K'
^[[0Ksection_end:1738090020:package_x86_64_nodebug
^[[0K
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✗ CI.Hooks: failure for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (17 preceding siblings ...)
2025-01-28 18:47 ` ✓ CI.Build: " Patchwork
@ 2025-01-28 18:49 ` Patchwork
2025-01-28 18:50 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:49 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : failure
== Summary ==
run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
GEN Makefile
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool
CALL ../scripts/checksyscalls.sh
INSTALL libsubcmd_headers
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
CC /workspace/kernel/build64-default/tools/objtool/weak.o
CC /workspace/kernel/build64-default/tools/objtool/check.o
CC /workspace/kernel/build64-default/tools/objtool/special.o
CC /workspace/kernel/build64-default/tools/objtool/elf.o
CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o
CC /workspace/kernel/build64-default/tools/objtool/objtool.o
CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o
CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/librbtree.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o
LINK /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
GEN Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value: CONFIG_HAVE_UID16=y
Actual value:
Value requested for CONFIG_UID16 not in final .config
Requested value: CONFIG_UID16=y
Actual value:
Value requested for CONFIG_X86_32 not in final .config
Requested value: CONFIG_X86_32=y
Actual value:
Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value: CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value: CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MIN=28
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MAX=32
Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value: CONFIG_PGTABLE_LEVELS=2
Actual value: CONFIG_PGTABLE_LEVELS=5
Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value: # CONFIG_X86_BIGSMP is not set
Actual value:
Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value: # CONFIG_X86_INTEL_QUARK is not set
Actual value:
Value requested for CONFIG_X86_RDC321X not in final .config
Requested value: # CONFIG_X86_RDC321X is not set
Actual value:
Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value: # CONFIG_X86_32_NON_STANDARD is not set
Actual value:
Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value: # CONFIG_X86_32_IRIS is not set
Actual value:
Value requested for CONFIG_M486SX not in final .config
Requested value: # CONFIG_M486SX is not set
Actual value:
Value requested for CONFIG_M486 not in final .config
Requested value: # CONFIG_M486 is not set
Actual value:
Value requested for CONFIG_M586 not in final .config
Requested value: # CONFIG_M586 is not set
Actual value:
Value requested for CONFIG_M586TSC not in final .config
Requested value: # CONFIG_M586TSC is not set
Actual value:
Value requested for CONFIG_M586MMX not in final .config
Requested value: # CONFIG_M586MMX is not set
Actual value:
Value requested for CONFIG_M686 not in final .config
Requested value: CONFIG_M686=y
Actual value:
Value requested for CONFIG_MPENTIUMII not in final .config
Requested value: # CONFIG_MPENTIUMII is not set
Actual value:
Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value: # CONFIG_MPENTIUMIII is not set
Actual value:
Value requested for CONFIG_MPENTIUMM not in final .config
Requested value: # CONFIG_MPENTIUMM is not set
Actual value:
Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value: # CONFIG_MPENTIUM4 is not set
Actual value:
Value requested for CONFIG_MK6 not in final .config
Requested value: # CONFIG_MK6 is not set
Actual value:
Value requested for CONFIG_MK7 not in final .config
Requested value: # CONFIG_MK7 is not set
Actual value:
Value requested for CONFIG_MCRUSOE not in final .config
Requested value: # CONFIG_MCRUSOE is not set
Actual value:
Value requested for CONFIG_MEFFICEON not in final .config
Requested value: # CONFIG_MEFFICEON is not set
Actual value:
Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value: # CONFIG_MWINCHIPC6 is not set
Actual value:
Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value: # CONFIG_MWINCHIP3D is not set
Actual value:
Value requested for CONFIG_MELAN not in final .config
Requested value: # CONFIG_MELAN is not set
Actual value:
Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value: # CONFIG_MGEODEGX1 is not set
Actual value:
Value requested for CONFIG_MGEODE_LX not in final .config
Requested value: # CONFIG_MGEODE_LX is not set
Actual value:
Value requested for CONFIG_MCYRIXIII not in final .config
Requested value: # CONFIG_MCYRIXIII is not set
Actual value:
Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value: # CONFIG_MVIAC3_2 is not set
Actual value:
Value requested for CONFIG_MVIAC7 not in final .config
Requested value: # CONFIG_MVIAC7 is not set
Actual value:
Value requested for CONFIG_X86_GENERIC not in final .config
Requested value: # CONFIG_X86_GENERIC is not set
Actual value:
Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value: CONFIG_X86_INTERNODE_CACHE_SHIFT=6
Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_L1_CACHE_SHIFT=5
Actual value: CONFIG_X86_L1_CACHE_SHIFT=6
Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value: CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:
Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value: CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value: CONFIG_X86_MINIMUM_CPU_FAMILY=64
Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value: CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:
Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value: CONFIG_CPU_SUP_VORTEX_32=y
Actual value:
Value requested for CONFIG_HPET_TIMER not in final .config
Requested value: # CONFIG_HPET_TIMER is not set
Actual value: CONFIG_HPET_TIMER=y
Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value: CONFIG_NR_CPUS_RANGE_END=8
Actual value: CONFIG_NR_CPUS_RANGE_END=512
Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value: CONFIG_NR_CPUS_DEFAULT=8
Actual value: CONFIG_NR_CPUS_DEFAULT=64
Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value: # CONFIG_X86_ANCIENT_MCE is not set
Actual value:
Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value: # CONFIG_X86_LEGACY_VM86 is not set
Actual value:
Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value: CONFIG_X86_ESPFIX32=y
Actual value:
Value requested for CONFIG_TOSHIBA not in final .config
Requested value: # CONFIG_TOSHIBA is not set
Actual value:
Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value: # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:
Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value: CONFIG_MICROCODE_INITRD32=y
Actual value:
Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value: # CONFIG_NOHIGHMEM is not set
Actual value:
Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value: CONFIG_HIGHMEM4G=y
Actual value:
Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value: # CONFIG_HIGHMEM64G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value: CONFIG_VMSPLIT_3G=y
Actual value:
Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value: # CONFIG_VMSPLIT_2G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value: # CONFIG_VMSPLIT_1G is not set
Actual value:
Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value: CONFIG_PAGE_OFFSET=0xC0000000
Actual value:
Value requested for CONFIG_HIGHMEM not in final .config
Requested value: CONFIG_HIGHMEM=y
Actual value:
Value requested for CONFIG_X86_PAE not in final .config
Requested value: # CONFIG_X86_PAE is not set
Actual value:
Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value: CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:
Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value: CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value: CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
Value requested for CONFIG_HIGHPTE not in final .config
Requested value: # CONFIG_HIGHPTE is not set
Actual value:
Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value: # CONFIG_COMPAT_VDSO is not set
Actual value:
Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value: CONFIG_FUNCTION_PADDING_CFI=0
Actual value: CONFIG_FUNCTION_PADDING_CFI=11
Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value: CONFIG_FUNCTION_PADDING_BYTES=4
Actual value: CONFIG_FUNCTION_PADDING_BYTES=16
Value requested for CONFIG_APM not in final .config
Requested value: # CONFIG_APM is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K6 is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K7 is not set
Actual value:
Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value: # CONFIG_X86_GX_SUSPMOD is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:
Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value: # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:
Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value: # CONFIG_X86_LONGRUN is not set
Actual value:
Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value: # CONFIG_X86_LONGHAUL is not set
Actual value:
Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value: # CONFIG_X86_E_POWERSAVER is not set
Actual value:
Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value: # CONFIG_PCI_GOBIOS is not set
Actual value:
Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value: # CONFIG_PCI_GOMMCONFIG is not set
Actual value:
Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value: # CONFIG_PCI_GODIRECT is not set
Actual value:
Value requested for CONFIG_PCI_GOANY not in final .config
Requested value: CONFIG_PCI_GOANY=y
Actual value:
Value requested for CONFIG_PCI_BIOS not in final .config
Requested value: CONFIG_PCI_BIOS=y
Actual value:
Value requested for CONFIG_ISA not in final .config
Requested value: # CONFIG_ISA is not set
Actual value:
Value requested for CONFIG_SCx200 not in final .config
Requested value: # CONFIG_SCx200 is not set
Actual value:
Value requested for CONFIG_OLPC not in final .config
Requested value: # CONFIG_OLPC is not set
Actual value:
Value requested for CONFIG_ALIX not in final .config
Requested value: # CONFIG_ALIX is not set
Actual value:
Value requested for CONFIG_NET5501 not in final .config
Requested value: # CONFIG_NET5501 is not set
Actual value:
Value requested for CONFIG_GEOS not in final .config
Requested value: # CONFIG_GEOS is not set
Actual value:
Value requested for CONFIG_COMPAT_32 not in final .config
Requested value: CONFIG_COMPAT_32=y
Actual value:
Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value: CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:
Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value: CONFIG_ARCH_32BIT_OFF_T=y
Actual value:
Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value: CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:
Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value: CONFIG_MODULES_USE_ELF_REL=y
Actual value:
Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS=28
Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value: CONFIG_CLONE_BACKWARDS=y
Actual value:
Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value: CONFIG_OLD_SIGSUSPEND3=y
Actual value:
Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value: CONFIG_OLD_SIGACTION=y
Actual value:
Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value: CONFIG_ARCH_SPLIT_ARG64=y
Actual value:
Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value: CONFIG_FUNCTION_ALIGNMENT=4
Actual value: CONFIG_FUNCTION_ALIGNMENT=16
Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value: CONFIG_FLATMEM_MANUAL=y
Actual value:
Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value: # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:
Value requested for CONFIG_FLATMEM not in final .config
Requested value: CONFIG_FLATMEM=y
Actual value:
Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value: CONFIG_SPARSEMEM_STATIC=y
Actual value:
Value requested for CONFIG_BOUNCE not in final .config
Requested value: CONFIG_BOUNCE=y
Actual value:
Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value: CONFIG_KMAP_LOCAL=y
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:
Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value: CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:
Value requested for CONFIG_PCH_PHUB not in final .config
Requested value: # CONFIG_PCH_PHUB is not set
Actual value:
Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value: # CONFIG_SCSI_NSP32 is not set
Actual value:
Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value: # CONFIG_PATA_CS5520 is not set
Actual value:
Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value: # CONFIG_PATA_CS5530 is not set
Actual value:
Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value: # CONFIG_PATA_CS5535 is not set
Actual value:
Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value: # CONFIG_PATA_CS5536 is not set
Actual value:
Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value: # CONFIG_PATA_SC1200 is not set
Actual value:
Value requested for CONFIG_PCH_GBE not in final .config
Requested value: # CONFIG_PCH_GBE is not set
Actual value:
Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value: # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:
Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value: # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:
Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value: # CONFIG_SERIAL_PCH_UART is not set
Actual value:
Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value: CONFIG_HW_RANDOM_GEODE=y
Actual value:
Value requested for CONFIG_SONYPI not in final .config
Requested value: # CONFIG_SONYPI is not set
Actual value:
Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value: # CONFIG_PC8736x_GPIO is not set
Actual value:
Value requested for CONFIG_NSC_GPIO not in final .config
Requested value: # CONFIG_NSC_GPIO is not set
Actual value:
Value requested for CONFIG_I2C_EG20T not in final .config
Requested value: # CONFIG_I2C_EG20T is not set
Actual value:
Value requested for CONFIG_SCx200_ACB not in final .config
Requested value: # CONFIG_SCx200_ACB is not set
Actual value:
Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value: # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:
Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value: # CONFIG_SBC8360_WDT is not set
Actual value:
Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value: # CONFIG_SBC7240_WDT is not set
Actual value:
Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value: # CONFIG_MFD_CS5535 is not set
Actual value:
Value requested for CONFIG_AGP_ALI not in final .config
Requested value: # CONFIG_AGP_ALI is not set
Actual value:
Value requested for CONFIG_AGP_ATI not in final .config
Requested value: # CONFIG_AGP_ATI is not set
Actual value:
Value requested for CONFIG_AGP_AMD not in final .config
Requested value: # CONFIG_AGP_AMD is not set
Actual value:
Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value: # CONFIG_AGP_NVIDIA is not set
Actual value:
Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value: # CONFIG_AGP_SWORKS is not set
Actual value:
Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value: # CONFIG_AGP_EFFICEON is not set
Actual value:
Value requested for CONFIG_SND_CS5530 not in final .config
Requested value: # CONFIG_SND_CS5530 is not set
Actual value:
Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value: # CONFIG_SND_CS5535AUDIO is not set
Actual value:
Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value: # CONFIG_SND_SIS7019 is not set
Actual value:
Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value: # CONFIG_LEDS_OT200 is not set
Actual value:
Value requested for CONFIG_PCH_DMA not in final .config
Requested value: # CONFIG_PCH_DMA is not set
Actual value:
Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value: CONFIG_CLKSRC_I8253=y
Actual value:
Value requested for CONFIG_MAILBOX not in final .config
Requested value: # CONFIG_MAILBOX is not set
Actual value: CONFIG_MAILBOX=y
Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value: # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value: # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value: # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value: # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:
Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value: CONFIG_AUDIT_GENERIC=y
Actual value:
Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value: CONFIG_GENERIC_VDSO_32=y
Actual value:
Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value: # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:
Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value: # CONFIG_DEBUG_HIGHMEM is not set
Actual value:
Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value: CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:
Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value: # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:
Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_KUNIT_TEST=m
Actual value:
Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value: CONFIG_DRM_XE_WERROR=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value: CONFIG_DRM_XE_DEBUG=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value: CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:
Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:
++ nproc
+ make -j48 ARCH=i386 olddefconfig
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
SYNC include/config/auto.conf.cmd
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
GEN Makefile
WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
WRAP arch/x86/include/generated/uapi/asm/errno.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
UPD include/generated/uapi/linux/version.h
WRAP arch/x86/include/generated/uapi/asm/param.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
WRAP arch/x86/include/generated/uapi/asm/poll.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
WRAP arch/x86/include/generated/uapi/asm/types.h
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_32.o
HOSTCC arch/x86/tools/relocs_64.o
WRAP arch/x86/include/generated/asm/early_ioremap.h
HOSTCC arch/x86/tools/relocs_common.o
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
WRAP arch/x86/include/generated/asm/kmap_size.h
WRAP arch/x86/include/generated/asm/local64.h
WRAP arch/x86/include/generated/asm/mmiowb.h
WRAP arch/x86/include/generated/asm/module.lds.h
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/selinux/mdp/mdp
HOSTLD arch/x86/tools/relocs
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
UPD scripts/mod/devicetable-offsets.h
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
CC kernel/bounds.s
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
UPD include/generated/timeconst.h
UPD include/generated/bounds.h
CC arch/x86/kernel/asm-offsets.s
UPD include/generated/asm-offsets.h
CALL /workspace/kernel/scripts/checksyscalls.sh
LDS scripts/module.lds
HOSTCC usr/gen_init_cpio
CC init/main.o
CC init/do_mounts.o
CC certs/system_keyring.o
CC ipc/util.o
CC init/do_mounts_initrd.o
UPD init/utsversion-tmp.h
CC ipc/msgutil.o
CC security/commoncap.o
CC init/initramfs.o
CC ipc/msg.o
CC security/lsm_syscalls.o
CC mm/filemap.o
AS arch/x86/entry/entry.o
CC ipc/sem.o
CC io_uring/io_uring.o
AS arch/x86/lib/atomic64_cx8_32.o
CC mm/mempool.o
CC init/calibrate.o
CC security/min_addr.o
AS arch/x86/entry/entry_32.o
CC arch/x86/power/cpu.o
CC arch/x86/realmode/init.o
CC block/bdev.o
CC arch/x86/video/video-common.o
CC security/keys/gc.o
CC arch/x86/pci/i386.o
AR arch/x86/crypto/built-in.a
HOSTCC security/selinux/genheaders
CC security/integrity/iint.o
AR arch/x86/net/built-in.a
AR arch/x86/entry/vsyscall/built-in.a
CC block/partitions/core.o
CC fs/nfs_common/nfsacl.o
CC arch/x86/events/amd/core.o
CC fs/iomap/trace.o
AR virt/lib/built-in.a
CC arch/x86/mm/init.o
CC security/integrity/integrity_audit.o
AR arch/x86/platform/atom/built-in.a
CC arch/x86/virt/svm/cmdline.o
CC lib/math/div64.o
CC arch/x86/mm/init_32.o
CC arch/x86/kernel/fpu/init.o
CC fs/notify/dnotify/dnotify.o
CC arch/x86/mm/pat/set_memory.o
AR drivers/cache/built-in.a
CC net/core/sock.o
CC sound/core/seq/seq.o
AR virt/built-in.a
AS arch/x86/lib/checksum_32.o
CC arch/x86/entry/vdso/vma.o
AR arch/x86/platform/ce4100/built-in.a
AR drivers/irqchip/built-in.a
CC fs/nfs_common/grace.o
AS arch/x86/realmode/rm/header.o
CC arch/x86/platform/efi/memmap.o
CC kernel/sched/core.o
AR drivers/bus/mhi/built-in.a
CC arch/x86/lib/cmdline.o
AR arch/x86/platform/geode/built-in.a
AR drivers/bus/built-in.a
CC kernel/sched/fair.o
AS arch/x86/realmode/rm/trampoline_32.o
CC crypto/asymmetric_keys/asymmetric_type.o
AR drivers/pwm/built-in.a
AS arch/x86/realmode/rm/stack.o
AR drivers/leds/trigger/built-in.a
AR arch/x86/virt/svm/built-in.a
AS arch/x86/realmode/rm/reboot.o
AR drivers/leds/blink/built-in.a
AR arch/x86/virt/vmx/built-in.a
AR drivers/leds/simple/built-in.a
AR arch/x86/virt/built-in.a
CC drivers/leds/led-core.o
AS arch/x86/realmode/rm/wakeup_asm.o
CC kernel/sched/build_policy.o
CC arch/x86/realmode/rm/wakemain.o
AS arch/x86/lib/cmpxchg8b_emu.o
CC lib/math/gcd.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
CC security/selinux/avc.o
CC arch/x86/lib/cpu.o
CC arch/x86/realmode/rm/video-mode.o
CC lib/math/lcm.o
CC lib/math/int_log.o
CC sound/core/seq/seq_lock.o
GEN usr/initramfs_data.cpio
COPY usr/initramfs_inc_data
AS arch/x86/realmode/rm/copy.o
AS usr/initramfs_data.o
HOSTCC certs/extract-cert
CC arch/x86/kernel/fpu/bugs.o
AR usr/built-in.a
CC lib/math/int_pow.o
AS arch/x86/realmode/rm/bioscall.o
CC kernel/sched/build_utility.o
CC arch/x86/realmode/rm/regs.o
CC lib/math/int_sqrt.o
CC arch/x86/realmode/rm/video-vga.o
CC arch/x86/kernel/fpu/core.o
CC lib/math/reciprocal_div.o
CC arch/x86/realmode/rm/video-vesa.o
CC arch/x86/entry/syscall_32.o
CC arch/x86/lib/delay.o
CC fs/quota/dquot.o
CC lib/math/rational.o
CC arch/x86/realmode/rm/video-bios.o
AR arch/x86/video/built-in.a
CC fs/quota/quota_v2.o
CERT certs/x509_certificate_list
CC fs/proc/task_mmu.o
CERT certs/signing_key.x509
AS certs/system_certificates.o
CC sound/core/seq/seq_clientmgr.o
AR certs/built-in.a
PASYMS arch/x86/realmode/rm/pasyms.h
CC security/keys/key.o
CC fs/kernfs/mount.o
CC fs/sysfs/file.o
CC drivers/leds/led-class.o
CC net/ethernet/eth.o
LDS arch/x86/realmode/rm/realmode.lds
AR security/integrity/built-in.a
CC fs/devpts/inode.o
CC fs/proc/inode.o
CC arch/x86/pci/init.o
CC fs/netfs/buffered_read.o
LD arch/x86/realmode/rm/realmode.elf
CC fs/nfs_common/common.o
CC fs/sysfs/dir.o
CC crypto/asymmetric_keys/restrict.o
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AS arch/x86/realmode/rmpiggy.o
CC fs/sysfs/symlink.o
AR fs/notify/dnotify/built-in.a
CC arch/x86/entry/vdso/extable.o
CC fs/notify/inotify/inotify_fsnotify.o
AR arch/x86/realmode/built-in.a
CC arch/x86/mm/fault.o
CC arch/x86/platform/efi/quirks.o
AS arch/x86/lib/getuser.o
CC block/partitions/msdos.o
CC arch/x86/power/hibernate_32.o
GEN arch/x86/lib/inat-tables.c
CC arch/x86/lib/insn-eval.o
CC net/core/request_sock.o
CC drivers/pci/msi/pcidev_msi.o
AR lib/math/built-in.a
CC lib/crypto/mpi/generic_mpih-lshift.o
CC lib/crypto/memneq.o
CC drivers/video/console/dummycon.o
AR drivers/idle/built-in.a
CC sound/core/sound.o
CC lib/zlib_inflate/inffast.o
CC drivers/leds/led-triggers.o
CC fs/iomap/iter.o
CC crypto/asymmetric_keys/signature.o
CC arch/x86/events/amd/lbr.o
CC arch/x86/entry/common.o
AS arch/x86/entry/thunk.o
CC lib/zlib_inflate/inflate.o
CC drivers/pci/msi/api.o
CC io_uring/opdef.o
CC lib/crypto/utils.o
CC fs/notify/inotify/inotify_user.o
CC arch/x86/pci/pcbios.o
CC arch/x86/mm/pat/memtype.o
CC arch/x86/events/intel/core.o
AR fs/nfs_common/built-in.a
CC drivers/video/console/vgacon.o
CC fs/sysfs/mount.o
CC init/init_task.o
AR sound/i2c/other/built-in.a
AR fs/devpts/built-in.a
AR sound/i2c/built-in.a
CC fs/kernfs/inode.o
CC drivers/video/backlight/backlight.o
CC lib/zlib_deflate/deflate.o
CC crypto/api.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
AS arch/x86/entry/vdso/vdso32/note.o
CC lib/crypto/mpi/generic_mpih-mul1.o
AS arch/x86/entry/vdso/vdso32/system_call.o
AS arch/x86/power/hibernate_asm_32.o
CC fs/kernfs/dir.o
CC arch/x86/events/zhaoxin/core.o
AS arch/x86/entry/vdso/vdso32/sigreturn.o
CC arch/x86/power/hibernate.o
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC crypto/asymmetric_keys/public_key.o
CC block/partitions/efi.o
CC block/fops.o
CC arch/x86/kernel/fpu/regset.o
CC security/keys/keyring.o
CC io_uring/kbuf.o
AR net/802/built-in.a
CC arch/x86/platform/efi/efi.o
CC io_uring/rsrc.o
CC ipc/shm.o
CC arch/x86/lib/insn.o
CC security/selinux/hooks.o
AR drivers/leds/built-in.a
CC fs/proc/root.o
CC security/security.o
CC lib/zlib_inflate/infutil.o
CC fs/iomap/buffered-io.o
CC sound/core/seq/seq_memory.o
CC drivers/pci/msi/msi.o
AR net/ethernet/built-in.a
CC fs/netfs/buffered_write.o
CC fs/ext4/balloc.o
CC fs/jbd2/transaction.o
CC arch/x86/pci/mmconfig_32.o
CC fs/netfs/direct_read.o
CC arch/x86/lib/kaslr.o
CC lib/crypto/mpi/generic_mpih-mul2.o
CC arch/x86/events/amd/ibs.o
CC arch/x86/lib/memcpy_32.o
CC init/version.o
CC fs/netfs/direct_write.o
AR arch/x86/power/built-in.a
CC fs/iomap/direct-io.o
CC lib/zlib_inflate/inftrees.o
CC fs/sysfs/group.o
AR fs/notify/inotify/built-in.a
CC lib/zlib_inflate/inflate_syms.o
CC arch/x86/mm/pat/memtype_interval.o
AR fs/notify/fanotify/built-in.a
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
CC fs/notify/fsnotify.o
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
CC crypto/asymmetric_keys/x509_loader.o
CC lib/zlib_deflate/deftree.o
AS arch/x86/lib/memmove_32.o
CC fs/proc/base.o
CC arch/x86/lib/misc.o
HOSTCC arch/x86/entry/vdso/vdso2c
AR init/built-in.a
CC arch/x86/lib/pc-conf-reg.o
CC fs/kernfs/file.o
AR drivers/video/backlight/built-in.a
CC arch/x86/kernel/cpu/mce/core.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
CC arch/x86/kernel/fpu/signal.o
CC block/bio.o
AR drivers/video/console/built-in.a
AR arch/x86/events/zhaoxin/built-in.a
AR drivers/video/fbdev/core/built-in.a
CC lib/lzo/lzo1x_compress.o
AR drivers/video/fbdev/omap/built-in.a
CC crypto/asymmetric_keys/x509_public_key.o
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
AR drivers/video/fbdev/omap2/omapfb/built-in.a
AS arch/x86/lib/putuser.o
AR drivers/video/fbdev/omap2/built-in.a
AR drivers/video/fbdev/built-in.a
AR block/partitions/built-in.a
CC drivers/video/aperture.o
CC sound/core/init.o
AS arch/x86/lib/retpoline.o
CC fs/quota/quota_tree.o
CC arch/x86/lib/string_32.o
AR lib/zlib_inflate/built-in.a
CC arch/x86/kernel/fpu/xstate.o
CC arch/x86/events/amd/uncore.o
CC arch/x86/platform/efi/efi_32.o
CC arch/x86/lib/strstr_32.o
CC fs/jbd2/commit.o
CC lib/crypto/mpi/generic_mpih-mul3.o
CC arch/x86/pci/direct.o
CC arch/x86/lib/usercopy.o
CC sound/core/seq/seq_queue.o
CC crypto/cipher.o
CC arch/x86/entry/vdso/vdso32-setup.o
CC fs/ramfs/inode.o
AR arch/x86/mm/pat/built-in.a
CC arch/x86/mm/ioremap.o
CC lib/zlib_deflate/deflate_syms.o
AR fs/sysfs/built-in.a
CC security/keys/keyctl.o
CC fs/netfs/iterator.o
CC drivers/pci/msi/irqdomain.o
CC net/core/skbuff.o
CC ipc/syscall.o
CC mm/oom_kill.o
CC block/elevator.o
CC arch/x86/lib/usercopy_32.o
CC lib/lzo/lzo1x_decompress_safe.o
CC net/core/datagram.o
VDSO arch/x86/entry/vdso/vdso32.so.dbg
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
CC crypto/asymmetric_keys/pkcs7_trust.o
CC arch/x86/events/core.o
OBJCOPY arch/x86/entry/vdso/vdso32.so
VDSO2C arch/x86/entry/vdso/vdso-image-32.c
CC arch/x86/entry/vdso/vdso-image-32.o
CC arch/x86/kernel/cpu/mtrr/if.o
CC fs/notify/notification.o
CC arch/x86/kernel/cpu/mce/severity.o
AR lib/zlib_deflate/built-in.a
CC fs/quota/quota.o
CC lib/crypto/mpi/generic_mpih-rshift.o
CC arch/x86/lib/msr-smp.o
CC security/lsm_audit.o
CC drivers/video/cmdline.o
AS arch/x86/platform/efi/efi_stub_32.o
CC fs/kernfs/symlink.o
CC arch/x86/platform/efi/runtime-map.o
CC arch/x86/pci/mmconfig-shared.o
CC fs/hugetlbfs/inode.o
AR arch/x86/entry/vdso/built-in.a
CC drivers/video/nomodeset.o
CC fs/ramfs/file-mmu.o
AR arch/x86/entry/built-in.a
AR drivers/char/ipmi/built-in.a
CC drivers/video/hdmi.o
CC crypto/asymmetric_keys/pkcs7_verify.o
CC sound/core/seq/seq_fifo.o
AR lib/lzo/built-in.a
CC arch/x86/kernel/cpu/mtrr/generic.o
CC arch/x86/kernel/cpu/microcode/core.o
CC crypto/compress.o
CC arch/x86/lib/cache-smp.o
CC lib/crypto/mpi/generic_mpih-sub1.o
CC mm/fadvise.o
CC ipc/ipc_sysctl.o
AR drivers/pci/msi/built-in.a
CC arch/x86/mm/extable.o
CC drivers/pci/pcie/portdrv.o
CC arch/x86/lib/msr.o
AR drivers/pci/pwrctrl/built-in.a
CC net/sched/sch_generic.o
AR arch/x86/events/amd/built-in.a
CC arch/x86/kernel/acpi/boot.o
CC io_uring/notif.o
CC fs/notify/group.o
AR arch/x86/kernel/fpu/built-in.a
CC net/sched/sch_mq.o
CC net/sched/sch_frag.o
CC kernel/locking/mutex.o
CC fs/jbd2/recovery.o
CC crypto/asymmetric_keys/x509.asn1.o
CC crypto/asymmetric_keys/x509_akid.asn1.o
CC fs/ext4/bitmap.o
CC fs/iomap/fiemap.o
CC fs/netfs/locking.o
CC crypto/asymmetric_keys/x509_cert_parser.o
CC kernel/power/qos.o
CC kernel/printk/printk.o
AR fs/kernfs/built-in.a
AR fs/ramfs/built-in.a
CC crypto/algapi.o
CC lib/crypto/mpi/generic_mpih-add1.o
CC security/device_cgroup.o
CC net/sched/sch_api.o
CC sound/core/seq/seq_prioq.o
AR arch/x86/platform/efi/built-in.a
CC security/keys/permission.o
AR arch/x86/platform/iris/built-in.a
CC arch/x86/platform/intel/iosf_mbi.o
AR sound/drivers/opl3/built-in.a
CC block/blk-core.o
AR sound/drivers/opl4/built-in.a
AR sound/drivers/mpu401/built-in.a
AR sound/drivers/vx/built-in.a
CC sound/core/seq/seq_timer.o
AR sound/drivers/pcsp/built-in.a
AR sound/drivers/built-in.a
CC fs/proc/generic.o
CC ipc/mqueue.o
CC sound/core/seq/seq_system.o
CC arch/x86/kernel/cpu/mce/genpool.o
CC arch/x86/kernel/cpu/microcode/intel.o
AR drivers/video/built-in.a
CC sound/core/seq/seq_ports.o
CC arch/x86/pci/fixup.o
CC kernel/irq/irqdesc.o
CC lib/crypto/chacha.o
CC fs/notify/mark.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC drivers/pci/pcie/rcec.o
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC crypto/asymmetric_keys/pkcs7_parser.o
CC fs/quota/kqid.o
AR arch/x86/platform/intel-mid/built-in.a
CC fs/notify/fdinfo.o
AS arch/x86/lib/msr-reg.o
CC arch/x86/mm/mmap.o
CC mm/maccess.o
CC arch/x86/kernel/cpu/cacheinfo.o
CC fs/iomap/seek.o
CC arch/x86/lib/msr-reg-export.o
CC arch/x86/events/intel/bts.o
AS arch/x86/lib/hweight.o
CC fs/ext4/block_validity.o
CC lib/crypto/mpi/mpicoder.o
CC drivers/acpi/acpica/dsargs.o
CC sound/core/memory.o
CC drivers/pnp/pnpacpi/core.o
CC drivers/pnp/core.o
CC drivers/pnp/card.o
CC fs/netfs/main.o
CC arch/x86/kernel/acpi/sleep.o
CC arch/x86/lib/iomem.o
CC fs/jbd2/checkpoint.o
CC security/keys/process_keys.o
CC arch/x86/kernel/cpu/mce/intel.o
AR kernel/sched/built-in.a
AS arch/x86/kernel/acpi/wakeup_32.o
AR arch/x86/platform/intel/built-in.a
CC security/keys/request_key.o
AR drivers/amba/built-in.a
AR arch/x86/platform/intel-quark/built-in.a
CC net/sched/sch_blackhole.o
CC fs/iomap/swapfile.o
AR arch/x86/platform/olpc/built-in.a
CC io_uring/tctx.o
AR arch/x86/platform/scx200/built-in.a
AR arch/x86/platform/ts5500/built-in.a
AR arch/x86/platform/uv/built-in.a
CC net/netlink/af_netlink.o
AR arch/x86/platform/built-in.a
AR fs/hugetlbfs/built-in.a
AR net/bpf/built-in.a
CC net/ethtool/ioctl.o
CC arch/x86/pci/acpi.o
CC sound/core/seq/seq_info.o
CC arch/x86/kernel/cpu/microcode/amd.o
CC fs/proc/array.o
CC fs/quota/netlink.o
CC kernel/power/main.o
CC drivers/acpi/acpica/dscontrol.o
AR crypto/asymmetric_keys/built-in.a
AR drivers/acpi/pmic/built-in.a
CC ipc/namespace.o
CC block/blk-sysfs.o
CC kernel/locking/semaphore.o
CC arch/x86/lib/atomic64_32.o
CC kernel/irq/handle.o
CC arch/x86/mm/pgtable.o
CC kernel/irq/manage.o
CC drivers/pci/pcie/bwctrl.o
CC crypto/scatterwalk.o
CC crypto/proc.o
CC arch/x86/lib/inat.o
CC kernel/locking/rwsem.o
CC lib/crypto/mpi/mpi-add.o
CC arch/x86/kernel/cpu/mtrr/amd.o
CC mm/page-writeback.o
CC security/keys/request_key_auth.o
CC drivers/pnp/pnpacpi/rsparser.o
CC fs/fat/cache.o
AR arch/x86/lib/built-in.a
AR arch/x86/lib/lib.a
CC sound/core/seq/seq_dummy.o
CC kernel/irq/spurious.o
CC arch/x86/kernel/cpu/mce/amd.o
AR fs/notify/built-in.a
CC drivers/acpi/acpica/dsdebug.o
CC io_uring/filetable.o
CC net/netlink/genetlink.o
CC arch/x86/kernel/acpi/cstate.o
CC fs/ext4/dir.o
CC security/selinux/selinuxfs.o
CC arch/x86/events/intel/ds.o
CC ipc/mq_sysctl.o
CC arch/x86/mm/physaddr.o
AR fs/iomap/built-in.a
CC sound/core/control.o
CC arch/x86/kernel/apic/apic.o
CC arch/x86/kernel/cpu/mce/threshold.o
CC lib/crypto/mpi/mpi-bit.o
CC arch/x86/pci/legacy.o
CC security/keys/user_defined.o
CC io_uring/rw.o
CC drivers/pci/pcie/aspm.o
CC security/selinux/netlink.o
CC fs/jbd2/revoke.o
CC drivers/acpi/acpica/dsfield.o
CC arch/x86/kernel/cpu/scattered.o
CC arch/x86/events/probe.o
CC block/blk-flush.o
CC crypto/aead.o
CC arch/x86/kernel/cpu/mtrr/cyrix.o
AR fs/quota/built-in.a
CC sound/core/misc.o
CC arch/x86/events/intel/knc.o
CC kernel/irq/resend.o
CC fs/ext4/ext4_jbd2.o
AR arch/x86/kernel/cpu/microcode/built-in.a
CC io_uring/net.o
CC arch/x86/kernel/apic/apic_common.o
AR ipc/built-in.a
CC fs/proc/fd.o
CC fs/isofs/namei.o
AR sound/core/seq/built-in.a
CC kernel/printk/printk_safe.o
AR arch/x86/kernel/acpi/built-in.a
CC fs/jbd2/journal.o
CC drivers/pnp/driver.o
CC net/sched/cls_api.o
CC fs/nfs/client.o
CC kernel/power/console.o
CC kernel/locking/percpu-rwsem.o
CC arch/x86/mm/tlb.o
CC fs/fat/dir.o
CC security/keys/proc.o
CC fs/netfs/misc.o
CC arch/x86/kernel/apic/apic_noop.o
CC drivers/pnp/resource.o
CC drivers/acpi/acpica/dsinit.o
AR drivers/pnp/pnpacpi/built-in.a
CC drivers/acpi/acpica/dsmethod.o
CC drivers/acpi/acpica/dsmthdat.o
CC arch/x86/mm/cpu_entry_area.o
CC lib/crypto/mpi/mpi-cmp.o
CC mm/folio-compat.o
CC net/netfilter/core.o
CC arch/x86/pci/irq.o
CC net/ethtool/common.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
CC crypto/geniv.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
CC kernel/irq/chip.o
CC kernel/printk/nbcon.o
CC net/ipv4/route.o
CC lib/crypto/aes.o
CC block/blk-settings.o
CC fs/exportfs/expfs.o
CC arch/x86/kernel/apic/ipi.o
CC fs/isofs/inode.o
CC arch/x86/kernel/kprobes/core.o
CC sound/core/device.o
CC kernel/rcu/update.o
CC drivers/pci/pcie/pme.o
CC drivers/acpi/acpica/dsobject.o
CC kernel/locking/spinlock.o
CC kernel/power/process.o
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC fs/proc/proc_tty.o
CC security/keys/sysctl.o
CC lib/crypto/mpi/mpi-sub-ui.o
AR arch/x86/kernel/cpu/mce/built-in.a
CC fs/fat/fatent.o
CC fs/netfs/objects.o
CC arch/x86/kernel/cpu/mtrr/legacy.o
CC net/ethtool/netlink.o
CC net/core/stream.o
CC fs/ext4/extents.o
CC kernel/locking/osq_lock.o
CC mm/readahead.o
CC drivers/acpi/acpica/dsopcode.o
CC arch/x86/pci/common.o
CC sound/core/info.o
CC drivers/pnp/manager.o
CC lib/crypto/mpi/mpi-div.o
AR drivers/clk/actions/built-in.a
CC arch/x86/pci/early.o
AR drivers/clk/analogbits/built-in.a
CC security/selinux/nlmsgtab.o
AR drivers/clk/bcm/built-in.a
AR drivers/clk/imgtec/built-in.a
CC arch/x86/mm/maccess.o
CC kernel/printk/printk_ringbuffer.o
AR drivers/clk/imx/built-in.a
AR drivers/clk/ingenic/built-in.a
AR fs/exportfs/built-in.a
AR drivers/clk/mediatek/built-in.a
AR drivers/clk/microchip/built-in.a
CC kernel/rcu/sync.o
AR drivers/clk/mstar/built-in.a
CC net/netlink/policy.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
AR drivers/clk/mvebu/built-in.a
CC arch/x86/events/intel/lbr.o
CC arch/x86/kernel/cpu/topology_common.o
AR drivers/clk/ralink/built-in.a
CC kernel/locking/qspinlock.o
AR drivers/clk/renesas/built-in.a
CC crypto/lskcipher.o
CC security/keys/keyctl_pkey.o
AR drivers/clk/socfpga/built-in.a
AR drivers/clk/sophgo/built-in.a
AR drivers/clk/sprd/built-in.a
CC fs/nfs/dir.o
CC fs/proc/cmdline.o
AR drivers/clk/starfive/built-in.a
CC arch/x86/kernel/apic/vector.o
AR drivers/clk/sunxi-ng/built-in.a
AR drivers/clk/ti/built-in.a
AR drivers/clk/versatile/built-in.a
AR drivers/pci/pcie/built-in.a
AR drivers/clk/xilinx/built-in.a
AR drivers/clk/built-in.a
CC drivers/pci/hotplug/pci_hotplug_core.o
CC kernel/irq/dummychip.o
CC lib/lz4/lz4_decompress.o
CC block/blk-ioc.o
CC block/blk-map.o
CC fs/fat/file.o
CC arch/x86/mm/pgprot.o
AR sound/isa/ad1816a/built-in.a
AR sound/isa/ad1848/built-in.a
AR sound/isa/cs423x/built-in.a
CC lib/zstd/zstd_decompress_module.o
CC arch/x86/events/utils.o
CC drivers/acpi/acpica/dspkginit.o
AR sound/isa/es1688/built-in.a
AR sound/isa/galaxy/built-in.a
AR sound/isa/gus/built-in.a
CC arch/x86/kernel/kprobes/opt.o
CC block/blk-merge.o
AR sound/isa/msnd/built-in.a
AR sound/isa/opti9xx/built-in.a
AR sound/isa/sb/built-in.a
CC lib/xz/xz_dec_syms.o
AR sound/isa/wavefront/built-in.a
AR sound/isa/wss/built-in.a
CC lib/crypto/arc4.o
AR sound/isa/built-in.a
CC net/core/scm.o
CC net/core/gen_stats.o
CC kernel/irq/devres.o
CC drivers/pnp/support.o
CC net/netfilter/nf_log.o
CC io_uring/poll.o
CC kernel/locking/rtmutex_api.o
CC arch/x86/kernel/cpu/topology_ext.o
CC lib/crypto/mpi/mpi-mod.o
AR drivers/pci/controller/dwc/built-in.a
CC kernel/power/suspend.o
CC fs/isofs/dir.o
AR drivers/pci/controller/mobiveil/built-in.a
AR drivers/pci/controller/plda/built-in.a
AR drivers/pci/controller/built-in.a
CC fs/netfs/read_collect.o
CC fs/proc/consoles.o
CC lib/dim/dim.o
CC net/ethtool/bitset.o
CC lib/zstd/decompress/huf_decompress.o
CC arch/x86/pci/bus_numa.o
CC lib/xz/xz_dec_stream.o
AR security/keys/built-in.a
CC kernel/printk/sysctl.o
CC drivers/acpi/acpica/dsutils.o
CC kernel/irq/autoprobe.o
CC sound/core/isadma.o
CC arch/x86/mm/pgtable_32.o
CC net/ipv4/netfilter/ip_tables.o
CC crypto/skcipher.o
CC drivers/acpi/acpica/dswexec.o
CC mm/swap.o
CC security/selinux/netif.o
CC io_uring/eventfd.o
CC fs/isofs/util.o
AR net/netlink/built-in.a
CC arch/x86/kernel/cpu/topology_amd.o
CC lib/crypto/gf128mul.o
CC drivers/acpi/dptf/int340x_thermal.o
CC drivers/pci/hotplug/acpi_pcihp.o
CC kernel/irq/irqdomain.o
CC drivers/pnp/interface.o
CC kernel/rcu/srcutree.o
CC lib/dim/net_dim.o
AR kernel/printk/built-in.a
CC sound/core/vmaster.o
CC arch/x86/mm/iomap_32.o
CC lib/crypto/mpi/mpi-mul.o
CC kernel/locking/qrwlock.o
AR arch/x86/kernel/kprobes/built-in.a
CC block/blk-timeout.o
AR fs/jbd2/built-in.a
CC kernel/power/hibernate.o
CC fs/proc/cpuinfo.o
CC arch/x86/kernel/apic/init.o
AR sound/pci/ac97/built-in.a
CC lib/crypto/mpi/mpih-cmp.o
CC lib/xz/xz_dec_lzma2.o
AR sound/pci/ali5451/built-in.a
CC fs/fat/inode.o
AR sound/pci/asihpi/built-in.a
CC drivers/acpi/acpica/dswload.o
AR sound/pci/au88x0/built-in.a
AR sound/pci/aw2/built-in.a
AR sound/pci/ctxfi/built-in.a
AR sound/pci/ca0106/built-in.a
AR sound/pci/cs46xx/built-in.a
AR sound/pci/cs5535audio/built-in.a
CC net/sched/act_api.o
CC arch/x86/pci/amd_bus.o
CC fs/fat/misc.o
AR sound/pci/lola/built-in.a
AR sound/pci/lx6464es/built-in.a
AR sound/pci/echoaudio/built-in.a
AR sound/pci/emu10k1/built-in.a
CC arch/x86/events/intel/p4.o
CC sound/pci/hda/hda_bind.o
AR drivers/acpi/dptf/built-in.a
CC arch/x86/kernel/cpu/common.o
CC fs/nfs/file.o
CC lib/fonts/fonts.o
CC block/blk-lib.o
AR lib/lz4/built-in.a
CC fs/ext4/extents_status.o
CC io_uring/uring_cmd.o
CC fs/isofs/rock.o
CC net/core/gen_estimator.o
CC arch/x86/events/rapl.o
AR kernel/locking/built-in.a
CC net/ipv4/inetpeer.o
CC fs/lockd/clntlock.o
CC sound/core/ctljack.o
CC net/netfilter/nf_queue.o
AR sound/pci/ice1712/built-in.a
CC arch/x86/kernel/apic/hw_nmi.o
CC arch/x86/mm/hugetlbpage.o
CC drivers/acpi/acpica/dswload2.o
CC drivers/acpi/acpica/dswscope.o
CC drivers/pnp/quirks.o
CC net/sched/sch_fifo.o
AR drivers/pci/hotplug/built-in.a
CC fs/fat/nfs.o
AR drivers/pci/switch/built-in.a
CC drivers/pci/access.o
CC fs/proc/devices.o
CC lib/crypto/mpi/mpih-div.o
CC fs/netfs/read_pgpriv2.o
CC fs/isofs/export.o
CC lib/fonts/font_8x16.o
CC arch/x86/events/intel/p6.o
CC net/ethtool/strset.o
CC lib/xz/xz_dec_bcj.o
CC crypto/seqiv.o
CC lib/zstd/decompress/zstd_ddict.o
CC fs/ext4/file.o
CC lib/zstd/decompress/zstd_decompress.o
CC sound/core/jack.o
CC lib/dim/rdma_dim.o
CC security/selinux/netnode.o
CC net/ethtool/linkinfo.o
CC drivers/acpi/acpica/dswstate.o
AR arch/x86/pci/built-in.a
CC fs/nfs/getroot.o
CC sound/core/hwdep.o
CC sound/core/timer.o
CC sound/pci/hda/hda_codec.o
CC kernel/irq/proc.o
CC kernel/irq/migration.o
AR lib/fonts/built-in.a
CC sound/core/hrtimer.o
CC mm/truncate.o
CC kernel/rcu/tree.o
CC arch/x86/kernel/apic/io_apic.o
CC block/blk-mq.o
CC arch/x86/mm/dump_pagetables.o
CC net/ipv4/netfilter/iptable_filter.o
CC fs/proc/interrupts.o
AR lib/dim/built-in.a
CC fs/nls/nls_base.o
AR lib/xz/built-in.a
CC drivers/pnp/system.o
AR fs/unicode/built-in.a
CC arch/x86/kernel/apic/msi.o
CC arch/x86/kernel/cpu/rdrand.o
CC fs/autofs/init.o
CC fs/isofs/joliet.o
CC fs/nls/nls_cp437.o
CC kernel/power/snapshot.o
CC net/xfrm/xfrm_policy.o
CC drivers/acpi/acpica/evevent.o
CC fs/lockd/clntproc.o
CC net/core/net_namespace.o
CC drivers/pci/bus.o
CC crypto/echainiv.o
CC net/core/secure_seq.o
CC fs/fat/namei_vfat.o
CC arch/x86/events/intel/pt.o
AR sound/ppc/built-in.a
CC arch/x86/events/msr.o
CC lib/crypto/mpi/mpih-mul.o
CC fs/netfs/read_retry.o
AR sound/pci/korg1212/built-in.a
CC drivers/acpi/acpica/evgpe.o
CC io_uring/openclose.o
CC arch/x86/kernel/apic/probe_32.o
CC lib/zstd/decompress/zstd_decompress_block.o
CC mm/vmscan.o
CC drivers/acpi/x86/apple.o
CC kernel/irq/cpuhotplug.o
CC net/netfilter/nf_sockopt.o
CC net/netfilter/utils.o
CC fs/proc/loadavg.o
AR kernel/livepatch/built-in.a
CC arch/x86/kernel/cpu/match.o
CC fs/nfs/inode.o
CC fs/nls/nls_ascii.o
CC fs/ext4/fsmap.o
AR drivers/pnp/built-in.a
CC lib/argv_split.o
CC net/ipv4/protocol.o
CC net/ethtool/linkmodes.o
CC fs/lockd/clntxdr.o
CC arch/x86/mm/highmem_32.o
CC fs/autofs/inode.o
CC net/sched/cls_cgroup.o
CC fs/isofs/compress.o
CC fs/autofs/root.o
CC drivers/acpi/acpica/evgpeblk.o
CC security/selinux/netport.o
CC drivers/acpi/x86/cmos_rtc.o
CC drivers/acpi/x86/lpss.o
CC kernel/dma/mapping.o
CC crypto/ahash.o
CC kernel/entry/common.o
CC fs/nls/nls_iso8859-1.o
CC block/blk-mq-tag.o
CC arch/x86/kernel/cpu/bugs.o
CC drivers/pci/probe.o
CC fs/proc/meminfo.o
CC fs/autofs/symlink.o
CC lib/crypto/mpi/mpi-pow.o
CC fs/autofs/waitq.o
CC net/ipv4/netfilter/iptable_mangle.o
CC kernel/entry/syscall_user_dispatch.o
CC sound/core/pcm.o
CC kernel/irq/pm.o
CC drivers/acpi/acpica/evgpeinit.o
CC io_uring/sqpoll.o
CC fs/nls/nls_utf8.o
CC fs/netfs/write_collect.o
CC kernel/dma/direct.o
AR arch/x86/mm/built-in.a
CC net/netfilter/nfnetlink.o
CC net/core/flow_dissector.o
CC fs/lockd/host.o
CC fs/proc/stat.o
CC fs/fat/namei_msdos.o
CC drivers/acpi/tables.o
CC arch/x86/events/intel/uncore.o
CC fs/proc/uptime.o
CC drivers/acpi/x86/s2idle.o
CC fs/proc/util.o
CC drivers/acpi/acpica/evgpeutil.o
AR fs/isofs/built-in.a
AR arch/x86/kernel/apic/built-in.a
AR fs/nls/built-in.a
CC fs/proc/version.o
LDS arch/x86/kernel/vmlinux.lds
CC arch/x86/kernel/cpu/aperfmperf.o
CC net/ethtool/rss.o
CC sound/pci/hda/hda_jack.o
CC kernel/rcu/rcu_segcblist.o
AR sound/pci/mixart/built-in.a
CC net/ipv4/netfilter/ipt_REJECT.o
CC kernel/dma/ops_helpers.o
CC lib/crypto/blake2s.o
CC kernel/module/main.o
CC fs/proc/softirqs.o
CC drivers/acpi/osi.o
CC block/blk-stat.o
CC lib/crypto/mpi/mpiutil.o
CC kernel/power/swap.o
CC net/sched/ematch.o
CC crypto/shash.o
CC security/selinux/status.o
AR kernel/entry/built-in.a
CC fs/autofs/expire.o
CC drivers/acpi/acpica/evglock.o
CC kernel/irq/msi.o
CC block/blk-mq-sysfs.o
CC kernel/power/user.o
AR sound/pci/nm256/built-in.a
CC fs/proc/namespaces.o
CC fs/lockd/svc.o
CC arch/x86/events/intel/uncore_nhmex.o
CC arch/x86/events/intel/uncore_snb.o
CC net/ipv4/ip_input.o
CC sound/core/pcm_native.o
CC fs/autofs/dev-ioctl.o
CC fs/ext4/fsync.o
CC net/unix/af_unix.o
CC arch/x86/kernel/cpu/cpuid-deps.o
CC crypto/akcipher.o
CC fs/lockd/svclock.o
AR sound/pci/oxygen/built-in.a
CC drivers/acpi/acpica/evhandler.o
CC security/selinux/ss/ebitmap.o
AR sound/pci/pcxhr/built-in.a
CC lib/zstd/zstd_common_module.o
CC net/ipv6/netfilter/ip6_tables.o
AR lib/crypto/mpi/built-in.a
CC lib/crypto/blake2s-generic.o
CC crypto/sig.o
AR fs/fat/built-in.a
CC arch/x86/kernel/cpu/umwait.o
CC drivers/acpi/x86/utils.o
CC net/ipv6/netfilter/ip6table_filter.o
CC lib/bug.o
CC net/netfilter/nfnetlink_log.o
AR sound/arm/built-in.a
CC sound/pci/hda/hda_auto_parser.o
CC drivers/pci/host-bridge.o
CC fs/netfs/write_issue.o
CC fs/proc/self.o
CC [M] net/ipv4/netfilter/iptable_nat.o
CC net/xfrm/xfrm_state.o
CC net/ethtool/linkstate.o
CC drivers/acpi/acpica/evmisc.o
CC drivers/acpi/osl.o
CC security/selinux/ss/hashtab.o
CC mm/shrinker.o
CC lib/zstd/common/debug.o
CC sound/pci/hda/hda_sysfs.o
CC io_uring/xattr.o
CC lib/zstd/common/entropy_common.o
CC drivers/acpi/x86/blacklist.o
CC fs/nfs/super.o
CC lib/crypto/sha1.o
AR net/sched/built-in.a
CC security/selinux/ss/symtab.o
CC lib/zstd/common/error_private.o
CC net/ipv6/netfilter/ip6table_mangle.o
CC lib/zstd/common/fse_decompress.o
CC kernel/dma/remap.o
CC kernel/irq/affinity.o
AR fs/autofs/built-in.a
AR sound/sh/built-in.a
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
CC drivers/acpi/acpica/evregion.o
MKCAP arch/x86/kernel/cpu/capflags.c
CC arch/x86/kernel/cpu/powerflags.o
CC drivers/acpi/utils.o
CC net/ipv4/ip_fragment.o
CC lib/zstd/common/zstd_common.o
CC kernel/power/poweroff.o
CC lib/buildid.o
CC fs/proc/thread_self.o
CC kernel/time/time.o
CC fs/nfs/io.o
CC net/core/sysctl_net_core.o
CC crypto/kpp.o
CC net/netfilter/nf_conntrack_core.o
CC arch/x86/events/intel/uncore_snbep.o
CC kernel/module/strict_rwx.o
CC kernel/module/kmod.o
CC drivers/pci/remove.o
CC block/blk-mq-cpumap.o
AR drivers/acpi/x86/built-in.a
CC kernel/module/tree_lookup.o
CC lib/crypto/sha256.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
AR kernel/power/built-in.a
CC net/xfrm/xfrm_hash.o
CC net/xfrm/xfrm_input.o
CC net/unix/garbage.o
AR lib/zstd/built-in.a
CC kernel/irq/matrix.o
CC security/selinux/ss/sidtab.o
CC fs/proc/proc_sysctl.o
CC net/packet/af_packet.o
CC net/xfrm/xfrm_output.o
CC drivers/acpi/acpica/evrgnini.o
CC mm/shmem.o
AR kernel/dma/built-in.a
CC arch/x86/events/intel/uncore_discovery.o
CC fs/lockd/svcshare.o
CC io_uring/nop.o
CC sound/core/pcm_lib.o
CC net/ethtool/debug.o
CC sound/pci/hda/hda_controller.o
AR net/ipv4/netfilter/built-in.a
CC net/netfilter/nf_conntrack_standalone.o
AR sound/pci/riptide/built-in.a
CC net/unix/sysctl_net_unix.o
CC fs/ext4/hash.o
AR fs/netfs/built-in.a
CC io_uring/fs.o
CC arch/x86/kernel/cpu/topology.o
CC net/core/dev.o
AR lib/crypto/built-in.a
CC drivers/pci/pci.o
CC block/blk-mq-sched.o
CC drivers/dma/dw/core.o
ASN.1 crypto/rsapubkey.asn1.[ch]
CC drivers/dma/dw/dw.o
CC net/ipv6/af_inet6.o
CC net/ethtool/wol.o
CC lib/clz_tab.o
AR kernel/rcu/built-in.a
CC lib/cmdline.o
AR drivers/soc/apple/built-in.a
AR drivers/soc/aspeed/built-in.a
CC drivers/acpi/acpica/evsci.o
AR drivers/soc/bcm/built-in.a
CC fs/9p/vfs_super.o
AR drivers/soc/fsl/built-in.a
AR drivers/soc/fujitsu/built-in.a
ASN.1 crypto/rsaprivkey.asn1.[ch]
AR drivers/soc/hisilicon/built-in.a
CC crypto/rsa.o
CC arch/x86/kernel/cpu/proc.o
AR drivers/soc/imx/built-in.a
CC kernel/module/kallsyms.o
AR drivers/soc/ixp4xx/built-in.a
AR drivers/soc/loongson/built-in.a
AR drivers/soc/mediatek/built-in.a
CC net/core/dev_addr_lists.o
CC lib/cpumask.o
AR drivers/soc/microchip/built-in.a
AR drivers/soc/nuvoton/built-in.a
AR drivers/soc/pxa/built-in.a
AR drivers/soc/amlogic/built-in.a
AR drivers/soc/qcom/built-in.a
AR drivers/soc/renesas/built-in.a
AR sound/pci/rme9652/built-in.a
AR drivers/soc/rockchip/built-in.a
CC net/core/dst.o
CC kernel/time/timer.o
AR drivers/soc/sunxi/built-in.a
AR drivers/soc/ti/built-in.a
AR drivers/soc/versatile/built-in.a
AR drivers/soc/xilinx/built-in.a
AR drivers/soc/built-in.a
CC kernel/futex/core.o
CC net/xfrm/xfrm_sysctl.o
CC fs/nfs/direct.o
CC kernel/module/procfs.o
CC drivers/acpi/acpica/evxface.o
CC net/ipv4/ip_forward.o
CC sound/pci/hda/hda_proc.o
AS arch/x86/kernel/head_32.o
CC drivers/dma/dw/idma32.o
CC fs/proc/proc_net.o
CC drivers/virtio/virtio.o
CC drivers/tty/vt/vt_ioctl.o
CC net/ipv6/anycast.o
CC fs/ext4/ialloc.o
CC arch/x86/kernel/head32.o
CC drivers/tty/hvc/hvc_console.o
CC net/xfrm/xfrm_replay.o
CC fs/lockd/svcproc.o
CC crypto/rsa_helper.o
CC net/xfrm/xfrm_device.o
AR net/unix/built-in.a
CC net/ethtool/features.o
CC lib/ctype.o
CC io_uring/splice.o
CC fs/9p/vfs_inode.o
CC lib/dec_and_lock.o
AR kernel/irq/built-in.a
CC io_uring/sync.o
CC security/selinux/ss/avtab.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC drivers/acpi/acpica/evxfevnt.o
CC block/ioctl.o
CC kernel/cgroup/cgroup.o
CC drivers/tty/vt/vc_screen.o
CC io_uring/msg_ring.o
CC lib/decompress.o
CC kernel/module/sysfs.o
CC drivers/acpi/acpica/evxfgpe.o
CC lib/decompress_bunzip2.o
CC fs/lockd/svcsubs.o
CC crypto/rsa-pkcs1pad.o
AR sound/synth/emux/built-in.a
AR sound/synth/built-in.a
CC drivers/tty/vt/selection.o
CC kernel/futex/syscalls.o
CC fs/ext4/indirect.o
CC drivers/dma/dw/acpi.o
CC drivers/dma/hsu/hsu.o
CC lib/decompress_inflate.o
CC sound/core/pcm_misc.o
CC sound/core/pcm_memory.o
CC drivers/virtio/virtio_ring.o
CC arch/x86/kernel/cpu/feat_ctl.o
CC fs/proc/kcore.o
CC arch/x86/events/intel/cstate.o
CC block/genhd.o
CC net/netfilter/nf_conntrack_expect.o
CC drivers/acpi/acpica/evxfregn.o
CC sound/pci/hda/hda_hwdep.o
CC drivers/acpi/acpica/exconcat.o
AR drivers/tty/hvc/built-in.a
CC sound/core/memalloc.o
CC net/netfilter/nf_conntrack_helper.o
CC sound/core/pcm_timer.o
CC net/netfilter/nf_conntrack_proto.o
CC net/core/netevent.o
AR kernel/module/built-in.a
CC arch/x86/kernel/ebda.o
CC fs/nfs/pagelist.o
CC net/ethtool/privflags.o
CC kernel/time/hrtimer.o
CC net/ipv4/ip_options.o
CC kernel/time/sleep_timeout.o
CC crypto/rsassa-pkcs1.o
CC net/netfilter/nf_conntrack_proto_generic.o
CC lib/decompress_unlz4.o
CC fs/proc/vmcore.o
CC io_uring/advise.o
CC net/ipv4/ip_output.o
AR drivers/dma/dw/built-in.a
CC drivers/tty/vt/keyboard.o
CC fs/9p/vfs_inode_dotl.o
CC kernel/futex/pi.o
CC net/core/neighbour.o
CC crypto/acompress.o
CC net/xfrm/xfrm_nat_keepalive.o
CC security/selinux/ss/policydb.o
CC drivers/acpi/acpica/exconfig.o
AR drivers/dma/idxd/built-in.a
CC fs/proc/kmsg.o
CC net/ipv4/ip_sockglue.o
CC net/ipv6/ip6_output.o
CC net/ipv4/inet_hashtables.o
CC lib/decompress_unlzma.o
CC mm/util.o
AR drivers/dma/hsu/built-in.a
AR drivers/dma/amd/built-in.a
AR drivers/dma/mediatek/built-in.a
AR drivers/dma/qcom/built-in.a
AR drivers/dma/stm32/built-in.a
CC net/ipv6/netfilter/ip6t_REJECT.o
AR drivers/dma/ti/built-in.a
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC fs/lockd/mon.o
CC kernel/futex/requeue.o
CC sound/pci/hda/hda_intel.o
AR arch/x86/events/intel/built-in.a
CC drivers/char/hw_random/core.o
AR arch/x86/events/built-in.a
CC drivers/char/agp/backend.o
CC drivers/char/hw_random/intel-rng.o
CC fs/proc/page.o
CC block/ioprio.o
CC drivers/acpi/acpica/exconvrt.o
CC drivers/char/mem.o
CC net/ethtool/rings.o
CC sound/core/seq_device.o
AR sound/usb/misc/built-in.a
AR sound/usb/usx2y/built-in.a
AR drivers/iommu/amd/built-in.a
AR sound/usb/caiaq/built-in.a
AR drivers/iommu/intel/built-in.a
AR sound/usb/6fire/built-in.a
AR sound/usb/hiface/built-in.a
AR drivers/iommu/arm/arm-smmu/built-in.a
AR sound/usb/bcd2000/built-in.a
AR drivers/iommu/arm/arm-smmu-v3/built-in.a
AR sound/usb/built-in.a
AR drivers/iommu/arm/built-in.a
AR drivers/iommu/iommufd/built-in.a
AR drivers/iommu/riscv/built-in.a
CC lib/decompress_unlzo.o
CC drivers/iommu/iommu.o
AR drivers/gpu/host1x/built-in.a
CC io_uring/epoll.o
AR drivers/gpu/vga/built-in.a
AR net/packet/built-in.a
CC arch/x86/kernel/platform-quirks.o
CC drivers/connector/cn_queue.o
CC crypto/scompress.o
AR sound/firewire/built-in.a
CC drivers/virtio/virtio_anchor.o
CC drivers/pci/pci-driver.o
AR drivers/gpu/drm/tests/built-in.a
AR drivers/gpu/drm/arm/built-in.a
AR drivers/gpu/drm/clients/built-in.a
CC drivers/char/random.o
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC drivers/acpi/acpica/excreate.o
CC drivers/connector/connector.o
CC fs/9p/vfs_addr.o
CC drivers/pci/search.o
CC drivers/base/power/sysfs.o
AR fs/hostfs/built-in.a
CC arch/x86/kernel/cpu/intel.o
CC drivers/tty/serial/8250/8250_core.o
CC kernel/futex/waitwake.o
CC drivers/char/agp/generic.o
CC kernel/trace/trace_clock.o
CC net/netfilter/nf_conntrack_proto_tcp.o
CC net/xfrm/xfrm_algo.o
CC fs/ext4/inline.o
CC drivers/char/hw_random/amd-rng.o
AR sound/core/built-in.a
CC drivers/base/power/generic_ops.o
CC kernel/trace/ring_buffer.o
CC mm/mmzone.o
AR fs/proc/built-in.a
CC drivers/block/loop.o
CC drivers/misc/eeprom/eeprom_93cx6.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CC lib/decompress_unxz.o
CC kernel/time/timekeeping.o
CC block/badblocks.o
CC drivers/tty/vt/vt.o
CC drivers/dma/virt-dma.o
CC drivers/acpi/acpica/exdebug.o
AR net/ipv6/netfilter/built-in.a
CC drivers/virtio/virtio_pci_modern_dev.o
CC fs/lockd/trace.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC drivers/gpu/drm/i915/i915_config.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
AR drivers/gpu/drm/renesas/rz-du/built-in.a
AR drivers/gpu/drm/renesas/built-in.a
CC drivers/base/power/common.o
CC drivers/gpu/drm/display/drm_dp_helper.o
CC io_uring/statx.o
CC drivers/char/agp/isoch.o
CC net/ethtool/channels.o
CC drivers/acpi/acpica/exdump.o
CC fs/nfs/read.o
CC crypto/algboss.o
AR drivers/misc/eeprom/built-in.a
CC drivers/tty/serial/serial_core.o
AR drivers/misc/cb710/built-in.a
AR drivers/misc/lis3lv02d/built-in.a
CC net/xfrm/xfrm_user.o
CC drivers/dma/acpi-dma.o
CC drivers/gpu/drm/i915/i915_driver.o
AR drivers/misc/cardreader/built-in.a
CC mm/vmstat.o
CC fs/9p/vfs_file.o
AR drivers/misc/keba/built-in.a
AR drivers/misc/built-in.a
AR kernel/futex/built-in.a
CC drivers/pci/rom.o
CC lib/decompress_unzstd.o
AR drivers/mfd/built-in.a
CC block/blk-rq-qos.o
AR sound/pci/hda/built-in.a
AR sound/pci/trident/built-in.a
CC drivers/char/hw_random/geode-rng.o
AR sound/pci/ymfpci/built-in.a
AR sound/pci/vx222/built-in.a
AR sound/pci/built-in.a
AR sound/sparc/built-in.a
AR sound/spi/built-in.a
CC drivers/connector/cn_proc.o
AR sound/parisc/built-in.a
AR sound/pcmcia/vx/built-in.a
CC drivers/tty/serial/8250/8250_platform.o
AR sound/mips/built-in.a
AR sound/pcmcia/pdaudiocf/built-in.a
CC net/netfilter/nf_conntrack_proto_udp.o
CC drivers/acpi/reboot.o
AR sound/pcmcia/built-in.a
CC drivers/acpi/acpica/exfield.o
AR sound/soc/built-in.a
AR sound/atmel/built-in.a
COPY drivers/tty/vt/defkeymap.c
CC net/netfilter/nf_conntrack_proto_icmp.o
CC sound/hda/hda_bus_type.o
CC drivers/tty/vt/consolemap.o
CC drivers/base/power/qos.o
CC net/ipv4/inet_timewait_sock.o
CC arch/x86/kernel/cpu/tsx.o
CC drivers/char/agp/amd64-agp.o
CC drivers/char/hw_random/via-rng.o
CC drivers/tty/serial/8250/8250_pnp.o
CC kernel/bpf/core.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC fs/nfs/symlink.o
CC drivers/gpu/drm/ttm/ttm_bo.o
CC arch/x86/kernel/process_32.o
CC io_uring/timeout.o
CC security/selinux/ss/services.o
CC lib/dump_stack.o
CC drivers/acpi/acpica/exfldio.o
CC drivers/pci/setup-res.o
AR drivers/dma/built-in.a
CC net/netfilter/nf_conntrack_extend.o
CC drivers/acpi/acpica/exmisc.o
CC drivers/iommu/iommu-traces.o
CC fs/lockd/xdr.o
AR drivers/char/hw_random/built-in.a
CC arch/x86/kernel/cpu/intel_epb.o
CC fs/9p/vfs_dir.o
CC arch/x86/kernel/cpu/amd.o
CC net/ipv4/inet_connection_sock.o
CC block/disk-events.o
CC crypto/testmgr.o
CC block/blk-ia-ranges.o
CC drivers/block/virtio_blk.o
CC sound/hda/hdac_bus.o
CC net/ethtool/coalesce.o
CC net/ipv6/ip6_input.o
CC kernel/cgroup/rstat.o
CC fs/ext4/inode.o
CC drivers/char/misc.o
CC drivers/tty/serial/8250/8250_rsa.o
CC net/ipv6/addrconf.o
CC drivers/virtio/virtio_pci_modern.o
CC drivers/acpi/acpica/exmutex.o
CC drivers/char/agp/intel-agp.o
CC kernel/time/ntp.o
CC fs/debugfs/inode.o
CC drivers/gpu/drm/i915/i915_drm_client.o
CC lib/earlycpio.o
CC lib/extable.o
AR drivers/connector/built-in.a
CC drivers/base/firmware_loader/builtin/main.o
CC drivers/base/regmap/regmap.o
CC kernel/time/clocksource.o
CC mm/backing-dev.o
CC fs/9p/vfs_dentry.o
CC drivers/pci/irq.o
CC crypto/cmac.o
CC drivers/pci/vpd.o
CC drivers/base/power/runtime.o
CC drivers/base/power/wakeirq.o
CC fs/lockd/clnt4xdr.o
AR sound/x86/built-in.a
CC fs/lockd/xdr4.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
CC drivers/acpi/acpica/exnames.o
CC drivers/acpi/acpica/exoparg1.o
CC fs/lockd/svc4proc.o
CC kernel/trace/trace.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC drivers/base/firmware_loader/main.o
CC block/early-lookup.o
CC block/bounce.o
CC lib/flex_proportions.o
CC io_uring/fdinfo.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
CC sound/hda/hdac_device.o
CC drivers/tty/serial/8250/8250_port.o
CC drivers/iommu/iommu-sysfs.o
CC arch/x86/kernel/cpu/hygon.o
CC net/netfilter/nf_conntrack_acct.o
CC fs/nfs/unlink.o
HOSTCC drivers/tty/vt/conmakehash
CC lib/idr.o
CC drivers/char/agp/intel-gtt.o
CC crypto/hmac.o
CC drivers/base/regmap/regcache.o
CC net/ethtool/pause.o
CC fs/ext4/ioctl.o
CC fs/ext4/mballoc.o
CC drivers/virtio/virtio_pci_common.o
CC drivers/acpi/acpica/exoparg2.o
CC fs/9p/v9fs.o
AR drivers/block/built-in.a
CC drivers/tty/serial/serial_base_bus.o
CC kernel/cgroup/namespace.o
AR drivers/base/test/built-in.a
CC fs/debugfs/file.o
CC kernel/time/jiffies.o
CC drivers/tty/vt/defkeymap.o
CC kernel/time/timer_list.o
CC drivers/virtio/virtio_pci_legacy.o
CC block/bsg.o
CC arch/x86/kernel/cpu/centaur.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC drivers/pci/setup-bus.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC mm/mm_init.o
AR drivers/tty/vt/built-in.a
AR drivers/tty/ipwireless/built-in.a
CC net/ipv4/tcp.o
CC lib/iomem_copy.o
CC drivers/iommu/dma-iommu.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
AR net/xfrm/built-in.a
CC drivers/acpi/acpica/exoparg3.o
CC drivers/gpu/drm/ttm/ttm_module.o
CC arch/x86/kernel/signal.o
CC lib/irq_regs.o
CC fs/9p/fid.o
CC drivers/base/power/main.o
CC fs/ext4/migrate.o
CC security/selinux/ss/conditional.o
CC io_uring/cancel.o
AR drivers/base/firmware_loader/built-in.a
CC drivers/iommu/iova.o
CC fs/9p/xattr.o
CC crypto/crypto_null.o
CC lib/is_single_threaded.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC mm/percpu.o
CC net/ethtool/eee.o
CC sound/hda/hdac_sysfs.o
CC kernel/trace/trace_output.o
CC arch/x86/kernel/cpu/transmeta.o
CC fs/lockd/procfs.o
CC block/blk-cgroup.o
CC net/netfilter/nf_conntrack_seqadj.o
CC kernel/cgroup/cgroup-v1.o
CC drivers/pci/vc.o
CC drivers/acpi/acpica/exoparg6.o
CC kernel/time/timeconv.o
CC drivers/acpi/acpica/exprep.o
CC crypto/md5.o
CC drivers/virtio/virtio_pci_admin_legacy_io.o
AR drivers/char/agp/built-in.a
CC drivers/char/virtio_console.o
CC net/ipv4/tcp_input.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC kernel/trace/trace_seq.o
CC lib/klist.o
AR kernel/bpf/built-in.a
CC drivers/tty/serial/8250/8250_dma.o
AR drivers/nfc/built-in.a
CC drivers/tty/tty_io.o
CC fs/nfs/write.o
CC drivers/acpi/acpica/exregion.o
CC drivers/acpi/nvs.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC kernel/time/timecounter.o
CC drivers/char/hpet.o
AR net/dsa/built-in.a
AR fs/9p/built-in.a
AR fs/debugfs/built-in.a
CC net/ipv6/addrlabel.o
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC drivers/tty/serial/serial_ctrl.o
CC net/core/rtnetlink.o
CC kernel/time/alarmtimer.o
CC kernel/cgroup/freezer.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC lib/kobject.o
CC crypto/sha256_generic.o
AR fs/lockd/built-in.a
CC io_uring/waitid.o
CC drivers/char/nvram.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
CC fs/nfs/namespace.o
CC sound/hda/hdac_regmap.o
CC drivers/virtio/virtio_input.o
CC mm/slab_common.o
CC drivers/gpu/drm/ttm/ttm_range_manager.o
CC arch/x86/kernel/cpu/vortex.o
AR sound/xen/built-in.a
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC kernel/trace/trace_stat.o
CC drivers/acpi/acpica/exresnte.o
CC net/ethtool/tsinfo.o
CC sound/hda/hdac_controller.o
CC security/selinux/ss/mls.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC drivers/base/component.o
AR drivers/iommu/built-in.a
CC kernel/time/posix-timers.o
CC drivers/base/regmap/regcache-rbtree.o
CC drivers/gpu/drm/i915/i915_irq.o
CC drivers/pci/mmap.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC drivers/tty/serial/8250/8250_early.o
CC lib/kobject_uevent.o
CC fs/tracefs/inode.o
CC drivers/acpi/acpica/exresolv.o
CC crypto/sha512_generic.o
CC net/sunrpc/auth_gss/auth_gss.o
CC net/sunrpc/clnt.o
CC drivers/base/power/wakeup.o
CC drivers/tty/n_tty.o
CC lib/logic_pio.o
CC crypto/sha3_generic.o
CC drivers/gpu/drm/ttm/ttm_resource.o
CC drivers/tty/serial/serial_port.o
CC kernel/events/core.o
CC kernel/cgroup/legacy_freezer.o
AR drivers/char/built-in.a
CC block/blk-ioprio.o
CC arch/x86/kernel/cpu/vmware.o
CC kernel/cgroup/pids.o
CC drivers/virtio/virtio_dma_buf.o
CC security/selinux/ss/context.o
CC io_uring/register.o
CC drivers/acpi/acpica/exresop.o
CC drivers/acpi/wakeup.o
CC [M] fs/efivarfs/inode.o
CC net/ethtool/cabletest.o
CC fs/tracefs/event_inode.o
CC drivers/pci/devres.o
CC drivers/gpu/drm/i915/i915_mitigations.o
CC drivers/tty/serial/8250/8250_exar.o
CC block/blk-iolatency.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC drivers/base/regmap/regcache-flat.o
CC sound/hda/hdac_stream.o
CC kernel/events/ring_buffer.o
CC io_uring/truncate.o
CC net/sunrpc/xprt.o
CC kernel/cgroup/rdma.o
CC net/netfilter/nf_conntrack_netlink.o
AR drivers/gpu/drm/tilcdc/built-in.a
CC net/sunrpc/auth_gss/gss_generic_token.o
CC crypto/ecb.o
CC drivers/acpi/acpica/exserial.o
CC drivers/gpu/drm/i915/i915_module.o
CC arch/x86/kernel/cpu/hypervisor.o
CC drivers/gpu/drm/ttm/ttm_pool.o
AR drivers/virtio/built-in.a
CC fs/ext4/mmp.o
CC drivers/base/regmap/regcache-maple.o
CC block/blk-iocost.o
CC sound/hda/array.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC sound/hda/hdmi_chmap.o
CC crypto/cbc.o
CC net/ipv6/route.o
CC [M] fs/efivarfs/file.o
CC lib/maple_tree.o
CC kernel/time/posix-cpu-timers.o
CC mm/compaction.o
CC [M] fs/efivarfs/super.o
AR net/wireless/tests/built-in.a
CC net/wireless/core.o
AR sound/virtio/built-in.a
CC arch/x86/kernel/cpu/mshyperv.o
CC net/wireless/sysfs.o
CC drivers/acpi/acpica/exstore.o
CC kernel/trace/trace_printk.o
CC security/selinux/netlabel.o
AR drivers/gpu/drm/imx/built-in.a
CC drivers/gpu/drm/display/drm_hdmi_helper.o
AR drivers/gpu/drm/i2c/built-in.a
CC mm/show_mem.o
CC net/netfilter/nf_conntrack_ftp.o
CC drivers/base/power/wakeup_stats.o
CC drivers/pci/proc.o
CC kernel/cgroup/cpuset.o
CC crypto/ctr.o
AR fs/tracefs/built-in.a
CC block/mq-deadline.o
CC drivers/acpi/sleep.o
CC drivers/tty/serial/8250/8250_lpss.o
CC sound/sound_core.o
CC net/ethtool/tunnels.o
CC drivers/gpu/drm/ttm/ttm_device.o
CC drivers/gpu/drm/virtio/virtgpu_kms.o
CC fs/ext4/move_extent.o
CC kernel/time/posix-clock.o
CC drivers/base/regmap/regmap-debugfs.o
CC drivers/acpi/acpica/exstoren.o
AR net/mac80211/tests/built-in.a
CC net/netlabel/netlabel_user.o
CC net/mac80211/main.o
CC arch/x86/kernel/signal_32.o
CC kernel/time/itimer.o
CC fs/nfs/mount_clnt.o
CC net/mac80211/status.o
CC net/netlabel/netlabel_kapi.o
CC drivers/base/power/trace.o
CC sound/hda/trace.o
CC net/netlabel/netlabel_domainhash.o
CC crypto/gcm.o
CC drivers/gpu/drm/i915/i915_params.o
CC io_uring/memmap.o
CC drivers/acpi/acpica/exstorob.o
CC [M] fs/efivarfs/vars.o
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC kernel/trace/pid_list.o
CC arch/x86/kernel/cpu/debugfs.o
CC net/sunrpc/socklib.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC kernel/cgroup/misc.o
CC drivers/tty/serial/8250/8250_mid.o
CC drivers/pci/pci-sysfs.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC net/wireless/radiotap.o
CC net/core/utils.o
CC drivers/gpu/drm/virtio/virtgpu_gem.o
CC drivers/acpi/acpica/exsystem.o
CC fs/open.o
AR drivers/base/regmap/built-in.a
CC net/netfilter/nf_conntrack_irc.o
CC arch/x86/kernel/traps.o
CC fs/ext4/namei.o
AR security/selinux/built-in.a
AR security/built-in.a
CC arch/x86/kernel/cpu/bus_lock.o
CC drivers/acpi/device_sysfs.o
CC net/ipv4/tcp_output.o
AR drivers/base/power/built-in.a
CC drivers/base/core.o
CC drivers/acpi/acpica/extrace.o
CC net/sunrpc/auth_gss/svcauth_gss.o
CC drivers/tty/serial/8250/8250_pci.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
CC net/ethtool/fec.o
CC lib/memcat_p.o
LD [M] fs/efivarfs/efivarfs.o
CC kernel/time/clockevents.o
CC io_uring/io-wq.o
CC sound/last.o
AR drivers/gpu/drm/panel/built-in.a
CC net/wireless/util.o
AR drivers/gpu/drm/display/built-in.a
CC sound/hda/hdac_component.o
CC fs/nfs/nfstrace.o
CC sound/hda/hdac_i915.o
CC kernel/trace/trace_sched_switch.o
CC net/ethtool/eeprom.o
CC drivers/gpu/drm/i915/i915_pci.o
CC crypto/ccm.o
CC arch/x86/kernel/idt.o
CC lib/nmi_backtrace.o
AR drivers/dax/hmem/built-in.a
CC drivers/acpi/acpica/exutils.o
AR drivers/dax/built-in.a
CC net/mac80211/driver-ops.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
CC drivers/pci/slot.o
CC net/ipv4/tcp_timer.o
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC net/netlabel/netlabel_addrlist.o
CC arch/x86/kernel/cpu/capflags.o
CC fs/nfs/export.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC net/netfilter/nf_conntrack_sip.o
AR drivers/gpu/drm/ttm/built-in.a
CC kernel/fork.o
CC kernel/events/callchain.o
CC kernel/time/tick-common.o
CC kernel/cgroup/debug.o
CC crypto/aes_generic.o
CC block/kyber-iosched.o
CC net/ethtool/stats.o
CC net/wireless/reg.o
CC drivers/acpi/acpica/hwacpi.o
CC fs/read_write.o
CC drivers/dma-buf/dma-buf.o
AR arch/x86/kernel/cpu/built-in.a
CC net/rfkill/core.o
CC drivers/tty/serial/earlycon.o
CC drivers/acpi/device_pm.o
CC sound/hda/intel-dsp-config.o
CC net/core/link_watch.o
CC mm/interval_tree.o
CC drivers/dma-buf/dma-fence.o
CC drivers/tty/serial/8250/8250_pericom.o
CC arch/x86/kernel/irq.o
CC net/mac80211/sta_info.o
CC drivers/acpi/acpica/hwesleep.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC drivers/pci/pci-acpi.o
CC kernel/exec_domain.o
CC kernel/events/hw_breakpoint.o
CC drivers/gpu/drm/i915/i915_switcheroo.o
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
CC kernel/trace/trace_nop.o
CC io_uring/futex.o
CC lib/objpool.o
AR kernel/cgroup/built-in.a
CC lib/plist.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
CC crypto/crc32c_generic.o
CC drivers/acpi/acpica/hwgpe.o
AR drivers/gpu/drm/bridge/analogix/built-in.a
AR drivers/gpu/drm/bridge/cadence/built-in.a
AR drivers/gpu/drm/bridge/imx/built-in.a
AR drivers/gpu/drm/hisilicon/built-in.a
CC drivers/dma-buf/dma-fence-array.o
AR drivers/gpu/drm/bridge/synopsys/built-in.a
CC kernel/time/tick-broadcast.o
CC sound/hda/intel-nhlt.o
AR drivers/gpu/drm/bridge/built-in.a
CC kernel/events/uprobes.o
CC net/netlabel/netlabel_mgmt.o
CC drivers/gpu/drm/i915/i915_sysfs.o
CC drivers/base/bus.o
CC mm/list_lru.o
CC net/rfkill/input.o
AR drivers/tty/serial/8250/built-in.a
AR drivers/tty/serial/built-in.a
CC drivers/acpi/proc.o
CC drivers/tty/tty_ioctl.o
CC net/sunrpc/xprtsock.o
CC net/ethtool/phc_vclocks.o
CC fs/file_table.o
CC sound/hda/intel-sdw-acpi.o
CC crypto/authenc.o
CC fs/ext4/page-io.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC net/core/filter.o
CC fs/ext4/readpage.o
AR drivers/gpu/drm/tiny/built-in.a
CC drivers/acpi/acpica/hwregs.o
CC net/wireless/scan.o
CC net/9p/mod.o
CC drivers/dma-buf/dma-fence-chain.o
CC kernel/trace/blktrace.o
CC fs/super.o
CC drivers/base/dd.o
CC net/core/sock_diag.o
CC net/ipv6/ip6_fib.o
CC drivers/pci/iomap.o
CC kernel/time/tick-broadcast-hrtimer.o
CC net/mac80211/wep.o
CC net/sunrpc/auth_gss/trace.o
AR net/rfkill/built-in.a
AR drivers/gpu/drm/xlnx/built-in.a
CC net/sunrpc/sched.o
CC block/blk-mq-pci.o
CC io_uring/napi.o
CC arch/x86/kernel/irq_32.o
CC lib/radix-tree.o
CC kernel/panic.o
CC drivers/acpi/acpica/hwsleep.o
AR sound/hda/built-in.a
CC drivers/pci/quirks.o
AR sound/built-in.a
AR drivers/cxl/core/built-in.a
AR drivers/cxl/built-in.a
CC mm/workingset.o
CC drivers/gpu/drm/virtio/virtgpu_fence.o
CC net/ipv6/ipv6_sockglue.o
CC net/9p/client.o
CC net/sunrpc/auth.o
CC net/netfilter/nf_nat_core.o
CC drivers/gpu/drm/i915/i915_utils.o
CC drivers/dma-buf/dma-fence-unwrap.o
CC drivers/tty/tty_ldisc.o
CC net/core/dev_ioctl.o
CC kernel/time/tick-oneshot.o
CC net/ethtool/mm.o
CC drivers/acpi/acpica/hwvalid.o
CC fs/char_dev.o
CC net/netlabel/netlabel_unlabeled.o
CC lib/ratelimit.o
CC net/mac80211/aead_api.o
CC block/blk-mq-virtio.o
CC kernel/cpu.o
CC crypto/authencesn.o
CC net/sunrpc/auth_null.o
CC arch/x86/kernel/dumpstack_32.o
CC net/netfilter/nf_nat_proto.o
CC drivers/base/syscore.o
CC drivers/tty/tty_buffer.o
CC fs/ext4/resize.o
CC drivers/gpu/drm/virtio/virtgpu_object.o
CC kernel/time/tick-sched.o
CC drivers/dma-buf/dma-resv.o
CC net/ipv4/tcp_ipv4.o
CC drivers/acpi/acpica/hwxface.o
CC net/dns_resolver/dns_key.o
CC mm/debug.o
CC net/handshake/alert.o
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC drivers/base/driver.o
CC drivers/tty/tty_port.o
CC drivers/base/class.o
CC kernel/time/timer_migration.o
CC drivers/gpu/drm/i915/intel_clock_gating.o
AR drivers/gpu/drm/gud/built-in.a
CC net/wireless/nl80211.o
CC net/handshake/genl.o
CC drivers/acpi/acpica/hwxfsleep.o
CC block/blk-mq-debugfs.o
CC net/handshake/netlink.o
CC arch/x86/kernel/time.o
CC kernel/trace/trace_events.o
AR io_uring/built-in.a
CC kernel/trace/trace_export.o
CC fs/nfs/sysfs.o
CC net/mac80211/wpa.o
CC net/ethtool/module.o
CC lib/rbtree.o
CC drivers/macintosh/mac_hid.o
CC crypto/lzo.o
CC net/dns_resolver/dns_query.o
CC crypto/lzo-rle.o
AR kernel/events/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_mech.o
CC drivers/acpi/acpica/hwpci.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
CC fs/stat.o
CC net/handshake/request.o
CC drivers/dma-buf/sync_file.o
CC net/devres.o
CC drivers/tty/tty_mutex.o
CC arch/x86/kernel/ioport.o
CC mm/gup.o
CC kernel/time/vsyscall.o
CC net/ethtool/cmis_fw_update.o
CC drivers/base/platform.o
CC lib/seq_buf.o
CC net/netlabel/netlabel_cipso_v4.o
CC drivers/acpi/bus.o
CC net/9p/error.o
CC fs/exec.o
CC drivers/acpi/acpica/nsaccess.o
AR drivers/macintosh/built-in.a
CC net/ipv6/ndisc.o
CC kernel/trace/trace_event_perf.o
CC kernel/time/timekeeping_debug.o
CC fs/ext4/super.o
CC drivers/pci/pci-label.o
CC block/blk-pm.o
CC net/socket.o
CC net/netfilter/nf_nat_helper.o
CC crypto/rng.o
CC net/wireless/mlme.o
CC net/netlabel/netlabel_calipso.o
CC drivers/acpi/glue.o
CC crypto/drbg.o
CC net/9p/protocol.o
AR net/dns_resolver/built-in.a
CC kernel/trace/trace_events_filter.o
CC drivers/tty/tty_ldsem.o
AR drivers/dma-buf/built-in.a
CC net/ethtool/cmis_cdb.o
CC kernel/trace/trace_events_trigger.o
CC drivers/gpu/drm/i915/intel_cpu_info.o
CC fs/nfs/fs_context.o
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
CC drivers/gpu/drm/i915/intel_device_info.o
CC lib/siphash.o
CC drivers/acpi/acpica/nsalloc.o
CC arch/x86/kernel/dumpstack.o
CC lib/string.o
CC arch/x86/kernel/nmi.o
CC drivers/gpu/drm/virtio/virtgpu_prime.o
CC block/holder.o
CC kernel/trace/trace_eprobe.o
AR drivers/scsi/pcmcia/built-in.a
CC drivers/scsi/scsi.o
CC net/handshake/tlshd.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
AR drivers/gpu/drm/solomon/built-in.a
CC net/ethtool/pse-pd.o
CC net/mac80211/scan.o
CC kernel/time/namespace.o
CC drivers/acpi/scan.o
CC net/netfilter/nf_nat_masquerade.o
CC drivers/pci/vgaarb.o
CC kernel/trace/trace_kprobe.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
CC net/sunrpc/auth_tls.o
CC drivers/acpi/acpica/nsarguments.o
CC drivers/base/cpu.o
CC lib/timerqueue.o
CC drivers/tty/tty_baudrate.o
CC fs/nfs/nfsroot.o
CC net/ipv6/udp.o
CC arch/x86/kernel/ldt.o
CC net/ethtool/plca.o
CC fs/ext4/symlink.o
CC net/9p/trans_common.o
CC lib/union_find.o
CC crypto/jitterentropy.o
CC lib/vsprintf.o
CC crypto/jitterentropy-kcapi.o
AR block/built-in.a
CC net/handshake/trace.o
AR net/netlabel/built-in.a
CC net/mac80211/offchannel.o
CC drivers/acpi/acpica/nsconvert.o
CC fs/nfs/sysctl.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
GEN xe_wa_oob.c xe_wa_oob.h
CC [M] drivers/gpu/drm/xe/xe_bb.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC drivers/tty/tty_jobctrl.o
CC net/sysctl_net.o
CC net/ipv6/udplite.o
AR kernel/time/built-in.a
CC net/9p/trans_fd.o
AR drivers/nvme/common/built-in.a
CC drivers/gpu/drm/i915/intel_memory_region.o
AR drivers/nvme/host/built-in.a
AR drivers/nvme/target/built-in.a
AR drivers/nvme/built-in.a
CC net/9p/trans_virtio.o
CC drivers/acpi/mipi-disco-img.o
CC net/ipv4/tcp_minisocks.o
CC fs/ext4/sysfs.o
CC crypto/ghash-generic.o
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
CC drivers/scsi/hosts.o
CC drivers/tty/n_null.o
CC drivers/acpi/acpica/nsdump.o
CC drivers/base/firmware.o
CC mm/mmap_lock.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC kernel/trace/error_report-traces.o
CC net/core/tso.o
CC net/ipv6/raw.o
CC arch/x86/kernel/setup.o
CC net/ipv4/tcp_cong.o
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
AR drivers/pci/built-in.a
CC net/wireless/ibss.o
CC net/netfilter/nf_nat_ftp.o
CC drivers/acpi/acpica/nseval.o
CC net/ethtool/phy.o
CC crypto/hash_info.o
CC drivers/base/init.o
CC fs/pipe.o
CC crypto/rsapubkey.asn1.o
CC crypto/rsaprivkey.asn1.o
AR crypto/built-in.a
CC drivers/tty/pty.o
CC drivers/acpi/resource.o
CC net/netfilter/nf_nat_irc.o
CC arch/x86/kernel/x86_init.o
CC fs/namei.o
CC net/mac80211/ht.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC fs/nfs/nfs3super.o
AR drivers/gpu/drm/virtio/built-in.a
CC drivers/gpu/drm/i915/intel_pcode.o
CC fs/nfs/nfs3client.o
CC lib/win_minmax.o
CC net/wireless/sme.o
CC drivers/acpi/acpica/nsinit.o
CC kernel/trace/power-traces.o
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC lib/xarray.o
CC arch/x86/kernel/i8259.o
CC drivers/scsi/scsi_ioctl.o
CC drivers/scsi/scsicam.o
CC kernel/trace/rpm-traces.o
CC net/core/sock_reuseport.o
CC net/mac80211/agg-tx.o
CC mm/highmem.o
AR net/handshake/built-in.a
CC drivers/acpi/acpica/nsload.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
CC drivers/base/map.o
CC drivers/gpu/drm/drm_atomic.o
CC fs/nfs/nfs3proc.o
CC arch/x86/kernel/irqinit.o
AR net/9p/built-in.a
CC net/ipv6/icmp.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
CC drivers/base/devres.o
CC mm/memory.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC kernel/trace/trace_dynevent.o
CC net/netfilter/nf_nat_sip.o
CC drivers/acpi/acpica/nsnames.o
CC drivers/tty/tty_audit.o
CC kernel/exit.o
CC net/core/fib_notifier.o
CC net/core/xdp.o
CC fs/ext4/xattr.o
AR net/ethtool/built-in.a
CC net/core/flow_offload.o
CC kernel/trace/trace_probe.o
CC kernel/trace/trace_uprobe.o
CC drivers/tty/sysrq.o
CC [M] drivers/gpu/drm/xe/xe_device.o
CC drivers/ata/libata-core.o
CC drivers/firewire/init_ohci1394_dma.o
AR drivers/net/phy/mediatek/built-in.a
CC drivers/gpu/drm/drm_atomic_uapi.o
AR drivers/net/phy/qcom/built-in.a
CC drivers/net/phy/mdio-boardinfo.o
CC drivers/gpu/drm/i915/intel_region_ttm.o
CC drivers/scsi/scsi_error.o
CC drivers/acpi/acpica/nsobject.o
CC fs/ext4/xattr_hurd.o
CC net/ipv4/tcp_metrics.o
CC drivers/net/phy/stubs.o
CC drivers/base/attribute_container.o
CC drivers/acpi/acpi_processor.o
CC arch/x86/kernel/jump_label.o
CC fs/nfs/nfs3xdr.o
CC drivers/cdrom/cdrom.o
CC drivers/acpi/acpica/nsparse.o
CC drivers/acpi/acpica/nspredef.o
CC net/sunrpc/auth_unix.o
CC lib/lockref.o
CC kernel/softirq.o
AR drivers/auxdisplay/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_keys.o
CC drivers/scsi/scsi_lib.o
CC drivers/ata/libata-scsi.o
CC drivers/base/transport_class.o
CC net/ipv6/mcast.o
CC arch/x86/kernel/irq_work.o
AR drivers/net/pse-pd/built-in.a
AR drivers/firewire/built-in.a
CC drivers/acpi/processor_core.o
CC fs/nfs/nfs3acl.o
CC net/mac80211/agg-rx.o
CC lib/bcd.o
CC net/netfilter/x_tables.o
CC lib/sort.o
CC drivers/acpi/acpica/nsprepkg.o
CC drivers/net/phy/mdio_devres.o
AR drivers/tty/built-in.a
CC drivers/acpi/processor_pdc.o
CC net/ipv4/tcp_fastopen.o
CC net/mac80211/vht.o
CC lib/parser.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
CC drivers/base/topology.o
CC drivers/acpi/acpica/nsrepair.o
CC net/ipv4/tcp_rate.o
CC drivers/gpu/drm/drm_auth.o
CC drivers/net/mdio/acpi_mdio.o
AR drivers/net/pcs/built-in.a
CC net/ipv4/tcp_recovery.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
CC net/ipv4/tcp_ulp.o
CC net/wireless/chan.o
CC drivers/scsi/constants.o
CC net/mac80211/he.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC net/core/gro.o
CC drivers/acpi/ec.o
CC mm/mincore.o
CC drivers/gpu/drm/i915/intel_step.o
CC lib/debug_locks.o
CC kernel/resource.o
CC drivers/acpi/acpica/nsrepair2.o
CC kernel/sysctl.o
CC net/sunrpc/svc.o
CC lib/random32.o
CC net/ipv4/tcp_offload.o
CC kernel/trace/rethook.o
CC net/ipv6/reassembly.o
CC drivers/base/container.o
CC net/netfilter/xt_tcpudp.o
CC drivers/acpi/dock.o
AR net/sunrpc/auth_gss/built-in.a
CC drivers/acpi/pci_root.o
CC arch/x86/kernel/probe_roms.o
CC drivers/net/phy/phy.o
CC drivers/scsi/scsi_lib_dma.o
CC drivers/acpi/acpica/nssearch.o
CC drivers/pcmcia/cs.o
CC arch/x86/kernel/sys_ia32.o
CC drivers/net/mdio/fwnode_mdio.o
CC net/ipv4/tcp_plb.o
CC lib/bust_spinlocks.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/net/ethernet/8390/ne2k-pci.o
CC drivers/net/ethernet/8390/8390.o
AR drivers/net/ethernet/adaptec/built-in.a
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
CC drivers/base/property.o
CC kernel/capability.o
CC mm/mlock.o
AR drivers/cdrom/built-in.a
CC drivers/gpu/drm/drm_blend.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC net/sunrpc/svcsock.o
CC drivers/acpi/pci_link.o
CC drivers/acpi/acpica/nsutils.o
CC net/ipv6/tcp_ipv6.o
CC drivers/pcmcia/socket_sysfs.o
CC lib/kasprintf.o
AR kernel/trace/built-in.a
CC net/ipv6/ping.o
CC net/netfilter/xt_CONNSECMARK.o
CC net/wireless/ethtool.o
CC [M] drivers/gpu/drm/xe/xe_exec.o
CC drivers/gpu/drm/i915/intel_uncore_trace.o
AR drivers/net/wireless/admtek/built-in.a
CC drivers/scsi/scsi_scan.o
AR drivers/net/wireless/ath/built-in.a
CC kernel/ptrace.o
AR drivers/net/wireless/atmel/built-in.a
AR drivers/net/wireless/broadcom/built-in.a
AR drivers/net/wireless/intel/built-in.a
CC fs/nfs/nfs4proc.o
AR drivers/net/wireless/intersil/built-in.a
AR drivers/net/wireless/marvell/built-in.a
AR drivers/net/wireless/mediatek/built-in.a
AR drivers/net/wireless/microchip/built-in.a
CC net/core/netdev-genl.o
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
AR drivers/net/wireless/ralink/built-in.a
CC lib/bitmap.o
CC fs/ext4/xattr_trusted.o
AR drivers/net/wireless/realtek/built-in.a
CC net/core/netdev-genl-gen.o
CC drivers/acpi/pci_irq.o
AR drivers/net/wireless/rsi/built-in.a
AR drivers/net/wireless/silabs/built-in.a
AR drivers/net/wireless/st/built-in.a
CC arch/x86/kernel/ksysfs.o
AR drivers/net/wireless/ti/built-in.a
AR drivers/net/wireless/zydas/built-in.a
CC drivers/acpi/acpica/nswalk.o
AR drivers/net/wireless/virtual/built-in.a
AR drivers/net/wireless/built-in.a
CC drivers/acpi/acpica/nsxfeval.o
CC drivers/acpi/acpica/nsxfname.o
CC drivers/acpi/acpica/nsxfobj.o
CC drivers/net/phy/phy-c45.o
AR drivers/net/mdio/built-in.a
CC net/core/gso.o
CC drivers/pcmcia/cardbus.o
AR drivers/net/ethernet/agere/built-in.a
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC drivers/gpu/drm/drm_bridge.o
CC net/ipv6/exthdrs.o
CC drivers/usb/common/common.o
CC drivers/net/phy/phy-core.o
CC net/ipv4/datagram.o
CC drivers/acpi/acpi_apd.o
CC lib/scatterlist.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC net/sunrpc/svcauth.o
CC drivers/usb/common/debug.o
AR drivers/net/ethernet/8390/built-in.a
CC net/core/net-sysfs.o
AR drivers/net/ethernet/alacritech/built-in.a
CC drivers/gpu/drm/drm_cache.o
CC fs/ext4/xattr_user.o
CC drivers/net/phy/phy_device.o
AR drivers/net/ethernet/alteon/built-in.a
AR drivers/net/ethernet/amazon/built-in.a
AR drivers/net/ethernet/amd/built-in.a
AR drivers/net/ethernet/aquantia/built-in.a
AR drivers/net/ethernet/arc/built-in.a
CC drivers/acpi/acpica/psargs.o
AR drivers/net/ethernet/asix/built-in.a
CC drivers/gpu/drm/i915/intel_wakeref.o
AR drivers/net/ethernet/atheros/built-in.a
CC drivers/base/cacheinfo.o
CC net/wireless/mesh.o
AR drivers/net/ethernet/cadence/built-in.a
CC drivers/acpi/acpi_platform.o
CC net/wireless/ap.o
CC drivers/net/ethernet/broadcom/bnx2.o
CC drivers/pcmcia/ds.o
CC net/ipv6/datagram.o
CC arch/x86/kernel/bootflag.o
CC drivers/ata/libata-eh.o
CC lib/list_sort.o
CC net/netfilter/xt_NFLOG.o
CC net/mac80211/s1g.o
CC net/ipv4/raw.o
AR drivers/net/ethernet/brocade/built-in.a
CC drivers/pcmcia/pcmcia_resource.o
CC kernel/user.o
CC drivers/gpu/drm/i915/vlv_sideband.o
CC fs/fcntl.o
CC mm/mmap.o
CC drivers/gpu/drm/drm_color_mgmt.o
CC net/wireless/trace.o
CC drivers/net/phy/linkmode.o
AR drivers/usb/common/built-in.a
CC drivers/acpi/acpica/psloop.o
CC drivers/usb/core/usb.o
CC drivers/scsi/scsi_devinfo.o
CC drivers/net/phy/phy_link_topology.o
CC drivers/gpu/drm/i915/vlv_suspend.o
CC kernel/signal.o
CC net/sunrpc/svcauth_unix.o
CC drivers/net/ethernet/broadcom/tg3.o
CC drivers/scsi/scsi_sysctl.o
CC arch/x86/kernel/e820.o
CC drivers/base/swnode.o
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
CC drivers/base/auxiliary.o
CC drivers/pcmcia/cistpl.o
CC drivers/usb/core/hub.o
CC kernel/sys.o
CC drivers/usb/core/hcd.o
CC drivers/acpi/acpica/psobject.o
AR drivers/net/usb/built-in.a
CC fs/ioctl.o
CC drivers/pcmcia/pcmcia_cis.o
CC lib/uuid.o
CC net/netfilter/xt_SECMARK.o
CC fs/ext4/fast_commit.o
CC drivers/net/phy/mdio_bus.o
CC lib/iov_iter.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
CC drivers/scsi/scsi_proc.o
CC drivers/acpi/acpi_pnp.o
CC fs/nfs/nfs4xdr.o
CC net/mac80211/ibss.o
CC kernel/umh.o
AR drivers/usb/phy/built-in.a
CC drivers/net/mii.o
CC drivers/net/phy/mdio_device.o
CC net/ipv6/ip6_flowlabel.o
CC drivers/acpi/acpica/psopcode.o
CC net/mac80211/iface.o
CC net/sunrpc/addr.o
CC drivers/gpu/drm/drm_connector.o
CC net/core/hotdata.o
CC net/mac80211/link.o
CC net/core/netdev_rx_queue.o
CC drivers/base/devtmpfs.o
CC drivers/usb/mon/mon_main.o
CC drivers/acpi/acpica/psopinfo.o
CC drivers/usb/host/pci-quirks.o
CC drivers/usb/class/usblp.o
CC drivers/usb/host/ehci-hcd.o
CC net/ipv4/udp.o
CC drivers/usb/host/ehci-pci.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC mm/mmu_gather.o
CC arch/x86/kernel/pci-dma.o
CC net/core/net-procfs.o
CC net/netfilter/xt_TCPMSS.o
CC net/wireless/ocb.o
CC drivers/input/serio/serio.o
CC drivers/scsi/scsi_debugfs.o
CC drivers/acpi/acpica/psparse.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC kernel/workqueue.o
CC drivers/usb/storage/scsiglue.o
CC net/wireless/pmsr.o
CC drivers/pcmcia/rsrc_mgr.o
CC net/sunrpc/rpcb_clnt.o
CC drivers/gpu/drm/drm_crtc.o
CC drivers/usb/mon/mon_stat.o
CC drivers/acpi/power.o
CC drivers/net/phy/swphy.o
CC lib/clz_ctz.o
CC drivers/usb/host/ohci-hcd.o
CC drivers/acpi/acpica/psscope.o
CC net/ipv4/udplite.o
CC drivers/input/keyboard/atkbd.o
CC fs/readdir.o
CC drivers/base/module.o
CC drivers/input/mouse/psmouse-base.o
CC mm/mprotect.o
CC arch/x86/kernel/quirks.o
CC net/ipv6/inet6_connection_sock.o
AR drivers/usb/class/built-in.a
CC fs/select.o
CC drivers/input/serio/i8042.o
CC fs/dcache.o
CC drivers/scsi/scsi_trace.o
CC drivers/gpu/drm/drm_displayid.o
CC drivers/pcmcia/rsrc_nonstatic.o
CC drivers/ata/libata-transport.o
CC drivers/acpi/acpica/pstree.o
AR drivers/net/ethernet/cavium/common/built-in.a
AR drivers/net/ethernet/cavium/thunder/built-in.a
CC drivers/net/phy/fixed_phy.o
AR drivers/net/ethernet/cavium/liquidio/built-in.a
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
CC drivers/usb/mon/mon_text.o
CC drivers/acpi/event.o
CC drivers/base/auxiliary_sysfs.o
CC drivers/usb/core/urb.o
CC drivers/gpu/drm/i915/soc/intel_gmch.o
CC net/core/netpoll.o
CC drivers/usb/storage/protocol.o
CC kernel/pid.o
CC net/ipv6/udp_offload.o
CC drivers/rtc/lib.o
CC drivers/acpi/acpica/psutils.o
CC net/netfilter/xt_conntrack.o
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
CC drivers/rtc/class.o
CC lib/bsearch.o
CC drivers/rtc/interface.o
CC drivers/base/devcoredump.o
CC arch/x86/kernel/kdebugfs.o
CC net/ipv4/udp_offload.o
CC fs/ext4/orphan.o
CC drivers/scsi/scsi_logging.o
CC drivers/i2c/algos/i2c-algo-bit.o
AR drivers/input/keyboard/built-in.a
CC drivers/acpi/acpica/pswalk.o
AR drivers/i3c/built-in.a
AR drivers/media/i2c/built-in.a
AR drivers/media/tuners/built-in.a
CC drivers/pcmcia/yenta_socket.o
AR drivers/media/rc/keymaps/built-in.a
CC drivers/input/mouse/synaptics.o
AR drivers/media/rc/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc.o
AR drivers/media/common/b2c2/built-in.a
CC net/core/fib_rules.o
CC mm/mremap.o
AR drivers/media/common/saa7146/built-in.a
AR drivers/media/common/siano/built-in.a
AR drivers/media/common/v4l2-tpg/built-in.a
AR drivers/media/common/videobuf2/built-in.a
AR drivers/media/common/built-in.a
CC drivers/rtc/nvmem.o
AR drivers/media/platform/allegro-dvt/built-in.a
CC drivers/usb/mon/mon_bin.o
CC drivers/ata/libata-trace.o
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/media/platform/amlogic/built-in.a
AR drivers/media/platform/amphion/built-in.a
AR drivers/media/platform/aspeed/built-in.a
AR drivers/media/platform/atmel/built-in.a
CC fs/inode.o
CC drivers/usb/storage/transport.o
AR drivers/media/platform/broadcom/built-in.a
CC drivers/usb/core/message.o
AR drivers/media/platform/cadence/built-in.a
AR drivers/net/ethernet/chelsio/built-in.a
CC drivers/acpi/evged.o
AR drivers/media/platform/chips-media/coda/built-in.a
CC mm/msync.o
CC fs/ext4/acl.o
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/platform/chips-media/built-in.a
AR drivers/net/ethernet/cisco/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
CC drivers/net/phy/realtek.o
AR drivers/media/platform/imagination/built-in.a
AR drivers/media/platform/intel/built-in.a
CC lib/find_bit.o
AR drivers/media/platform/marvell/built-in.a
CC drivers/acpi/acpica/psxface.o
AR drivers/media/platform/mediatek/jpeg/built-in.a
CC arch/x86/kernel/alternative.o
AR drivers/media/platform/mediatek/mdp/built-in.a
CC drivers/input/serio/serport.o
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
CC net/sunrpc/timer.o
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
AR drivers/media/platform/mediatek/vcodec/built-in.a
CC drivers/base/platform-msi.o
AR drivers/media/platform/mediatek/vpu/built-in.a
AR drivers/media/platform/mediatek/mdp3/built-in.a
AR drivers/media/platform/mediatek/built-in.a
CC drivers/gpu/drm/i915/soc/intel_pch.o
AR drivers/media/platform/microchip/built-in.a
AR drivers/media/platform/nuvoton/built-in.a
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
AR drivers/media/platform/nxp/imx8-isi/built-in.a
AR drivers/media/platform/nxp/built-in.a
CC lib/llist.o
AR drivers/media/platform/qcom/camss/built-in.a
AR drivers/media/platform/qcom/venus/built-in.a
AR drivers/media/platform/qcom/built-in.a
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/platform/raspberrypi/rp1-cfe/built-in.a
AR drivers/media/platform/raspberrypi/built-in.a
CC drivers/base/physical_location.o
CC drivers/gpu/drm/i915/soc/intel_rom.o
AR drivers/media/platform/renesas/rcar-vin/built-in.a
CC drivers/scsi/scsi_pm.o
CC net/ipv6/seg6.o
AR drivers/pps/clients/built-in.a
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
AR drivers/pps/generators/built-in.a
AR drivers/media/platform/renesas/vsp1/built-in.a
AR drivers/media/platform/renesas/built-in.a
CC drivers/pps/pps.o
CC lib/lwq.o
CC drivers/acpi/acpica/rsaddr.o
AR drivers/media/platform/rockchip/rga/built-in.a
AR drivers/media/platform/rockchip/rkisp1/built-in.a
CC net/mac80211/rate.o
AR drivers/media/platform/rockchip/built-in.a
CC net/sunrpc/xdr.o
CC net/netfilter/xt_policy.o
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
AR drivers/media/platform/samsung/exynos4-is/built-in.a
CC drivers/rtc/dev.o
CC net/sunrpc/sunrpc_syms.o
CC net/netfilter/xt_state.o
AR drivers/media/platform/samsung/s3c-camif/built-in.a
AR drivers/i2c/algos/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
CC drivers/i2c/busses/i2c-i801.o
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/pci/ttpci/built-in.a
AR drivers/media/platform/samsung/built-in.a
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/mmc/siano/built-in.a
AR drivers/media/usb/dvb-usb/built-in.a
AR drivers/media/mmc/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/platform/st/sti/bdisp/built-in.a
CC drivers/scsi/scsi_bsg.o
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/media/pci/dm1105/built-in.a
CC lib/memweight.o
AR drivers/media/usb/s2255/built-in.a
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
AR drivers/media/pci/pt1/built-in.a
AR drivers/media/usb/siano/built-in.a
AR drivers/media/platform/st/sti/delta/built-in.a
AR drivers/media/usb/ttusb-budget/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/platform/st/sti/hva/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
AR drivers/media/pci/mantis/built-in.a
AR drivers/media/platform/st/stm32/built-in.a
CC arch/x86/kernel/i8253.o
AR drivers/media/usb/built-in.a
AR drivers/media/platform/st/built-in.a
AR drivers/media/pci/ngene/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
AR drivers/i2c/muxes/built-in.a
CC net/ipv6/fib6_notifier.o
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
AR drivers/media/pci/saa7146/built-in.a
AR drivers/media/pci/smipcie/built-in.a
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
CC lib/kfifo.o
CC drivers/input/serio/libps2.o
AR drivers/media/pci/netup_unidvb/built-in.a
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
CC drivers/input/mouse/focaltech.o
AR drivers/media/pci/intel/ipu3/built-in.a
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
AR drivers/media/pci/intel/ivsc/built-in.a
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
AR drivers/media/pci/intel/built-in.a
CC kernel/task_work.o
AR drivers/media/platform/sunxi/built-in.a
AR drivers/media/pci/built-in.a
CC fs/nfs/nfs4state.o
CC fs/ext4/xattr_security.o
AR drivers/media/platform/ti/am437x/built-in.a
CC drivers/ptp/ptp_clock.o
CC drivers/pps/kapi.o
AR drivers/media/platform/ti/cal/built-in.a
CC drivers/acpi/acpica/rscalc.o
AR drivers/media/platform/ti/vpe/built-in.a
CC drivers/usb/host/ohci-pci.o
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
CC drivers/base/trace.o
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
CC mm/page_vma_mapped.o
AR drivers/media/platform/ti/omap/built-in.a
AR drivers/media/platform/ti/omap3isp/built-in.a
CC drivers/ata/libata-sata.o
AR drivers/media/platform/ti/built-in.a
CC kernel/extable.o
AR drivers/media/platform/verisilicon/built-in.a
CC drivers/usb/storage/usb.o
AR drivers/usb/mon/built-in.a
AR drivers/media/platform/via/built-in.a
CC net/ipv6/rpl.o
AR drivers/media/platform/xilinx/built-in.a
AR drivers/media/platform/built-in.a
CC drivers/acpi/sysfs.o
CC drivers/usb/host/uhci-hcd.o
AR drivers/pcmcia/built-in.a
CC net/core/net-traces.o
AR drivers/media/firewire/built-in.a
CC net/ipv6/ioam6.o
AR drivers/media/spi/built-in.a
AR drivers/media/test-drivers/built-in.a
CC net/ipv4/arp.o
AR drivers/media/built-in.a
CC drivers/usb/core/driver.o
GEN net/wireless/shipped-certs.c
CC mm/pagewalk.o
CC drivers/input/mouse/alps.o
CC net/mac80211/michael.o
AR drivers/usb/misc/built-in.a
CC net/core/selftests.o
CC drivers/rtc/proc.o
AR drivers/net/phy/built-in.a
CC drivers/usb/host/xhci.o
CC drivers/acpi/acpica/rscreate.o
CC drivers/power/supply/power_supply_core.o
CC drivers/scsi/scsi_common.o
CC drivers/gpu/drm/i915/i915_memcpy.o
CC drivers/power/supply/power_supply_sysfs.o
CC arch/x86/kernel/hw_breakpoint.o
CC drivers/acpi/property.o
CC drivers/usb/storage/initializers.o
CC drivers/pps/sysfs.o
AR drivers/input/serio/built-in.a
CC drivers/hwmon/hwmon.o
AR drivers/input/joystick/built-in.a
CC mm/pgtable-generic.o
CC drivers/gpu/drm/i915/i915_mm.o
CC drivers/power/supply/power_supply_leds.o
CC net/core/ptp_classifier.o
CC lib/percpu-refcount.o
CC drivers/rtc/sysfs.o
AR fs/ext4/built-in.a
CC net/wireless/shipped-certs.o
AR drivers/net/ethernet/cortina/built-in.a
CC [M] net/netfilter/nf_log_syslog.o
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dec/built-in.a
CC drivers/i2c/i2c-boardinfo.o
AR drivers/net/ethernet/dlink/built-in.a
AR drivers/base/built-in.a
AR drivers/input/tablet/built-in.a
CC drivers/scsi/scsi_transport_spi.o
CC drivers/ptp/ptp_chardev.o
CC drivers/usb/core/config.o
CC drivers/acpi/acpica/rsdumpinfo.o
CC drivers/ata/libata-sff.o
CC drivers/ata/libata-pmp.o
AR drivers/i2c/busses/built-in.a
CC drivers/ata/libata-acpi.o
CC net/ipv6/sysctl_net_ipv6.o
CC drivers/usb/host/xhci-mem.o
CC drivers/input/mouse/byd.o
CC lib/rhashtable.o
AR drivers/pps/built-in.a
CC drivers/usb/core/file.o
CC drivers/acpi/acpica/rsinfo.o
CC kernel/params.o
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC [M] net/netfilter/xt_mark.o
CC drivers/acpi/debugfs.o
CC drivers/usb/early/ehci-dbgp.o
CC drivers/acpi/acpica/rsio.o
CC net/mac80211/tkip.o
CC arch/x86/kernel/tsc.o
AR drivers/net/ethernet/emulex/built-in.a
CC drivers/acpi/acpi_lpat.o
CC drivers/usb/storage/sierra_ms.o
CC [M] net/netfilter/xt_nat.o
CC drivers/power/supply/power_supply_hwmon.o
CC drivers/rtc/rtc-mc146818-lib.o
CC mm/rmap.o
CC drivers/usb/core/buffer.o
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC drivers/usb/core/sysfs.o
CC drivers/acpi/acpica/rsirq.o
CC drivers/i2c/i2c-core-base.o
AR drivers/thermal/broadcom/built-in.a
AR drivers/thermal/renesas/built-in.a
AR drivers/thermal/samsung/built-in.a
CC drivers/i2c/i2c-core-smbus.o
CC drivers/thermal/intel/intel_tcc.o
CC drivers/usb/host/xhci-ext-caps.o
CC drivers/input/mouse/logips2pp.o
AR drivers/net/ethernet/engleder/built-in.a
CC [M] net/netfilter/xt_LOG.o
CC arch/x86/kernel/tsc_msr.o
CC net/sunrpc/cache.o
CC drivers/usb/storage/option_ms.o
CC net/mac80211/aes_cmac.o
CC drivers/acpi/acpica/rslist.o
AR drivers/power/supply/built-in.a
AR drivers/power/built-in.a
CC drivers/thermal/intel/therm_throt.o
CC drivers/ptp/ptp_sysfs.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC net/sunrpc/rpc_pipe.o
CC [M] net/netfilter/xt_MASQUERADE.o
CC drivers/rtc/rtc-cmos.o
CC net/ipv4/icmp.o
CC arch/x86/kernel/io_delay.o
CC net/ipv6/xfrm6_policy.o
CC drivers/usb/core/endpoint.o
CC [M] drivers/gpu/drm/xe/xe_gt.o
AR drivers/hwmon/built-in.a
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
AR drivers/watchdog/built-in.a
CC drivers/gpu/drm/drm_drv.o
CC drivers/acpi/acpi_pcc.o
AR drivers/input/touchscreen/built-in.a
CC drivers/net/loopback.o
CC net/sunrpc/sysfs.o
CC drivers/input/mouse/lifebook.o
CC drivers/gpu/drm/i915/i915_syncmap.o
AR drivers/usb/early/built-in.a
CC fs/nfs/nfs4renewd.o
CC drivers/i2c/i2c-core-acpi.o
CC kernel/kthread.o
CC lib/base64.o
CC drivers/i2c/i2c-smbus.o
CC drivers/acpi/acpica/rsmemory.o
CC drivers/usb/storage/usual-tables.o
CC lib/once.o
CC drivers/scsi/virtio_scsi.o
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
AR drivers/thermal/st/built-in.a
CC drivers/scsi/sd.o
CC drivers/gpu/drm/drm_dumb_buffers.o
CC arch/x86/kernel/rtc.o
CC drivers/acpi/acpica/rsmisc.o
CC drivers/usb/host/xhci-ring.o
CC net/sunrpc/svc_xprt.o
CC drivers/scsi/sr.o
CC net/ipv4/devinet.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
CC kernel/sys_ni.o
AR drivers/net/ethernet/ezchip/built-in.a
CC net/sunrpc/xprtmultipath.o
CC net/ipv6/xfrm6_state.o
CC drivers/usb/host/xhci-hub.o
CC [M] net/netfilter/xt_addrtype.o
CC drivers/usb/core/devio.o
CC lib/refcount.o
CC drivers/ptp/ptp_vclock.o
CC drivers/input/mouse/trackpoint.o
CC drivers/gpu/drm/drm_edid.o
AR drivers/usb/storage/built-in.a
CC drivers/ata/libata-pata-timings.o
CC net/ipv4/af_inet.o
AR drivers/thermal/intel/built-in.a
CC drivers/gpu/drm/i915/i915_debugfs.o
AR drivers/thermal/qcom/built-in.a
CC drivers/acpi/acpica/rsserial.o
AR drivers/thermal/tegra/built-in.a
AR drivers/rtc/built-in.a
AR drivers/thermal/mediatek/built-in.a
CC drivers/thermal/thermal_core.o
CC arch/x86/kernel/resource.o
CC net/ipv4/igmp.o
CC lib/rcuref.o
AR drivers/input/misc/built-in.a
CC drivers/acpi/ac.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
CC drivers/gpu/drm/i915/i915_debugfs_params.o
CC fs/attr.o
CC drivers/thermal/thermal_sysfs.o
CC net/sunrpc/stats.o
CC drivers/scsi/sr_ioctl.o
CC drivers/scsi/sr_vendor.o
CC mm/vmalloc.o
CC drivers/input/input.o
AS arch/x86/kernel/irqflags.o
CC lib/usercopy.o
CC lib/errseq.o
CC fs/nfs/nfs4super.o
CC arch/x86/kernel/static_call.o
CC net/core/netprio_cgroup.o
CC drivers/acpi/button.o
CC drivers/acpi/acpica/rsutils.o
CC drivers/gpu/drm/drm_eld.o
CC kernel/nsproxy.o
CC drivers/md/md.o
CC drivers/usb/host/xhci-dbg.o
CC drivers/usb/core/notify.o
CC mm/vma.o
CC drivers/input/input-compat.o
CC drivers/input/mouse/cypress_ps2.o
CC drivers/acpi/acpica/rsxface.o
AR drivers/i2c/built-in.a
CC drivers/input/input-mt.o
CC net/mac80211/aes_gmac.o
CC lib/bucket_locks.o
CC net/core/netclassid_cgroup.o
CC drivers/ptp/ptp_kvm_x86.o
CC net/ipv4/fib_frontend.o
CC net/ipv6/xfrm6_input.o
CC arch/x86/kernel/process.o
CC drivers/ata/ahci.o
CC fs/nfs/nfs4file.o
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
CC drivers/scsi/sg.o
CC mm/process_vm_access.o
CC drivers/usb/host/xhci-trace.o
CC net/ipv4/fib_semantics.o
CC drivers/acpi/acpica/tbdata.o
AR net/netfilter/built-in.a
CC net/ipv6/xfrm6_output.o
CC drivers/input/input-poller.o
CC net/core/dst_cache.o
CC drivers/ptp/ptp_kvm_common.o
CC drivers/input/mouse/psmouse-smbus.o
CC mm/page_alloc.o
CC drivers/usb/host/xhci-debugfs.o
CC fs/nfs/delegation.o
CC lib/generic-radix-tree.o
CC drivers/md/md-bitmap.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
CC drivers/acpi/acpica/tbfadt.o
CC net/mac80211/fils_aead.o
CC drivers/gpu/drm/i915/i915_pmu.o
CC kernel/notifier.o
CC drivers/acpi/fan_core.o
CC drivers/net/netconsole.o
CC drivers/net/virtio_net.o
CC drivers/thermal/thermal_trip.o
CC drivers/net/net_failover.o
CC drivers/usb/core/generic.o
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
CC lib/bitmap-str.o
CC drivers/md/md-autodetect.o
CC drivers/gpu/drm/drm_encoder.o
CC fs/nfs/nfs4idmap.o
CC net/ipv6/xfrm6_protocol.o
AR drivers/ptp/built-in.a
CC fs/bad_inode.o
CC drivers/acpi/acpica/tbfind.o
CC drivers/ata/libahci.o
CC kernel/ksysfs.o
CC net/mac80211/cfg.o
AR drivers/input/mouse/built-in.a
CC drivers/input/ff-core.o
CC drivers/gpu/drm/drm_file.o
CC drivers/thermal/thermal_helpers.o
CC net/ipv4/fib_trie.o
CC drivers/usb/core/quirks.o
CC drivers/acpi/fan_attr.o
CC fs/nfs/callback.o
CC net/core/gro_cells.o
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC net/mac80211/ethtool.o
CC drivers/acpi/acpica/tbinstal.o
AR drivers/net/ethernet/broadcom/built-in.a
AR drivers/net/ethernet/fujitsu/built-in.a
AR drivers/net/ethernet/fungible/built-in.a
AR drivers/net/ethernet/google/built-in.a
CC net/sunrpc/sysctl.o
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
CC arch/x86/kernel/ptrace.o
AR drivers/net/ethernet/hisilicon/built-in.a
AR drivers/net/ethernet/huawei/built-in.a
CC drivers/ata/ata_piix.o
CC drivers/net/ethernet/intel/e1000/e1000_main.o
CC net/mac80211/rx.o
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/net/ethernet/intel/e100.o
CC fs/nfs/callback_xdr.o
CC lib/string_helpers.o
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
CC drivers/thermal/thermal_thresholds.o
CC drivers/input/touchscreen.o
CC drivers/scsi/scsi_sysfs.o
CC net/core/failover.o
CC kernel/cred.o
CC net/ipv4/fib_notifier.o
CC drivers/acpi/acpica/tbprint.o
CC drivers/cpufreq/cpufreq.o
CC net/mac80211/spectmgmt.o
CC net/ipv4/inet_fragment.o
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
CC drivers/cpuidle/governors/menu.o
CC drivers/gpu/drm/drm_fourcc.o
CC kernel/reboot.o
CC drivers/usb/core/devices.o
CC drivers/input/ff-memless.o
CC drivers/thermal/thermal_hwmon.o
CC lib/hexdump.o
CC drivers/acpi/acpica/tbutils.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
CC net/ipv6/netfilter.o
CC drivers/input/sparse-keymap.o
CC net/mac80211/tx.o
CC fs/nfs/callback_proc.o
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
AR drivers/mmc/built-in.a
CC fs/file.o
CC arch/x86/kernel/tls.o
CC drivers/cpuidle/governors/haltpoll.o
AR net/wireless/built-in.a
CC drivers/cpuidle/cpuidle.o
CC drivers/cpuidle/driver.o
AR net/sunrpc/built-in.a
CC fs/filesystems.o
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
CC drivers/thermal/gov_step_wise.o
CC net/mac80211/key.o
CC lib/kstrtox.o
CC drivers/acpi/acpica/tbxface.o
CC drivers/usb/host/xhci-pci.o
CC kernel/async.o
CC mm/page_frag_cache.o
CC net/ipv4/ping.o
CC net/ipv6/proc.o
CC drivers/gpu/drm/drm_framebuffer.o
AR net/core/built-in.a
CC kernel/range.o
CC drivers/cpufreq/freq_table.o
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
CC drivers/cpuidle/governor.o
CC drivers/ata/pata_amd.o
CC fs/namespace.o
CC drivers/acpi/fan_hwmon.o
CC drivers/usb/core/phy.o
CC drivers/cpuidle/sysfs.o
CC drivers/input/vivaldi-fmap.o
CC lib/iomap.o
CC lib/iomap_copy.o
CC drivers/thermal/gov_user_space.o
AR drivers/scsi/built-in.a
CC drivers/acpi/acpica/tbxfload.o
CC drivers/gpu/drm/drm_gem.o
CC drivers/acpi/acpica/tbxfroot.o
AR drivers/net/ethernet/i825xx/built-in.a
AR drivers/net/ethernet/microsoft/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
CC drivers/usb/core/port.o
CC kernel/smpboot.o
CC drivers/acpi/acpi_video.o
CC mm/init-mm.o
CC drivers/input/input-leds.o
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
CC drivers/md/dm.o
CC drivers/ata/pata_oldpiix.o
CC arch/x86/kernel/step.o
CC drivers/acpi/video_detect.o
CC arch/x86/kernel/i8237.o
CC net/mac80211/util.o
AR drivers/thermal/built-in.a
CC net/mac80211/parse.o
CC net/ipv4/ip_tunnel_core.o
CC drivers/acpi/acpica/utaddress.o
CC drivers/net/ethernet/intel/e1000e/mac.o
AR drivers/cpuidle/governors/built-in.a
CC drivers/usb/core/hcd-pci.o
CC drivers/input/evdev.o
CC fs/nfs/nfs4namespace.o
AR drivers/net/ethernet/litex/built-in.a
CC kernel/ucount.o
CC lib/devres.o
CC drivers/md/dm-table.o
CC drivers/cpuidle/poll_state.o
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
CC net/mac80211/wme.o
CC drivers/acpi/processor_driver.o
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
CC lib/check_signature.o
CC mm/memblock.o
CC drivers/cpufreq/cpufreq_performance.o
CC fs/nfs/nfs4getroot.o
CC drivers/acpi/acpica/utalloc.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC drivers/net/ethernet/marvell/sky2.o
CC fs/seq_file.o
AR drivers/net/ethernet/mellanox/built-in.a
CC net/ipv4/gre_offload.o
CC drivers/cpuidle/cpuidle-haltpoll.o
CC net/ipv6/syncookies.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC arch/x86/kernel/stacktrace.o
CC drivers/cpufreq/cpufreq_userspace.o
AR drivers/usb/host/built-in.a
CC kernel/regset.o
CC drivers/acpi/processor_thermal.o
CC drivers/net/ethernet/intel/e1000/e1000_param.o
CC lib/interval_tree.o
CC drivers/net/ethernet/intel/e1000e/manage.o
CC drivers/ata/pata_sch.o
CC drivers/acpi/acpica/utascii.o
CC mm/slub.o
CC net/mac80211/chan.o
CC drivers/gpu/drm/drm_ioctl.o
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC mm/madvise.o
CC kernel/ksyms_common.o
AR drivers/net/ethernet/meta/built-in.a
CC fs/xattr.o
CC lib/assoc_array.o
CC drivers/usb/core/usb-acpi.o
AR drivers/cpuidle/built-in.a
CC lib/bitrev.o
CC arch/x86/kernel/reboot.o
CC drivers/cpufreq/cpufreq_ondemand.o
CC drivers/ata/pata_mpiix.o
CC drivers/acpi/acpica/utbuffer.o
CC net/mac80211/trace.o
AR drivers/input/built-in.a
CC fs/nfs/nfs4client.o
CC net/ipv4/metrics.o
CC net/ipv6/calipso.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
CC mm/page_io.o
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC kernel/groups.o
CC drivers/gpu/drm/drm_lease.o
CC drivers/md/dm-target.o
AR drivers/ufs/built-in.a
CC mm/swap_state.o
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
CC mm/swapfile.o
CC drivers/acpi/acpica/utcksum.o
CC drivers/cpufreq/cpufreq_governor.o
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC arch/x86/kernel/msr.o
CC mm/swap_slots.o
AR drivers/firmware/arm_ffa/built-in.a
AR drivers/crypto/stm32/built-in.a
AR drivers/firmware/arm_scmi/built-in.a
AR drivers/firmware/broadcom/built-in.a
AR drivers/crypto/xilinx/built-in.a
AR drivers/firmware/cirrus/built-in.a
AR drivers/crypto/hisilicon/built-in.a
AR drivers/firmware/meson/built-in.a
AR drivers/crypto/intel/keembay/built-in.a
AR drivers/firmware/microchip/built-in.a
AR drivers/crypto/intel/ixp4xx/built-in.a
CC drivers/firmware/efi/efi-bgrt.o
CC drivers/clocksource/acpi_pm.o
AR drivers/usb/core/built-in.a
AR drivers/crypto/intel/built-in.a
AR drivers/usb/built-in.a
AR drivers/crypto/starfive/built-in.a
AR drivers/crypto/built-in.a
CC drivers/firmware/efi/efi.o
CC kernel/kcmp.o
AR drivers/firmware/imx/built-in.a
CC drivers/acpi/acpica/utcopy.o
CC lib/crc-ccitt.o
CC drivers/acpi/acpica/utexcep.o
CC drivers/md/dm-linear.o
CC drivers/cpufreq/acpi-cpufreq.o
CC fs/nfs/nfs4session.o
CC drivers/acpi/processor_idle.o
CC drivers/firmware/efi/libstub/efi-stub-helper.o
AR drivers/net/ethernet/intel/e1000/built-in.a
CC arch/x86/kernel/cpuid.o
CC drivers/acpi/processor_throttling.o
CC drivers/acpi/processor_perflib.o
CC drivers/gpu/drm/drm_managed.o
CC drivers/firmware/efi/vars.o
CC drivers/ata/ata_generic.o
AR drivers/net/ethernet/micrel/built-in.a
CC drivers/firmware/efi/libstub/gop.o
CC [M] drivers/gpu/drm/xe/xe_guc_buf.o
CC drivers/net/ethernet/intel/e1000e/phy.o
CC lib/crc16.o
AR drivers/firmware/psci/built-in.a
CC mm/dmapool.o
CC net/ipv6/ah6.o
CC drivers/acpi/container.o
CC drivers/firmware/efi/reboot.o
CC drivers/acpi/acpica/utdebug.o
CC drivers/acpi/acpica/utdecode.o
CC drivers/acpi/acpica/utdelete.o
CC net/ipv6/esp6.o
CC drivers/net/ethernet/intel/e1000e/param.o
CC fs/nfs/dns_resolve.o
CC fs/nfs/nfs4trace.o
CC drivers/acpi/acpica/uterror.o
CC drivers/clocksource/i8253.o
AR drivers/net/ethernet/microchip/built-in.a
AR drivers/firmware/qcom/built-in.a
CC net/ipv4/netlink.o
CC net/ipv4/nexthop.o
CC drivers/md/dm-stripe.o
CC arch/x86/kernel/early-quirks.o
CC net/ipv4/udp_tunnel_stub.o
CC fs/libfs.o
HOSTCC lib/gen_crc32table
AR drivers/net/ethernet/mscc/built-in.a
CC drivers/firmware/efi/libstub/secureboot.o
CC kernel/freezer.o
CC drivers/acpi/thermal_lib.o
AR drivers/net/ethernet/myricom/built-in.a
CC net/mac80211/mlme.o
CC arch/x86/kernel/smp.o
CC fs/fs-writeback.o
CC lib/xxhash.o
CC drivers/cpufreq/amd-pstate.o
AR drivers/firmware/smccc/built-in.a
CC drivers/gpu/drm/drm_mm.o
AR drivers/net/ethernet/natsemi/built-in.a
CC drivers/firmware/efi/memattr.o
AR drivers/net/ethernet/neterion/built-in.a
AR drivers/ata/built-in.a
AR drivers/firmware/tegra/built-in.a
CC net/mac80211/tdls.o
CC drivers/gpu/drm/drm_mode_config.o
CC net/ipv6/sit.o
CC mm/hugetlb.o
CC fs/pnode.o
CC drivers/md/dm-ioctl.o
CC lib/genalloc.o
CC drivers/acpi/acpica/uteval.o
CC drivers/gpu/drm/drm_mode_object.o
AR drivers/clocksource/built-in.a
CC fs/nfs/nfs4sysctl.o
CC drivers/firmware/efi/libstub/tpm.o
AR drivers/net/ethernet/netronome/built-in.a
CC drivers/acpi/thermal.o
CC drivers/md/dm-io.o
CC drivers/cpufreq/amd-pstate-trace.o
CC [M] drivers/gpu/drm/xe/xe_guc_capture.o
AR drivers/firmware/xilinx/built-in.a
CC net/mac80211/ocb.o
CC drivers/gpu/drm/drm_modes.o
CC drivers/acpi/nhlt.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
CC fs/splice.o
CC drivers/acpi/acpica/utglobal.o
AR drivers/net/ethernet/ni/built-in.a
CC drivers/hid/usbhid/hid-core.o
CC drivers/cpufreq/intel_pstate.o
CC drivers/hid/hid-core.o
CC fs/sync.o
CC drivers/firmware/dmi_scan.o
CC kernel/profile.o
CC drivers/acpi/acpi_memhotplug.o
CC net/mac80211/airtime.o
CC lib/percpu_counter.o
CC mm/mmu_notifier.o
CC drivers/acpi/acpica/uthex.o
CC net/ipv6/addrconf_core.o
AR drivers/net/ethernet/marvell/built-in.a
CC drivers/hid/usbhid/hiddev.o
CC kernel/stacktrace.o
CC drivers/hid/usbhid/hid-pidff.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC drivers/hid/hid-input.o
CC drivers/firmware/efi/libstub/file.o
CC drivers/firmware/efi/libstub/mem.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC drivers/firmware/efi/tpm.o
CC drivers/firmware/dmi-id.o
CC drivers/net/ethernet/intel/e1000e/ethtool.o
CC arch/x86/kernel/smpboot.o
CC net/mac80211/eht.o
CC mm/migrate.o
CC fs/utimes.o
CC drivers/acpi/acpica/utids.o
CC net/mac80211/led.o
CC fs/d_path.o
CC drivers/md/dm-kcopyd.o
CC drivers/firmware/efi/memmap.o
CC lib/audit.o
CC kernel/dma.o
CC drivers/firmware/memmap.o
CC drivers/net/ethernet/nvidia/forcedeth.o
CC drivers/firmware/efi/libstub/random.o
CC drivers/gpu/drm/drm_plane.o
CC fs/stack.o
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
CC arch/x86/kernel/tsc_sync.o
CC drivers/acpi/ioapic.o
CC drivers/acpi/acpica/utinit.o
CC lib/syscall.o
CC drivers/firmware/efi/libstub/randomalloc.o
CC drivers/acpi/acpica/utlock.o
CC drivers/hid/hid-quirks.o
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC fs/fs_struct.o
CC drivers/gpu/drm/i915/gt/intel_context.o
AR drivers/platform/x86/amd/built-in.a
CC kernel/smp.o
CC fs/statfs.o
AR drivers/platform/x86/intel/built-in.a
CC drivers/platform/x86/wmi.o
AR drivers/platform/surface/built-in.a
CC drivers/mailbox/mailbox.o
AR drivers/perf/built-in.a
AR drivers/hwtracing/intel_th/built-in.a
CC net/ipv6/exthdrs_core.o
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ct.c: In function ‘xe_guc_ct_snapshot_print’:
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ct.c:1727:58: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘size_t’ {aka ‘unsigned int’} [-Werror=format=]
1727 | drm_printf(p, "[CTB].length: 0x%lx\n", snapshot->ctb_size);
| ~~^ ~~~~~~~~~~~~~~~~~~
| | |
| | size_t {aka unsigned int}
| long unsigned int
| %x
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC drivers/mailbox/pcc.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC mm/page_counter.o
CC drivers/firmware/efi/libstub/pci.o
CC drivers/gpu/drm/drm_prime.o
AR drivers/net/ethernet/oki-semi/built-in.a
AR drivers/android/built-in.a
CC drivers/hid/hid-debug.o
CC drivers/acpi/acpica/utmath.o
CC drivers/acpi/battery.o
CC drivers/firmware/efi/libstub/skip_spaces.o
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
CC drivers/gpu/drm/drm_print.o
AR drivers/hid/usbhid/built-in.a
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
CC drivers/firmware/efi/capsule.o
AR drivers/net/ethernet/packetengines/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
CC lib/errname.o
CC net/ipv4/ip_tunnel.o
CC drivers/acpi/acpica/utmisc.o
CC arch/x86/kernel/setup_percpu.o
CC lib/nlattr.o
CC net/ipv6/ip6_checksum.o
CC mm/hugetlb_cgroup.o
CC net/mac80211/pm.o
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
AR drivers/nvmem/layouts/built-in.a
CC drivers/md/dm-sysfs.o
CC drivers/nvmem/core.o
CC drivers/firmware/efi/esrt.o
CC net/mac80211/rc80211_minstrel_ht.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
AR drivers/net/ethernet/qlogic/built-in.a
CC drivers/md/dm-stats.o
CC kernel/uid16.o
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
cc1: all warnings being treated as errors
make[6]: *** [/workspace/kernel/scripts/Makefile.build:194: drivers/gpu/drm/xe/xe_guc_ct.o] Error 1
make[6]: *** Waiting for unfinished jobs....
CC drivers/hid/hidraw.o
CC drivers/acpi/acpica/utmutex.o
AR drivers/mailbox/built-in.a
CC drivers/platform/x86/wmi-bmof.o
CC arch/x86/kernel/mpparse.o
AR drivers/cpufreq/built-in.a
CC drivers/gpu/drm/drm_property.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC net/ipv4/sysctl_net_ipv4.o
CC drivers/firmware/efi/libstub/lib-ctype.o
CC net/mac80211/wbrf.o
CC fs/fs_pin.o
CC drivers/md/dm-rq.o
CC drivers/firmware/efi/libstub/alignedmem.o
CC drivers/platform/x86/eeepc-laptop.o
AR drivers/net/ethernet/qualcomm/emac/built-in.a
AR fs/nfs/built-in.a
AR drivers/net/ethernet/qualcomm/built-in.a
CC net/ipv6/ip6_icmp.o
CC drivers/md/dm-io-rewind.o
CC drivers/net/ethernet/realtek/8139too.o
CC drivers/acpi/acpica/utnonansi.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC drivers/platform/x86/p2sb.o
CC lib/cpu_rmap.o
CC net/ipv4/proc.o
CC drivers/acpi/acpica/utobject.o
CC fs/nsfs.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
CC drivers/gpu/drm/drm_rect.o
CC drivers/net/ethernet/realtek/r8169_phy_config.o
AR drivers/net/ethernet/renesas/built-in.a
CC drivers/acpi/bgrt.o
CC net/ipv4/fib_rules.o
CC arch/x86/kernel/trace_clock.o
CC lib/dynamic_queue_limits.o
CC kernel/kallsyms.o
CC fs/fs_types.o
CC drivers/hid/hid-generic.o
make[5]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu/drm/xe] Error 2
make[5]: *** Waiting for unfinished jobs....
CC drivers/firmware/efi/runtime-wrappers.o
CC net/ipv4/ipmr.o
CC drivers/firmware/efi/libstub/relocate.o
CC drivers/hid/hid-a4tech.o
CC mm/early_ioremap.o
AR drivers/net/ethernet/rdc/built-in.a
CC drivers/md/dm-builtin.o
CC drivers/acpi/acpica/utosi.o
CC net/ipv6/output_core.o
CC drivers/acpi/spcr.o
CC drivers/acpi/acpica/utownerid.o
CC drivers/acpi/acpica/utpredef.o
CC kernel/acct.o
AR drivers/net/ethernet/rocker/built-in.a
CC arch/x86/kernel/trace.o
AR drivers/net/ethernet/samsung/built-in.a
CC drivers/md/dm-raid1.o
AR drivers/nvmem/built-in.a
CC drivers/firmware/efi/capsule-loader.o
CC arch/x86/kernel/rethook.o
CC mm/secretmem.o
CC fs/fs_context.o
CC fs/fs_parser.o
CC mm/hmm.o
CC drivers/firmware/efi/earlycon.o
CC kernel/vmcore_info.o
AR drivers/net/ethernet/seeq/built-in.a
CC drivers/hid/hid-apple.o
AR drivers/net/ethernet/silan/built-in.a
CC fs/fsopen.o
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC mm/memfd.o
CC drivers/hid/hid-belkin.o
CC net/ipv6/protocol.o
CC drivers/acpi/acpica/utresdecode.o
CC lib/glob.o
CC arch/x86/kernel/vmcore_info_32.o
CC net/ipv4/ipmr_base.o
AR drivers/platform/x86/built-in.a
AR drivers/platform/built-in.a
AR drivers/net/ethernet/sis/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
CC drivers/hid/hid-cherry.o
CC drivers/acpi/acpica/utresrc.o
CC drivers/firmware/efi/libstub/printk.o
CC fs/init.o
CC lib/strncpy_from_user.o
CC drivers/md/dm-log.o
CC drivers/hid/hid-chicony.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC drivers/md/dm-region-hash.o
CC fs/kernel_read_file.o
CC arch/x86/kernel/machine_kexec_32.o
CC kernel/elfcorehdr.o
CC kernel/crash_reserve.o
CC drivers/hid/hid-cypress.o
CC drivers/firmware/efi/libstub/x86-stub.o
CC net/ipv6/ip6_offload.o
CC drivers/gpu/drm/i915/gt/intel_gt.o
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC lib/strnlen_user.o
CC drivers/acpi/acpica/utstate.o
CC drivers/hid/hid-ezkey.o
AS arch/x86/kernel/relocate_kernel_32.o
AR drivers/net/ethernet/sfc/built-in.a
CC lib/net_utils.o
CC drivers/hid/hid-gyration.o
CC mm/ptdump.o
CC drivers/hid/hid-ite.o
AR drivers/net/ethernet/nvidia/built-in.a
CC arch/x86/kernel/crash_dump_32.o
CC net/ipv6/tcpv6_offload.o
CC lib/sg_pool.o
AR drivers/firmware/efi/built-in.a
CC kernel/kexec_core.o
CC drivers/hid/hid-kensington.o
CC drivers/firmware/efi/libstub/smbios.o
CC arch/x86/kernel/crash.o
AR drivers/net/ethernet/smsc/built-in.a
CC drivers/acpi/acpica/utstring.o
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
CC fs/mnt_idmapping.o
CC arch/x86/kernel/module.o
CC drivers/acpi/acpica/utstrsuppt.o
CC drivers/acpi/acpica/utstrtoul64.o
CC drivers/md/dm-zero.o
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
CC net/ipv6/exthdrs_offload.o
CC mm/execmem.o
AR drivers/net/ethernet/socionext/built-in.a
CC kernel/crash_core.o
CC fs/remap_range.o
CC drivers/hid/hid-lg.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
CC arch/x86/kernel/doublefault_32.o
CC net/ipv4/syncookies.o
CC drivers/acpi/acpica/utxface.o
AR drivers/net/ethernet/stmicro/built-in.a
CC net/ipv6/inet6_hashtables.o
CC lib/stackdepot.o
CC net/ipv6/mcast_snoop.o
CC net/ipv4/tunnel4.o
CC arch/x86/kernel/early_printk.o
CC kernel/kexec.o
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
CC fs/pidfs.o
AR drivers/net/ethernet/sun/built-in.a
CC drivers/hid/hid-lgff.o
CC kernel/utsname.o
AR drivers/net/ethernet/tehuti/built-in.a
CC net/ipv4/ipconfig.o
CC net/ipv4/netfilter.o
CC arch/x86/kernel/hpet.o
CC lib/asn1_decoder.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC kernel/pid_namespace.o
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC fs/buffer.o
CC fs/mpage.o
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
CC drivers/acpi/acpica/utxfinit.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
CC kernel/stop_machine.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
AR drivers/md/built-in.a
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
AR drivers/net/ethernet/ti/built-in.a
AR drivers/net/ethernet/vertexcom/built-in.a
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
CC arch/x86/kernel/amd_nb.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
CC kernel/audit.o
AR drivers/firmware/efi/libstub/lib.a
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC arch/x86/kernel/kvm.o
CC drivers/hid/hid-lg4ff.o
AR drivers/firmware/built-in.a
CC net/ipv4/tcp_cubic.o
CC kernel/auditfilter.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
CC kernel/auditsc.o
CC drivers/acpi/acpica/utxferror.o
GEN lib/oid_registry_data.c
AR mm/built-in.a
CC drivers/hid/hid-lg-g15.o
AR drivers/net/ethernet/via/built-in.a
CC fs/proc_namespace.o
CC fs/direct-io.o
CC arch/x86/kernel/kvmclock.o
CC drivers/hid/hid-microsoft.o
CC drivers/hid/hid-monterey.o
CC net/ipv4/tcp_sigpool.o
CC arch/x86/kernel/paravirt.o
CC drivers/hid/hid-ntrig.o
AR drivers/net/ethernet/wangxun/built-in.a
CC drivers/hid/hid-pl.o
CC fs/eventpoll.o
CC kernel/audit_watch.o
CC lib/ucs2_string.o
CC arch/x86/kernel/pvclock.o
CC net/ipv4/cipso_ipv4.o
CC drivers/acpi/acpica/utxfmutex.o
CC kernel/audit_fsnotify.o
CC kernel/audit_tree.o
CC net/ipv4/xfrm4_policy.o
CC arch/x86/kernel/pcspeaker.o
CC fs/anon_inodes.o
CC kernel/kprobes.o
CC lib/sbitmap.o
AR drivers/net/ethernet/wiznet/built-in.a
CC arch/x86/kernel/check.o
AR drivers/net/ethernet/xilinx/built-in.a
CC lib/group_cpus.o
AR drivers/net/ethernet/xircom/built-in.a
AR drivers/net/ethernet/synopsys/built-in.a
AR drivers/net/ethernet/realtek/built-in.a
CC arch/x86/kernel/uprobes.o
CC net/ipv4/xfrm4_state.o
AR drivers/net/ethernet/pensando/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
CC kernel/seccomp.o
CC lib/fw_table.o
CC fs/signalfd.o
AR drivers/acpi/acpica/built-in.a
CC net/ipv4/xfrm4_input.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
AR drivers/acpi/built-in.a
AR drivers/net/ethernet/intel/built-in.a
AR lib/lib.a
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
AR drivers/net/ethernet/built-in.a
CC drivers/hid/hid-petalynx.o
CC fs/timerfd.o
CC net/ipv4/xfrm4_output.o
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
AR drivers/net/built-in.a
CC fs/eventfd.o
CC kernel/relay.o
CC drivers/hid/hid-redragon.o
AR net/ipv6/built-in.a
CC drivers/hid/hid-samsung.o
CC net/ipv4/xfrm4_protocol.o
GEN lib/crc32table.h
CC fs/aio.o
CC arch/x86/kernel/perf_regs.o
CC kernel/utsname_sysctl.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
CC fs/locks.o
CC fs/binfmt_misc.o
CC lib/oid_registry.o
CC kernel/delayacct.o
AR net/mac80211/built-in.a
CC arch/x86/kernel/tracepoint.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
CC fs/binfmt_script.o
CC kernel/taskstats.o
CC kernel/tsacct.o
CC drivers/gpu/drm/i915/gt/intel_gtt.o
CC fs/binfmt_elf.o
CC kernel/tracepoint.o
CC fs/mbcache.o
CC kernel/irq_work.o
CC drivers/gpu/drm/i915/gt/intel_llc.o
CC drivers/hid/hid-sony.o
CC fs/posix_acl.o
CC lib/crc32.o
CC arch/x86/kernel/itmt.o
CC drivers/hid/hid-sunplus.o
CC fs/coredump.o
CC arch/x86/kernel/umip.o
CC kernel/static_call.o
CC kernel/padata.o
CC fs/drop_caches.o
CC drivers/gpu/drm/i915/gt/intel_lrc.o
CC drivers/hid/hid-topseed.o
CC arch/x86/kernel/unwind_frame.o
CC fs/sysctls.o
CC fs/fhandle.o
CC kernel/jump_label.o
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC kernel/context_tracking.o
CC kernel/iomem.o
CC drivers/gpu/drm/i915/gt/intel_mocs.o
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC kernel/rseq.o
CC drivers/gpu/drm/i915/gt/intel_rc6.o
AR lib/built-in.a
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC drivers/gpu/drm/i915/gt/intel_ring.o
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
AR net/ipv4/built-in.a
AR net/built-in.a
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
CC drivers/gpu/drm/i915/gem/i915_gem_domain.o
CC drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
CC drivers/gpu/drm/i915/gem/i915_gem_lmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_mman.o
AR arch/x86/kernel/built-in.a
AR arch/x86/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
AR drivers/hid/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
AR kernel/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC drivers/gpu/drm/i915/i915_active.o
CC drivers/gpu/drm/i915/i915_cmd_parser.o
CC drivers/gpu/drm/i915/i915_deps.o
CC drivers/gpu/drm/i915/i915_gem.o
CC drivers/gpu/drm/i915/i915_gem_evict.o
CC drivers/gpu/drm/i915/i915_gem_gtt.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC drivers/gpu/drm/i915/i915_query.o
CC drivers/gpu/drm/i915/i915_request.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC drivers/gpu/drm/i915/i915_vma.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
AR fs/built-in.a
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
CC drivers/gpu/drm/i915/gt/intel_gsc.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC drivers/gpu/drm/i915/display/i9xx_display_sr.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC drivers/gpu/drm/i915/display/intel_atomic.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/display/intel_audio.o
CC drivers/gpu/drm/i915/display/intel_bios.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC drivers/gpu/drm/i915/display/intel_cmtg.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC drivers/gpu/drm/i915/display/intel_display_conversion.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC drivers/gpu/drm/i915/display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_params.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC drivers/gpu/drm/i915/display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_display_power_well.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC drivers/gpu/drm/i915/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC drivers/gpu/drm/i915/display/intel_hdcp.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_histogram.o
CC drivers/gpu/drm/i915/display/intel_hotplug.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_sprite.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC drivers/gpu/drm/i915/display/intel_tc.o
CC drivers/gpu/drm/i915/display/intel_vblank.o
CC drivers/gpu/drm/i915/display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_wm.o
CC drivers/gpu/drm/i915/display/skl_scaler.o
CC drivers/gpu/drm/i915/display/skl_universal_plane.o
CC drivers/gpu/drm/i915/display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_acpi.o
CC drivers/gpu/drm/i915/display/intel_opregion.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_pipe_crc.o
CC drivers/gpu/drm/i915/display/dvo_ch7017.o
CC drivers/gpu/drm/i915/display/dvo_ch7xxx.o
CC drivers/gpu/drm/i915/display/dvo_ivch.o
CC drivers/gpu/drm/i915/display/dvo_ns2501.o
CC drivers/gpu/drm/i915/display/dvo_sil164.o
CC drivers/gpu/drm/i915/display/dvo_tfp410.o
CC drivers/gpu/drm/i915/display/g4x_dp.o
CC drivers/gpu/drm/i915/display/g4x_hdmi.o
CC drivers/gpu/drm/i915/display/icl_dsi.o
CC drivers/gpu/drm/i915/display/intel_backlight.o
CC drivers/gpu/drm/i915/display/intel_crt.o
CC drivers/gpu/drm/i915/display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_ddi.o
CC drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_display_device.o
CC drivers/gpu/drm/i915/display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dvo.o
CC drivers/gpu/drm/i915/display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_lvds.o
CC drivers/gpu/drm/i915/display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_sdvo.o
CC drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.o
CC drivers/gpu/drm/i915/display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_tv.o
CC drivers/gpu/drm/i915/display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_vrr.o
CC drivers/gpu/drm/i915/display/vlv_dsi.o
CC drivers/gpu/drm/i915/display/vlv_dsi_pll.o
CC drivers/gpu/drm/i915/i915_perf.o
CC drivers/gpu/drm/i915/pxp/intel_pxp.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
CC drivers/gpu/drm/i915/i915_gpu_error.o
CC drivers/gpu/drm/i915/i915_vgpu.o
AR drivers/gpu/drm/i915/built-in.a
make[4]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu/drm] Error 2
make[3]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu] Error 2
make[2]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers] Error 2
make[1]: *** [/workspace/kernel/Makefile:1989: .] Error 2
make: *** [/workspace/kernel/Makefile:251: __sub-make] Error 2
run-parts: /workspace/ci/hooks/11-build-32b exited with return code 2
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✗ CI.checksparse: warning for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (18 preceding siblings ...)
2025-01-28 18:49 ` ✗ CI.Hooks: failure " Patchwork
@ 2025-01-28 18:50 ` Patchwork
2025-01-28 19:24 ` ✓ Xe.CI.BAT: success " Patchwork
2025-01-29 7:39 ` ✗ Xe.CI.Full: failure " Patchwork
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 18:50 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 20759526c04a7f776f477bee66300dae33b51872
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/drm_drv.c:447:6: warning: context imbalance in 'drm_dev_enter' - different lock contexts for basic block
+drivers/gpu/drm/drm_drv.c: note: in included file (through include/linux/notifier.h, arch/x86/include/asm/uprobes.h, include/linux/uprobes.h, include/linux/mm_types.h, include/linux/mmzone.h, include/linux/gfp.h, ...):
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1968:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1981:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1981:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.c:106:17: warning: cast truncates bits from constant value (e8d4a51000 becomes d4a51000)
+drivers/gpu/drm/i915/gt/intel_reset.c:1544:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:453:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:453:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:461:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:461:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:466:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:466:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:466:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:503:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:503:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:511:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:511:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:516:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:516:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:516:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:559:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:559:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:562:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:562:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:566:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:566:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:573:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:573:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:573:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:573:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1925:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1926:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1993:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1994:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2015:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2016:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1194:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: warning: incorrect type in argument 1 (different address spaces)
+./include/linux/srcu.h:350:9: warning: context imbalance in 'drm_dev_exit' - unexpected unlock
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✓ Xe.CI.BAT: success for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (19 preceding siblings ...)
2025-01-28 18:50 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-01-28 19:24 ` Patchwork
2025-01-29 7:39 ` ✗ Xe.CI.Full: failure " Patchwork
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-28 19:24 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 3126 bytes --]
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : success
== Summary ==
CI Bug Log - changes from xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060_BAT -> xe-pw-138867v9_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (8 -> 7)
------------------------------
Missing (1): bat-adlp-vm
Known issues
------------
Here are the changes found in xe-pw-138867v9_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
- bat-adlp-vf: NOTRUN -> [SKIP][1] ([Intel XE#2229] / [Intel XE#455]) +1 other test skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/bat-adlp-vf/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html
* igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
- bat-adlp-vf: NOTRUN -> [SKIP][2] ([Intel XE#2229])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/bat-adlp-vf/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
#### Possible fixes ####
* igt@xe_exec_basic@twice-bindexecqueue-userptr-rebind:
- bat-adlp-vf: [DMESG-WARN][3] ([Intel XE#4078]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/bat-adlp-vf/igt@xe_exec_basic@twice-bindexecqueue-userptr-rebind.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/bat-adlp-vf/igt@xe_exec_basic@twice-bindexecqueue-userptr-rebind.html
* igt@xe_live_ktest@xe_migrate:
- bat-adlp-vf: [SKIP][5] ([Intel XE#1192]) -> [PASS][6] +1 other test pass
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
#### Warnings ####
* igt@xe_live_ktest@xe_bo:
- bat-adlp-vf: [SKIP][7] ([Intel XE#1192]) -> [SKIP][8] ([Intel XE#2229] / [Intel XE#455])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
[Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#4078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4078
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
Build changes
-------------
* Linux: xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060 -> xe-pw-138867v9
IGT_8212: 76102a17560c6e6fc6528db29286b0266ccc48ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060: f85f4e698972bc6021185ccba59e6e3638a8e060
xe-pw-138867v9: 138867v9
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/index.html
[-- Attachment #2: Type: text/html, Size: 4084 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* ✗ Xe.CI.Full: failure for Display Global Histogram (rev9)
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
` (20 preceding siblings ...)
2025-01-28 19:24 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-01-29 7:39 ` Patchwork
21 siblings, 0 replies; 63+ messages in thread
From: Patchwork @ 2025-01-29 7:39 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 67704 bytes --]
== Series Details ==
Series: Display Global Histogram (rev9)
URL : https://patchwork.freedesktop.org/series/138867/
State : failure
== Summary ==
CI Bug Log - changes from xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060_full -> xe-pw-138867v9_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-138867v9_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-138867v9_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-138867v9_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render:
- shard-adlp: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render.html
* igt@kms_properties@get_properties-sanity-atomic:
- shard-adlp: [PASS][3] -> [FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@kms_properties@get_properties-sanity-atomic.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@kms_properties@get_properties-sanity-atomic.html
- shard-bmg: [PASS][5] -> [FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-8/igt@kms_properties@get_properties-sanity-atomic.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-7/igt@kms_properties@get_properties-sanity-atomic.html
- shard-lnl: [PASS][7] -> [FAIL][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-lnl-2/igt@kms_properties@get_properties-sanity-atomic.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_properties@get_properties-sanity-atomic.html
Known issues
------------
Here are the changes found in xe-pw-138867v9_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@async-flip-suspend-resume:
- shard-adlp: NOTRUN -> [DMESG-WARN][9] ([Intel XE#1033]) +2 other tests dmesg-warn
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_async_flips@async-flip-suspend-resume.html
* igt@kms_async_flips@async-flip-with-page-flip-events-atomic:
- shard-lnl: NOTRUN -> [FAIL][10] ([Intel XE#3719] / [Intel XE#911]) +3 other tests fail
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-atomic.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#2550] / [Intel XE#3767]) +15 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#3658])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-90:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1407]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-32bpp-rotate-180:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#1124]) +3 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
- shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#1124]) +5 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-adlp: NOTRUN -> [DMESG-FAIL][16] ([Intel XE#1033])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-64bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][17] ([Intel XE#1124]) +3 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_big_fb@yf-tiled-64bpp-rotate-270.html
* igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#2191])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-1-displays-2160x1440p:
- shard-adlp: NOTRUN -> [SKIP][19] ([Intel XE#367])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
* igt@kms_bw@linear-tiling-4-displays-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#1512])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#2887]) +3 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][22] ([Intel XE#455] / [Intel XE#787]) +20 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][23] ([Intel XE#3442])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#3442])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#2669]) +3 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-edp-1.html
* igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][26] ([Intel XE#787]) +132 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6:
- shard-dg2-set2: [PASS][27] -> [INCOMPLETE][28] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124] / [Intel XE#4010])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-adlp: NOTRUN -> [SKIP][29] ([Intel XE#455] / [Intel XE#787]) +7 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
- shard-dg2-set2: [PASS][30] -> [INCOMPLETE][31] ([Intel XE#1727] / [Intel XE#3124] / [Intel XE#4010])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: [PASS][32] -> [INCOMPLETE][33] ([Intel XE#3124] / [Intel XE#4010])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6:
- shard-dg2-set2: [PASS][34] -> [DMESG-WARN][35] ([Intel XE#1727] / [Intel XE#3113])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6.html
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#787]) +11 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1.html
* igt@kms_chamelium_color@ctm-limited-range:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#306])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_chamelium_color@ctm-limited-range.html
* igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#373]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html
* igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#373]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
* igt@kms_chamelium_hpd@dp-hpd:
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#373]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_chamelium_hpd@dp-hpd.html
* igt@kms_color@gamma:
- shard-bmg: [PASS][41] -> [DMESG-WARN][42] ([Intel XE#877]) +2 other tests dmesg-warn
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-4/igt@kms_color@gamma.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-8/igt@kms_color@gamma.html
* igt@kms_content_protection@legacy@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [FAIL][43] ([Intel XE#1178]) +1 other test fail
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@kms_content_protection@legacy@pipe-a-dp-2.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [FAIL][44] ([Intel XE#3304])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_content_protection@lic-type-0@pipe-a-dp-4.html
* igt@kms_content_protection@mei-interface:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#1468])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_content_protection@mei-interface.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-adlp: NOTRUN -> [SKIP][46] ([Intel XE#308])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-128x42:
- shard-lnl: NOTRUN -> [SKIP][47] ([Intel XE#1424]) +3 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_cursor_crc@cursor-random-128x42.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2-set2: NOTRUN -> [SKIP][48] ([Intel XE#308])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-adlp: NOTRUN -> [SKIP][49] ([Intel XE#309])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#309])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#323])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-dg2-set2: NOTRUN -> [SKIP][52] ([Intel XE#323])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic:
- shard-dg2-set2: [PASS][53] -> [DMESG-WARN][54] ([Intel XE#1033]) +6 other tests dmesg-warn
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-dg2-set2: NOTRUN -> [SKIP][55] ([Intel XE#455])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_feature_discovery@display-4x:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#1138])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_feature_discovery@display-4x.html
* igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#1421]) +4 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3:
- shard-bmg: [PASS][58] -> [FAIL][59] ([Intel XE#3321]) +2 other tests fail
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-8/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
* igt@kms_flip@2x-plain-flip-interruptible:
- shard-adlp: NOTRUN -> [SKIP][60] ([Intel XE#310])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_flip@2x-plain-flip-interruptible.html
* igt@kms_flip@flip-vs-blocking-wf-vblank:
- shard-adlp: [PASS][61] -> [FAIL][62] ([Intel XE#886]) +1 other test fail
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@kms_flip@flip-vs-blocking-wf-vblank.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_flip@flip-vs-blocking-wf-vblank.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-dg2-set2: [PASS][63] -> [FAIL][64] ([Intel XE#301])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4:
- shard-dg2-set2: NOTRUN -> [FAIL][65] ([Intel XE#301]) +6 other tests fail
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4.html
* igt@kms_flip@flip-vs-suspend-interruptible@d-dp2:
- shard-dg2-set2: NOTRUN -> [ABORT][66] ([Intel XE#1033] / [Intel XE#2625])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@kms_flip@flip-vs-suspend-interruptible@d-dp2.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-adlp: NOTRUN -> [SKIP][67] ([Intel XE#455]) +3 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#1397] / [Intel XE#1745])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#1397])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#1401] / [Intel XE#1745])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#1401])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-default-mode.html
* igt@kms_force_connector_basic@force-connector-state:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#352]) +1 other test skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_force_connector_basic@force-connector-state.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][73] ([Intel XE#651]) +6 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw:
- shard-adlp: NOTRUN -> [SKIP][74] ([Intel XE#656]) +13 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#656]) +14 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][76] ([Intel XE#651]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-slowdraw:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#651]) +7 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-slowdraw.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-dg2-set2: NOTRUN -> [SKIP][78] ([Intel XE#653]) +6 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg2-set2: NOTRUN -> [SKIP][79] ([Intel XE#658])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
- shard-adlp: NOTRUN -> [SKIP][80] ([Intel XE#653]) +3 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][81] -> [SKIP][82] ([Intel XE#1503])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3:
- shard-bmg: [PASS][83] -> [DMESG-WARN][84] ([Intel XE#4172]) +12 other tests dmesg-warn
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-4/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-8/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#2763]) +7 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b:
- shard-dg2-set2: NOTRUN -> [SKIP][86] ([Intel XE#2763]) +2 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d:
- shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-adlp: NOTRUN -> [SKIP][88] ([Intel XE#870])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-lnl: NOTRUN -> [SKIP][89] ([Intel XE#736])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc6-dpms:
- shard-adlp: NOTRUN -> [FAIL][90] ([Intel XE#718])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-lnl: NOTRUN -> [SKIP][91] ([Intel XE#1439] / [Intel XE#836])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][92] ([Intel XE#1489])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
- shard-lnl: NOTRUN -> [SKIP][93] ([Intel XE#2893]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-adlp: NOTRUN -> [SKIP][94] ([Intel XE#1489]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr-primary-render:
- shard-dg2-set2: NOTRUN -> [SKIP][95] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_psr@fbc-psr-primary-render.html
* igt@kms_psr@fbc-psr-sprite-blt:
- shard-adlp: NOTRUN -> [SKIP][96] ([Intel XE#2850] / [Intel XE#929]) +5 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_psr@fbc-psr-sprite-blt.html
* igt@kms_psr@pr-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#1406]) +3 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_psr@pr-primary-blt.html
* igt@kms_rotation_crc@primary-rotation-270:
- shard-adlp: NOTRUN -> [SKIP][98] ([Intel XE#3414])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_rotation_crc@primary-rotation-270.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
- shard-dg2-set2: NOTRUN -> [SKIP][99] ([Intel XE#1127])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#362])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_tv_load_detect@load-detect:
- shard-adlp: NOTRUN -> [SKIP][101] ([Intel XE#330])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_tv_load_detect@load-detect.html
* igt@kms_vrr@flip-basic-fastset:
- shard-lnl: NOTRUN -> [FAIL][102] ([Intel XE#1522]) +1 other test fail
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@kms_vrr@flip-basic-fastset.html
* igt@kms_writeback@writeback-fb-id:
- shard-adlp: NOTRUN -> [SKIP][103] ([Intel XE#756])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@kms_writeback@writeback-fb-id.html
* igt@sriov_basic@enable-vfs-autoprobe-off:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#1091] / [Intel XE#2849])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@sriov_basic@enable-vfs-autoprobe-off.html
* igt@xe_copy_basic@mem-copy-linear-0x369:
- shard-dg2-set2: NOTRUN -> [SKIP][105] ([Intel XE#1123])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0x369.html
* igt@xe_copy_basic@mem-copy-linear-0xfffe:
- shard-adlp: NOTRUN -> [SKIP][106] ([Intel XE#1123])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
* igt@xe_eudebug@basic-client-th:
- shard-adlp: NOTRUN -> [SKIP][107] ([Intel XE#2905]) +3 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_eudebug@basic-client-th.html
* igt@xe_eudebug@basic-close:
- shard-lnl: NOTRUN -> [SKIP][108] ([Intel XE#2905]) +2 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@xe_eudebug@basic-close.html
* igt@xe_eudebug@basic-vm-access-parameters:
- shard-dg2-set2: NOTRUN -> [SKIP][109] ([Intel XE#2905]) +2 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_eudebug@basic-vm-access-parameters.html
* igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
- shard-dg2-set2: NOTRUN -> [SKIP][110] ([Intel XE#3889])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html
* igt@xe_evict@evict-beng-small-external-cm:
- shard-adlp: NOTRUN -> [SKIP][111] ([Intel XE#261] / [Intel XE#688])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_evict@evict-beng-small-external-cm.html
* igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
- shard-lnl: NOTRUN -> [SKIP][112] ([Intel XE#688]) +2 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-bind:
- shard-adlp: NOTRUN -> [SKIP][113] ([Intel XE#1392]) +3 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-bind.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
- shard-dg2-set2: [PASS][114] -> [SKIP][115] ([Intel XE#1392]) +2 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#1392]) +3 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
* igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][117] ([Intel XE#288]) +4 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-prefetch.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
- shard-adlp: NOTRUN -> [SKIP][118] ([Intel XE#288]) +7 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html
* igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence:
- shard-adlp: NOTRUN -> [SKIP][119] ([Intel XE#2360])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html
* igt@xe_exec_threads@threads-hang-rebind-err:
- shard-dg2-set2: [PASS][120] -> [DMESG-WARN][121] ([Intel XE#3876])
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_exec_threads@threads-hang-rebind-err.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_exec_threads@threads-hang-rebind-err.html
* igt@xe_media_fill@media-fill:
- shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#560])
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@xe_media_fill@media-fill.html
* igt@xe_mmap@pci-membarrier:
- shard-lnl: NOTRUN -> [SKIP][123] ([Intel XE#4045])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@xe_mmap@pci-membarrier.html
* igt@xe_module_load@load:
- shard-adlp: ([PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [PASS][136], [PASS][137], [PASS][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142], [PASS][143], [PASS][144], [PASS][145], [PASS][146], [PASS][147]) -> ([SKIP][148], [PASS][149], [PASS][150], [PASS][151], [PASS][152], [PASS][153], [PASS][154], [PASS][155], [PASS][156], [PASS][157], [PASS][158], [PASS][159], [PASS][160], [PASS][161], [PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [PASS][168], [PASS][169], [PASS][170], [PASS][171], [PASS][172], [PASS][173]) ([Intel XE#378])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@xe_module_load@load.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_module_load@load.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@xe_module_load@load.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@xe_module_load@load.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@xe_module_load@load.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-3/igt@xe_module_load@load.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-6/igt@xe_module_load@load.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-6/igt@xe_module_load@load.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-3/igt@xe_module_load@load.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_module_load@load.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_module_load@load.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_module_load@load.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-6/igt@xe_module_load@load.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-3/igt@xe_module_load@load.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_module_load@load.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_module_load@load.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-9/igt@xe_module_load@load.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-3/igt@xe_module_load@load.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-3/igt@xe_module_load@load.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_module_load@load.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_module_load@load.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_module_load@load.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-6/igt@xe_module_load@load.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_module_load@load.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_module_load@load.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_module_load@load.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_module_load@load.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_module_load@load.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-6/igt@xe_module_load@load.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-6/igt@xe_module_load@load.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@xe_module_load@load.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-6/igt@xe_module_load@load.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-6/igt@xe_module_load@load.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-6/igt@xe_module_load@load.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_module_load@load.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@xe_module_load@load.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@xe_module_load@load.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_module_load@load.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@xe_module_load@load.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_module_load@load.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@xe_module_load@load.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@xe_module_load@load.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@xe_module_load@load.html
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@xe_module_load@load.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_module_load@load.html
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_module_load@load.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_module_load@load.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-9/igt@xe_module_load@load.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-9/igt@xe_module_load@load.html
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-9/igt@xe_module_load@load.html
* igt@xe_module_load@reload:
- shard-adlp: [PASS][174] -> [DMESG-WARN][175] ([Intel XE#4173]) +1 other test dmesg-warn
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@xe_module_load@reload.html
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@xe_module_load@reload.html
* igt@xe_oa@buffer-fill:
- shard-dg2-set2: NOTRUN -> [SKIP][176] ([Intel XE#2541] / [Intel XE#3573])
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@xe_oa@buffer-fill.html
* igt@xe_oa@non-system-wide-paranoid:
- shard-adlp: NOTRUN -> [SKIP][177] ([Intel XE#2541] / [Intel XE#3573]) +1 other test skip
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_oa@non-system-wide-paranoid.html
* igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p:
- shard-dg2-set2: NOTRUN -> [FAIL][178] ([Intel XE#1173])
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p.html
* igt@xe_pm@d3cold-mocs:
- shard-adlp: NOTRUN -> [SKIP][179] ([Intel XE#2284])
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_pm@d3cold-mocs.html
* igt@xe_pm@s2idle-basic:
- shard-dg2-set2: [PASS][180] -> [ABORT][181] ([Intel XE#1358] / [Intel XE#1794]) +3 other tests abort
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_pm@s2idle-basic.html
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_pm@s2idle-basic.html
* igt@xe_pm@s2idle-vm-bind-prefetch:
- shard-dg2-set2: [PASS][182] -> [ABORT][183] ([Intel XE#1358]) +1 other test abort
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_pm@s2idle-vm-bind-prefetch.html
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_pm@s2idle-vm-bind-prefetch.html
* igt@xe_pm@s4-exec-after:
- shard-adlp: [PASS][184] -> [ABORT][185] ([Intel XE#1358] / [Intel XE#1607])
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-6/igt@xe_pm@s4-exec-after.html
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-9/igt@xe_pm@s4-exec-after.html
- shard-lnl: [PASS][186] -> [ABORT][187] ([Intel XE#1358] / [Intel XE#1607])
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-lnl-6/igt@xe_pm@s4-exec-after.html
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-2/igt@xe_pm@s4-exec-after.html
* igt@xe_pm@s4-vm-bind-prefetch:
- shard-adlp: [PASS][188] -> [ABORT][189] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794])
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-8/igt@xe_pm@s4-vm-bind-prefetch.html
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-9/igt@xe_pm@s4-vm-bind-prefetch.html
* igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_copy:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][190] ([Intel XE#1033]) +20 other tests dmesg-warn
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_copy.html
* igt@xe_query@multigpu-query-invalid-cs-cycles:
- shard-lnl: NOTRUN -> [SKIP][191] ([Intel XE#944]) +1 other test skip
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-1/igt@xe_query@multigpu-query-invalid-cs-cycles.html
* igt@xe_query@multigpu-query-mem-usage:
- shard-adlp: NOTRUN -> [SKIP][192] ([Intel XE#944])
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-3/igt@xe_query@multigpu-query-mem-usage.html
#### Possible fixes ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: [FAIL][193] ([Intel XE#827]) -> [PASS][194] +1 other test pass
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-7/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-adlp: [DMESG-FAIL][195] ([Intel XE#1033]) -> [PASS][196]
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_color@legacy-gamma:
- shard-bmg: [DMESG-WARN][197] ([Intel XE#877]) -> [PASS][198] +1 other test pass
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-4/igt@kms_color@legacy-gamma.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-4/igt@kms_color@legacy-gamma.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4:
- shard-dg2-set2: [FAIL][199] ([Intel XE#301]) -> [PASS][200] +2 other tests pass
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3:
- shard-bmg: [FAIL][201] ([Intel XE#3321]) -> [PASS][202]
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2:
- shard-bmg: [FAIL][203] ([Intel XE#2882]) -> [PASS][204] +2 other tests pass
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-7/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-1/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-adlp: [DMESG-WARN][205] ([Intel XE#2953]) -> [PASS][206] +1 other test pass
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@xe_ccs@block-copy-uncompressed-inc-dimension@linear-uncompressed-compfmt0-vram01-system-331x331:
- shard-dg2-set2: [DMESG-WARN][207] ([Intel XE#1033]) -> [PASS][208] +6 other tests pass
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_ccs@block-copy-uncompressed-inc-dimension@linear-uncompressed-compfmt0-vram01-system-331x331.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-436/igt@xe_ccs@block-copy-uncompressed-inc-dimension@linear-uncompressed-compfmt0-vram01-system-331x331.html
* igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap:
- shard-dg2-set2: [SKIP][209] ([Intel XE#1392]) -> [PASS][210] +5 other tests pass
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_wa_init:
- shard-adlp: [DMESG-WARN][211] ([Intel XE#4173]) -> [PASS][212]
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-2/igt@xe_fault_injection@inject-fault-probe-function-xe_wa_init.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-8/igt@xe_fault_injection@inject-fault-probe-function-xe_wa_init.html
* igt@xe_live_ktest@xe_mocs:
- shard-bmg: [SKIP][213] ([Intel XE#1192]) -> [PASS][214]
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-2/igt@xe_live_ktest@xe_mocs.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-1/igt@xe_live_ktest@xe_mocs.html
* igt@xe_module_load@load:
- shard-dg2-set2: ([PASS][215], [PASS][216], [PASS][217], [PASS][218], [PASS][219], [PASS][220], [PASS][221], [PASS][222], [PASS][223], [PASS][224], [PASS][225], [PASS][226], [PASS][227], [PASS][228], [PASS][229], [PASS][230], [PASS][231], [SKIP][232], [PASS][233], [PASS][234], [PASS][235], [PASS][236], [PASS][237], [PASS][238], [PASS][239], [PASS][240]) ([Intel XE#378]) -> ([PASS][241], [PASS][242], [PASS][243], [PASS][244], [PASS][245], [PASS][246], [PASS][247], [PASS][248], [PASS][249], [PASS][250], [PASS][251], [PASS][252], [PASS][253], [PASS][254], [PASS][255], [PASS][256], [PASS][257], [PASS][258], [PASS][259], [PASS][260], [PASS][261], [PASS][262], [PASS][263], [PASS][264], [PASS][265])
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@xe_module_load@load.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_module_load@load.html
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-434/igt@xe_module_load@load.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_module_load@load.html
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-434/igt@xe_module_load@load.html
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_module_load@load.html
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_module_load@load.html
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@xe_module_load@load.html
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@xe_module_load@load.html
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_module_load@load.html
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@xe_module_load@load.html
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@xe_module_load@load.html
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@xe_module_load@load.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@xe_module_load@load.html
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_module_load@load.html
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_module_load@load.html
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_module_load@load.html
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_module_load@load.html
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-433/igt@xe_module_load@load.html
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_module_load@load.html
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-434/igt@xe_module_load@load.html
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-434/igt@xe_module_load@load.html
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-466/igt@xe_module_load@load.html
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_module_load@load.html
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_module_load@load.html
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-434/igt@xe_module_load@load.html
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_module_load@load.html
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_module_load@load.html
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_module_load@load.html
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-436/igt@xe_module_load@load.html
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_module_load@load.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-436/igt@xe_module_load@load.html
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_module_load@load.html
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-463/igt@xe_module_load@load.html
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_module_load@load.html
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@xe_module_load@load.html
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-436/igt@xe_module_load@load.html
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-436/igt@xe_module_load@load.html
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_module_load@load.html
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_module_load@load.html
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_module_load@load.html
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_module_load@load.html
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@xe_module_load@load.html
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@xe_module_load@load.html
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@xe_module_load@load.html
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@xe_module_load@load.html
* igt@xe_pm@s2idle-basic-exec:
- shard-dg2-set2: [ABORT][266] ([Intel XE#1358]) -> [PASS][267]
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_pm@s2idle-basic-exec.html
[267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_pm@s2idle-basic-exec.html
* igt@xe_pm@s4-multiple-execs:
- shard-adlp: [ABORT][268] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794]) -> [PASS][269]
[268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-adlp-9/igt@xe_pm@s4-multiple-execs.html
[269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-adlp-4/igt@xe_pm@s4-multiple-execs.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-lnl: [ABORT][270] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794]) -> [PASS][271] +1 other test pass
[270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-lnl-2/igt@xe_pm@s4-vm-bind-unbind-all.html
[271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-lnl-4/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_sysfs_scheduler@preempt_timeout_us-invalid:
- shard-bmg: [DMESG-WARN][272] ([Intel XE#4172]) -> [PASS][273] +9 other tests pass
[272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-7/igt@xe_sysfs_scheduler@preempt_timeout_us-invalid.html
[273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-1/igt@xe_sysfs_scheduler@preempt_timeout_us-invalid.html
#### Warnings ####
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-dg2-set2: [DMESG-WARN][274] ([Intel XE#1033]) -> [ABORT][275] ([Intel XE#1033] / [Intel XE#2625])
[274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-436/igt@kms_flip@flip-vs-suspend-interruptible.html
[275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-432/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-dg2-set2: [ABORT][276] ([Intel XE#1033] / [Intel XE#2625]) -> [DMESG-WARN][277] ([Intel XE#1033])
[276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-suspend.html
[277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-suspend.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2-set2: [SKIP][278] ([Intel XE#362]) -> [FAIL][279] ([Intel XE#1729])
[278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
[279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_vblank@ts-continuation-suspend:
- shard-dg2-set2: [ABORT][280] ([Intel XE#1033] / [Intel XE#2625] / [Intel XE#4057]) -> [DMESG-WARN][281] ([Intel XE#1033])
[280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@kms_vblank@ts-continuation-suspend.html
[281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-466/igt@kms_vblank@ts-continuation-suspend.html
* igt@xe_live_ktest@xe_bo:
- shard-bmg: [DMESG-WARN][282] ([Intel XE#4172]) -> [SKIP][283] ([Intel XE#1192])
[282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-bmg-1/igt@xe_live_ktest@xe_bo.html
[283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-bmg-2/igt@xe_live_ktest@xe_bo.html
* igt@xe_peer2peer@read:
- shard-dg2-set2: [SKIP][284] ([Intel XE#1061]) -> [FAIL][285] ([Intel XE#1173])
[284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060/shard-dg2-432/igt@xe_peer2peer@read.html
[285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/shard-dg2-433/igt@xe_peer2peer@read.html
[Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
[Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1468
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
[Intel XE#1522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1522
[Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
[Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
[Intel XE#2550]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2550
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2625
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
[Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3719]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3719
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3889]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3889
[Intel XE#4010]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4010
[Intel XE#4045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4045
[Intel XE#4057]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4057
[Intel XE#4172]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4172
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
[Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
[Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
[Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060 -> xe-pw-138867v9
IGT_8212: 76102a17560c6e6fc6528db29286b0266ccc48ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2565-f85f4e698972bc6021185ccba59e6e3638a8e060: f85f4e698972bc6021185ccba59e6e3638a8e060
xe-pw-138867v9: 138867v9
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138867v9/index.html
[-- Attachment #2: Type: text/html, Size: 77917 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
@ 2025-02-14 6:38 ` Kandpal, Suraj
2025-02-14 8:38 ` Kandpal, Suraj
2025-03-13 6:10 ` Murthy, Arun R
2025-02-17 10:08 ` Pekka Paalanen
1 sibling, 2 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 6:38 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 01/14] drm: Define histogram structures exposed to user
>
> Display Histogram is an array of bins and can be generated in many ways
> referred to as modes.
> Ex: HSV max(RGB), Wighted RGB etc.
>
> Understanding the histogram data format(Ex: HSV max(RGB)) Histogram is just
> the pixel count.
> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> 25 bits should be sufficient to represent this along with a buffer of 7 bits(future
> use) u32 is being considered.
> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5 bits,
> hence 32 bins.
> Below mentioned algorithm illustrates the histogram generation in hardware.
>
> hist[32] = {0};
> for (i = 0; i < resolution; i++) {
> bin = max(RGB[i]);
> bin = bin >> 3; /* consider the most significant bits */
> hist[bin]++;
> }
> If the entire image is Red color then max(255,0,0) is 255 so the pixel count of
> each pixels will be placed in the last bin. Hence except hist[31] all other bins
> will have a value zero.
> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>
> Description of the structures, properties defined are documented in the header
> file include/uapi/drm/drm_mode.h
>
> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> include/uapi/drm/drm_mode.h | 65
> +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 65 insertions(+)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index
> c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b
> 20ac6cbf5df69e9 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> __u32 pad;
> };
>
> +/**
> + * enum drm_mode_histogram
> + *
> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> + * Maximum resolution at present 10k, 10240x4320 = 44236800
> + * can be denoted in 25bits. With an additional 7 bits in buffer each
> +bin
> + * can be a u32 value.
> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
Type: SDR
> + * If the most significant 5 bits are considered, then bins = 2^5
> + * will be 32 bins.
> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> + * For illustration consider a full RED image of 10k resolution
> +considering all
> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with
> +SDR
> + * plane similarly with HDR the same would look like hist[65535] =
> + * {0,0,0,....44236800}
> + */
> +enum drm_mode_histogram {
> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01, };
> +
> +/**
> + * struct drm_histogram_caps
> + *
> + * @histogram_mode: histogram generation modes, defined in the
> + * enum drm_mode_histogram
> + * @bins_count: number of bins for a chosen histogram mode. For illustration
> + * refer the above defined histogram mode.
> + */
> +struct drm_histogram_caps {
> + __u32 histogram_mode;
Do we really need __u32 for histogram mode don't you think a __u16 should suffice?
> + __u32 bins_count;
Nit: bin_count sounds better.
> +};
> +
> +/**
> + * struct drm_histogram_config
> + *
> + * @hist_mode_data: address to the histogram mode specific data if any
> + * @nr_hist_mode_data: number of elements pointed by the address in
> + * hist_mode_data
> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> + * @enable: flag to enable/disable histogram */ struct
> +drm_histogram_config {
> + __u64 hist_mode_data;
> + __u32 nr_hist_mode_data;
> + enum drm_mode_histogram hist_mode;
> + bool enable;
> +};
> +
> +/**
> + * struct drm_histogram
> + *
> + * @config: histogram configuration data pointed by struct
> +drm_histogram_config
> + * @data_ptr: pointer to the array of histogram.
> + * Histogram is an array of bins. Data format for each bin depends
> + * on the histogram mode. Refer to the above histogram modes for
I think you can write the drm_histogram_mode_caps instead of writing histogram mode
So people can directly jump to it
Regards,
Suraj Kandpal
> + * more information.
> + * @nr_elements: number of bins in the histogram.
> + */
> +struct drm_histogram {
> + struct drm_histogram_config config;
> + __u64 data_ptr;
> + __u32 nr_elements;
> +};
> +
> #if defined(__cplusplus)
> }
> #endif
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-14 6:38 ` Kandpal, Suraj
@ 2025-02-14 8:38 ` Kandpal, Suraj
2025-03-13 6:10 ` Murthy, Arun R
1 sibling, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 8:38 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Kandpal, Suraj
> Sent: Friday, February 14, 2025 12:09 PM
> To: Murthy, Arun R <arun.r.murthy@intel.com>; intel-xe@lists.freedesktop.org;
> intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Cc: dmitry.baryshkov@linaro.org
> Subject: RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
>
>
>
> > -----Original Message-----
> > From: Murthy, Arun R <arun.r.murthy@intel.com>
> > Sent: Tuesday, January 28, 2025 9:21 PM
> > To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > dri- devel@lists.freedesktop.org
> > Cc: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > dmitry.baryshkov@linaro.org; Murthy, Arun R <arun.r.murthy@intel.com>
> > Subject: [PATCH v8 01/14] drm: Define histogram structures exposed to
> > user
> >
> > Display Histogram is an array of bins and can be generated in many
> > ways referred to as modes.
> > Ex: HSV max(RGB), Wighted RGB etc.
One more Typo I forgot to point out *Weighted
Regards,
Suraj Kandpal
> >
> > Understanding the histogram data format(Ex: HSV max(RGB)) Histogram is
> > just the pixel count.
> > For a maximum resolution of 10k (10240 x 4320 = 44236800)
> > 25 bits should be sufficient to represent this along with a buffer of
> > 7 bits(future
> > use) u32 is being considered.
> > max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> > bits, hence 32 bins.
> > Below mentioned algorithm illustrates the histogram generation in hardware.
> >
> > hist[32] = {0};
> > for (i = 0; i < resolution; i++) {
> > bin = max(RGB[i]);
> > bin = bin >> 3; /* consider the most significant bits */
> > hist[bin]++;
> > }
> > If the entire image is Red color then max(255,0,0) is 255 so the pixel
> > count of each pixels will be placed in the last bin. Hence except
> > hist[31] all other bins will have a value zero.
> > Generated histogram in this case would be hist[32] =
> > {0,0,....44236800}
> >
> > Description of the structures, properties defined are documented in
> > the header file include/uapi/drm/drm_mode.h
> >
> > v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> > include/uapi/drm/drm_mode.h | 65
> > +++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 65 insertions(+)
> >
> > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > index
> >
> c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b
> > 20ac6cbf5df69e9 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> > __u32 pad;
> > };
> >
> > +/**
> > + * enum drm_mode_histogram
> > + *
> > + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> > + * Maximum resolution at present 10k, 10240x4320 = 44236800
> > + * can be denoted in 25bits. With an additional 7 bits in buffer each
> > +bin
> > + * can be a u32 value.
> > + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>
> Type: SDR
>
> > + * If the most significant 5 bits are considered, then bins = 2^5
> > + * will be 32 bins.
> > + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> > + * For illustration consider a full RED image of 10k resolution
> > +considering all
> > + * 8 bits histogram would look like hist[255] = {0,0,....44236800}
> > +with SDR
> > + * plane similarly with HDR the same would look like hist[65535] =
> > + * {0,0,0,....44236800}
> > + */
> > +enum drm_mode_histogram {
> > + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01, };
> > +
> > +/**
> > + * struct drm_histogram_caps
> > + *
> > + * @histogram_mode: histogram generation modes, defined in the
> > + * enum drm_mode_histogram
> > + * @bins_count: number of bins for a chosen histogram mode. For
> illustration
> > + * refer the above defined histogram mode.
> > + */
> > +struct drm_histogram_caps {
> > + __u32 histogram_mode;
>
> Do we really need __u32 for histogram mode don't you think a __u16 should
> suffice?
>
>
> > + __u32 bins_count;
>
> Nit: bin_count sounds better.
>
> > +};
> > +
> > +/**
> > + * struct drm_histogram_config
> > + *
> > + * @hist_mode_data: address to the histogram mode specific data if
> > +any
> > + * @nr_hist_mode_data: number of elements pointed by the address in
> > + * hist_mode_data
> > + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> > + * @enable: flag to enable/disable histogram */ struct
> > +drm_histogram_config {
> > + __u64 hist_mode_data;
> > + __u32 nr_hist_mode_data;
> > + enum drm_mode_histogram hist_mode;
> > + bool enable;
> > +};
> > +
> > +/**
> > + * struct drm_histogram
> > + *
> > + * @config: histogram configuration data pointed by struct
> > +drm_histogram_config
> > + * @data_ptr: pointer to the array of histogram.
> > + * Histogram is an array of bins. Data format for each bin depends
> > + * on the histogram mode. Refer to the above histogram modes for
>
> I think you can write the drm_histogram_mode_caps instead of writing
> histogram mode So people can directly jump to it
>
> Regards,
> Suraj Kandpal
>
> > + * more information.
> > + * @nr_elements: number of bins in the histogram.
> > + */
> > +struct drm_histogram {
> > + struct drm_histogram_config config;
> > + __u64 data_ptr;
> > + __u32 nr_elements;
> > +};
> > +
> > #if defined(__cplusplus)
> > }
> > #endif
> >
> > --
> > 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT structures exposed to user
2025-01-28 15:51 ` [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT " Arun R Murthy
@ 2025-02-14 9:11 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 9:11 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT structures
> exposed to user
>
> ImageEnhancemenT(IET) hardware interpolates the LUT value to generate the
> enhanced output image. LUT takes an input value, outputs a new value based
> on the data within the LUT. 1D LUT can remap individual input values to new
> output values based on the LUT sample. LUT can be interpolated by the
> hardware by multiple modes Ex: Direct Lookup LUT, Multiplicative LUT etc The
> list of supported mode by hardware along with the format(exponent
> mantissa) is exposed to user by the iet_lut_caps property. Maximum format
> being 8.24 i.e 8 exponent and 24 mantissa.
> For illustration a hardware supporting 1.9 format denotes this as 0x10001FF. In
> order to know the exponent do a bitwise AND with 0xF000000. The LUT value
> to be provided by user would be a 10bit value with 1 bit integer and 9 bit
> fractional value.
>
> Multiple formats can be supported, hence pointer is used over here.
> User can then provide the LUT with any one of the supported modes in any of
> the supported formats.
> The entries in the LUT can vary depending on the hardware capability with max
> being 255. This will also be exposed as iet_lut_caps so user can generate a LUT
> with the specified entries.
>
> v8: define enum for iet_mode, add more doc for iet modes (Dmitry)
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> include/uapi/drm/drm_mode.h | 68
> +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 68 insertions(+)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index
> b8b7b18843ae7224263a9c61b20ac6cbf5df69e9..006be62218bf1e985c2ca6352
> cb04110a38d1e84 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -1420,6 +1420,74 @@ struct drm_histogram {
> __u32 nr_elements;
> };
>
> +/**
> + * enum drm_iet_mode
> + * @DRM_MODE_IET_LOOKUP_LUT:
> + * LUT values are points on exponential graph with x axis and y-axis
> +y=f(x)
> + * This f(x) can be the algorithm, defined by the user space algorithm.
> + * When this LUT table is passed to the hardware it signifies how the
> +hardware
> + * should use this table to get the LUT values. In this mode its direct
> +lookup
> + * table. x-axis corresponds to input pixel value and y-axis
> +corresponds to
> + * the output pixel value.
> + *
> + * @DRM_MODE_IET_MULTIPLICATIVE:
> + * LUT values, x and y are points on negative exponential graph with
> + * x-axis and y-axis (y = y/x). The value passed by the user will be
> + * in y/x i.e OutPixel/InPixel. X co-ordinate proportional to pixel
> +value
> + * and Y-cordinate is the multiplier factor, i.e x-axis in pixels and
> + * y-axis is OutPixel/InPixel. so upon multiplying x, y is obtained,
> + * hence multiplicative.
> + * The format of LUT can at max be 8.24(8integer 24 fractional)
> + * represented by u32. 32bit is the container and if 16.16 is chosen
> + * then it doesn't make sense to boost the pixel by 2^16. Hence set
> +aside
> + * 8bit for integer 2^8 thereby boosting the pixel by a value 255 which
> + * itself is a huge boost factor. Remaining 24bits out of the 32bit
> + * container is fractional part. This is also optimal for implementing
> + * in the hardware.
> + * Depending on the hardware capability and exponent mantissa can be
> + * chosen within this limits.
> + */
> +enum drm_iet_mode {
> + DRM_MODE_IET_LOOKUP_LUT = 0x01,
> + DRM_MODE_IET_MULTIPLICATIVE = 0x02,
> +};
> +
> +/**
> + * struct drm_iet_caps
> + *
Let's remove the space here
> + * @iet_mode: pixel factor enhancement modes defined in enum
> drm_iet_mode.
> + * Multiple modes can be supported by hardware, the value can be
> + * ORed.
> + * @iet_sample_format: holds the address of an array of u32 LUT sample
> formats
> + * depending on the hardware capability. Max being 8.24
> + * Doing a bitwise AND will get the present sample.
> + * Ex: for 1 integer 9 fraction AND with 0x10001FF
> + * @nr_iet_sample_formats: number of iet_sample_formsts supported by the
> + * hardware
Typo: formats
> + * @nr_iet_lut_entries: number of LUT entries */ struct drm_iet_caps {
> + __u32 iet_mode;
Again do we really need 32 bits for this 16 should suffice
Regards,
Suraj Kandpal
> + __u64 iet_sample_format;
> + __u32 nr_iet_sample_formats;
> + __u32 nr_iet_lut_entries;
> +};
> +
> +/**
> + * struct drm_iet_1dlut_sample
> + * @iet_lut: the address in the field describes the format of the data
> + * corresponding to the @iet_mode
> + * In case of direct lookup this is NULL, in case of
> + * multiplicative mode LUT exponent and mantissa format.
> + * @nr_elements: number of entries pointed by the data @iet_lut
> + * @iet_mode: image enhancement mode, this will also convey the channel.
> + */
> +struct drm_iet_1dlut_sample {
> + __u64 iet_lut;
> + __u32 nr_elements;
> + enum drm_iet_mode iet_mode;
> +};
> +
> #if defined(__cplusplus)
> }
> #endif
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram
2025-01-28 15:51 ` [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram Arun R Murthy
@ 2025-02-14 9:36 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 9:36 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for
> histogram
>
> Add drm-crtc property for histogram and for the properties added add the
> corresponding get/set_property.
>
> v8: Rebased
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/drm_atomic_state_helper.c | 14 ++++++
> drivers/gpu/drm/drm_atomic_uapi.c | 15 +++++++
> drivers/gpu/drm/drm_crtc.c | 73
> +++++++++++++++++++++++++++++++
> include/drm/drm_crtc.h | 44 +++++++++++++++++++
> 4 files changed, 146 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c
> b/drivers/gpu/drm/drm_atomic_state_helper.c
> index
> 519228eb109533d2596e899a57b571fa0995824f..dfe6293f7a42d034da3de5930
> 94019ca15014a02 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -143,6 +143,12 @@ void
> __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
> drm_property_blob_get(state->ctm);
> if (state->gamma_lut)
> drm_property_blob_get(state->gamma_lut);
> + if (state->histogram_caps)
> + drm_property_blob_get(state->histogram_caps);
> + if (state->histogram_enable)
> + drm_property_blob_get(state->histogram_enable);
> + if (state->histogram_data)
> + drm_property_blob_get(state->histogram_data);
> state->mode_changed = false;
> state->active_changed = false;
> state->planes_changed = false;
> @@ -156,6 +162,8 @@ void __drm_atomic_helper_crtc_duplicate_state(struct
> drm_crtc *crtc,
> /* Self refresh should be canceled when a new update is available */
> state->active = drm_atomic_crtc_effectively_active(state);
> state->self_refresh_active = false;
> +
Nit : Extra line not needed. Also move right under planes_changed.
> + state->histogram_updated = false;
> }
> EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state);
>
> @@ -215,6 +223,12 @@ void __drm_atomic_helper_crtc_destroy_state(struct
> drm_crtc_state *state)
> drm_property_blob_put(state->degamma_lut);
> drm_property_blob_put(state->ctm);
> drm_property_blob_put(state->gamma_lut);
> + if (state->histogram_caps)
> + drm_property_blob_put(state->histogram_caps);
> + if (state->histogram_enable)
> + drm_property_blob_put(state->histogram_enable);
> + if (state->histogram_data)
> + drm_property_blob_put(state->histogram_data);
> }
> EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state);
>
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
> b/drivers/gpu/drm/drm_atomic_uapi.c
> index
> 370dc676e3aa543c9827b50df20df78f02b738c9..459d30898196c94392a7f916b
> 1fa9ca3a334eea8 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -415,6 +415,15 @@ static int drm_atomic_crtc_set_property(struct
> drm_crtc *crtc,
> return -EFAULT;
>
> set_out_fence_for_crtc(state->state, crtc, fence_ptr);
> + } else if (property == crtc->histogram_enable_property) {
> + ret = drm_property_replace_blob_from_id(dev,
> + &state-
> >histogram_enable,
> + val,
> + -1,
> + sizeof(struct
> drm_histogram_config),
> + &replaced);
> + state->histogram_updated |= replaced;
> + return ret;
> } else if (property == crtc->scaling_filter_property) {
> state->scaling_filter = val;
> } else if (crtc->funcs->atomic_set_property) { @@ -452,6 +461,12 @@
> drm_atomic_crtc_get_property(struct drm_crtc *crtc,
> *val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
> else if (property == config->prop_out_fence_ptr)
> *val = 0;
> + else if (property == crtc->histogram_caps_property)
> + *val = (state->histogram_caps) ? state->histogram_caps-
> >base.id : 0;
> + else if (property == crtc->histogram_enable_property)
> + *val = (state->histogram_enable) ? state->histogram_enable-
> >base.id : 0;
> + else if (property == crtc->histogram_data_property)
> + *val = (state->histogram_data) ? state->histogram_data-
> >base.id : 0;
> else if (property == crtc->scaling_filter_property)
> *val = state->scaling_filter;
> else if (crtc->funcs->atomic_get_property)
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index
> 46655339003db2a1b43441434839e26f61d79b4e..d10b29aff725e40bdb93e6b
> d0828347db40fa3e8 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -959,3 +959,76 @@ bool drm_crtc_in_clone_mode(struct drm_crtc_state
> *crtc_state)
> return hweight32(crtc_state->encoder_mask) > 1; }
> EXPORT_SYMBOL(drm_crtc_in_clone_mode);
> +
> +/**
> + * drm_crtc_create_histogram_property: create histogram properties
> + *
> + * @crtc: pointer to the struct drm_crtc.
> + * @caps: pointer to the struct drm_histogram_caps, holds the
> + * histogram hardware capabilities.
> + *
> + * The property HISTOGRAM_CAPS exposes the hardware capability for
> + * histogram which includes the histogram mode, number of bins etc
> + * The property HISTOGRAM_ENABLE allows user to enable/disable the
> + * histogram feature and also configure the hardware.
> + * Upon KMD enabling by writing to the hardware registers, histogram
> + * is generated. Histogram is composed of 'n' bins with each bin
> + * being an integer(pixel count).
> + * An event HISTOGRAM will be sent to the user. User upon receiving
> +this
> + * event can read the hardware generated histogram using crtc property
> + * HISTOGRAM_DATA.
> + * User can use this histogram data to enhance the image or in shaders.
> + *
> + * Property HISTOGRAM_CAPS is a blob pointing to the struct
> +drm_histogram_caps
> + * Description of the structure is in include/uapi/drm/drm_mode.h
I feel the line " Description of the structure is in include/uapi/drm/drm_mode.h"
isn't needed since once can use ctags to directly jump to the struct
> + * Property HISTOGRAM_ENABLE is a blob pointing to the struct
> + * drm_histogram_config
> + * Description of the structure is in include/uapi/drm/drm_mode.h
> + * Property HISTOGRAM_DATA is a blob pointing to the struct
> +drm_histogram
> + * Description of the structure is in include/uapi/drm/drm_mode.h
> + *
> + * RETURNS:
> + * Zero for success or -errno
> + */
> +int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
> + struct drm_histogram_caps *caps) {
> + struct drm_property *prop;
> + struct drm_property_blob *blob;
> + struct drm_histogram_caps *blob_data;
> +
> + blob = drm_property_create_blob(crtc->dev,
> + sizeof(struct drm_histogram_caps),
> + NULL);
Align with parenthesis
> + if (IS_ERR(blob))
> + return -1;
Shouldn’t be -1 maybe -EINVAL. Also new line after this if
> + blob_data = blob->data;
> + blob_data->histogram_mode = caps->histogram_mode;
> + blob_data->bins_count = caps->bins_count;
> +
> + prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
> + DRM_MODE_PROP_IMMUTABLE |
> DRM_MODE_PROP_BLOB,
> + "HISTOGRAM_CAPS", blob->base.id);
> + if (!prop)
> + return -ENOMEM;
New line here
> + drm_object_attach_property(&crtc->base, prop, 0);
> + crtc->histogram_caps_property = prop;
> +
> + prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
> + DRM_MODE_PROP_BLOB,
> "HISTOGRAM_ENABLE", 0);
> + if (!prop)
> + return -ENOMEM;
> + drm_object_attach_property(&crtc->base, prop, 0);
> + crtc->histogram_enable_property = prop;
> +
> + prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
> + DRM_MODE_PROP_IMMUTABLE |
> DRM_MODE_PROP_BLOB,
> + "HISTOGRAM_DATA", 0);
> + if (!prop)
> + return -ENOMEM;
*Ditto
Regards,
Suraj Kandpal
> + drm_object_attach_property(&crtc->base, prop, 0);
> + crtc->histogram_data_property = prop;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(drm_crtc_create_histogram_property);
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index
> caa56e039da2a748cf40ebf45b37158acda439d9..2da803749bdf03c07268be4e0
> 75793ef4e4eb99a 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -274,6 +274,32 @@ struct drm_crtc_state {
> */
> struct drm_property_blob *gamma_lut;
>
> + /**
> + * @histogram_caps:
> + *
> + * The blob points to the structure drm_histogram_caps.
> + * For more info on the elements of the struct drm_histogram_caps
> + * see include/uapi/drm/drm_mode.h
> + */
> + struct drm_property_blob *histogram_caps;
> + /**
> + * @histogram_enable:
> + *
> + * The blob points to the structure drm_histogram_config.
> + * For more information on the elements of struct
> drm_histogram_config
> + * see include/uapi/drm/drm_mode.h
> + */
> + struct drm_property_blob *histogram_enable;
> + /**
> + * @histogram_data:
> + *
> + * The blob points to the structure drm_histogram.
> + * For more information on the elements of struct drm_histogram
> + * see include/uapi/drm/drm_mode.h
> + */
> + struct drm_property_blob *histogram_data;
> + bool histogram_updated;
> +
> /**
> * @target_vblank:
> *
> @@ -1088,6 +1114,22 @@ struct drm_crtc {
> */
> struct drm_property *scaling_filter_property;
>
> + /**
> + * @histogram_caps_property: Optional CRTC property for getting the
> + * histogram hardware capability.
> + */
> + struct drm_property *histogram_caps_property;
> + /**
> + * @histogram_enable_property: Optional CRTC property for enabling
> or
> + * disabling global histogram.
> + */
> + struct drm_property *histogram_enable_property;
> + /**
> + * @histogram_data_proeprty: Optional CRTC property for getting the
> + * histogram blob data.
> + */
> + struct drm_property *histogram_data_property;
> +
> /**
> * @state:
> *
> @@ -1324,4 +1366,6 @@ static inline struct drm_crtc *drm_crtc_find(struct
> drm_device *dev, int drm_crtc_create_scaling_filter_property(struct drm_crtc
> *crtc,
> unsigned int supported_filters);
> bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state);
> +int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
> + struct drm_histogram_caps *caps);
> #endif /* __DRM_CRTC_H__ */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT
2025-01-28 15:51 ` [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT Arun R Murthy
@ 2025-02-14 9:47 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 9:47 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for
> IET LUT
>
> Add drm-crtc property for IET 1DLUT and for the properties added add
Nit: Fix Grammar * added. Add
Do the same in previous patch as well
> corresponding get/set_property.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/drm_atomic_state_helper.c | 9 ++++++
> drivers/gpu/drm/drm_atomic_uapi.c | 13 ++++++++
> drivers/gpu/drm/drm_crtc.c | 54
> +++++++++++++++++++++++++++++++
> include/drm/drm_crtc.h | 36 +++++++++++++++++++++
> 4 files changed, 112 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c
> b/drivers/gpu/drm/drm_atomic_state_helper.c
> index
> dfe6293f7a42d034da3de593094019ca15014a02..ceab90cec57cc580afcf334e27
> 5982827e9b0e0d 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -149,6 +149,10 @@ void
> __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
> drm_property_blob_get(state->histogram_enable);
> if (state->histogram_data)
> drm_property_blob_get(state->histogram_data);
> + if (state->iet_lut_caps)
> + drm_property_blob_get(state->iet_lut_caps);
> + if (state->iet_lut)
> + drm_property_blob_get(state->iet_lut);
> state->mode_changed = false;
> state->active_changed = false;
> state->planes_changed = false;
> @@ -164,6 +168,7 @@ void __drm_atomic_helper_crtc_duplicate_state(struct
> drm_crtc *crtc,
> state->self_refresh_active = false;
>
> state->histogram_updated = false;
> + state->iet_lut_updated = false;
> }
> EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state);
>
> @@ -229,6 +234,10 @@ void __drm_atomic_helper_crtc_destroy_state(struct
> drm_crtc_state *state)
> drm_property_blob_put(state->histogram_enable);
> if (state->histogram_data)
> drm_property_blob_put(state->histogram_data);
> + if (state->iet_lut_caps)
> + drm_property_blob_put(state->iet_lut_caps);
> + if (state->iet_lut)
> + drm_property_blob_put(state->iet_lut);
> }
> EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state);
>
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
> b/drivers/gpu/drm/drm_atomic_uapi.c
> index
> 459d30898196c94392a7f916b1fa9ca3a334eea8..f31d24d80cc082b38c611b12f3
> 6f281fa7404869 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -424,6 +424,15 @@ static int drm_atomic_crtc_set_property(struct
> drm_crtc *crtc,
> &replaced);
> state->histogram_updated |= replaced;
> return ret;
> + } else if (property == crtc->iet_lut_property) {
> + ret = drm_property_replace_blob_from_id(dev,
> + &state->iet_lut,
> + val,
> + -1,
> + sizeof(struct
> drm_iet_1dlut_sample),
> + &replaced);
> + state->iet_lut_updated |= replaced;
> + return ret;
> } else if (property == crtc->scaling_filter_property) {
> state->scaling_filter = val;
> } else if (crtc->funcs->atomic_set_property) { @@ -467,6 +476,10 @@
> drm_atomic_crtc_get_property(struct drm_crtc *crtc,
> *val = (state->histogram_enable) ? state->histogram_enable-
> >base.id : 0;
> else if (property == crtc->histogram_data_property)
> *val = (state->histogram_data) ? state->histogram_data-
> >base.id : 0;
> + else if (property == crtc->iet_lut_caps_property)
> + *val = (state->iet_lut_caps) ? state->iet_lut_caps->base.id : 0;
> + else if (property == crtc->iet_lut_property)
> + *val = (state->iet_lut) ? state->iet_lut->base.id : 0;
> else if (property == crtc->scaling_filter_property)
> *val = state->scaling_filter;
> else if (crtc->funcs->atomic_get_property)
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index
> d10b29aff725e40bdb93e6bd0828347db40fa3e8..850d98d7f9c8965c7a5e9ac55
> 05e355042041449 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -1032,3 +1032,57 @@ int drm_crtc_create_histogram_property(struct
> drm_crtc *crtc,
> return 0;
> }
> EXPORT_SYMBOL(drm_crtc_create_histogram_property);
> +
> +/**
> + * drm_crtc_create_iet_lut_property
> + *
> + * @crtc: pointer to the struct drm_crtc.
> + * @caps: pointer to the struct drm_iet_caps, holds the
> + * image enhancement LUT hardware capabilities.
> + *
> + * This 1DLUT is used by the hardware to enahance the image. Hardware
> + * interpolates this LUT value to generate the enhanced output image.
> + *
> + * The blob property IET_LUT_CAPS points to the struct drm_iet_lut_caps
> + * The blob property IET_LUT points to the struct drm_iet_1dlut_sample
> + * Description of the structure is in include/uapi/drm/drm_mode.h
> + *
> + * RETURNS:
> + * Zero for success or -errno
> + */
> +int drm_crtc_create_iet_lut_property(struct drm_crtc *crtc,
> + struct drm_iet_caps *caps)
> +{
> + struct drm_property *prop;
> + struct drm_iet_caps *blob_data;
> + struct drm_property_blob *blob;
> +
> + blob = drm_property_create_blob(crtc->dev,
> + sizeof(struct drm_iet_caps),
> + NULL);
> + if (IS_ERR(blob))
> + return -1;
Use PTR_ERR(blob) to return error instead of directly returning -1
And add new line after the if.
> + blob_data = blob->data;
> + blob_data->iet_mode = caps->iet_mode;
Shouldn't we be Oring this
> + blob_data->nr_iet_sample_formats = caps->nr_iet_sample_formats;
> + blob_data->nr_iet_lut_entries = caps->nr_iet_lut_entries;
> + blob_data->iet_sample_format = caps->iet_sample_format;
> +
> + prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
> + DRM_MODE_PROP_IMMUTABLE |
> DRM_MODE_PROP_BLOB,
> + "IET_LUT_CAPS", blob->base.id);
> + if (!prop)
> + return -ENOMEM;
Ditto
> + drm_object_attach_property(&crtc->base, prop, 0);
> + crtc->iet_lut_caps_property = prop;
> +
> + prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
> + DRM_MODE_PROP_BLOB, "IET_LUT", 0);
> + if (!prop)
> + return -ENOMEM;
Here too.
> + drm_object_attach_property(&crtc->base, prop, 0);
> + crtc->iet_lut_property = prop;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(drm_crtc_create_iet_lut_property);
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index
> 2da803749bdf03c07268be4e075793ef4e4eb99a..bc85ab16d5c817773a1d8b415
> eb256d08c13c709 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -300,6 +300,29 @@ struct drm_crtc_state {
> struct drm_property_blob *histogram_data;
> bool histogram_updated;
>
> + /**
> + * @iet_lut_caps:
> + *
> + * The blob points to the structure drm_iet_lut_caps.
> + * For more info on the elements of the struct drm_iet_lut_caps
> + * see include/uapi/drm/drm_mode.h
Don’t see the need of this
> + */
> + struct drm_property_blob *iet_lut_caps;
> + /**
> + * @iet_lut:
> + *
> + * The blob points to the struct drm_lut_sample
> + * For more information on the elements of struct drm_lut_sample
> + * see include/uapi/drm/drm_mode.h
Same here
Regards,
Suraj Kandpal
> + */
> + struct drm_property_blob *iet_lut;
> + /**
> + * @iet_lut_updates:
> + *
> + * Convey that the image enhanced data has been updated by the user
> + */
> + bool iet_lut_updated;
> +
> /**
> * @target_vblank:
> *
> @@ -1130,6 +1153,17 @@ struct drm_crtc {
> */
> struct drm_property *histogram_data_property;
>
> + /**
> + * @iet_lut_caps_property: Optional CRTC property for getting the
> + * iet LUT hardware capability.
> + */
> + struct drm_property *iet_lut_caps_property;
> + /**
> + * @iet_lut_proeprty: Optional CRTC property for writing the
> + * image enhanced LUT
> + */
> + struct drm_property *iet_lut_property;
> +
> /**
> * @state:
> *
> @@ -1368,4 +1402,6 @@ int drm_crtc_create_scaling_filter_property(struct
> drm_crtc *crtc, bool drm_crtc_in_clone_mode(struct drm_crtc_state
> *crtc_state); int drm_crtc_create_histogram_property(struct drm_crtc *crtc,
> struct drm_histogram_caps *caps);
> +int drm_crtc_create_iet_lut_property(struct drm_crtc *crtc,
> + struct drm_iet_caps *caps);
> #endif /* __DRM_CRTC_H__ */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
2025-01-28 15:51 ` [PATCH v8 06/14] drm/i915/histogram: Add support " Arun R Murthy
@ 2025-02-14 10:02 ` Kandpal, Suraj
2025-02-14 10:24 ` Kandpal, Suraj
2025-02-16 14:32 ` [v8,06/14] " Thasleem, Mohammed
1 sibling, 1 reply; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 10:02 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
>
> Statistics is generated from the image frame that is coming to display and an
> event is sent to user after reading this histogram data.
>
> v2: forward declaration in header file along with error handling (Jani)
> v3: Replaced i915 with intel_display (Suraj)
> v4: Removed dithering enable/disable (Vandita)
> New patch for histogram register definitions (Suraj)
> v5: IET LUT pgm follow the seq in spec and removed change to TC at end
> (Suraj)
> v8: Retained only the Histogram part and move IET LUT to a different
> patch.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
> drivers/gpu/drm/i915/display/intel_histogram.c | 157
> +++++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_histogram.h | 48 +++++++
> 4 files changed, 208 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index
> 4caa8e30bc98387d45212fbc7cea8b38687bd0d5..f993b19174ba79c0bcc349946
> 19937be7d2797ed 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -270,6 +270,7 @@ i915-y += \
> display/intel_hdcp.o \
> display/intel_hdcp_gsc.o \
> display/intel_hdcp_gsc_message.o \
> + display/intel_histogram.o \
> display/intel_hotplug.o \
> display/intel_hotplug_irq.o \
> display/intel_hti.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index
> cb51b7936f9338caaf14b1c6f7bbcc4327da4ef1..761fefed9376439c0ee5d346e81
> 10a219ad0a586 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1434,6 +1434,8 @@ struct intel_crtc {
> /* for loading single buffered registers during vblank */
> struct pm_qos_request vblank_pm_qos;
>
> + struct intel_histogram *histogram;
> +
> #ifdef CONFIG_DEBUG_FS
> struct intel_pipe_crc pipe_crc;
> #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> b/drivers/gpu/drm/i915/display/intel_histogram.c
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..26eae8f40d0bf642546d5835
> 46782e22d5cefa9c
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -0,0 +1,157 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#include <drm/drm_device.h>
> +#include <drm/drm_file.h>
> +#include <drm/drm_vblank.h>
> +
> +#include "i915_reg.h"
> +#include "i915_drv.h"
> +#include "intel_de.h"
> +#include "intel_display.h"
> +#include "intel_display_types.h"
> +#include "intel_histogram.h"
> +#include "intel_histogram_regs.h"
> +
> +/* 3.0% of the pipe's current pixel count, hw does x4 */ #define
> +HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
> +/* Precision factor for threshold guardband */ #define
> +HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000 #define
> +HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
> +
> +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc) {
> + struct intel_histogram *histogram = intel_crtc->histogram;
> +
> + /* TODO: Restrictions for enabling histogram */
> + histogram->can_enable = true;
We don’t change anything in the intel_crtc structure during compute or atomic check phase
We need to consider moving this to the crtc_state.
> +
> + return 0;
> +}
> +
> +static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8
> +mode) {
> + struct intel_display *display = to_intel_display(intel_crtc);
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + int pipe = intel_crtc->pipe;
> + u64 res;
> + u32 gbandthreshold;
> +
> + if (!histogram || !histogram->can_enable)
> + return -EINVAL;
> +
> + if (histogram->enable)
> + return 0;
> +
> + /* enable histogram, clear DPST_CTL bin reg func select to TC */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE |
> DPST_CTL_IE_TABLE_VALUE_FORMAT |
> + DPST_CTL_ENHANCEMENT_MODE_MASK |
> DPST_CTL_IE_MODI_TABLE_EN,
> + ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> + DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN
> |
> + DPST_CTL_HIST_MODE_HSV |
> + DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
> + DPST_CTL_EN_MULTIPLICATIVE |
> DPST_CTL_IE_MODI_TABLE_EN);
> +
> + /* Re-Visit: check if wait for one vblank is required */
> + drm_crtc_wait_one_vblank(&intel_crtc->base);
> +
> + /* TODO: Program GuardBand Threshold needs to be moved to
> modeset path */
> + res = (intel_crtc->config->hw.adjusted_mode.vtotal *
> + intel_crtc->config->hw.adjusted_mode.htotal);
> +
> + gbandthreshold = (res *
> HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT) /
> + HISTOGRAM_GUARDBAND_PRECISION_FACTOR;
> +
> + /* Enable histogram interrupt mode */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_THRESHOLD_GB_MASK |
> + DPST_GUARD_INTERRUPT_DELAY_MASK |
> DPST_GUARD_HIST_INT_EN,
> + DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
> +
> DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY)
> |
> + DPST_GUARD_HIST_INT_EN);
> +
> + /* Clear pending interrupts has to be done on separate write */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_HIST_EVENT_STATUS, 1);
> +
> + histogram->enable = true;
> +
> + return 0;
> +}
> +
> +static void intel_histogram_disable(struct intel_crtc *intel_crtc) {
> + struct intel_display *display = to_intel_display(intel_crtc);
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + int pipe = intel_crtc->pipe;
> +
> + if (!histogram)
> + return;
> +
> + /* If already disabled return */
> + if (histogram->enable)
> + return;
> +
> + /* Clear pending interrupts and disable interrupts */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_HIST_INT_EN |
> DPST_GUARD_HIST_EVENT_STATUS, 0);
> +
> + /* disable DPST_CTL Histogram mode */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_IE_HIST_EN, 0);
> +
> + histogram->enable = false;
> +}
> +
> +int intel_histogram_update(struct intel_crtc *intel_crtc,
> + struct drm_histogram_config *config) {
> + struct intel_display *display = to_intel_display(intel_crtc);
> +
> + if (config->enable) {
> + if (config->hist_mode !=
> DRM_MODE_HISTOGRAM_HSV_MAX_RGB) {
> + drm_err(display->drm,
> + "Only max(RGB) mode is supported for
> histogram\n");
> + return -EINVAL;
> + }
> + return intel_histogram_enable(intel_crtc, config->hist_mode);
> + }
> +
> + intel_histogram_disable(intel_crtc);
> + return 0;
> +}
> +
> +void intel_histogram_finish(struct intel_crtc *intel_crtc) {
> + struct intel_histogram *histogram = intel_crtc->histogram;
> +
> + kfree(histogram);
> +}
> +
> +int intel_histogram_init(struct intel_crtc *crtc) {
> + struct intel_histogram *histogram;
> + struct drm_histogram_caps *histogram_caps;
> +
> + /* Allocate histogram internal struct */
> + histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
> + if (!histogram)
> + return -ENOMEM;
New line here
> + histogram_caps = kzalloc(sizeof(*histogram_caps), GFP_KERNEL);
> + if (!histogram_caps)
> + return -ENOMEM;
> +
> + histogram_caps->histogram_mode =
> DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
> + histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
> +
Remove extra line
Regards,
Suraj Kandpal
> + crtc->histogram = histogram;
> + histogram->crtc = crtc;
> + histogram->can_enable = false;
> + histogram->caps = histogram_caps;
> +
> + return 0;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h
> b/drivers/gpu/drm/i915/display/intel_histogram.h
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..5ea19ef2d3ecadf1ac159a78
> 4f51278fdde593de
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> @@ -0,0 +1,48 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_HISTOGRAM_H__
> +#define __INTEL_HISTOGRAM_H__
> +
> +#include <linux/types.h>
> +#include <linux/workqueue.h>
> +
> +struct delayed_work;
> +struct drm_property_blob;
> +struct drm_histogram_config;
> +struct drm_histogram_caps;
> +struct intel_crtc;
> +
> +#define HISTOGRAM_BIN_COUNT 32
> +
> +struct intel_histogram {
> + struct drm_histogram_caps *caps;
> + struct intel_crtc *crtc;
> + struct delayed_work work;
> + bool enable;
> + bool can_enable;
> + u32 bin_data[HISTOGRAM_BIN_COUNT];
> +};
> +
> +enum intel_global_hist_status {
> + INTEL_HISTOGRAM_ENABLE,
> + INTEL_HISTOGRAM_DISABLE,
> +};
> +
> +enum intel_global_histogram {
> + INTEL_HISTOGRAM,
> +};
> +
> +enum intel_global_hist_lut {
> + INTEL_HISTOGRAM_PIXEL_FACTOR,
> +};
> +
> +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc); int
> +intel_histogram_update(struct intel_crtc *intel_crtc,
> + struct drm_histogram_config *config); int
> +intel_histogram_init(struct intel_crtc *intel_crtc); void
> +intel_histogram_finish(struct intel_crtc *intel_crtc);
> +
> +#endif /* __INTEL_HISTOGRAM_H__ */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling
2025-01-28 15:51 ` [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling Arun R Murthy
@ 2025-02-14 10:19 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 10:19 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling
>
> Upon enabling histogram an interrupt is trigerred after the generation of the
Typo: *triggered
> statistics. This patch registers the histogram interrupt and handles the interrupt.
We don't use the word patch since it won't be a patch once merged
>
> v2: Added intel_crtc backpointer to intel_histogram struct (Jani)
> Removed histogram_wq and instead use dev_priv->unodered_eq (Jani)
> v3: Replaced drm_i915_private with intel_display (Suraj)
> Refactored the histogram read code (Jani)
> v4: Rebased after addressing comments on patch 1
> v5: removed the retry logic and moved to patch7 (Jani)
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_irq.c | 6 +-
> drivers/gpu/drm/i915/display/intel_histogram.c | 106
> ++++++++++++++++++++++-
> drivers/gpu/drm/i915/display/intel_histogram.h | 3 +
> drivers/gpu/drm/i915/i915_reg.h | 5 +-
> 4 files changed, 115 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c
> b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index
> d9734fcd0d45b9f7c2891730e73b7e1d59c206ad..b62c3cdfd6a0607d9d2e1caa0
> d71edb0aa99fdbb 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -21,6 +21,7 @@
> #include "intel_fdi_regs.h"
> #include "intel_fifo_underrun.h"
> #include "intel_gmbus.h"
> +#include "intel_histogram.h"
> #include "intel_hotplug_irq.h"
> #include "intel_pipe_crc_regs.h"
> #include "intel_pmdemand.h"
> @@ -1230,6 +1231,9 @@ void gen8_de_irq_handler(struct drm_i915_private
> *dev_priv, u32 master_ctl)
> if (iir & GEN8_PIPE_FIFO_UNDERRUN)
> intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
>
> + if (iir & GEN9_PIPE_HISTOGRAM_EVENT)
> + intel_histogram_irq_handler(display, pipe);
> +
> fault_errors = iir & gen8_de_pipe_fault_mask(dev_priv);
> if (fault_errors)
> drm_err_ratelimited(&dev_priv->drm,
> @@ -1827,7 +1831,7 @@ void gen8_de_irq_postinstall(struct
> drm_i915_private *dev_priv)
> struct intel_display *display = &dev_priv->display;
>
> u32 de_pipe_masked = gen8_de_pipe_fault_mask(dev_priv) |
> - GEN8_PIPE_CDCLK_CRC_DONE;
> + GEN8_PIPE_CDCLK_CRC_DONE |
> GEN9_PIPE_HISTOGRAM_EVENT;
> u32 de_pipe_enables;
> u32 de_port_masked = gen8_de_port_aux_mask(dev_priv);
> u32 de_port_enables;
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> b/drivers/gpu/drm/i915/display/intel_histogram.c
> index
> 26eae8f40d0bf642546d583546782e22d5cefa9c..4f3dcbabfe96e955a658747182
> 72c4beb53b0827 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.c
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -19,7 +19,104 @@
> #define HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
> /* Precision factor for threshold guardband */ #define
> HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000 -#define
> HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
> +#define HISTOGRAM_BIN_READ_RETRY_COUNT 5
> +
> +static bool intel_histogram_get_data(struct intel_crtc *intel_crtc) {
> + struct intel_display *display = to_intel_display(intel_crtc);
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + int index;
> + u32 dpstbin;
> +
> + for (index = 0; index < ARRAY_SIZE(histogram->bin_data); index++) {
> + dpstbin = intel_de_read(display, DPST_BIN(intel_crtc->pipe));
> + if (!(dpstbin & DPST_BIN_BUSY)) {
> + histogram->bin_data[index] = dpstbin &
> DPST_BIN_DATA_MASK;
> + } else
The {} here are not required
> + return false;
> + }
Newline here please
> + return true;
> +}
> +
> +static void intel_histogram_handle_int_work(struct work_struct *work) {
> + struct intel_histogram *histogram = container_of(work,
> + struct intel_histogram, work.work);
> + struct intel_crtc *intel_crtc = histogram->crtc;
> + struct intel_display *display = to_intel_display(intel_crtc);
> + char event[] = "HISTOGRAM=1", pipe_id[21];
> + char *histogram_event[] = { event, pipe_id, NULL };
> + int retry;
> +
> + snprintf(pipe_id, sizeof(pipe_id),
> + "PIPE=%u", intel_crtc->base.base.id);
> +
> + /*
> + * TODO: PSR to be exited while reading the Histogram data
> + * Set DPST_CTL Bin Reg function select to TC
> + * Set DPST_CTL Bin Register Index to 0
> + */
> + intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL |
> DPST_CTL_BIN_REG_MASK, 0);
> + for (retry = 0; retry < HISTOGRAM_BIN_READ_RETRY_COUNT; retry++) {
> + if (intel_histogram_get_data(intel_crtc)) {
> + u32 *data;
> + struct drm_histogram *hist;
> +
> + data = kzalloc(sizeof(data) * sizeof(histogram-
> >bin_data), GFP_KERNEL);
> + if (!data)
> + return;
New line here
> + memcpy(histogram->bin_data, data, sizeof(histogram-
> >bin_data));
> + hist = kzalloc(sizeof(struct drm_histogram),
> GFP_KERNEL);
> + if (!hist)
> + return;
Same here
> + hist->data_ptr = *data;
> + hist->nr_elements = sizeof(histogram->bin_data);
> +
> + /* TODO: fill the drm_histogram_config data back this
> drm_histogram struct */
*to this drm_histogram struc
> + drm_property_replace_global_blob(display->drm,
> + &intel_crtc->base.state->histogram_data,
> + sizeof(struct drm_histogram),
> + hist, &intel_crtc->base.base,
> + intel_crtc->base.histogram_data_property);
Align this with parenthesis and add a new line here.
> + /* Notify user for Histogram readiness */
> + if (kobject_uevent_env(&display->drm->primary-
> >kdev->kobj,
> + KOBJ_CHANGE, histogram_event))
> + drm_err(display->drm,
> + "Sending HISTOGRAM event failed\n");
> + break;
> + }
> + }
New line here
> + if (retry >= HISTOGRAM_BIN_READ_RETRY_COUNT) {
> + drm_err(display->drm, "Histogram bin read failed with max
> retry\n");
> + return;
> + }
> +
> + /* Enable histogram interrupt */
> + intel_de_rmw(display, DPST_GUARD(intel_crtc->pipe),
> DPST_GUARD_HIST_INT_EN,
> + DPST_GUARD_HIST_INT_EN);
> +
> + /* Clear histogram interrupt by setting histogram interrupt status bit*/
> + intel_de_rmw(display, DPST_GUARD(intel_crtc->pipe),
> + DPST_GUARD_HIST_EVENT_STATUS, 1); }
> +
> +void intel_histogram_irq_handler(struct intel_display *display, enum
> +pipe pipe) {
> + struct intel_crtc *intel_crtc =
> + to_intel_crtc(drm_crtc_from_index(display->drm, pipe));
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + struct drm_i915_private *i915 = to_i915(intel_crtc->base.dev);
> +
> + if (!histogram->enable) {
> + drm_err(display->drm,
> + "Spurious interrupt, histogram not enabled\n");
> + return;
> + }
> +
> + queue_delayed_work(i915->unordered_wq,
> + &histogram->work, 0);
> +}
>
> int intel_histogram_atomic_check(struct intel_crtc *intel_crtc) { @@ -71,7
> +168,7 @@ static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8
> mode)
> DPST_GUARD_THRESHOLD_GB_MASK |
> DPST_GUARD_INTERRUPT_DELAY_MASK |
> DPST_GUARD_HIST_INT_EN,
> DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
> -
> DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY)
> |
> + DPST_GUARD_INTERRUPT_DELAY(0x04) |
Why no need.
Regards,
Suraj Kandpal
> DPST_GUARD_HIST_INT_EN);
>
> /* Clear pending interrupts has to be done on separate write */ @@ -
> 104,6 +201,7 @@ static void intel_histogram_disable(struct intel_crtc
> *intel_crtc)
> intel_de_rmw(display, DPST_CTL(pipe),
> DPST_CTL_IE_HIST_EN, 0);
>
> + cancel_delayed_work(&histogram->work);
> histogram->enable = false;
> }
>
> @@ -129,6 +227,7 @@ void intel_histogram_finish(struct intel_crtc *intel_crtc)
> {
> struct intel_histogram *histogram = intel_crtc->histogram;
>
> + cancel_delayed_work_sync(&histogram->work);
> kfree(histogram);
> }
>
> @@ -153,5 +252,8 @@ int intel_histogram_init(struct intel_crtc *crtc)
> histogram->can_enable = false;
> histogram->caps = histogram_caps;
>
> + INIT_DEFERRABLE_WORK(&histogram->work,
> + intel_histogram_handle_int_work);
> +
> return 0;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h
> b/drivers/gpu/drm/i915/display/intel_histogram.h
> index
> 5ea19ef2d3ecadf1ac159a784f51278fdde593de..b44ba3afc94f79f291f4e5ebdd0
> 4dcf9434b48a4 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.h
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> @@ -14,6 +14,8 @@ struct drm_property_blob; struct drm_histogram_config;
> struct drm_histogram_caps; struct intel_crtc;
> +struct intel_display;
> +enum pipe;
>
> #define HISTOGRAM_BIN_COUNT 32
>
> @@ -39,6 +41,7 @@ enum intel_global_hist_lut {
> INTEL_HISTOGRAM_PIXEL_FACTOR,
> };
>
> +void intel_histogram_irq_handler(struct intel_display *display, enum
> +pipe pipe);
> int intel_histogram_atomic_check(struct intel_crtc *intel_crtc); int
> intel_histogram_update(struct intel_crtc *intel_crtc,
> struct drm_histogram_config *config); diff --git
> a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index
> b9e2aa1c6f8afefade761b8d291bb62efb96e53c..fc451783c9c23bfdd74a2dfc78b
> e40c9d576fb56 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -1599,7 +1599,7 @@
> #define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL << 26)
> #define PIPE_VSYNC_INTERRUPT_ENABLE (1UL << 25)
> #define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL << 24)
> -#define PIPE_DPST_EVENT_ENABLE (1UL << 23)
> +#define PIPE_HISTOGRAM_EVENT_ENABLE (1UL << 23)
> #define SPRITE0_FLIP_DONE_INT_EN_VLV (1UL << 22)
> #define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL << 22)
> #define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL << 21)
> @@ -1622,7 +1622,7 @@
> #define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL << 10)
> #define PIPE_VSYNC_INTERRUPT_STATUS (1UL << 9)
> #define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL << 8)
> -#define PIPE_DPST_EVENT_STATUS (1UL << 7)
> +#define PIPE_HISTOGRAM_EVENT_STATUS (1UL << 7)
> #define PIPE_A_PSR_STATUS_VLV (1UL << 6)
> #define PIPE_LEGACY_BLC_EVENT_STATUS (1UL << 6)
> #define PIPE_ODD_FIELD_INTERRUPT_STATUS (1UL << 5)
> @@ -2224,6 +2224,7 @@
> #define GEN12_DSB_1_INT REG_BIT(14) /* tgl+ */
> #define GEN12_DSB_0_INT REG_BIT(13) /* tgl+ */
> #define GEN12_DSB_INT(dsb_id) REG_BIT(13 + (dsb_id))
> +#define GEN9_PIPE_HISTOGRAM_EVENT REG_BIT(12) /* skl+ */
> #define GEN9_PIPE_CURSOR_FAULT REG_BIT(11) /* skl+ */
> #define GEN9_PIPE_PLANE4_FAULT REG_BIT(10) /* skl+ */
> #define GEN8_PIPE_CURSOR_FAULT REG_BIT(10) /* bdw */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram
2025-01-28 15:51 ` [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram Arun R Murthy
@ 2025-02-14 10:22 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 10:22 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm
> histogram
>
> Handle histogram caps and histogram config property in i915 driver. Fill the
> histogram hardware capability and act upon the histogram config property to
> enable/disable histogram in i915.
Need to fix comment its not just for i915 but xe as well.
Otherwise LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_crtc.c | 7 +++++++
> drivers/gpu/drm/i915/display/intel_display.c | 12 ++++++++++++
> 2 files changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> b/drivers/gpu/drm/i915/display/intel_crtc.c
> index
> e69b28779ac551bde56c9c3d394e784275a9b69e..b90017409a23de2a214ca43d
> 32ba537998ea0f78 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> @@ -28,6 +28,7 @@
> #include "intel_drrs.h"
> #include "intel_dsi.h"
> #include "intel_fifo_underrun.h"
> +#include "intel_histogram.h"
> #include "intel_pipe_crc.h"
> #include "intel_psr.h"
> #include "intel_sprite.h"
> @@ -211,6 +212,7 @@ static struct intel_crtc *intel_crtc_alloc(void) static
> void intel_crtc_free(struct intel_crtc *crtc) {
> intel_crtc_destroy_state(&crtc->base, crtc->base.state);
> + intel_histogram_finish(crtc);
> kfree(crtc);
> }
>
> @@ -381,6 +383,11 @@ int intel_crtc_init(struct drm_i915_private *dev_priv,
> enum pipe pipe)
>
> BIT(DRM_SCALING_FILTER_DEFAULT) |
>
> BIT(DRM_SCALING_FILTER_NEAREST_NEIGHBOR));
>
> + intel_histogram_init(crtc);
> + if (drm_crtc_create_histogram_property(&crtc->base,
> + crtc->histogram->caps))
> + drm_err(&dev_priv->drm, "Failed to initialize histogram
> +properties\n");
> +
> intel_color_crtc_init(crtc);
> intel_drrs_crtc_init(crtc);
> intel_crtc_crc_init(crtc);
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index
> 7d68d652c1bc91acc68281c4761f688f3779bd79..c38a33ee90aef144931215254f
> 178ba955f998b0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -93,6 +93,7 @@
> #include "intel_fifo_underrun.h"
> #include "intel_frontbuffer.h"
> #include "intel_hdmi.h"
> +#include "intel_histogram.h"
> #include "intel_hotplug.h"
> #include "intel_link_bw.h"
> #include "intel_lvds.h"
> @@ -4675,6 +4676,12 @@ static int intel_crtc_atomic_check(struct
> intel_atomic_state *state,
> if (ret)
> return ret;
>
> + if (crtc_state->uapi.histogram_updated) {
> + ret = intel_histogram_atomic_check(crtc);
> + if (ret)
> + return ret;
> + }
> +
> return 0;
> }
>
> @@ -7933,6 +7940,11 @@ static void intel_atomic_commit_tail(struct
> intel_atomic_state *state)
> */
> old_crtc_state->dsb_color_vblank =
> fetch_and_zero(&new_crtc_state->dsb_color_vblank);
> old_crtc_state->dsb_commit =
> fetch_and_zero(&new_crtc_state->dsb_commit);
> +
> + if (new_crtc_state->uapi.histogram_updated)
> + intel_histogram_update(crtc,
> + (struct drm_histogram_config *)
> + new_crtc_state-
> >uapi.histogram_enable->data);
> }
>
> /* Underruns don't always raise interrupts, so check manually */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
2025-02-14 10:02 ` Kandpal, Suraj
@ 2025-02-14 10:24 ` Kandpal, Suraj
2025-02-17 6:09 ` Kandpal, Suraj
0 siblings, 1 reply; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-14 10:24 UTC (permalink / raw)
To: Kandpal, Suraj, Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> Kandpal, Suraj
> Sent: Friday, February 14, 2025 3:32 PM
> To: Murthy, Arun R <arun.r.murthy@intel.com>; intel-xe@lists.freedesktop.org;
> intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Cc: dmitry.baryshkov@linaro.org
> Subject: RE: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
>
>
>
> > -----Original Message-----
> > From: Murthy, Arun R <arun.r.murthy@intel.com>
> > Sent: Tuesday, January 28, 2025 9:21 PM
> > To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > dri- devel@lists.freedesktop.org
> > Cc: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > dmitry.baryshkov@linaro.org; Murthy, Arun R <arun.r.murthy@intel.com>
> > Subject: [PATCH v8 06/14] drm/i915/histogram: Add support for
> > histogram
> >
> > Statistics is generated from the image frame that is coming to display
> > and an event is sent to user after reading this histogram data.
> >
> > v2: forward declaration in header file along with error handling
> > (Jani)
> > v3: Replaced i915 with intel_display (Suraj)
> > v4: Removed dithering enable/disable (Vandita)
> > New patch for histogram register definitions (Suraj)
> > v5: IET LUT pgm follow the seq in spec and removed change to TC at end
> > (Suraj)
> > v8: Retained only the Histogram part and move IET LUT to a different
> > patch.
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > ---
> > drivers/gpu/drm/i915/Makefile | 1 +
> > drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
> > drivers/gpu/drm/i915/display/intel_histogram.c | 157
> > +++++++++++++++++++++
> > drivers/gpu/drm/i915/display/intel_histogram.h | 48 +++++++
> > 4 files changed, 208 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/Makefile
> > b/drivers/gpu/drm/i915/Makefile index
> >
> 4caa8e30bc98387d45212fbc7cea8b38687bd0d5..f993b19174ba79c0bcc349946
> > 19937be7d2797ed 100644
> > --- a/drivers/gpu/drm/i915/Makefile
> > +++ b/drivers/gpu/drm/i915/Makefile
> > @@ -270,6 +270,7 @@ i915-y += \
> > display/intel_hdcp.o \
> > display/intel_hdcp_gsc.o \
> > display/intel_hdcp_gsc_message.o \
> > + display/intel_histogram.o \
> > display/intel_hotplug.o \
> > display/intel_hotplug_irq.o \
> > display/intel_hti.o \
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index
> >
> cb51b7936f9338caaf14b1c6f7bbcc4327da4ef1..761fefed9376439c0ee5d346e81
> > 10a219ad0a586 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1434,6 +1434,8 @@ struct intel_crtc {
> > /* for loading single buffered registers during vblank */
> > struct pm_qos_request vblank_pm_qos;
> >
> > + struct intel_histogram *histogram;
> > +
> > #ifdef CONFIG_DEBUG_FS
> > struct intel_pipe_crc pipe_crc;
> > #endif
> > diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> > b/drivers/gpu/drm/i915/display/intel_histogram.c
> > new file mode 100644
> > index
> >
> 0000000000000000000000000000000000000000..26eae8f40d0bf642546d5835
> > 46782e22d5cefa9c
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> > @@ -0,0 +1,157 @@
> > +// SPDX-License-Identifier: MIT
> > +/*
> > + * Copyright © 2025 Intel Corporation */
> > +
> > +#include <drm/drm_device.h>
> > +#include <drm/drm_file.h>
> > +#include <drm/drm_vblank.h>
> > +
> > +#include "i915_reg.h"
> > +#include "i915_drv.h"
> > +#include "intel_de.h"
> > +#include "intel_display.h"
> > +#include "intel_display_types.h"
> > +#include "intel_histogram.h"
> > +#include "intel_histogram_regs.h"
> > +
> > +/* 3.0% of the pipe's current pixel count, hw does x4 */ #define
> > +HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
> > +/* Precision factor for threshold guardband */ #define
> > +HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000 #define
> > +HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
> > +
> > +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc) {
> > + struct intel_histogram *histogram = intel_crtc->histogram;
> > +
> > + /* TODO: Restrictions for enabling histogram */
> > + histogram->can_enable = true;
>
> We don’t change anything in the intel_crtc structure during compute or atomic
> check phase We need to consider moving this to the crtc_state.
>
> > +
> > + return 0;
> > +}
> > +
> > +static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8
> > +mode) {
> > + struct intel_display *display = to_intel_display(intel_crtc);
> > + struct intel_histogram *histogram = intel_crtc->histogram;
> > + int pipe = intel_crtc->pipe;
> > + u64 res;
> > + u32 gbandthreshold;
> > +
> > + if (!histogram || !histogram->can_enable)
> > + return -EINVAL;
> > +
> > + if (histogram->enable)
> > + return 0;
> > +
> > + /* enable histogram, clear DPST_CTL bin reg func select to TC */
> > + intel_de_rmw(display, DPST_CTL(pipe),
> > + DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
> > + DPST_CTL_HIST_MODE |
> > DPST_CTL_IE_TABLE_VALUE_FORMAT |
> > + DPST_CTL_ENHANCEMENT_MODE_MASK |
> > DPST_CTL_IE_MODI_TABLE_EN,
> > + ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> > + DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN
> > |
> > + DPST_CTL_HIST_MODE_HSV |
> > + DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
> > + DPST_CTL_EN_MULTIPLICATIVE |
> > DPST_CTL_IE_MODI_TABLE_EN);
> > +
> > + /* Re-Visit: check if wait for one vblank is required */
> > + drm_crtc_wait_one_vblank(&intel_crtc->base);
> > +
> > + /* TODO: Program GuardBand Threshold needs to be moved to
> > modeset path */
> > + res = (intel_crtc->config->hw.adjusted_mode.vtotal *
> > + intel_crtc->config->hw.adjusted_mode.htotal);
> > +
> > + gbandthreshold = (res *
> > HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT) /
> > + HISTOGRAM_GUARDBAND_PRECISION_FACTOR;
> > +
> > + /* Enable histogram interrupt mode */
> > + intel_de_rmw(display, DPST_GUARD(pipe),
> > + DPST_GUARD_THRESHOLD_GB_MASK |
> > + DPST_GUARD_INTERRUPT_DELAY_MASK |
> > DPST_GUARD_HIST_INT_EN,
> > + DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
> > +
> >
> DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY)
> > |
> > + DPST_GUARD_HIST_INT_EN);
> > +
> > + /* Clear pending interrupts has to be done on separate write */
> > + intel_de_rmw(display, DPST_GUARD(pipe),
> > + DPST_GUARD_HIST_EVENT_STATUS, 1);
> > +
> > + histogram->enable = true;
> > +
> > + return 0;
> > +}
> > +
> > +static void intel_histogram_disable(struct intel_crtc *intel_crtc) {
> > + struct intel_display *display = to_intel_display(intel_crtc);
> > + struct intel_histogram *histogram = intel_crtc->histogram;
> > + int pipe = intel_crtc->pipe;
> > +
> > + if (!histogram)
> > + return;
> > +
> > + /* If already disabled return */
> > + if (histogram->enable)
> > + return;
> > +
> > + /* Clear pending interrupts and disable interrupts */
> > + intel_de_rmw(display, DPST_GUARD(pipe),
> > + DPST_GUARD_HIST_INT_EN |
> > DPST_GUARD_HIST_EVENT_STATUS, 0);
> > +
> > + /* disable DPST_CTL Histogram mode */
> > + intel_de_rmw(display, DPST_CTL(pipe),
> > + DPST_CTL_IE_HIST_EN, 0);
> > +
> > + histogram->enable = false;
> > +}
> > +
> > +int intel_histogram_update(struct intel_crtc *intel_crtc,
> > + struct drm_histogram_config *config) {
> > + struct intel_display *display = to_intel_display(intel_crtc);
> > +
> > + if (config->enable) {
> > + if (config->hist_mode !=
> > DRM_MODE_HISTOGRAM_HSV_MAX_RGB) {
> > + drm_err(display->drm,
> > + "Only max(RGB) mode is supported for
> > histogram\n");
> > + return -EINVAL;
> > + }
> > + return intel_histogram_enable(intel_crtc, config->hist_mode);
> > + }
> > +
> > + intel_histogram_disable(intel_crtc);
> > + return 0;
> > +}
> > +
> > +void intel_histogram_finish(struct intel_crtc *intel_crtc) {
> > + struct intel_histogram *histogram = intel_crtc->histogram;
> > +
> > + kfree(histogram);
> > +}
> > +
> > +int intel_histogram_init(struct intel_crtc *crtc) {
> > + struct intel_histogram *histogram;
> > + struct drm_histogram_caps *histogram_caps;
> > +
> > + /* Allocate histogram internal struct */
> > + histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
> > + if (!histogram)
> > + return -ENOMEM;
>
> New line here
>
> > + histogram_caps = kzalloc(sizeof(*histogram_caps), GFP_KERNEL);
> > + if (!histogram_caps)
> > + return -ENOMEM;
> > +
> > + histogram_caps->histogram_mode =
> > DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
> > + histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
> > +
>
> Remove extra line
>
> Regards,
> Suraj Kandpal
> > + crtc->histogram = histogram;
> > + histogram->crtc = crtc;
> > + histogram->can_enable = false;
> > + histogram->caps = histogram_caps;
> > +
> > + return 0;
> > +}
> > diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h
> > b/drivers/gpu/drm/i915/display/intel_histogram.h
> > new file mode 100644
> > index
> >
> 0000000000000000000000000000000000000000..5ea19ef2d3ecadf1ac159a78
> > 4f51278fdde593de
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> > @@ -0,0 +1,48 @@
> > +// SPDX-License-Identifier: MIT
> > +/*
> > + * Copyright © 2025 Intel Corporation */
> > +
> > +#ifndef __INTEL_HISTOGRAM_H__
> > +#define __INTEL_HISTOGRAM_H__
> > +
> > +#include <linux/types.h>
> > +#include <linux/workqueue.h>
> > +
> > +struct delayed_work;
> > +struct drm_property_blob;
> > +struct drm_histogram_config;
> > +struct drm_histogram_caps;
> > +struct intel_crtc;
> > +
> > +#define HISTOGRAM_BIN_COUNT 32
> > +
> > +struct intel_histogram {
> > + struct drm_histogram_caps *caps;
> > + struct intel_crtc *crtc;
> > + struct delayed_work work;
> > + bool enable;
> > + bool can_enable;
> > + u32 bin_data[HISTOGRAM_BIN_COUNT];
> > +};
> > +
> > +enum intel_global_hist_status {
> > + INTEL_HISTOGRAM_ENABLE,
> > + INTEL_HISTOGRAM_DISABLE,
> > +};
> > +
> > +enum intel_global_histogram {
> > + INTEL_HISTOGRAM,
> > +};
> > +
> > +enum intel_global_hist_lut {
> > + INTEL_HISTOGRAM_PIXEL_FACTOR,
> > +};
> > +
> > +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc); int
> > +intel_histogram_update(struct intel_crtc *intel_crtc,
> > + struct drm_histogram_config *config); int
> > +intel_histogram_init(struct intel_crtc *intel_crtc); void
> > +intel_histogram_finish(struct intel_crtc *intel_crtc);
> > +
> > +#endif /* __INTEL_HISTOGRAM_H__ */
> >
> > --
> > 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [v8,06/14] drm/i915/histogram: Add support for histogram
2025-01-28 15:51 ` [PATCH v8 06/14] drm/i915/histogram: Add support " Arun R Murthy
2025-02-14 10:02 ` Kandpal, Suraj
@ 2025-02-16 14:32 ` Thasleem, Mohammed
1 sibling, 0 replies; 63+ messages in thread
From: Thasleem, Mohammed @ 2025-02-16 14:32 UTC (permalink / raw)
To: Arun R Murthy, intel-xe, intel-gfx, dri-devel
Cc: suraj.kandpal, dmitry.baryshkov
Hi Arun,
On 1/28/2025 9:21 PM, Arun R Murthy wrote:
> Statistics is generated from the image frame that is coming to display
> and an event is sent to user after reading this histogram data.
>
> v2: forward declaration in header file along with error handling (Jani)
> v3: Replaced i915 with intel_display (Suraj)
> v4: Removed dithering enable/disable (Vandita)
> New patch for histogram register definitions (Suraj)
> v5: IET LUT pgm follow the seq in spec and removed change to TC at end
> (Suraj)
> v8: Retained only the Histogram part and move IET LUT to a different
> patch.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
> drivers/gpu/drm/i915/display/intel_histogram.c | 157 +++++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_histogram.h | 48 +++++++
> 4 files changed, 208 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 4caa8e30bc98387d45212fbc7cea8b38687bd0d5..f993b19174ba79c0bcc34994619937be7d2797ed 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -270,6 +270,7 @@ i915-y += \
> display/intel_hdcp.o \
> display/intel_hdcp_gsc.o \
> display/intel_hdcp_gsc_message.o \
> + display/intel_histogram.o \
> display/intel_hotplug.o \
> display/intel_hotplug_irq.o \
> display/intel_hti.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index cb51b7936f9338caaf14b1c6f7bbcc4327da4ef1..761fefed9376439c0ee5d346e8110a219ad0a586 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1434,6 +1434,8 @@ struct intel_crtc {
> /* for loading single buffered registers during vblank */
> struct pm_qos_request vblank_pm_qos;
>
> + struct intel_histogram *histogram;
> +
> #ifdef CONFIG_DEBUG_FS
> struct intel_pipe_crc pipe_crc;
> #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c b/drivers/gpu/drm/i915/display/intel_histogram.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..26eae8f40d0bf642546d583546782e22d5cefa9c
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -0,0 +1,157 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#include <drm/drm_device.h>
> +#include <drm/drm_file.h>
> +#include <drm/drm_vblank.h>
> +
> +#include "i915_reg.h"
> +#include "i915_drv.h"
> +#include "intel_de.h"
> +#include "intel_display.h"
> +#include "intel_display_types.h"
> +#include "intel_histogram.h"
> +#include "intel_histogram_regs.h"
> +
> +/* 3.0% of the pipe's current pixel count, hw does x4 */
> +#define HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
> +/* Precision factor for threshold guardband */
> +#define HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000
> +#define HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
> +
> +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc)
> +{
> + struct intel_histogram *histogram = intel_crtc->histogram;
> +
> + /* TODO: Restrictions for enabling histogram */
> + histogram->can_enable = true;
> +
> + return 0;
> +}
> +
> +static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8 mode)
> +{
> + struct intel_display *display = to_intel_display(intel_crtc);
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + int pipe = intel_crtc->pipe;
> + u64 res;
> + u32 gbandthreshold;
> +
> + if (!histogram || !histogram->can_enable)
> + return -EINVAL;
> +
> + if (histogram->enable)
> + return 0;
> +
> + /* enable histogram, clear DPST_CTL bin reg func select to TC */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE | DPST_CTL_IE_TABLE_VALUE_FORMAT |
> + DPST_CTL_ENHANCEMENT_MODE_MASK | DPST_CTL_IE_MODI_TABLE_EN,
> + ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> + DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE_HSV |
> + DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
> + DPST_CTL_EN_MULTIPLICATIVE | DPST_CTL_IE_MODI_TABLE_EN);
> +
> + /* Re-Visit: check if wait for one vblank is required */
> + drm_crtc_wait_one_vblank(&intel_crtc->base);
> +
> + /* TODO: Program GuardBand Threshold needs to be moved to modeset path */
> + res = (intel_crtc->config->hw.adjusted_mode.vtotal *
> + intel_crtc->config->hw.adjusted_mode.htotal);
> +
> + gbandthreshold = (res * HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT) /
> + HISTOGRAM_GUARDBAND_PRECISION_FACTOR;
> +
> + /* Enable histogram interrupt mode */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_THRESHOLD_GB_MASK |
> + DPST_GUARD_INTERRUPT_DELAY_MASK | DPST_GUARD_HIST_INT_EN,
> + DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
> + DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY) |
> + DPST_GUARD_HIST_INT_EN);
> +
> + /* Clear pending interrupts has to be done on separate write */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_HIST_EVENT_STATUS, 1);
> +
> + histogram->enable = true;
> +
> + return 0;
> +}
> +
> +static void intel_histogram_disable(struct intel_crtc *intel_crtc)
> +{
> + struct intel_display *display = to_intel_display(intel_crtc);
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + int pipe = intel_crtc->pipe;
> +
> + if (!histogram)
> + return;
> +
> + /* If already disabled return */
> + if (histogram->enable)
It should be !histogram->enable right?
Thanks,
Thasleem
> + return;
> +
> + /* Clear pending interrupts and disable interrupts */
> + intel_de_rmw(display, DPST_GUARD(pipe),
> + DPST_GUARD_HIST_INT_EN | DPST_GUARD_HIST_EVENT_STATUS, 0);
> +
> + /* disable DPST_CTL Histogram mode */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_IE_HIST_EN, 0);
> +
> + histogram->enable = false;
> +}
> +
> +int intel_histogram_update(struct intel_crtc *intel_crtc,
> + struct drm_histogram_config *config)
> +{
> + struct intel_display *display = to_intel_display(intel_crtc);
> +
> + if (config->enable) {
> + if (config->hist_mode != DRM_MODE_HISTOGRAM_HSV_MAX_RGB) {
> + drm_err(display->drm,
> + "Only max(RGB) mode is supported for histogram\n");
> + return -EINVAL;
> + }
> + return intel_histogram_enable(intel_crtc, config->hist_mode);
> + }
> +
> + intel_histogram_disable(intel_crtc);
> + return 0;
> +}
> +
> +void intel_histogram_finish(struct intel_crtc *intel_crtc)
> +{
> + struct intel_histogram *histogram = intel_crtc->histogram;
> +
> + kfree(histogram);
> +}
> +
> +int intel_histogram_init(struct intel_crtc *crtc)
> +{
> + struct intel_histogram *histogram;
> + struct drm_histogram_caps *histogram_caps;
> +
> + /* Allocate histogram internal struct */
> + histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
> + if (!histogram)
> + return -ENOMEM;
> + histogram_caps = kzalloc(sizeof(*histogram_caps), GFP_KERNEL);
> + if (!histogram_caps)
> + return -ENOMEM;
> +
> + histogram_caps->histogram_mode = DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
> + histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
> +
> + crtc->histogram = histogram;
> + histogram->crtc = crtc;
> + histogram->can_enable = false;
> + histogram->caps = histogram_caps;
> +
> + return 0;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h b/drivers/gpu/drm/i915/display/intel_histogram.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..5ea19ef2d3ecadf1ac159a784f51278fdde593de
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> @@ -0,0 +1,48 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_HISTOGRAM_H__
> +#define __INTEL_HISTOGRAM_H__
> +
> +#include <linux/types.h>
> +#include <linux/workqueue.h>
> +
> +struct delayed_work;
> +struct drm_property_blob;
> +struct drm_histogram_config;
> +struct drm_histogram_caps;
> +struct intel_crtc;
> +
> +#define HISTOGRAM_BIN_COUNT 32
> +
> +struct intel_histogram {
> + struct drm_histogram_caps *caps;
> + struct intel_crtc *crtc;
> + struct delayed_work work;
> + bool enable;
> + bool can_enable;
> + u32 bin_data[HISTOGRAM_BIN_COUNT];
> +};
> +
> +enum intel_global_hist_status {
> + INTEL_HISTOGRAM_ENABLE,
> + INTEL_HISTOGRAM_DISABLE,
> +};
> +
> +enum intel_global_histogram {
> + INTEL_HISTOGRAM,
> +};
> +
> +enum intel_global_hist_lut {
> + INTEL_HISTOGRAM_PIXEL_FACTOR,
> +};
> +
> +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc);
> +int intel_histogram_update(struct intel_crtc *intel_crtc,
> + struct drm_histogram_config *config);
> +int intel_histogram_init(struct intel_crtc *intel_crtc);
> +void intel_histogram_finish(struct intel_crtc *intel_crtc);
> +
> +#endif /* __INTEL_HISTOGRAM_H__ */
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data
2025-01-28 15:51 ` [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data Arun R Murthy
@ 2025-02-17 4:23 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-17 4:23 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data
>
> User created LUT can be fed back to the hardware so that the hardware can
> apply this LUT data to see the enhancement in the image.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_histogram.c | 70
> ++++++++++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_histogram.h | 4 ++
> 2 files changed, 74 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> b/drivers/gpu/drm/i915/display/intel_histogram.c
> index
> 4f3dcbabfe96e955a65874718272c4beb53b0827..aa02e7ce42b930a858de4ad7e
> 0d39d93fa7d4298 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.c
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -20,6 +20,7 @@
> /* Precision factor for threshold guardband */ #define
> HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000 #define
> HISTOGRAM_BIN_READ_RETRY_COUNT 5
> +#define IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
>
> static bool intel_histogram_get_data(struct intel_crtc *intel_crtc) { @@ -223,6
> +224,60 @@ int intel_histogram_update(struct intel_crtc *intel_crtc,
> return 0;
> }
>
> +int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
> + struct drm_property_blob *blob)
> +{
> + struct intel_histogram *histogram = intel_crtc->histogram;
> + struct intel_display *display = to_intel_display(intel_crtc);
> + int pipe = intel_crtc->pipe;
> + int i = 0;
> + struct drm_iet_1dlut_sample *iet;
> + u32 *data;
> + int ret;
> +
> + if (!histogram)
> + return -EINVAL;
> +
> + if (!histogram->enable) {
> + drm_err(display->drm, "histogram not enabled");
Please add /n at the end of sentence.
Nit: start the log statement with a capital letter
> + return -EINVAL;
> + }
> +
> + if (!data) {
> + drm_err(display->drm, "enhancement LUT data is NULL");
> + return -EINVAL;
> + }
> +
> + /* Set DPST_CTL Bin Reg function select to IE & wait for a vblabk */
Typo you mean vblank
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL,
> DPST_CTL_BIN_REG_FUNC_IE);
> +
> + drm_crtc_wait_one_vblank(&intel_crtc->base);
> +
> + /* Set DPST_CTL Bin Register Index to 0 */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_MASK, DPST_CTL_BIN_REG_CLEAR);
> +
> + iet = (struct drm_iet_1dlut_sample *)blob->data;
> + data = kzalloc(sizeof(data) * iet->nr_elements, GFP_KERNEL);
> + if (!data)
> + return -ENOMEM;
New line here
> + ret = copy_from_user(data, (uint32_t __user *)(unsigned long)iet-
> >iet_lut,
> + sizeof(uint32_t) * iet->nr_elements);
> + if (ret)
> + return ret;
> +
> + for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
> + intel_de_rmw(display, DPST_BIN(pipe),
> + DPST_BIN_DATA_MASK, data[i]);
DATA_BIN_MASK is 0:23 for TC mode and only 0:9 for IE I think you should create a new
IE DATA_BIN_MASK and then write the data.
> + drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n", i, data[i]);
Drm_dbg_kms
Regards,
Suraj Kandpal
> + }
> + kfree(data);
> + drm_property_blob_put(intel_crtc->base.state->iet_lut);
> +
> + return 0;
> +}
> +
> void intel_histogram_finish(struct intel_crtc *intel_crtc) {
> struct intel_histogram *histogram = intel_crtc->histogram; @@ -235,6
> +290,8 @@ int intel_histogram_init(struct intel_crtc *crtc) {
> struct intel_histogram *histogram;
> struct drm_histogram_caps *histogram_caps;
> + struct drm_iet_caps *iet_caps;
> + u32 *iet_format;
>
> /* Allocate histogram internal struct */
> histogram = kzalloc(sizeof(*histogram), GFP_KERNEL); @@ -247,10
> +304,23 @@ int intel_histogram_init(struct intel_crtc *crtc)
> histogram_caps->histogram_mode =
> DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
> histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
>
> + iet_caps = kzalloc(sizeof(*iet_caps), GFP_KERNEL);
> + if (!iet_caps)
> + return -ENOMEM;
> +
> + iet_caps->iet_mode = DRM_MODE_IET_MULTIPLICATIVE;
> + iet_caps->nr_iet_sample_formats = 1;
> + iet_caps->nr_iet_lut_entries = HISTOGRAM_IET_LENGTH;
> + iet_format = kzalloc(sizeof(u32)*iet_caps->nr_iet_sample_formats,
> + GFP_KERNEL);
> + *iet_format = IET_SAMPLE_FORMAT_1_INT_9_FRACT;
> + iet_caps->iet_sample_format = *iet_format;
> +
> crtc->histogram = histogram;
> histogram->crtc = crtc;
> histogram->can_enable = false;
> histogram->caps = histogram_caps;
> + histogram->iet_caps = iet_caps;
>
> INIT_DEFERRABLE_WORK(&histogram->work,
> intel_histogram_handle_int_work); diff --git
> a/drivers/gpu/drm/i915/display/intel_histogram.h
> b/drivers/gpu/drm/i915/display/intel_histogram.h
> index
> b44ba3afc94f79f291f4e5ebdd04dcf9434b48a4..0999d1720c7abee8907c77896e
> 4b1e6ff756160f 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.h
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> @@ -18,9 +18,11 @@ struct intel_display; enum pipe;
>
> #define HISTOGRAM_BIN_COUNT 32
> +#define HISTOGRAM_IET_LENGTH 33
>
> struct intel_histogram {
> struct drm_histogram_caps *caps;
> + struct drm_iet_caps *iet_caps;
> struct intel_crtc *crtc;
> struct delayed_work work;
> bool enable;
> @@ -45,6 +47,8 @@ void intel_histogram_irq_handler(struct intel_display
> *display, enum pipe pipe); int intel_histogram_atomic_check(struct intel_crtc
> *intel_crtc); int intel_histogram_update(struct intel_crtc *intel_crtc,
> struct drm_histogram_config *config);
> +int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
> + struct drm_property_blob *blob);
> int intel_histogram_init(struct intel_crtc *intel_crtc); void
> intel_histogram_finish(struct intel_crtc *intel_crtc);
>
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
2025-02-14 10:24 ` Kandpal, Suraj
@ 2025-02-17 6:09 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-17 6:09 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Kandpal, Suraj
> Sent: Friday, February 14, 2025 3:54 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; Murthy, Arun R
> <arun.r.murthy@intel.com>; intel-xe@lists.freedesktop.org; intel-
> gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Cc: dmitry.baryshkov@linaro.org
> Subject: RE: [PATCH v8 06/14] drm/i915/histogram: Add support for histogram
>
>
>
> > -----Original Message-----
> > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> > Kandpal, Suraj
> > Sent: Friday, February 14, 2025 3:32 PM
> > To: Murthy, Arun R <arun.r.murthy@intel.com>;
> > intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > dri-devel@lists.freedesktop.org
> > Cc: dmitry.baryshkov@linaro.org
> > Subject: RE: [PATCH v8 06/14] drm/i915/histogram: Add support for
> > histogram
> >
> >
> >
> > > -----Original Message-----
> > > From: Murthy, Arun R <arun.r.murthy@intel.com>
> > > Sent: Tuesday, January 28, 2025 9:21 PM
> > > To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > > dri- devel@lists.freedesktop.org
> > > Cc: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > > dmitry.baryshkov@linaro.org; Murthy, Arun R
> > > <arun.r.murthy@intel.com>
> > > Subject: [PATCH v8 06/14] drm/i915/histogram: Add support for
> > > histogram
> > >
> > > Statistics is generated from the image frame that is coming to
> > > display and an event is sent to user after reading this histogram data.
> > >
> > > v2: forward declaration in header file along with error handling
> > > (Jani)
> > > v3: Replaced i915 with intel_display (Suraj)
> > > v4: Removed dithering enable/disable (Vandita)
> > > New patch for histogram register definitions (Suraj)
> > > v5: IET LUT pgm follow the seq in spec and removed change to TC at end
> > > (Suraj)
> > > v8: Retained only the Histogram part and move IET LUT to a different
> > > patch.
> > >
> > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
>
> LGTM,
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
I meant to send this to another patch in this series but sent it here this patch already has some comments of mine that need to be addressed
Don't consider this Rb
Regards,
Suraj Kandpal
>
> > > ---
> > > drivers/gpu/drm/i915/Makefile | 1 +
> > > drivers/gpu/drm/i915/display/intel_display_types.h | 2 +
> > > drivers/gpu/drm/i915/display/intel_histogram.c | 157
> > > +++++++++++++++++++++
> > > drivers/gpu/drm/i915/display/intel_histogram.h | 48 +++++++
> > > 4 files changed, 208 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/Makefile
> > > b/drivers/gpu/drm/i915/Makefile index
> > >
> >
> 4caa8e30bc98387d45212fbc7cea8b38687bd0d5..f993b19174ba79c0bcc349946
> > > 19937be7d2797ed 100644
> > > --- a/drivers/gpu/drm/i915/Makefile
> > > +++ b/drivers/gpu/drm/i915/Makefile
> > > @@ -270,6 +270,7 @@ i915-y += \
> > > display/intel_hdcp.o \
> > > display/intel_hdcp_gsc.o \
> > > display/intel_hdcp_gsc_message.o \
> > > + display/intel_histogram.o \
> > > display/intel_hotplug.o \
> > > display/intel_hotplug_irq.o \
> > > display/intel_hti.o \
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index
> > >
> >
> cb51b7936f9338caaf14b1c6f7bbcc4327da4ef1..761fefed9376439c0ee5d346e8
> 1
> > > 10a219ad0a586 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -1434,6 +1434,8 @@ struct intel_crtc {
> > > /* for loading single buffered registers during vblank */
> > > struct pm_qos_request vblank_pm_qos;
> > >
> > > + struct intel_histogram *histogram;
> > > +
> > > #ifdef CONFIG_DEBUG_FS
> > > struct intel_pipe_crc pipe_crc;
> > > #endif
> > > diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> > > b/drivers/gpu/drm/i915/display/intel_histogram.c
> > > new file mode 100644
> > > index
> > >
> >
> 0000000000000000000000000000000000000000..26eae8f40d0bf642546d5835
> > > 46782e22d5cefa9c
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> > > @@ -0,0 +1,157 @@
> > > +// SPDX-License-Identifier: MIT
> > > +/*
> > > + * Copyright © 2025 Intel Corporation */
> > > +
> > > +#include <drm/drm_device.h>
> > > +#include <drm/drm_file.h>
> > > +#include <drm/drm_vblank.h>
> > > +
> > > +#include "i915_reg.h"
> > > +#include "i915_drv.h"
> > > +#include "intel_de.h"
> > > +#include "intel_display.h"
> > > +#include "intel_display_types.h"
> > > +#include "intel_histogram.h"
> > > +#include "intel_histogram_regs.h"
> > > +
> > > +/* 3.0% of the pipe's current pixel count, hw does x4 */ #define
> > > +HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT 300
> > > +/* Precision factor for threshold guardband */ #define
> > > +HISTOGRAM_GUARDBAND_PRECISION_FACTOR 10000 #define
> > > +HISTOGRAM_DEFAULT_GUARDBAND_DELAY 0x04
> > > +
> > > +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc) {
> > > + struct intel_histogram *histogram = intel_crtc->histogram;
> > > +
> > > + /* TODO: Restrictions for enabling histogram */
> > > + histogram->can_enable = true;
> >
> > We don’t change anything in the intel_crtc structure during compute or
> > atomic check phase We need to consider moving this to the crtc_state.
> >
> > > +
> > > + return 0;
> > > +}
> > > +
> > > +static int intel_histogram_enable(struct intel_crtc *intel_crtc, u8
> > > +mode) {
> > > + struct intel_display *display = to_intel_display(intel_crtc);
> > > + struct intel_histogram *histogram = intel_crtc->histogram;
> > > + int pipe = intel_crtc->pipe;
> > > + u64 res;
> > > + u32 gbandthreshold;
> > > +
> > > + if (!histogram || !histogram->can_enable)
> > > + return -EINVAL;
> > > +
> > > + if (histogram->enable)
> > > + return 0;
> > > +
> > > + /* enable histogram, clear DPST_CTL bin reg func select to TC */
> > > + intel_de_rmw(display, DPST_CTL(pipe),
> > > + DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
> > > + DPST_CTL_HIST_MODE |
> > > DPST_CTL_IE_TABLE_VALUE_FORMAT |
> > > + DPST_CTL_ENHANCEMENT_MODE_MASK |
> > > DPST_CTL_IE_MODI_TABLE_EN,
> > > + ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> > > + DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN
> > > |
> > > + DPST_CTL_HIST_MODE_HSV |
> > > + DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
> > > + DPST_CTL_EN_MULTIPLICATIVE |
> > > DPST_CTL_IE_MODI_TABLE_EN);
> > > +
> > > + /* Re-Visit: check if wait for one vblank is required */
> > > + drm_crtc_wait_one_vblank(&intel_crtc->base);
> > > +
> > > + /* TODO: Program GuardBand Threshold needs to be moved to
> > > modeset path */
> > > + res = (intel_crtc->config->hw.adjusted_mode.vtotal *
> > > + intel_crtc->config->hw.adjusted_mode.htotal);
> > > +
> > > + gbandthreshold = (res *
> > > HISTOGRAM_GUARDBAND_THRESHOLD_DEFAULT) /
> > > + HISTOGRAM_GUARDBAND_PRECISION_FACTOR;
> > > +
> > > + /* Enable histogram interrupt mode */
> > > + intel_de_rmw(display, DPST_GUARD(pipe),
> > > + DPST_GUARD_THRESHOLD_GB_MASK |
> > > + DPST_GUARD_INTERRUPT_DELAY_MASK |
> > > DPST_GUARD_HIST_INT_EN,
> > > + DPST_GUARD_THRESHOLD_GB(gbandthreshold) |
> > > +
> > >
> >
> DPST_GUARD_INTERRUPT_DELAY(HISTOGRAM_DEFAULT_GUARDBAND_DELAY
> )
> > > |
> > > + DPST_GUARD_HIST_INT_EN);
> > > +
> > > + /* Clear pending interrupts has to be done on separate write */
> > > + intel_de_rmw(display, DPST_GUARD(pipe),
> > > + DPST_GUARD_HIST_EVENT_STATUS, 1);
> > > +
> > > + histogram->enable = true;
> > > +
> > > + return 0;
> > > +}
> > > +
> > > +static void intel_histogram_disable(struct intel_crtc *intel_crtc) {
> > > + struct intel_display *display = to_intel_display(intel_crtc);
> > > + struct intel_histogram *histogram = intel_crtc->histogram;
> > > + int pipe = intel_crtc->pipe;
> > > +
> > > + if (!histogram)
> > > + return;
> > > +
> > > + /* If already disabled return */
> > > + if (histogram->enable)
> > > + return;
> > > +
> > > + /* Clear pending interrupts and disable interrupts */
> > > + intel_de_rmw(display, DPST_GUARD(pipe),
> > > + DPST_GUARD_HIST_INT_EN |
> > > DPST_GUARD_HIST_EVENT_STATUS, 0);
> > > +
> > > + /* disable DPST_CTL Histogram mode */
> > > + intel_de_rmw(display, DPST_CTL(pipe),
> > > + DPST_CTL_IE_HIST_EN, 0);
> > > +
> > > + histogram->enable = false;
> > > +}
> > > +
> > > +int intel_histogram_update(struct intel_crtc *intel_crtc,
> > > + struct drm_histogram_config *config) {
> > > + struct intel_display *display = to_intel_display(intel_crtc);
> > > +
> > > + if (config->enable) {
> > > + if (config->hist_mode !=
> > > DRM_MODE_HISTOGRAM_HSV_MAX_RGB) {
> > > + drm_err(display->drm,
> > > + "Only max(RGB) mode is supported for
> > > histogram\n");
> > > + return -EINVAL;
> > > + }
> > > + return intel_histogram_enable(intel_crtc, config->hist_mode);
> > > + }
> > > +
> > > + intel_histogram_disable(intel_crtc);
> > > + return 0;
> > > +}
> > > +
> > > +void intel_histogram_finish(struct intel_crtc *intel_crtc) {
> > > + struct intel_histogram *histogram = intel_crtc->histogram;
> > > +
> > > + kfree(histogram);
> > > +}
> > > +
> > > +int intel_histogram_init(struct intel_crtc *crtc) {
> > > + struct intel_histogram *histogram;
> > > + struct drm_histogram_caps *histogram_caps;
> > > +
> > > + /* Allocate histogram internal struct */
> > > + histogram = kzalloc(sizeof(*histogram), GFP_KERNEL);
> > > + if (!histogram)
> > > + return -ENOMEM;
> >
> > New line here
> >
> > > + histogram_caps = kzalloc(sizeof(*histogram_caps), GFP_KERNEL);
> > > + if (!histogram_caps)
> > > + return -ENOMEM;
> > > +
> > > + histogram_caps->histogram_mode =
> > > DRM_MODE_HISTOGRAM_HSV_MAX_RGB;
> > > + histogram_caps->bins_count = HISTOGRAM_BIN_COUNT;
> > > +
> >
> > Remove extra line
> >
> > Regards,
> > Suraj Kandpal
> > > + crtc->histogram = histogram;
> > > + histogram->crtc = crtc;
> > > + histogram->can_enable = false;
> > > + histogram->caps = histogram_caps;
> > > +
> > > + return 0;
> > > +}
> > > diff --git a/drivers/gpu/drm/i915/display/intel_histogram.h
> > > b/drivers/gpu/drm/i915/display/intel_histogram.h
> > > new file mode 100644
> > > index
> > >
> >
> 0000000000000000000000000000000000000000..5ea19ef2d3ecadf1ac159a78
> > > 4f51278fdde593de
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/i915/display/intel_histogram.h
> > > @@ -0,0 +1,48 @@
> > > +// SPDX-License-Identifier: MIT
> > > +/*
> > > + * Copyright © 2025 Intel Corporation */
> > > +
> > > +#ifndef __INTEL_HISTOGRAM_H__
> > > +#define __INTEL_HISTOGRAM_H__
> > > +
> > > +#include <linux/types.h>
> > > +#include <linux/workqueue.h>
> > > +
> > > +struct delayed_work;
> > > +struct drm_property_blob;
> > > +struct drm_histogram_config;
> > > +struct drm_histogram_caps;
> > > +struct intel_crtc;
> > > +
> > > +#define HISTOGRAM_BIN_COUNT 32
> > > +
> > > +struct intel_histogram {
> > > + struct drm_histogram_caps *caps;
> > > + struct intel_crtc *crtc;
> > > + struct delayed_work work;
> > > + bool enable;
> > > + bool can_enable;
> > > + u32 bin_data[HISTOGRAM_BIN_COUNT]; };
> > > +
> > > +enum intel_global_hist_status {
> > > + INTEL_HISTOGRAM_ENABLE,
> > > + INTEL_HISTOGRAM_DISABLE,
> > > +};
> > > +
> > > +enum intel_global_histogram {
> > > + INTEL_HISTOGRAM,
> > > +};
> > > +
> > > +enum intel_global_hist_lut {
> > > + INTEL_HISTOGRAM_PIXEL_FACTOR,
> > > +};
> > > +
> > > +int intel_histogram_atomic_check(struct intel_crtc *intel_crtc);
> > > +int intel_histogram_update(struct intel_crtc *intel_crtc,
> > > + struct drm_histogram_config *config); int
> > > +intel_histogram_init(struct intel_crtc *intel_crtc); void
> > > +intel_histogram_finish(struct intel_crtc *intel_crtc);
> > > +
> > > +#endif /* __INTEL_HISTOGRAM_H__ */
> > >
> > > --
> > > 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering
2025-01-28 15:51 ` [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering Arun R Murthy
@ 2025-02-17 6:20 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-17 6:20 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering
>
> Enable pipe dithering while enabling histogram to overcome some atrifacts
Typo: *artifacts
> seen on the screen.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_histogram.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> b/drivers/gpu/drm/i915/display/intel_histogram.c
> index
> f6844449e4bb6167116d223af316e5f3a5e8707c..ead9c2391d460f459dfca8e99
> ea423a34418e67d 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.c
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -22,6 +22,13 @@
> #define HISTOGRAM_BIN_READ_RETRY_COUNT 5 #define
> IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
>
> +static void intel_histogram_enable_dithering(struct intel_display *display,
> + enum pipe pipe)
Align with parenthesis
With the above fixed.
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> +{
> + intel_de_rmw(display, PIPE_MISC(pipe), PIPE_MISC_DITHER_ENABLE,
> + PIPE_MISC_DITHER_ENABLE);
> +}
> +
> static void set_bin_index_0(struct intel_display *display, enum pipe pipe) {
> if (DISPLAY_VER(display) >= 20)
> @@ -200,6 +207,10 @@ static int intel_histogram_enable(struct intel_crtc
> *intel_crtc, u8 mode)
>
> if (histogram->enable)
> return 0;
> +
> + /* Pipe Dithering should be enabled with histogram */
> + intel_histogram_enable_dithering(display, pipe);
> +
> /* enable histogram, clear DPST_BIN reg and select TC function */
> if (DISPLAY_VER(display) >= 20)
> intel_de_rmw(display, DPST_CTL(pipe),
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+
2025-01-28 15:51 ` [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
@ 2025-02-17 6:25 ` Kandpal, Suraj
0 siblings, 0 replies; 63+ messages in thread
From: Kandpal, Suraj @ 2025-02-17 6:25 UTC (permalink / raw)
To: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Tuesday, January 28, 2025 9:21 PM
> To: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Kandpal, Suraj <suraj.kandpal@intel.com>; dmitry.baryshkov@linaro.org;
> Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display
> 20+
>
> In Display 20+, new registers are added for setting index, reading histogram and
> writing the IET.
>
> v2: Removed duplicate code (Jani)
> v3: Moved histogram core changes to earlier patches (Jani/Suraj)
> v4: Rebased after addressing comments on patch 1
> v5: Added the retry logic from patch3 and rebased the patch series
> v6: optimize wite_iet() (Suraj)
>
> Bspec: 68895
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
We need to remove the Rb from this patch because some changes will come to this patch
Because of the comments left on some of the previous patches.
> ---
> drivers/gpu/drm/i915/display/intel_histogram.c | 108 +++++++++++++++-----
> -
> .../gpu/drm/i915/display/intel_histogram_regs.h | 25 +++++
> 2 files changed, 104 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram.c
> b/drivers/gpu/drm/i915/display/intel_histogram.c
> index
> dd4ab30795df48011013c019d7525e046cdd5404..f6844449e4bb6167116d223a
> f316e5f3a5e8707c 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram.c
> +++ b/drivers/gpu/drm/i915/display/intel_histogram.c
> @@ -22,6 +22,37 @@
> #define HISTOGRAM_BIN_READ_RETRY_COUNT 5 #define
> IET_SAMPLE_FORMAT_1_INT_9_FRACT 0x1000009
>
> +static void set_bin_index_0(struct intel_display *display, enum pipe
> +pipe) {
> + if (DISPLAY_VER(display) >= 20)
> + intel_de_rmw(display, DPST_IE_INDEX(pipe),
> + DPST_IE_BIN_INDEX_MASK,
> DPST_IE_BIN_INDEX(0));
> + else
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_MASK,
> + DPST_CTL_BIN_REG_CLEAR);
> +}
> +
> +static void write_iet(struct intel_display *display, enum pipe pipe,
> + u32 *data)
> +{
> + int i;
> +
> + for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
> + if (DISPLAY_VER(display) >= 20)
> + intel_de_rmw(display, DPST_IE_BIN(pipe),
> + DPST_IE_BIN_DATA_MASK,
> + DPST_IE_BIN_DATA(data[i]));
> + else
> + intel_de_rmw(display, DPST_BIN(pipe),
> + DPST_BIN_DATA_MASK,
> + DPST_BIN_DATA(data[i]));
Change needs to comes in which we write to dpst_bin_data on 0:23 or 0:9 depending on if we are writing histogram data or iet data
> +
> + drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n",
> + i, data[i]);
Drm_dbg_kms
> + }
> +}
> +
> static bool intel_histogram_get_data(struct intel_crtc *intel_crtc) {
> struct intel_display *display = to_intel_display(intel_crtc); @@ -29,12
> +60,27 @@ static bool intel_histogram_get_data(struct intel_crtc *intel_crtc)
> int index;
> u32 dpstbin;
>
> + if (DISPLAY_VER(display) >= 20)
> + intel_de_rmw(display, DPST_HIST_INDEX(intel_crtc->pipe),
> + DPST_HIST_BIN_INDEX_MASK,
> + DPST_HIST_BIN_INDEX(0));
> + else
> + intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL |
> DPST_CTL_BIN_REG_MASK, 0);
> +
> for (index = 0; index < ARRAY_SIZE(histogram->bin_data); index++) {
> - dpstbin = intel_de_read(display, DPST_BIN(intel_crtc->pipe));
> + dpstbin = intel_de_read(display, (DISPLAY_VER(display) >= 20 ?
> + DPST_HIST_BIN(intel_crtc->pipe) :
> + DPST_BIN(intel_crtc->pipe)));
> if (!(dpstbin & DPST_BIN_BUSY)) {
> - histogram->bin_data[index] = dpstbin &
> DPST_BIN_DATA_MASK;
> - } else
> + histogram->bin_data[index] = dpstbin &
> (DISPLAY_VER(display) >= 20 ?
> +
> DPST_HIST_BIN_DATA_MASK :
> +
> DPST_BIN_DATA_MASK);
> + } else {
> + drm_err(display->drm, "Histogram bin busy,
> retyring\n");
Typo: * retrying
Regards,
Suraj Kandpal
> + fsleep(2);
> return false;
> + }
> }
> return true;
> }
> @@ -62,8 +108,6 @@ static void intel_histogram_handle_int_work(struct
> work_struct *work)
> * Set DPST_CTL Bin Reg function select to TC
> * Set DPST_CTL Bin Register Index to 0
> */
> - intel_de_rmw(display, DPST_CTL(intel_crtc->pipe),
> - DPST_CTL_BIN_REG_FUNC_SEL |
> DPST_CTL_BIN_REG_MASK, 0);
> for (retry = 0; retry < HISTOGRAM_BIN_READ_RETRY_COUNT; retry++) {
> if (intel_histogram_get_data(intel_crtc)) {
> u32 *data;
> @@ -156,17 +200,27 @@ static int intel_histogram_enable(struct intel_crtc
> *intel_crtc, u8 mode)
>
> if (histogram->enable)
> return 0;
> -
> - /* enable histogram, clear DPST_CTL bin reg func select to TC */
> - intel_de_rmw(display, DPST_CTL(pipe),
> - DPST_CTL_BIN_REG_FUNC_SEL | DPST_CTL_IE_HIST_EN |
> - DPST_CTL_HIST_MODE |
> DPST_CTL_IE_TABLE_VALUE_FORMAT |
> - DPST_CTL_ENHANCEMENT_MODE_MASK |
> DPST_CTL_IE_MODI_TABLE_EN,
> - ((mode == DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> - DPST_CTL_BIN_REG_FUNC_TC : 0) | DPST_CTL_IE_HIST_EN
> |
> - DPST_CTL_HIST_MODE_HSV |
> - DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC |
> - DPST_CTL_EN_MULTIPLICATIVE |
> DPST_CTL_IE_MODI_TABLE_EN);
> + /* enable histogram, clear DPST_BIN reg and select TC function */
> + if (DISPLAY_VER(display) >= 20)
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE,
> + DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE_HSV);
> + else
> + /* enable histogram, clear DPST_CTL bin reg func select to TC
> */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL |
> DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE |
> + DPST_CTL_IE_TABLE_VALUE_FORMAT |
> + DPST_CTL_ENHANCEMENT_MODE_MASK |
> + DPST_CTL_IE_MODI_TABLE_EN,
> + ((mode ==
> DRM_MODE_HISTOGRAM_HSV_MAX_RGB) ?
> + DPST_CTL_BIN_REG_FUNC_TC : 0) |
> + DPST_CTL_IE_HIST_EN |
> + DPST_CTL_HIST_MODE_HSV |
> + DPST_CTL_IE_TABLE_VALUE_FORMAT_1INT_9FRAC
> |
> + DPST_CTL_EN_MULTIPLICATIVE |
> DPST_CTL_IE_MODI_TABLE_EN);
>
> /* Re-Visit: check if wait for one vblank is required */
> drm_crtc_wait_one_vblank(&intel_crtc->base);
> @@ -244,7 +298,6 @@ int intel_histogram_set_iet_lut(struct intel_crtc
> *intel_crtc,
> struct intel_histogram *histogram = intel_crtc->histogram;
> struct intel_display *display = to_intel_display(intel_crtc);
> int pipe = intel_crtc->pipe;
> - int i = 0;
> struct drm_iet_1dlut_sample *iet;
> u32 *data;
> int ret;
> @@ -262,15 +315,15 @@ int intel_histogram_set_iet_lut(struct intel_crtc
> *intel_crtc,
> return -EINVAL;
> }
>
> - /* Set DPST_CTL Bin Reg function select to IE & wait for a vblabk */
> - intel_de_rmw(display, DPST_CTL(pipe),
> - DPST_CTL_BIN_REG_FUNC_SEL,
> DPST_CTL_BIN_REG_FUNC_IE);
>
> - drm_crtc_wait_one_vblank(&intel_crtc->base);
> + if (DISPLAY_VER(display) < 20) {
> + /* Set DPST_CTL Bin Reg function select to IE & wait for a
> vblabk */
> + intel_de_rmw(display, DPST_CTL(pipe),
> + DPST_CTL_BIN_REG_FUNC_SEL,
> + DPST_CTL_BIN_REG_FUNC_IE);
> + }
>
> - /* Set DPST_CTL Bin Register Index to 0 */
> - intel_de_rmw(display, DPST_CTL(pipe),
> - DPST_CTL_BIN_REG_MASK, DPST_CTL_BIN_REG_CLEAR);
> + set_bin_index_0(display, pipe);
>
> iet = (struct drm_iet_1dlut_sample *)blob->data;
> data = kzalloc(sizeof(data) * iet->nr_elements, GFP_KERNEL); @@ -
> 281,11 +334,8 @@ int intel_histogram_set_iet_lut(struct intel_crtc *intel_crtc,
> if (ret)
> return ret;
>
> - for (i = 0; i < HISTOGRAM_IET_LENGTH; i++) {
> - intel_de_rmw(display, DPST_BIN(pipe),
> - DPST_BIN_DATA_MASK, data[i]);
> - drm_dbg_atomic(display->drm, "iet_lut[%d]=%x\n", i, data[i]);
> - }
> + write_iet(display, pipe, data);
> +
> kfree(data);
> drm_property_blob_put(intel_crtc->base.state->iet_lut);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_histogram_regs.h
> b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
> index
> 213c9f483567cb19a47b44953749f6baf0afe9e7..3fbb9c2deaae6278d5a832dfb6
> 1ef860de0c6f21 100644
> --- a/drivers/gpu/drm/i915/display/intel_histogram_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_histogram_regs.h
> @@ -45,6 +45,31 @@
> #define _DPST_BIN_B 0x491C4
> #define DPST_BIN(pipe)
> _MMIO_PIPE(pipe, _DPST_BIN_A, _DPST_BIN_B)
> #define DPST_BIN_DATA_MASK
> REG_GENMASK(23, 0)
> +#define DPST_BIN_DATA(val)
> REG_FIELD_PREP(DPST_BIN_DATA_MASK, val)
> #define DPST_BIN_BUSY REG_BIT(31)
>
> +#define _DPST_HIST_INDEX_A 0x490D8
> +#define _DPST_HIST_INDEX_B 0x491D8
> +#define DPST_HIST_INDEX(pipe)
> _MMIO_PIPE(pipe, _DPST_HIST_INDEX_A, _DPST_HIST_INDEX_B)
> +#define DPST_HIST_BIN_INDEX_MASK REG_GENMASK(4, 0)
> +#define DPST_HIST_BIN_INDEX(val)
> REG_FIELD_PREP(DPST_HIST_BIN_INDEX_MASK, val)
> +
> +#define _DPST_HIST_BIN_A 0x490C4
> +#define _DPST_HIST_BIN_B 0x491C4
> +#define DPST_HIST_BIN(pipe) _MMIO_PIPE(pipe,
> _DPST_HIST_BIN_A, _DPST_HIST_BIN_B)
> +#define DPST_HIST_BIN_BUSY REG_BIT(31)
> +#define DPST_HIST_BIN_DATA_MASK
> REG_GENMASK(30, 0)
> +
> +#define _DPST_IE_BIN_A 0x490CC
> +#define _DPST_IE_BIN_B 0x491CC
> +#define DPST_IE_BIN(pipe) _MMIO_PIPE(pipe,
> _DPST_IE_BIN_A, _DPST_IE_BIN_B)
> +#define DPST_IE_BIN_DATA_MASK
> REG_GENMASK(9, 0)
> +#define DPST_IE_BIN_DATA(val)
> REG_FIELD_PREP(DPST_IE_BIN_DATA_MASK, val)
> +
> +#define _DPST_IE_INDEX_A 0x490DC
> +#define _DPST_IE_INDEX_B 0x491DC
> +#define DPST_IE_INDEX(pipe) _MMIO_PIPE(pipe,
> _DPST_IE_INDEX_A, _DPST_IE_INDEX_B)
> +#define DPST_IE_BIN_INDEX_MASK
> REG_GENMASK(6, 0)
> +#define DPST_IE_BIN_INDEX(val)
> REG_FIELD_PREP(DPST_IE_BIN_INDEX_MASK, val)
> +
> #endif /* __INTEL_HISTOGRAM_REGS_H__ */
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
2025-02-14 6:38 ` Kandpal, Suraj
@ 2025-02-17 10:08 ` Pekka Paalanen
2025-02-17 12:27 ` Pekka Paalanen
` (2 more replies)
1 sibling, 3 replies; 63+ messages in thread
From: Pekka Paalanen @ 2025-02-17 10:08 UTC (permalink / raw)
To: Arun R Murthy
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 6875 bytes --]
Hi Arun,
this whole series seems to be missing all the UAPI docs for the DRM
ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
replacement for them, I would assume both are a requirement.
Without the ReST docs it is really difficult to see how this new UAPI
should be used.
On Tue, 28 Jan 2025 21:21:07 +0530
Arun R Murthy <arun.r.murthy@intel.com> wrote:
> Display Histogram is an array of bins and can be generated in many ways
> referred to as modes.
> Ex: HSV max(RGB), Wighted RGB etc.
>
> Understanding the histogram data format(Ex: HSV max(RGB))
> Histogram is just the pixel count.
> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> 25 bits should be sufficient to represent this along with a buffer of 7
> bits(future use) u32 is being considered.
> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> bits, hence 32 bins.
> Below mentioned algorithm illustrates the histogram generation in
> hardware.
>
> hist[32] = {0};
> for (i = 0; i < resolution; i++) {
> bin = max(RGB[i]);
> bin = bin >> 3; /* consider the most significant bits */
> hist[bin]++;
> }
> If the entire image is Red color then max(255,0,0) is 255 so the pixel
> count of each pixels will be placed in the last bin. Hence except
> hist[31] all other bins will have a value zero.
> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>
> Description of the structures, properties defined are documented in the
> header file include/uapi/drm/drm_mode.h
>
> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 65 insertions(+)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> __u32 pad;
> };
>
> +/**
> + * enum drm_mode_histogram
> + *
> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> + * Maximum resolution at present 10k, 10240x4320 = 44236800
> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
> + * can be a u32 value.
> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
I assume s/SDL/SDR/.
This assumption seems false. SDR can be also 10-bit and probably even
more.
> + * If the most significant 5 bits are considered, then bins = 2^5
> + * will be 32 bins.
> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
Does this mean that the histogram is computed on the pixel values
emitted to the cable? What if the cable format is YUV?
> + * For illustration consider a full RED image of 10k resolution considering all
> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
> + * plane similarly with HDR the same would look like hist[65535] =
> + * {0,0,0,....44236800}
This SDR vs. HDR is a false dichotomy. I presume the meaningful
difference is bits-per-channel, not the dynamic range.
It would be good to have the pseudocode snippet here instead of the
commit message. The commit message should not contain any UAPI notes
that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
message is probably not very useful, as the more interesting questions
are why this exists and what it can be used for.
> + */
> +enum drm_mode_histogram {
> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
What does the HSV stand for?
When talking about pixel values, my first impression is
hue-saturation-value. But there are no hue-saturation-value
computations at all?
> +};
> +
> +/**
> + * struct drm_histogram_caps
> + *
> + * @histogram_mode: histogram generation modes, defined in the
> + * enum drm_mode_histogram
> + * @bins_count: number of bins for a chosen histogram mode. For illustration
> + * refer the above defined histogram mode.
> + */
> +struct drm_histogram_caps {
> + __u32 histogram_mode;
> + __u32 bins_count;
> +};
Patch 3 says:
+ * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
+ * Description of the structure is in include/uapi/drm/drm_mode.h
This is a read-only property, right?
The blob contains one struct drm_histogram_caps. What if more than one
mode is supported?
If the bin count depends on the bits-per-channel of something which
depends on set video mode or other things, how does updating work?
What if userspace uses a stale count? How does userspace ensure it uses
the current count?
> +
> +/**
> + * struct drm_histogram_config
> + *
> + * @hist_mode_data: address to the histogram mode specific data if any
Do I understand correctly that the KMS blob will contain a userspace
virtual memory address (a user pointer)? How does that work? What are
the lifetime requirements for that memory?
I do not remember any precedent of this, and I suspect it's not a good
design. I believe all the data should be contained in the blobs, e.g.
how IN_FORMATS does it. I'm not sure what would be the best UAPI here
for returning histogram data to userspace, but at least all the data
sent to the kernel should be contained in the blob itself since it
seems to be quite small. Variable length is ok for blobs.
> + * @nr_hist_mode_data: number of elements pointed by the address in
> + * hist_mode_data
> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> + * @enable: flag to enable/disable histogram
> + */
> +struct drm_histogram_config {
> + __u64 hist_mode_data;
> + __u32 nr_hist_mode_data;
> + enum drm_mode_histogram hist_mode;
> + bool enable;
Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
if architecture, build options, or the contents of the enum change the
ABI.
> +};
> +
> +/**
> + * struct drm_histogram
> + *
> + * @config: histogram configuration data pointed by struct drm_histogram_config
s/pointed by/defined by/ I presume? That much is obvious from the field
type. What does it mean? Why is struct drm_histogram_config a separate
struct?
> + * @data_ptr: pointer to the array of histogram.
> + * Histogram is an array of bins. Data format for each bin depends
> + * on the histogram mode. Refer to the above histogram modes for
> + * more information.
Another userspace virtual address stored in a KMS blob?
> + * @nr_elements: number of bins in the histogram.
> + */
> +struct drm_histogram {
> + struct drm_histogram_config config;
> + __u64 data_ptr;
> + __u32 nr_elements;
> +};
> +
> #if defined(__cplusplus)
> }
> #endif
>
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 10:08 ` Pekka Paalanen
@ 2025-02-17 12:27 ` Pekka Paalanen
2025-03-03 7:52 ` Murthy, Arun R
2025-02-17 17:26 ` Simona Vetter
2025-02-18 5:43 ` Murthy, Arun R
2 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-02-17 12:27 UTC (permalink / raw)
To: Arun R Murthy
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 7735 bytes --]
On Mon, 17 Feb 2025 12:08:08 +0200
Pekka Paalanen <pekka.paalanen@haloniitty.fi> wrote:
> Hi Arun,
>
> this whole series seems to be missing all the UAPI docs for the DRM
> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> replacement for them, I would assume both are a requirement.
>
> Without the ReST docs it is really difficult to see how this new UAPI
> should be used.
>
>
> On Tue, 28 Jan 2025 21:21:07 +0530
> Arun R Murthy <arun.r.murthy@intel.com> wrote:
>
> > Display Histogram is an array of bins and can be generated in many ways
> > referred to as modes.
> > Ex: HSV max(RGB), Wighted RGB etc.
> >
> > Understanding the histogram data format(Ex: HSV max(RGB))
> > Histogram is just the pixel count.
> > For a maximum resolution of 10k (10240 x 4320 = 44236800)
> > 25 bits should be sufficient to represent this along with a buffer of 7
> > bits(future use) u32 is being considered.
> > max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> > bits, hence 32 bins.
> > Below mentioned algorithm illustrates the histogram generation in
> > hardware.
> >
> > hist[32] = {0};
> > for (i = 0; i < resolution; i++) {
> > bin = max(RGB[i]);
> > bin = bin >> 3; /* consider the most significant bits */
> > hist[bin]++;
> > }
> > If the entire image is Red color then max(255,0,0) is 255 so the pixel
> > count of each pixels will be placed in the last bin. Hence except
> > hist[31] all other bins will have a value zero.
> > Generated histogram in this case would be hist[32] = {0,0,....44236800}
> >
> > Description of the structures, properties defined are documented in the
> > header file include/uapi/drm/drm_mode.h
> >
> > v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> > include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 65 insertions(+)
> >
> > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> > __u32 pad;
> > };
> >
> > +/**
> > + * enum drm_mode_histogram
> > + *
> > + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> > + * Maximum resolution at present 10k, 10240x4320 = 44236800
> > + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
> > + * can be a u32 value.
> > + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>
> I assume s/SDL/SDR/.
>
> This assumption seems false. SDR can be also 10-bit and probably even
> more.
>
> > + * If the most significant 5 bits are considered, then bins = 2^5
> > + * will be 32 bins.
> > + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
As another reviewer pointed out before, there are 256 different
possible values for an 8-bit integer, and not 255. Likewise, a 16-bit
integer can have 65536 different values, not 65535. Zero is a possible
value.
>
> Does this mean that the histogram is computed on the pixel values
> emitted to the cable? What if the cable format is YUV?
>
> > + * For illustration consider a full RED image of 10k resolution considering all
> > + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
> > + * plane similarly with HDR the same would look like hist[65535] =
> > + * {0,0,0,....44236800}
>
> This SDR vs. HDR is a false dichotomy. I presume the meaningful
> difference is bits-per-channel, not the dynamic range.
>
> It would be good to have the pseudocode snippet here instead of the
> commit message. The commit message should not contain any UAPI notes
> that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
> message is probably not very useful, as the more interesting questions
> are why this exists and what it can be used for.
>
> > + */
> > +enum drm_mode_histogram {
> > + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
>
> What does the HSV stand for?
>
> When talking about pixel values, my first impression is
> hue-saturation-value. But there are no hue-saturation-value
> computations at all?
>
> > +};
> > +
> > +/**
> > + * struct drm_histogram_caps
> > + *
> > + * @histogram_mode: histogram generation modes, defined in the
> > + * enum drm_mode_histogram
> > + * @bins_count: number of bins for a chosen histogram mode. For illustration
> > + * refer the above defined histogram mode.
> > + */
> > +struct drm_histogram_caps {
> > + __u32 histogram_mode;
> > + __u32 bins_count;
> > +};
>
> Patch 3 says:
>
> + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
> + * Description of the structure is in include/uapi/drm/drm_mode.h
>
> This is a read-only property, right?
>
> The blob contains one struct drm_histogram_caps. What if more than one
> mode is supported?
>
> If the bin count depends on the bits-per-channel of something which
> depends on set video mode or other things, how does updating work?
> What if userspace uses a stale count? How does userspace ensure it uses
> the current count?
>
> > +
> > +/**
> > + * struct drm_histogram_config
> > + *
> > + * @hist_mode_data: address to the histogram mode specific data if any
>
> Do I understand correctly that the KMS blob will contain a userspace
> virtual memory address (a user pointer)? How does that work? What are
> the lifetime requirements for that memory?
>
> I do not remember any precedent of this, and I suspect it's not a good
> design. I believe all the data should be contained in the blobs, e.g.
> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> for returning histogram data to userspace, but at least all the data
> sent to the kernel should be contained in the blob itself since it
> seems to be quite small. Variable length is ok for blobs.
>
> > + * @nr_hist_mode_data: number of elements pointed by the address in
> > + * hist_mode_data
> > + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> > + * @enable: flag to enable/disable histogram
> > + */
> > +struct drm_histogram_config {
> > + __u64 hist_mode_data;
> > + __u32 nr_hist_mode_data;
> > + enum drm_mode_histogram hist_mode;
> > + bool enable;
>
> Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
> if architecture, build options, or the contents of the enum change the
> ABI.
To clarify: defining named values with an enum {...} block is ok. Using
the enum type in ABI may cause problems.
Thanks,
pq
> > +};
> > +
> > +/**
> > + * struct drm_histogram
> > + *
> > + * @config: histogram configuration data pointed by struct drm_histogram_config
>
> s/pointed by/defined by/ I presume? That much is obvious from the field
> type. What does it mean? Why is struct drm_histogram_config a separate
> struct?
>
> > + * @data_ptr: pointer to the array of histogram.
> > + * Histogram is an array of bins. Data format for each bin depends
> > + * on the histogram mode. Refer to the above histogram modes for
> > + * more information.
>
> Another userspace virtual address stored in a KMS blob?
>
> > + * @nr_elements: number of bins in the histogram.
> > + */
> > +struct drm_histogram {
> > + struct drm_histogram_config config;
> > + __u64 data_ptr;
> > + __u32 nr_elements;
> > +};
> > +
> > #if defined(__cplusplus)
> > }
> > #endif
> >
>
> Thanks,
> pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 10:08 ` Pekka Paalanen
2025-02-17 12:27 ` Pekka Paalanen
@ 2025-02-17 17:26 ` Simona Vetter
2025-02-17 22:23 ` Simona Vetter
` (2 more replies)
2025-02-18 5:43 ` Murthy, Arun R
2 siblings, 3 replies; 63+ messages in thread
From: Simona Vetter @ 2025-02-17 17:26 UTC (permalink / raw)
To: Pekka Paalanen
Cc: Arun R Murthy, intel-xe, intel-gfx, dri-devel, suraj.kandpal,
dmitry.baryshkov
On Mon, Feb 17, 2025 at 12:08:08PM +0200, Pekka Paalanen wrote:
> Hi Arun,
>
> this whole series seems to be missing all the UAPI docs for the DRM
> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> replacement for them, I would assume both are a requirement.
>
> Without the ReST docs it is really difficult to see how this new UAPI
> should be used.
Seconded. But really only wanted to comment on the userspace address in
drm blobs.
> > +/**
> > + * struct drm_histogram_config
> > + *
> > + * @hist_mode_data: address to the histogram mode specific data if any
>
> Do I understand correctly that the KMS blob will contain a userspace
> virtual memory address (a user pointer)? How does that work? What are
> the lifetime requirements for that memory?
>
> I do not remember any precedent of this, and I suspect it's not a good
> design. I believe all the data should be contained in the blobs, e.g.
> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> for returning histogram data to userspace, but at least all the data
> sent to the kernel should be contained in the blob itself since it
> seems to be quite small. Variable length is ok for blobs.
So yeah this doesn't work for a few reasons:
- It's very restrictive what you're allowed to do during an atomic kms
commit, and a userspace page fault due to copy_from/to_user is
definitely not ok. Which means you need to unconditionally copy before
the atomic commit in the synchronous prep phase for the user->kernel
direction, and somewhere after the entire thing has finished for the
other direction. So this is worse than just more blobs, because with
drm blobs you can at least avoid copying if nothing has changed.
- Due to the above you also cannot synchronize with userspace for the
kernel->userspace copy. And you can't fix that with a sync_file out
fence, because the underlying dma_fence rules are what prevents you from
doing userspace page faults in atomic commit, and the same rules apply
for any other sync_file fence too.
- More fundamentally, both drm blobs and userspace virtual address spaces
(as represented by struct mm_struct) are refconted objects, with
entirely decoupled lifetimes. You'll have UAF issues here, and if you
fix them by grabbing references you'll break the world.
tldr; this does not work
Alternative A: drm blob
-----------------------
This would work for the userspace->kernel direction, but there's some
downsides:
- You still copy, although less often than with a userspace pointer.
- The kernel->userspace direction doesn't work, because blob objects are
immutable. We have mutable blob properties, but mutability is achieved
by exchanging the entire blob object. There's two options to address
that:
a) Fundamentally immutable objects is really nice api designs, so I
prefer to not change that. But in theory making blob objects mutable
would work, and probably break the world.
b) A more benign trick would be to split the blob object id allocation
from creating the object itself. We could then allocate and return
the blob ID of the new histogram to userspace synchronously from the
atomic ioctl, while creating the object for real only in the atomic
commit.
As long as we preallocate any memory this doesn't break and dma_fence
signalling rules. Which also means we could use the existing atomic
out-fence (or a new one for histograms) to signal to userspace when
the data is ready, so this is at least somewhat useful for
compositors without fundamental issues.
You still suffer from additional copies here.
Alternative B: gem_bo
---------------------
One alternative which naturally has mutable data would be gem_bo, maybe
wrapped in a drm_fb. The issue with that is that for small histograms you
really want cpu access both in userspace and the kernel, while most
display hardware wants uncached. And all the display-only kms drivers we
have do not have a concept of cached gem_bo, unlike many of the drm
drivers with render/accel support. Which means we're adding gem_bo which
cannot be used for display, on display-only drivers, and I'd expect this
will result in compositors blowing up in funny ways to no end.
So not a good idea either, at least not if your histograms are small and
the display hw doesn't dma them in/out already anyway.
This also means that we'll probably need 2 interfaces here, one supporting
gem_bo for big histograms and hw that can dma in/out of them, and a 2nd
one optimized for the cpu access case.
Alternative C: memfd
--------------------
I think a new drm property type that accepts memfd would fit the bill
quit well:
- memfd can be mmap(), so you avoid copies.
- their distinct from gem_bo, so no chaos in apis everywhere with imposter
gem_bo that cannot ever be used for display.
- memfd can be sealed, so we can validate that they have the right size
- thanks to umdabuf there's already core mm code to properly pin them, so
painful to implement this all.
For a driver interface I think the memfd should be pinned as long as it's
in a drm_crtc/plane/whatever_state structure, with a kernel vmap void *
pointer already set up. That way drivers can't get this wrong.
The uapi has a few options:
- Allow memfd to back drm_framebuffer. This won't result in api chaos
since the compositor creates these, and these memfd should never show up
in any property that would have a real fb backed by gem_bo. This still
feels horrible to me personally, but it would allow to support
histograms that need gem_bo in the same api. Personally I think we
should just do two flavors, they're too distinct.
- A new memfd kms object like blob objects, which you can create and
destroy and which are refcounted. Creation would also pin the memfd and
check it has a sealed size (and whatever else we want sealed). This
avoids pin/unpin every time you change the memfd property, but no idea
whether that's a real use-case.
- memfd properties just get the file descriptor (like in/out fences do)
and the drm atomic ioctl layer transparently pins/unpins as needed.
Personally I think option C is neat, A doable, B really only for hw that
can dma in/out of histograms and where it's big enough that doing so is a
functional requirement.
Cheers, Sima
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 17:26 ` Simona Vetter
@ 2025-02-17 22:23 ` Simona Vetter
2025-02-18 6:01 ` Murthy, Arun R
2025-02-19 13:31 ` Simona Vetter
2 siblings, 0 replies; 63+ messages in thread
From: Simona Vetter @ 2025-02-17 22:23 UTC (permalink / raw)
To: Pekka Paalanen
Cc: Arun R Murthy, intel-xe, intel-gfx, dri-devel, suraj.kandpal,
dmitry.baryshkov
On Mon, Feb 17, 2025 at 06:26:17PM +0100, Simona Vetter wrote:
> On Mon, Feb 17, 2025 at 12:08:08PM +0200, Pekka Paalanen wrote:
> > Hi Arun,
> >
> > this whole series seems to be missing all the UAPI docs for the DRM
> > ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> > replacement for them, I would assume both are a requirement.
> >
> > Without the ReST docs it is really difficult to see how this new UAPI
> > should be used.
>
> Seconded. But really only wanted to comment on the userspace address in
> drm blobs.
>
> > > +/**
> > > + * struct drm_histogram_config
> > > + *
> > > + * @hist_mode_data: address to the histogram mode specific data if any
> >
> > Do I understand correctly that the KMS blob will contain a userspace
> > virtual memory address (a user pointer)? How does that work? What are
> > the lifetime requirements for that memory?
> >
> > I do not remember any precedent of this, and I suspect it's not a good
> > design. I believe all the data should be contained in the blobs, e.g.
> > how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> > for returning histogram data to userspace, but at least all the data
> > sent to the kernel should be contained in the blob itself since it
> > seems to be quite small. Variable length is ok for blobs.
>
> So yeah this doesn't work for a few reasons:
>
> - It's very restrictive what you're allowed to do during an atomic kms
> commit, and a userspace page fault due to copy_from/to_user is
> definitely not ok. Which means you need to unconditionally copy before
> the atomic commit in the synchronous prep phase for the user->kernel
> direction, and somewhere after the entire thing has finished for the
> other direction. So this is worse than just more blobs, because with
> drm blobs you can at least avoid copying if nothing has changed.
>
> - Due to the above you also cannot synchronize with userspace for the
> kernel->userspace copy. And you can't fix that with a sync_file out
> fence, because the underlying dma_fence rules are what prevents you from
> doing userspace page faults in atomic commit, and the same rules apply
> for any other sync_file fence too.
>
> - More fundamentally, both drm blobs and userspace virtual address spaces
> (as represented by struct mm_struct) are refconted objects, with
> entirely decoupled lifetimes. You'll have UAF issues here, and if you
> fix them by grabbing references you'll break the world.
>
> tldr; this does not work
>
> Alternative A: drm blob
> -----------------------
>
> This would work for the userspace->kernel direction, but there's some
> downsides:
>
> - You still copy, although less often than with a userspace pointer.
>
> - The kernel->userspace direction doesn't work, because blob objects are
> immutable. We have mutable blob properties, but mutability is achieved
> by exchanging the entire blob object. There's two options to address
> that:
>
> a) Fundamentally immutable objects is really nice api designs, so I
> prefer to not change that. But in theory making blob objects mutable
> would work, and probably break the world.
>
> b) A more benign trick would be to split the blob object id allocation
> from creating the object itself. We could then allocate and return
> the blob ID of the new histogram to userspace synchronously from the
> atomic ioctl, while creating the object for real only in the atomic
> commit.
>
> As long as we preallocate any memory this doesn't break and dma_fence
> signalling rules. Which also means we could use the existing atomic
> out-fence (or a new one for histograms) to signal to userspace when
> the data is ready, so this is at least somewhat useful for
> compositors without fundamental issues.
>
> You still suffer from additional copies here.
>
> Alternative B: gem_bo
> ---------------------
>
> One alternative which naturally has mutable data would be gem_bo, maybe
> wrapped in a drm_fb. The issue with that is that for small histograms you
> really want cpu access both in userspace and the kernel, while most
> display hardware wants uncached. And all the display-only kms drivers we
> have do not have a concept of cached gem_bo, unlike many of the drm
> drivers with render/accel support. Which means we're adding gem_bo which
> cannot be used for display, on display-only drivers, and I'd expect this
> will result in compositors blowing up in funny ways to no end.
>
> So not a good idea either, at least not if your histograms are small and
> the display hw doesn't dma them in/out already anyway.
>
> This also means that we'll probably need 2 interfaces here, one supporting
> gem_bo for big histograms and hw that can dma in/out of them, and a 2nd
> one optimized for the cpu access case.
>
> Alternative C: memfd
> --------------------
>
> I think a new drm property type that accepts memfd would fit the bill
> quit well:
>
> - memfd can be mmap(), so you avoid copies.
>
> - their distinct from gem_bo, so no chaos in apis everywhere with imposter
> gem_bo that cannot ever be used for display.
>
> - memfd can be sealed, so we can validate that they have the right size
>
> - thanks to umdabuf there's already core mm code to properly pin them, so
> painful to implement this all.
>
> For a driver interface I think the memfd should be pinned as long as it's
> in a drm_crtc/plane/whatever_state structure, with a kernel vmap void *
> pointer already set up. That way drivers can't get this wrong.
>
> The uapi has a few options:
>
> - Allow memfd to back drm_framebuffer. This won't result in api chaos
> since the compositor creates these, and these memfd should never show up
> in any property that would have a real fb backed by gem_bo. This still
> feels horrible to me personally, but it would allow to support
> histograms that need gem_bo in the same api. Personally I think we
> should just do two flavors, they're too distinct.
>
> - A new memfd kms object like blob objects, which you can create and
> destroy and which are refcounted. Creation would also pin the memfd and
> check it has a sealed size (and whatever else we want sealed). This
> avoids pin/unpin every time you change the memfd property, but no idea
> whether that's a real use-case.
>
> - memfd properties just get the file descriptor (like in/out fences do)
> and the drm atomic ioctl layer transparently pins/unpins as needed.
One thing I forgot: We'd need to think through if other compositors can
get back to the memfd from the property. Or if it's better to just
disallow that because it'd open up a very funny new ipc mechanism.
-Sima
> Personally I think option C is neat, A doable, B really only for hw that
> can dma in/out of histograms and where it's big enough that doing so is a
> functional requirement.
>
> Cheers, Sima
> --
> Simona Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 10:08 ` Pekka Paalanen
2025-02-17 12:27 ` Pekka Paalanen
2025-02-17 17:26 ` Simona Vetter
@ 2025-02-18 5:43 ` Murthy, Arun R
2025-02-18 16:18 ` Pekka Paalanen
2025-02-20 16:26 ` Dmitry Baryshkov
2 siblings, 2 replies; 63+ messages in thread
From: Murthy, Arun R @ 2025-02-18 5:43 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
On 17-02-2025 15:38, Pekka Paalanen wrote:
> Hi Arun,
>
> this whole series seems to be missing all the UAPI docs for the DRM
> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> replacement for them, I would assume both are a requirement.
>
> Without the ReST docs it is really difficult to see how this new UAPI
> should be used.
Hi Pekka,
I also realized later on this. Will add this in my next patchset.
>
> On Tue, 28 Jan 2025 21:21:07 +0530
> Arun R Murthy <arun.r.murthy@intel.com> wrote:
>
>> Display Histogram is an array of bins and can be generated in many ways
>> referred to as modes.
>> Ex: HSV max(RGB), Wighted RGB etc.
>>
>> Understanding the histogram data format(Ex: HSV max(RGB))
>> Histogram is just the pixel count.
>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
>> 25 bits should be sufficient to represent this along with a buffer of 7
>> bits(future use) u32 is being considered.
>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
>> bits, hence 32 bins.
>> Below mentioned algorithm illustrates the histogram generation in
>> hardware.
>>
>> hist[32] = {0};
>> for (i = 0; i < resolution; i++) {
>> bin = max(RGB[i]);
>> bin = bin >> 3; /* consider the most significant bits */
>> hist[bin]++;
>> }
>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
>> count of each pixels will be placed in the last bin. Hence except
>> hist[31] all other bins will have a value zero.
>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>>
>> Description of the structures, properties defined are documented in the
>> header file include/uapi/drm/drm_mode.h
>>
>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>>
>> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
>> ---
>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 65 insertions(+)
>>
>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
>> --- a/include/uapi/drm/drm_mode.h
>> +++ b/include/uapi/drm/drm_mode.h
>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
>> __u32 pad;
>> };
>>
>> +/**
>> + * enum drm_mode_histogram
>> + *
>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
>> + * can be a u32 value.
>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
> I assume s/SDL/SDR/.
Yes, sorry TYPO
>
> This assumption seems false. SDR can be also 10-bit and probably even
> more.
Yes but in practice majority of them being 8-bit. So have considered
8-bit for illustration purpose only.
The design itself should accommodate 10-bit as well.
>> + * If the most significant 5 bits are considered, then bins = 2^5
>> + * will be 32 bins.
>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> Does this mean that the histogram is computed on the pixel values
> emitted to the cable? What if the cable format is YUV?
Yes, again the illustration over here is max(RGB) used for histogram
generation.
If YUV is used or weighted RGB is used for histogram generation then the
mode will have to change and accordingly the data for that mode.
>> + * For illustration consider a full RED image of 10k resolution considering all
>> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
>> + * plane similarly with HDR the same would look like hist[65535] =
>> + * {0,0,0,....44236800}
> This SDR vs. HDR is a false dichotomy. I presume the meaningful
> difference is bits-per-channel, not the dynamic range.
>
> It would be good to have the pseudocode snippet here instead of the
> commit message. The commit message should not contain any UAPI notes
> that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
> message is probably not very useful, as the more interesting questions
> are why this exists and what it can be used for.
I have the pseudocode in the cover letter of this patchset.
>> + */
>> +enum drm_mode_histogram {
>> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
> What does the HSV stand for?
>
> When talking about pixel values, my first impression is
> hue-saturation-value. But there are no hue-saturation-value
> computations at all?
The computation will have to be done by the user in the library.
>> +};
>> +
>> +/**
>> + * struct drm_histogram_caps
>> + *
>> + * @histogram_mode: histogram generation modes, defined in the
>> + * enum drm_mode_histogram
>> + * @bins_count: number of bins for a chosen histogram mode. For illustration
>> + * refer the above defined histogram mode.
>> + */
>> +struct drm_histogram_caps {
>> + __u32 histogram_mode;
>> + __u32 bins_count;
>> +};
> Patch 3 says:
>
> + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
> + * Description of the structure is in include/uapi/drm/drm_mode.h
>
> This is a read-only property, right?
>
> The blob contains one struct drm_histogram_caps. What if more than one
> mode is supported?
Multiple modes can be ORed. User will have to choose one of them
depending on the algorithm that he is developing/using.
> If the bin count depends on the bits-per-channel of something which
> depends on set video mode or other things, how does updating work?
> What if userspace uses a stale count? How does userspace ensure it uses
> the current count?
The bin count depends on the hardware design. Hence this bin count will
be share to the user via the histogram capability.
>> +
>> +/**
>> + * struct drm_histogram_config
>> + *
>> + * @hist_mode_data: address to the histogram mode specific data if any
> Do I understand correctly that the KMS blob will contain a userspace
> virtual memory address (a user pointer)? How does that work? What are
> the lifetime requirements for that memory?
>
> I do not remember any precedent of this, and I suspect it's not a good
> design. I believe all the data should be contained in the blobs, e.g.
> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> for returning histogram data to userspace, but at least all the data
> sent to the kernel should be contained in the blob itself since it
> seems to be quite small. Variable length is ok for blobs.
This point has actually opened up discussion on the design. Sima has
infact commented the same with multiple options and which among them
buits best. Lets take this discussion on that thread.
>> + * @nr_hist_mode_data: number of elements pointed by the address in
>> + * hist_mode_data
>> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
>> + * @enable: flag to enable/disable histogram
>> + */
>> +struct drm_histogram_config {
>> + __u64 hist_mode_data;
>> + __u32 nr_hist_mode_data;
>> + enum drm_mode_histogram hist_mode;
>> + bool enable;
> Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
> if architecture, build options, or the contents of the enum change the
> ABI.
>
>> +};
>> +
>> +/**
>> + * struct drm_histogram
>> + *
>> + * @config: histogram configuration data pointed by struct drm_histogram_config
> s/pointed by/defined by/ I presume? That much is obvious from the field
> type. What does it mean? Why is struct drm_histogram_config a separate
> struct?
This is totally a separate property for enabling histogram. When
enabling histogram if there are multiple modes of histogram generation
supported by the hardware which among them will be used here and the
data for that mode if required(For Ex: weights for the RGB in case of
weighted RGB) would have to be sent from user and this struct
drm_histogram_config holds those elements.
>> + * @data_ptr: pointer to the array of histogram.
>> + * Histogram is an array of bins. Data format for each bin depends
>> + * on the histogram mode. Refer to the above histogram modes for
>> + * more information.
> Another userspace virtual address stored in a KMS blob?
>
>> + * @nr_elements: number of bins in the histogram.
>> + */
>> +struct drm_histogram {
>> + struct drm_histogram_config config;
>> + __u64 data_ptr;
>> + __u32 nr_elements;
>> +};
>> +
>> #if defined(__cplusplus)
>> }
>> #endif
>>
> Thanks,
> pq
Thanks and Regards,
Arun R Murthy
-------------------
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 17:26 ` Simona Vetter
2025-02-17 22:23 ` Simona Vetter
@ 2025-02-18 6:01 ` Murthy, Arun R
2025-02-19 13:31 ` Simona Vetter
2 siblings, 0 replies; 63+ messages in thread
From: Murthy, Arun R @ 2025-02-18 6:01 UTC (permalink / raw)
To: Simona Vetter, Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
On 17-02-2025 22:56, Simona Vetter wrote:
> On Mon, Feb 17, 2025 at 12:08:08PM +0200, Pekka Paalanen wrote:
>> Hi Arun,
>>
>> this whole series seems to be missing all the UAPI docs for the DRM
>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>> replacement for them, I would assume both are a requirement.
>>
>> Without the ReST docs it is really difficult to see how this new UAPI
>> should be used.
> Seconded. But really only wanted to comment on the userspace address in
> drm blobs.
>
>>> +/**
>>> + * struct drm_histogram_config
>>> + *
>>> + * @hist_mode_data: address to the histogram mode specific data if any
>> Do I understand correctly that the KMS blob will contain a userspace
>> virtual memory address (a user pointer)? How does that work? What are
>> the lifetime requirements for that memory?
>>
>> I do not remember any precedent of this, and I suspect it's not a good
>> design. I believe all the data should be contained in the blobs, e.g.
>> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
>> for returning histogram data to userspace, but at least all the data
>> sent to the kernel should be contained in the blob itself since it
>> seems to be quite small. Variable length is ok for blobs.
> So yeah this doesn't work for a few reasons:
>
> - It's very restrictive what you're allowed to do during an atomic kms
> commit, and a userspace page fault due to copy_from/to_user is
> definitely not ok. Which means you need to unconditionally copy before
> the atomic commit in the synchronous prep phase for the user->kernel
> direction, and somewhere after the entire thing has finished for the
> other direction. So this is worse than just more blobs, because with
> drm blobs you can at least avoid copying if nothing has changed.
>
> - Due to the above you also cannot synchronize with userspace for the
> kernel->userspace copy. And you can't fix that with a sync_file out
> fence, because the underlying dma_fence rules are what prevents you from
> doing userspace page faults in atomic commit, and the same rules apply
> for any other sync_file fence too.
>
> - More fundamentally, both drm blobs and userspace virtual address spaces
> (as represented by struct mm_struct) are refconted objects, with
> entirely decoupled lifetimes. You'll have UAF issues here, and if you
> fix them by grabbing references you'll break the world.
>
> tldr; this does not work
>
> Alternative A: drm blob
> -----------------------
>
> This would work for the userspace->kernel direction, but there's some
> downsides:
>
> - You still copy, although less often than with a userspace pointer.
>
> - The kernel->userspace direction doesn't work, because blob objects are
> immutable. We have mutable blob properties, but mutability is achieved
> by exchanging the entire blob object. There's two options to address
> that:
>
> a) Fundamentally immutable objects is really nice api designs, so I
> prefer to not change that. But in theory making blob objects mutable
> would work, and probably break the world.
>
> b) A more benign trick would be to split the blob object id allocation
> from creating the object itself. We could then allocate and return
> the blob ID of the new histogram to userspace synchronously from the
> atomic ioctl, while creating the object for real only in the atomic
> commit.
>
> As long as we preallocate any memory this doesn't break and dma_fence
> signalling rules. Which also means we could use the existing atomic
> out-fence (or a new one for histograms) to signal to userspace when
> the data is ready, so this is at least somewhat useful for
> compositors without fundamental issues.
>
> You still suffer from additional copies here.
>
> Alternative B: gem_bo
> ---------------------
>
> One alternative which naturally has mutable data would be gem_bo, maybe
> wrapped in a drm_fb. The issue with that is that for small histograms you
> really want cpu access both in userspace and the kernel, while most
> display hardware wants uncached. And all the display-only kms drivers we
> have do not have a concept of cached gem_bo, unlike many of the drm
> drivers with render/accel support. Which means we're adding gem_bo which
> cannot be used for display, on display-only drivers, and I'd expect this
> will result in compositors blowing up in funny ways to no end.
>
> So not a good idea either, at least not if your histograms are small and
> the display hw doesn't dma them in/out already anyway.
>
> This also means that we'll probably need 2 interfaces here, one supporting
> gem_bo for big histograms and hw that can dma in/out of them, and a 2nd
> one optimized for the cpu access case.
>
> Alternative C: memfd
> --------------------
>
> I think a new drm property type that accepts memfd would fit the bill
> quit well:
>
> - memfd can be mmap(), so you avoid copies.
>
> - their distinct from gem_bo, so no chaos in apis everywhere with imposter
> gem_bo that cannot ever be used for display.
>
> - memfd can be sealed, so we can validate that they have the right size
>
> - thanks to umdabuf there's already core mm code to properly pin them, so
> painful to implement this all.
>
> For a driver interface I think the memfd should be pinned as long as it's
> in a drm_crtc/plane/whatever_state structure, with a kernel vmap void *
> pointer already set up. That way drivers can't get this wrong.
>
> The uapi has a few options:
>
> - Allow memfd to back drm_framebuffer. This won't result in api chaos
> since the compositor creates these, and these memfd should never show up
> in any property that would have a real fb backed by gem_bo. This still
> feels horrible to me personally, but it would allow to support
> histograms that need gem_bo in the same api. Personally I think we
> should just do two flavors, they're too distinct.
>
> - A new memfd kms object like blob objects, which you can create and
> destroy and which are refcounted. Creation would also pin the memfd and
> check it has a sealed size (and whatever else we want sealed). This
> avoids pin/unpin every time you change the memfd property, but no idea
> whether that's a real use-case.
>
> - memfd properties just get the file descriptor (like in/out fences do)
> and the drm atomic ioctl layer transparently pins/unpins as needed.
>
> Personally I think option C is neat, A doable, B really only for hw that
> can dma in/out of histograms and where it's big enough that doing so is a
> functional requirement.
>
> Cheers, Sima
Thanks for the detailed exploration of the options available and the
conclusion among the available options.
Bringing memfd as a drm object opens up new opportunity for the drm
users and a very good thought. Just curious to know if will histogram be
the only user for this or does new IPC open up the thoughts for other
interfaces such as writeback etc
I also personally feel bringing this memfd to drm is a good approach,
will try to explore on the design part.
Any other comments/opinions on this from anyone?
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-18 5:43 ` Murthy, Arun R
@ 2025-02-18 16:18 ` Pekka Paalanen
2025-02-19 3:58 ` Murthy, Arun R
2025-02-20 16:26 ` Dmitry Baryshkov
1 sibling, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-02-18 16:18 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 11085 bytes --]
On Tue, 18 Feb 2025 11:13:39 +0530
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> On 17-02-2025 15:38, Pekka Paalanen wrote:
> > Hi Arun,
> >
> > this whole series seems to be missing all the UAPI docs for the DRM
> > ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> > replacement for them, I would assume both are a requirement.
> >
> > Without the ReST docs it is really difficult to see how this new UAPI
> > should be used.
> Hi Pekka,
> I also realized later on this. Will add this in my next patchset.
> >
> > On Tue, 28 Jan 2025 21:21:07 +0530
> > Arun R Murthy <arun.r.murthy@intel.com> wrote:
> >
> >> Display Histogram is an array of bins and can be generated in many ways
> >> referred to as modes.
> >> Ex: HSV max(RGB), Wighted RGB etc.
> >>
> >> Understanding the histogram data format(Ex: HSV max(RGB))
> >> Histogram is just the pixel count.
> >> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> >> 25 bits should be sufficient to represent this along with a buffer of 7
> >> bits(future use) u32 is being considered.
> >> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> >> bits, hence 32 bins.
> >> Below mentioned algorithm illustrates the histogram generation in
> >> hardware.
> >>
> >> hist[32] = {0};
> >> for (i = 0; i < resolution; i++) {
> >> bin = max(RGB[i]);
> >> bin = bin >> 3; /* consider the most significant bits */
> >> hist[bin]++;
> >> }
> >> If the entire image is Red color then max(255,0,0) is 255 so the pixel
> >> count of each pixels will be placed in the last bin. Hence except
> >> hist[31] all other bins will have a value zero.
> >> Generated histogram in this case would be hist[32] = {0,0,....44236800}
> >>
> >> Description of the structures, properties defined are documented in the
> >> header file include/uapi/drm/drm_mode.h
> >>
> >> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >>
> >> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> >> ---
> >> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> >> 1 file changed, 65 insertions(+)
> >>
> >> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> >> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
> >> --- a/include/uapi/drm/drm_mode.h
> >> +++ b/include/uapi/drm/drm_mode.h
> >> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> >> __u32 pad;
> >> };
> >>
> >> +/**
> >> + * enum drm_mode_histogram
> >> + *
> >> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> >> + * Maximum resolution at present 10k, 10240x4320 = 44236800
> >> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
> >> + * can be a u32 value.
> >> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
> > I assume s/SDL/SDR/.
> Yes, sorry TYPO
> >
> > This assumption seems false. SDR can be also 10-bit and probably even
> > more.
> Yes but in practice majority of them being 8-bit. So have considered
> 8-bit for illustration purpose only.
> The design itself should accommodate 10-bit as well.
Hi Arun,
if these are just examples, then there is no need to mention SDR or
HDR. You can say that if "thing" is 8-bit, then there are 256 possible
values, and we could have 256 bins or we could have just 32 bins.
But what is "thing"? Let's see below.
> >> + * If the most significant 5 bits are considered, then bins = 2^5
> >> + * will be 32 bins.
> >> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> > Does this mean that the histogram is computed on the pixel values
> > emitted to the cable? What if the cable format is YUV?
> Yes, again the illustration over here is max(RGB) used for histogram
> generation.
> If YUV is used or weighted RGB is used for histogram generation then the
> mode will have to change and accordingly the data for that mode.
Do you mean that the HDMI or DisplayPort signalling mode (YUV vs. RGB?
sub-sampling? bit-depth?) affects which histogram modes can be used?
Currently userspace cannot know or control the signalling mode. How
would userspace know which histogram modes are possible?
You should also define at which point of the pixel pipeline the
histogram is recorded. Is it before, say, CRTC DEGAMMA processing? Is
it after signal encoding to the 6/8/10/12/14/16-bit RGB or YUV format?
Before or after YUV sub-sampling? Limited or full range?
> >> + * For illustration consider a full RED image of 10k resolution considering all
> >> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
> >> + * plane similarly with HDR the same would look like hist[65535] =
> >> + * {0,0,0,....44236800}
> > This SDR vs. HDR is a false dichotomy. I presume the meaningful
> > difference is bits-per-channel, not the dynamic range.
> >
> > It would be good to have the pseudocode snippet here instead of the
> > commit message. The commit message should not contain any UAPI notes
> > that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
> > message is probably not very useful, as the more interesting questions
> > are why this exists and what it can be used for.
> I have the pseudocode in the cover letter of this patchset.
The cover letter won't end up in kernel documentation. It should be in
the documentation since it is a very explicit and good way to document
what the histogram recorder does.
> >> + */
> >> +enum drm_mode_histogram {
> >> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
> > What does the HSV stand for?
> >
> > When talking about pixel values, my first impression is
> > hue-saturation-value. But there are no hue-saturation-value
> > computations at all?
> The computation will have to be done by the user in the library.
Why does the UAPI token have "HSV" in its name?
There is nothing related to hue, saturation or value here. It's just
max(R, G, B).
> >> +};
> >> +
> >> +/**
> >> + * struct drm_histogram_caps
> >> + *
> >> + * @histogram_mode: histogram generation modes, defined in the
> >> + * enum drm_mode_histogram
> >> + * @bins_count: number of bins for a chosen histogram mode. For illustration
> >> + * refer the above defined histogram mode.
> >> + */
> >> +struct drm_histogram_caps {
> >> + __u32 histogram_mode;
> >> + __u32 bins_count;
> >> +};
> > Patch 3 says:
> >
> > + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
> > + * Description of the structure is in include/uapi/drm/drm_mode.h
> >
> > This is a read-only property, right?
> >
> > The blob contains one struct drm_histogram_caps. What if more than one
> > mode is supported?
> Multiple modes can be ORed. User will have to choose one of them
> depending on the algorithm that he is developing/using.
Oh! That did not occur to me. This needs documentation.
Do all modes use the same bin count?
> > If the bin count depends on the bits-per-channel of something which
> > depends on set video mode or other things, how does updating work?
> > What if userspace uses a stale count? How does userspace ensure it uses
> > the current count?
> The bin count depends on the hardware design. Hence this bin count will
> be share to the user via the histogram capability.
If the bin counts depend on hardware only, then the SDR/HDR examples
are misleading. They seem to imply a connection between bit depth and
bin count. Instead, you can just say that the bin count is dictated by
the hardware design.
I wonder if that is a future-proof assumption. I could easily expect
that different histogram modes would use different bin counts, or
produce multiple histograms (one per channel), or even 3D histograms.
One also wouldn't want to use more bins than the signal has possible
values.
Just pondering. It's perilous to try to make UAPI generic if there is
only one vendor or piece of hardware.
> >> +
> >> +/**
> >> + * struct drm_histogram_config
> >> + *
> >> + * @hist_mode_data: address to the histogram mode specific data if any
> > Do I understand correctly that the KMS blob will contain a userspace
> > virtual memory address (a user pointer)? How does that work? What are
> > the lifetime requirements for that memory?
> >
> > I do not remember any precedent of this, and I suspect it's not a good
> > design. I believe all the data should be contained in the blobs, e.g.
> > how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> > for returning histogram data to userspace, but at least all the data
> > sent to the kernel should be contained in the blob itself since it
> > seems to be quite small. Variable length is ok for blobs.
> This point has actually opened up discussion on the design. Sima has
> infact commented the same with multiple options and which among them
> buits best. Lets take this discussion on that thread.
Indeed, I don't know much about that topic.
> >> + * @nr_hist_mode_data: number of elements pointed by the address in
> >> + * hist_mode_data
> >> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> >> + * @enable: flag to enable/disable histogram
> >> + */
> >> +struct drm_histogram_config {
> >> + __u64 hist_mode_data;
> >> + __u32 nr_hist_mode_data;
> >> + enum drm_mode_histogram hist_mode;
> >> + bool enable;
> > Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
> > if architecture, build options, or the contents of the enum change the
> > ABI.
> >
> >> +};
> >> +
> >> +/**
> >> + * struct drm_histogram
> >> + *
> >> + * @config: histogram configuration data pointed by struct drm_histogram_config
> > s/pointed by/defined by/ I presume? That much is obvious from the field
> > type. What does it mean? Why is struct drm_histogram_config a separate
> > struct?
> This is totally a separate property for enabling histogram. When
> enabling histogram if there are multiple modes of histogram generation
> supported by the hardware which among them will be used here and the
> data for that mode if required(For Ex: weights for the RGB in case of
> weighted RGB) would have to be sent from user and this struct
> drm_histogram_config holds those elements.
Ah, I missed that there is a KMS property holding only a config.
> >> + * @data_ptr: pointer to the array of histogram.
> >> + * Histogram is an array of bins. Data format for each bin depends
> >> + * on the histogram mode. Refer to the above histogram modes for
> >> + * more information.
> > Another userspace virtual address stored in a KMS blob?
> >
> >> + * @nr_elements: number of bins in the histogram.
> >> + */
> >> +struct drm_histogram {
> >> + struct drm_histogram_config config;
> >> + __u64 data_ptr;
> >> + __u32 nr_elements;
> >> +};
> >> +
> >> #if defined(__cplusplus)
> >> }
> >> #endif
> >>
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-18 16:18 ` Pekka Paalanen
@ 2025-02-19 3:58 ` Murthy, Arun R
2025-02-20 15:50 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-02-19 3:58 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 12022 bytes --]
On 18-02-2025 21:48, Pekka Paalanen wrote:
> On Tue, 18 Feb 2025 11:13:39 +0530
> "Murthy, Arun R"<arun.r.murthy@intel.com> wrote:
>
>> On 17-02-2025 15:38, Pekka Paalanen wrote:
>>> Hi Arun,
>>>
>>> this whole series seems to be missing all the UAPI docs for the DRM
>>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>>> replacement for them, I would assume both are a requirement.
>>>
>>> Without the ReST docs it is really difficult to see how this new UAPI
>>> should be used.
>> Hi Pekka,
>> I also realized later on this. Will add this in my next patchset.
>>> On Tue, 28 Jan 2025 21:21:07 +0530
>>> Arun R Murthy<arun.r.murthy@intel.com> wrote:
>>>
>>>> Display Histogram is an array of bins and can be generated in many ways
>>>> referred to as modes.
>>>> Ex: HSV max(RGB), Wighted RGB etc.
>>>>
>>>> Understanding the histogram data format(Ex: HSV max(RGB))
>>>> Histogram is just the pixel count.
>>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
>>>> 25 bits should be sufficient to represent this along with a buffer of 7
>>>> bits(future use) u32 is being considered.
>>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
>>>> bits, hence 32 bins.
>>>> Below mentioned algorithm illustrates the histogram generation in
>>>> hardware.
>>>>
>>>> hist[32] = {0};
>>>> for (i = 0; i < resolution; i++) {
>>>> bin = max(RGB[i]);
>>>> bin = bin >> 3; /* consider the most significant bits */
>>>> hist[bin]++;
>>>> }
>>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
>>>> count of each pixels will be placed in the last bin. Hence except
>>>> hist[31] all other bins will have a value zero.
>>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>>>>
>>>> Description of the structures, properties defined are documented in the
>>>> header file include/uapi/drm/drm_mode.h
>>>>
>>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>>>>
>>>> Signed-off-by: Arun R Murthy<arun.r.murthy@intel.com>
>>>> ---
>>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 65 insertions(+)
>>>>
>>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>>>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
>>>> --- a/include/uapi/drm/drm_mode.h
>>>> +++ b/include/uapi/drm/drm_mode.h
>>>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
>>>> __u32 pad;
>>>> };
>>>>
>>>> +/**
>>>> + * enum drm_mode_histogram
>>>> + *
>>>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
>>>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
>>>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
>>>> + * can be a u32 value.
>>>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>>> I assume s/SDL/SDR/.
>> Yes, sorry TYPO
>>> This assumption seems false. SDR can be also 10-bit and probably even
>>> more.
>> Yes but in practice majority of them being 8-bit. So have considered
>> 8-bit for illustration purpose only.
>> The design itself should accommodate 10-bit as well.
> Hi Arun,
>
> if these are just examples, then there is no need to mention SDR or
> HDR. You can say that if "thing" is 8-bit, then there are 256 possible
> values, and we could have 256 bins or we could have just 32 bins.
>
> But what is "thing"? Let's see below.
Sure will remove these over here and add then in the ReST document.
>>>> + * If the most significant 5 bits are considered, then bins = 2^5
>>>> + * will be 32 bins.
>>>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
>>> Does this mean that the histogram is computed on the pixel values
>>> emitted to the cable? What if the cable format is YUV?
>> Yes, again the illustration over here is max(RGB) used for histogram
>> generation.
>> If YUV is used or weighted RGB is used for histogram generation then the
>> mode will have to change and accordingly the data for that mode.
> Do you mean that the HDMI or DisplayPort signalling mode (YUV vs. RGB?
> sub-sampling? bit-depth?) affects which histogram modes can be used?
No this is actually for user as to how to interpret the histogram data
that is being sent from the KMD. UMD reads this histogram so in order to
understand the format of this data he needs to know the histogram mode.
> Currently userspace cannot know or control the signalling mode. How
> would userspace know which histogram modes are possible?
As part of drm_histogram_caps struct under HISTOGRAM_CAPS property KMD
will expose all of the supported histogram modes to the user. User will
then choose one among the supported modes by drm_histogram_config
struct(HISTOGRAM_ENABLE property)
> You should also define at which point of the pixel pipeline the
> histogram is recorded. Is it before, say, CRTC DEGAMMA processing? Is
> it after signal encoding to the 6/8/10/12/14/16-bit RGB or YUV format?
> Before or after YUV sub-sampling? Limited or full range?
This again is the hardware design. Theoretically this histogram hardware
will be at the end of the hardware pipe, i.e after hardware/software
composition is done.
>>>> + * For illustration consider a full RED image of 10k resolution considering all
>>>> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
>>>> + * plane similarly with HDR the same would look like hist[65535] =
>>>> + * {0,0,0,....44236800}
>>> This SDR vs. HDR is a false dichotomy. I presume the meaningful
>>> difference is bits-per-channel, not the dynamic range.
>>>
>>> It would be good to have the pseudocode snippet here instead of the
>>> commit message. The commit message should not contain any UAPI notes
>>> that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
>>> message is probably not very useful, as the more interesting questions
>>> are why this exists and what it can be used for.
>> I have the pseudocode in the cover letter of this patchset.
> The cover letter won't end up in kernel documentation. It should be in
> the documentation since it is a very explicit and good way to document
> what the histogram recorder does.
Sure will move to the ReST doc.
>>>> + */
>>>> +enum drm_mode_histogram {
>>>> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
>>> What does the HSV stand for?
>>>
>>> When talking about pixel values, my first impression is
>>> hue-saturation-value. But there are no hue-saturation-value
>>> computations at all?
>> The computation will have to be done by the user in the library.
> Why does the UAPI token have "HSV" in its name?
Agree, will remove that.
> There is nothing related to hue, saturation or value here. It's just
> max(R, G, B).
>
>>>> +};
>>>> +
>>>> +/**
>>>> + * struct drm_histogram_caps
>>>> + *
>>>> + * @histogram_mode: histogram generation modes, defined in the
>>>> + * enum drm_mode_histogram
>>>> + * @bins_count: number of bins for a chosen histogram mode. For illustration
>>>> + * refer the above defined histogram mode.
>>>> + */
>>>> +struct drm_histogram_caps {
>>>> + __u32 histogram_mode;
>>>> + __u32 bins_count;
>>>> +};
>>> Patch 3 says:
>>>
>>> + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
>>> + * Description of the structure is in include/uapi/drm/drm_mode.h
>>>
>>> This is a read-only property, right?
>>>
>>> The blob contains one struct drm_histogram_caps. What if more than one
>>> mode is supported?
>> Multiple modes can be ORed. User will have to choose one of them
>> depending on the algorithm that he is developing/using.
> Oh! That did not occur to me. This needs documentation.
Sure will add this in ReST doc.
> Do all modes use the same bin count?
Again this dependents on the hardware design.
>>> If the bin count depends on the bits-per-channel of something which
>>> depends on set video mode or other things, how does updating work?
>>> What if userspace uses a stale count? How does userspace ensure it uses
>>> the current count?
>> The bin count depends on the hardware design. Hence this bin count will
>> be share to the user via the histogram capability.
> If the bin counts depend on hardware only, then the SDR/HDR examples
> are misleading. They seem to imply a connection between bit depth and
> bin count. Instead, you can just say that the bin count is dictated by
> the hardware design.
>
> I wonder if that is a future-proof assumption. I could easily expect
> that different histogram modes would use different bin counts, or
> produce multiple histograms (one per channel), or even 3D histograms.
> One also wouldn't want to use more bins than the signal has possible
> values.
Here we are not considering 3D, hence the name 1D LUT in the next patches.
> Just pondering. It's perilous to try to make UAPI generic if there is
> only one vendor or piece of hardware.
I had this series in i915 and based on the comment from the community
moved to drm with a generic UAPI. I assume histogram is supported by AMD
as well.
>>>> +
>>>> +/**
>>>> + * struct drm_histogram_config
>>>> + *
>>>> + * @hist_mode_data: address to the histogram mode specific data if any
>>> Do I understand correctly that the KMS blob will contain a userspace
>>> virtual memory address (a user pointer)? How does that work? What are
>>> the lifetime requirements for that memory?
>>>
>>> I do not remember any precedent of this, and I suspect it's not a good
>>> design. I believe all the data should be contained in the blobs, e.g.
>>> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
>>> for returning histogram data to userspace, but at least all the data
>>> sent to the kernel should be contained in the blob itself since it
>>> seems to be quite small. Variable length is ok for blobs.
>> This point has actually opened up discussion on the design. Sima has
>> infact commented the same with multiple options and which among them
>> buits best. Lets take this discussion on that thread.
> Indeed, I don't know much about that topic.
>
>>>> + * @nr_hist_mode_data: number of elements pointed by the address in
>>>> + * hist_mode_data
>>>> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
>>>> + * @enable: flag to enable/disable histogram
>>>> + */
>>>> +struct drm_histogram_config {
>>>> + __u64 hist_mode_data;
>>>> + __u32 nr_hist_mode_data;
>>>> + enum drm_mode_histogram hist_mode;
>>>> + bool enable;
>>> Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
>>> if architecture, build options, or the contents of the enum change the
>>> ABI.
>>>
>>>> +};
>>>> +
>>>> +/**
>>>> + * struct drm_histogram
>>>> + *
>>>> + * @config: histogram configuration data pointed by struct drm_histogram_config
>>> s/pointed by/defined by/ I presume? That much is obvious from the field
>>> type. What does it mean? Why is struct drm_histogram_config a separate
>>> struct?
>> This is totally a separate property for enabling histogram. When
>> enabling histogram if there are multiple modes of histogram generation
>> supported by the hardware which among them will be used here and the
>> data for that mode if required(For Ex: weights for the RGB in case of
>> weighted RGB) would have to be sent from user and this struct
>> drm_histogram_config holds those elements.
> Ah, I missed that there is a KMS property holding only a config.
>
>>>> + * @data_ptr: pointer to the array of histogram.
>>>> + * Histogram is an array of bins. Data format for each bin depends
>>>> + * on the histogram mode. Refer to the above histogram modes for
>>>> + * more information.
>>> Another userspace virtual address stored in a KMS blob?
>>>
>>>> + * @nr_elements: number of bins in the histogram.
>>>> + */
>>>> +struct drm_histogram {
>>>> + struct drm_histogram_config config;
>>>> + __u64 data_ptr;
>>>> + __u32 nr_elements;
>>>> +};
>>>> +
>>>> #if defined(__cplusplus)
>>>> }
>>>> #endif
>>>>
> Thanks,
> pq
Thanks and Regards,
Arun R Murthy
--------------------
[-- Attachment #2: Type: text/html, Size: 17190 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 17:26 ` Simona Vetter
2025-02-17 22:23 ` Simona Vetter
2025-02-18 6:01 ` Murthy, Arun R
@ 2025-02-19 13:31 ` Simona Vetter
2025-03-03 7:50 ` Murthy, Arun R
2 siblings, 1 reply; 63+ messages in thread
From: Simona Vetter @ 2025-02-19 13:31 UTC (permalink / raw)
To: Pekka Paalanen
Cc: Arun R Murthy, intel-xe, intel-gfx, dri-devel, suraj.kandpal,
dmitry.baryshkov
On Mon, Feb 17, 2025 at 06:26:17PM +0100, Simona Vetter wrote:
> On Mon, Feb 17, 2025 at 12:08:08PM +0200, Pekka Paalanen wrote:
> > Hi Arun,
> >
> > this whole series seems to be missing all the UAPI docs for the DRM
> > ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> > replacement for them, I would assume both are a requirement.
> >
> > Without the ReST docs it is really difficult to see how this new UAPI
> > should be used.
>
> Seconded. But really only wanted to comment on the userspace address in
> drm blobs.
>
> > > +/**
> > > + * struct drm_histogram_config
> > > + *
> > > + * @hist_mode_data: address to the histogram mode specific data if any
> >
> > Do I understand correctly that the KMS blob will contain a userspace
> > virtual memory address (a user pointer)? How does that work? What are
> > the lifetime requirements for that memory?
> >
> > I do not remember any precedent of this, and I suspect it's not a good
> > design. I believe all the data should be contained in the blobs, e.g.
> > how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> > for returning histogram data to userspace, but at least all the data
> > sent to the kernel should be contained in the blob itself since it
> > seems to be quite small. Variable length is ok for blobs.
>
> So yeah this doesn't work for a few reasons:
>
> - It's very restrictive what you're allowed to do during an atomic kms
> commit, and a userspace page fault due to copy_from/to_user is
> definitely not ok. Which means you need to unconditionally copy before
> the atomic commit in the synchronous prep phase for the user->kernel
> direction, and somewhere after the entire thing has finished for the
> other direction. So this is worse than just more blobs, because with
> drm blobs you can at least avoid copying if nothing has changed.
>
> - Due to the above you also cannot synchronize with userspace for the
> kernel->userspace copy. And you can't fix that with a sync_file out
> fence, because the underlying dma_fence rules are what prevents you from
> doing userspace page faults in atomic commit, and the same rules apply
> for any other sync_file fence too.
>
> - More fundamentally, both drm blobs and userspace virtual address spaces
> (as represented by struct mm_struct) are refconted objects, with
> entirely decoupled lifetimes. You'll have UAF issues here, and if you
> fix them by grabbing references you'll break the world.
>
> tldr; this does not work
>
> Alternative A: drm blob
> -----------------------
>
> This would work for the userspace->kernel direction, but there's some
> downsides:
>
> - You still copy, although less often than with a userspace pointer.
>
> - The kernel->userspace direction doesn't work, because blob objects are
> immutable. We have mutable blob properties, but mutability is achieved
> by exchanging the entire blob object. There's two options to address
> that:
>
> a) Fundamentally immutable objects is really nice api designs, so I
> prefer to not change that. But in theory making blob objects mutable
> would work, and probably break the world.
>
> b) A more benign trick would be to split the blob object id allocation
> from creating the object itself. We could then allocate and return
> the blob ID of the new histogram to userspace synchronously from the
> atomic ioctl, while creating the object for real only in the atomic
> commit.
>
> As long as we preallocate any memory this doesn't break and dma_fence
> signalling rules. Which also means we could use the existing atomic
> out-fence (or a new one for histograms) to signal to userspace when
> the data is ready, so this is at least somewhat useful for
> compositors without fundamental issues.
>
> You still suffer from additional copies here.
Another detail I've forgotten: If you queue an atomic commit and then
immmediately do a compositor swithc, then the new compositor would end up
with the very confusing situation of having a blob property pointing at a
blob which does not yet exist. And since it wont get the drm_event nor has
a dma_fence out-fence, it also cannot reliably wait.
So this would be awkward at best, and might actually be a cross-compositor
attack vector.
So yeah delayed blob object creation also don't look great, and mutable
blob objects probably break compositors even harder and we'd need to make
this all opt-in.
We need an opt-in for all of these I think, but the more I think about it
the more this alternative looks like the worst.
> Alternative B: gem_bo
> ---------------------
>
> One alternative which naturally has mutable data would be gem_bo, maybe
> wrapped in a drm_fb. The issue with that is that for small histograms you
> really want cpu access both in userspace and the kernel, while most
> display hardware wants uncached. And all the display-only kms drivers we
> have do not have a concept of cached gem_bo, unlike many of the drm
> drivers with render/accel support. Which means we're adding gem_bo which
> cannot be used for display, on display-only drivers, and I'd expect this
> will result in compositors blowing up in funny ways to no end.
>
> So not a good idea either, at least not if your histograms are small and
> the display hw doesn't dma them in/out already anyway.
>
> This also means that we'll probably need 2 interfaces here, one supporting
> gem_bo for big histograms and hw that can dma in/out of them, and a 2nd
> one optimized for the cpu access case.
>
> Alternative C: memfd
> --------------------
>
> I think a new drm property type that accepts memfd would fit the bill
> quit well:
>
> - memfd can be mmap(), so you avoid copies.
>
> - their distinct from gem_bo, so no chaos in apis everywhere with imposter
> gem_bo that cannot ever be used for display.
>
> - memfd can be sealed, so we can validate that they have the right size
>
> - thanks to umdabuf there's already core mm code to properly pin them, so
> painful to implement this all.
>
> For a driver interface I think the memfd should be pinned as long as it's
> in a drm_crtc/plane/whatever_state structure, with a kernel vmap void *
> pointer already set up. That way drivers can't get this wrong.
>
> The uapi has a few options:
>
> - Allow memfd to back drm_framebuffer. This won't result in api chaos
> since the compositor creates these, and these memfd should never show up
> in any property that would have a real fb backed by gem_bo. This still
> feels horrible to me personally, but it would allow to support
> histograms that need gem_bo in the same api. Personally I think we
> should just do two flavors, they're too distinct.
>
> - A new memfd kms object like blob objects, which you can create and
> destroy and which are refcounted. Creation would also pin the memfd and
> check it has a sealed size (and whatever else we want sealed). This
> avoids pin/unpin every time you change the memfd property, but no idea
> whether that's a real use-case.
>
> - memfd properties just get the file descriptor (like in/out fences do)
> and the drm atomic ioctl layer transparently pins/unpins as needed.
>
> Personally I think option C is neat, A doable, B really only for hw that
> can dma in/out of histograms and where it's big enough that doing so is a
> functional requirement.
Also for all these we'd need to make these new properties opt-in and hide
them from compositors who cannot cope. Just defensive programming best
practices.
-Sima
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-19 3:58 ` Murthy, Arun R
@ 2025-02-20 15:50 ` Pekka Paalanen
2025-03-03 7:53 ` Murthy, Arun R
0 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-02-20 15:50 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 6676 bytes --]
On Wed, 19 Feb 2025 09:28:51 +0530
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> On 18-02-2025 21:48, Pekka Paalanen wrote:
> > On Tue, 18 Feb 2025 11:13:39 +0530
> > "Murthy, Arun R"<arun.r.murthy@intel.com> wrote:
> >
> >> On 17-02-2025 15:38, Pekka Paalanen wrote:
> >>> Hi Arun,
> >>>
> >>> this whole series seems to be missing all the UAPI docs for the DRM
> >>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> >>> replacement for them, I would assume both are a requirement.
> >>>
> >>> Without the ReST docs it is really difficult to see how this new UAPI
> >>> should be used.
> >> Hi Pekka,
> >> I also realized later on this. Will add this in my next patchset.
> >>> On Tue, 28 Jan 2025 21:21:07 +0530
> >>> Arun R Murthy<arun.r.murthy@intel.com> wrote:
> >>>
> >>>> Display Histogram is an array of bins and can be generated in many ways
> >>>> referred to as modes.
> >>>> Ex: HSV max(RGB), Wighted RGB etc.
> >>>>
> >>>> Understanding the histogram data format(Ex: HSV max(RGB))
> >>>> Histogram is just the pixel count.
> >>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> >>>> 25 bits should be sufficient to represent this along with a buffer of 7
> >>>> bits(future use) u32 is being considered.
> >>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> >>>> bits, hence 32 bins.
> >>>> Below mentioned algorithm illustrates the histogram generation in
> >>>> hardware.
> >>>>
> >>>> hist[32] = {0};
> >>>> for (i = 0; i < resolution; i++) {
> >>>> bin = max(RGB[i]);
> >>>> bin = bin >> 3; /* consider the most significant bits */
> >>>> hist[bin]++;
> >>>> }
> >>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
> >>>> count of each pixels will be placed in the last bin. Hence except
> >>>> hist[31] all other bins will have a value zero.
> >>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
> >>>>
> >>>> Description of the structures, properties defined are documented in the
> >>>> header file include/uapi/drm/drm_mode.h
> >>>>
> >>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >>>>
> >>>> Signed-off-by: Arun R Murthy<arun.r.murthy@intel.com>
> >>>> ---
> >>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> >>>> 1 file changed, 65 insertions(+)
> >>>>
> >>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> >>>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
> >>>> --- a/include/uapi/drm/drm_mode.h
> >>>> +++ b/include/uapi/drm/drm_mode.h
> >>>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> >>>> __u32 pad;
> >>>> };
> >>>>
> >>>> +/**
> >>>> + * enum drm_mode_histogram
> >>>> + *
> >>>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> >>>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
> >>>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
> >>>> + * can be a u32 value.
> >>>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
> >>> I assume s/SDL/SDR/.
> >> Yes, sorry TYPO
> >>> This assumption seems false. SDR can be also 10-bit and probably even
> >>> more.
> >> Yes but in practice majority of them being 8-bit. So have considered
> >> 8-bit for illustration purpose only.
> >> The design itself should accommodate 10-bit as well.
> > Hi Arun,
> >
> > if these are just examples, then there is no need to mention SDR or
> > HDR. You can say that if "thing" is 8-bit, then there are 256 possible
> > values, and we could have 256 bins or we could have just 32 bins.
> >
> > But what is "thing"? Let's see below.
> Sure will remove these over here and add then in the ReST document.
> >>>> + * If the most significant 5 bits are considered, then bins = 2^5
> >>>> + * will be 32 bins.
> >>>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> >>> Does this mean that the histogram is computed on the pixel values
> >>> emitted to the cable? What if the cable format is YUV?
> >> Yes, again the illustration over here is max(RGB) used for histogram
> >> generation.
> >> If YUV is used or weighted RGB is used for histogram generation then the
> >> mode will have to change and accordingly the data for that mode.
> > Do you mean that the HDMI or DisplayPort signalling mode (YUV vs. RGB?
> > sub-sampling? bit-depth?) affects which histogram modes can be used?
> No this is actually for user as to how to interpret the histogram data
> that is being sent from the KMD. UMD reads this histogram so in order to
> understand the format of this data he needs to know the histogram mode.
> > Currently userspace cannot know or control the signalling mode. How
> > would userspace know which histogram modes are possible?
> As part of drm_histogram_caps struct under HISTOGRAM_CAPS property KMD
> will expose all of the supported histogram modes to the user. User will
> then choose one among the supported modes by drm_histogram_config
> struct(HISTOGRAM_ENABLE property)
> > You should also define at which point of the pixel pipeline the
> > histogram is recorded. Is it before, say, CRTC DEGAMMA processing? Is
> > it after signal encoding to the 6/8/10/12/14/16-bit RGB or YUV format?
> > Before or after YUV sub-sampling? Limited or full range?
> This again is the hardware design. Theoretically this histogram hardware
> will be at the end of the hardware pipe, i.e after hardware/software
> composition is done.
Hi Arun,
sure, it may be by hardware design, but the UAPI must specify or
communicate exactly what it is. This seems to be the recurring theme in
all the remaining comments, so I trimmed them away.
A generic UAPI is mandatory, because that's KMS policy AFAIU. A generic
UAPI cannot key anything off of the hardware revision. Instead,
everything must be specified and communicated explicitly. It's good if
AMD has similar functionality, someone from their team could take a
look so you can come up with an UAPI that works for both.
Dmitry Baryshkov tried to ask for the same thing. Assuming I know
nothing about the hardware, and the only documentation I have is the
KMS UAPI documentation (userland side, not kernel internals), I should
be able to write a program from scratch that correctly records and
analyses the histogram on every piece of hardware where the kernel
driver exposes it. That means explaining exactly what the driver and the
hardware will do when I poke that UAPI.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-18 5:43 ` Murthy, Arun R
2025-02-18 16:18 ` Pekka Paalanen
@ 2025-02-20 16:26 ` Dmitry Baryshkov
2025-03-03 7:54 ` Murthy, Arun R
1 sibling, 1 reply; 63+ messages in thread
From: Dmitry Baryshkov @ 2025-02-20 16:26 UTC (permalink / raw)
To: Murthy, Arun R
Cc: Pekka Paalanen, intel-xe, intel-gfx, dri-devel, suraj.kandpal
On Tue, Feb 18, 2025 at 11:13:39AM +0530, Murthy, Arun R wrote:
> On 17-02-2025 15:38, Pekka Paalanen wrote:
> > Hi Arun,
> >
> > this whole series seems to be missing all the UAPI docs for the DRM
> > ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> > replacement for them, I would assume both are a requirement.
> >
> > Without the ReST docs it is really difficult to see how this new UAPI
> > should be used.
> Hi Pekka,
> I also realized later on this. Will add this in my next patchset.
> >
> > On Tue, 28 Jan 2025 21:21:07 +0530
> > Arun R Murthy <arun.r.murthy@intel.com> wrote:
> >
> > > Display Histogram is an array of bins and can be generated in many ways
> > > referred to as modes.
> > > Ex: HSV max(RGB), Wighted RGB etc.
> > >
> > > Understanding the histogram data format(Ex: HSV max(RGB))
> > > Histogram is just the pixel count.
> > > For a maximum resolution of 10k (10240 x 4320 = 44236800)
> > > 25 bits should be sufficient to represent this along with a buffer of 7
> > > bits(future use) u32 is being considered.
> > > max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> > > bits, hence 32 bins.
> > > Below mentioned algorithm illustrates the histogram generation in
> > > hardware.
> > >
> > > hist[32] = {0};
> > > for (i = 0; i < resolution; i++) {
> > > bin = max(RGB[i]);
> > > bin = bin >> 3; /* consider the most significant bits */
> > > hist[bin]++;
> > > }
> > > If the entire image is Red color then max(255,0,0) is 255 so the pixel
> > > count of each pixels will be placed in the last bin. Hence except
> > > hist[31] all other bins will have a value zero.
> > > Generated histogram in this case would be hist[32] = {0,0,....44236800}
> > >
> > > Description of the structures, properties defined are documented in the
> > > header file include/uapi/drm/drm_mode.h
> > >
> > > v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> > >
> > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > > ---
> > > include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> > > 1 file changed, 65 insertions(+)
> > >
> > > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > > index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
> > > --- a/include/uapi/drm/drm_mode.h
> > > +++ b/include/uapi/drm/drm_mode.h
> > > @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> > > __u32 pad;
> > > };
> > > +/**
> > > + * enum drm_mode_histogram
> > > + *
> > > + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> > > + * Maximum resolution at present 10k, 10240x4320 = 44236800
> > > + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
> > > + * can be a u32 value.
> > > + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
> > I assume s/SDL/SDR/.
> Yes, sorry TYPO
> >
> > This assumption seems false. SDR can be also 10-bit and probably even
> > more.
> Yes but in practice majority of them being 8-bit. So have considered 8-bit
> for illustration purpose only.
> The design itself should accommodate 10-bit as well.
> > > + * If the most significant 5 bits are considered, then bins = 2^5
> > > + * will be 32 bins.
> > > + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> > Does this mean that the histogram is computed on the pixel values
> > emitted to the cable? What if the cable format is YUV?
> Yes, again the illustration over here is max(RGB) used for histogram
> generation.
> If YUV is used or weighted RGB is used for histogram generation then the
> mode will have to change and accordingly the data for that mode.
> > > + * For illustration consider a full RED image of 10k resolution considering all
> > > + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
> > > + * plane similarly with HDR the same would look like hist[65535] =
> > > + * {0,0,0,....44236800}
> > This SDR vs. HDR is a false dichotomy. I presume the meaningful
> > difference is bits-per-channel, not the dynamic range.
> >
> > It would be good to have the pseudocode snippet here instead of the
> > commit message. The commit message should not contain any UAPI notes
> > that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
> > message is probably not very useful, as the more interesting questions
> > are why this exists and what it can be used for.
> I have the pseudocode in the cover letter of this patchset.
> > > + */
> > > +enum drm_mode_histogram {
> > > + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
> > What does the HSV stand for?
> >
> > When talking about pixel values, my first impression is
> > hue-saturation-value. But there are no hue-saturation-value
> > computations at all?
> The computation will have to be done by the user in the library.
> > > +};
> > > +
> > > +/**
> > > + * struct drm_histogram_caps
> > > + *
> > > + * @histogram_mode: histogram generation modes, defined in the
> > > + * enum drm_mode_histogram
> > > + * @bins_count: number of bins for a chosen histogram mode. For illustration
> > > + * refer the above defined histogram mode.
> > > + */
> > > +struct drm_histogram_caps {
> > > + __u32 histogram_mode;
> > > + __u32 bins_count;
> > > +};
> > Patch 3 says:
> >
> > + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
> > + * Description of the structure is in include/uapi/drm/drm_mode.h
> >
> > This is a read-only property, right?
> >
> > The blob contains one struct drm_histogram_caps. What if more than one
> > mode is supported?
> Multiple modes can be ORed. User will have to choose one of them depending
> on the algorithm that he is developing/using.
No. Modes can not be ORed. The structure can be applicable to a single
mode (e.g. user settings) or to a multiple modes (e.g. caps).
So when the struct describes a single mode, it should be just that
mode, enumerated linearly, starting from 0. When you have a struct
which can actually be related to several modes, it should have a value
of BIT(DRM_MODE_HISTOGRAM_foo) | BIT(DRM_MODE_HISTOGRAM_bar).
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-19 13:31 ` Simona Vetter
@ 2025-03-03 7:50 ` Murthy, Arun R
0 siblings, 0 replies; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-03 7:50 UTC (permalink / raw)
To: Simona Vetter, Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
On 19-02-2025 19:01, Simona Vetter wrote:
> On Mon, Feb 17, 2025 at 06:26:17PM +0100, Simona Vetter wrote:
>> On Mon, Feb 17, 2025 at 12:08:08PM +0200, Pekka Paalanen wrote:
>>> Hi Arun,
>>>
>>> this whole series seems to be missing all the UAPI docs for the DRM
>>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>>> replacement for them, I would assume both are a requirement.
>>>
>>> Without the ReST docs it is really difficult to see how this new UAPI
>>> should be used.
>> Seconded. But really only wanted to comment on the userspace address in
>> drm blobs.
>>
>>>> +/**
>>>> + * struct drm_histogram_config
>>>> + *
>>>> + * @hist_mode_data: address to the histogram mode specific data if any
>>> Do I understand correctly that the KMS blob will contain a userspace
>>> virtual memory address (a user pointer)? How does that work? What are
>>> the lifetime requirements for that memory?
>>>
>>> I do not remember any precedent of this, and I suspect it's not a good
>>> design. I believe all the data should be contained in the blobs, e.g.
>>> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
>>> for returning histogram data to userspace, but at least all the data
>>> sent to the kernel should be contained in the blob itself since it
>>> seems to be quite small. Variable length is ok for blobs.
>> So yeah this doesn't work for a few reasons:
>>
>> - It's very restrictive what you're allowed to do during an atomic kms
>> commit, and a userspace page fault due to copy_from/to_user is
>> definitely not ok. Which means you need to unconditionally copy before
>> the atomic commit in the synchronous prep phase for the user->kernel
>> direction, and somewhere after the entire thing has finished for the
>> other direction. So this is worse than just more blobs, because with
>> drm blobs you can at least avoid copying if nothing has changed.
>>
>> - Due to the above you also cannot synchronize with userspace for the
>> kernel->userspace copy. And you can't fix that with a sync_file out
>> fence, because the underlying dma_fence rules are what prevents you from
>> doing userspace page faults in atomic commit, and the same rules apply
>> for any other sync_file fence too.
>>
>> - More fundamentally, both drm blobs and userspace virtual address spaces
>> (as represented by struct mm_struct) are refconted objects, with
>> entirely decoupled lifetimes. You'll have UAF issues here, and if you
>> fix them by grabbing references you'll break the world.
>>
>> tldr; this does not work
>>
>> Alternative A: drm blob
>> -----------------------
>>
>> This would work for the userspace->kernel direction, but there's some
>> downsides:
>>
>> - You still copy, although less often than with a userspace pointer.
>>
>> - The kernel->userspace direction doesn't work, because blob objects are
>> immutable. We have mutable blob properties, but mutability is achieved
>> by exchanging the entire blob object. There's two options to address
>> that:
>>
>> a) Fundamentally immutable objects is really nice api designs, so I
>> prefer to not change that. But in theory making blob objects mutable
>> would work, and probably break the world.
>>
>> b) A more benign trick would be to split the blob object id allocation
>> from creating the object itself. We could then allocate and return
>> the blob ID of the new histogram to userspace synchronously from the
>> atomic ioctl, while creating the object for real only in the atomic
>> commit.
>>
>> As long as we preallocate any memory this doesn't break and dma_fence
>> signalling rules. Which also means we could use the existing atomic
>> out-fence (or a new one for histograms) to signal to userspace when
>> the data is ready, so this is at least somewhat useful for
>> compositors without fundamental issues.
>>
>> You still suffer from additional copies here.
> Another detail I've forgotten: If you queue an atomic commit and then
> immmediately do a compositor swithc, then the new compositor would end up
> with the very confusing situation of having a blob property pointing at a
> blob which does not yet exist. And since it wont get the drm_event nor has
> a dma_fence out-fence, it also cannot reliably wait.
>
> So this would be awkward at best, and might actually be a cross-compositor
> attack vector.
>
> So yeah delayed blob object creation also don't look great, and mutable
> blob objects probably break compositors even harder and we'd need to make
> this all opt-in.
>
> We need an opt-in for all of these I think, but the more I think about it
> the more this alternative looks like the worst.
>
>> Alternative B: gem_bo
>> ---------------------
>>
>> One alternative which naturally has mutable data would be gem_bo, maybe
>> wrapped in a drm_fb. The issue with that is that for small histograms you
>> really want cpu access both in userspace and the kernel, while most
>> display hardware wants uncached. And all the display-only kms drivers we
>> have do not have a concept of cached gem_bo, unlike many of the drm
>> drivers with render/accel support. Which means we're adding gem_bo which
>> cannot be used for display, on display-only drivers, and I'd expect this
>> will result in compositors blowing up in funny ways to no end.
>>
>> So not a good idea either, at least not if your histograms are small and
>> the display hw doesn't dma them in/out already anyway.
>>
>> This also means that we'll probably need 2 interfaces here, one supporting
>> gem_bo for big histograms and hw that can dma in/out of them, and a 2nd
>> one optimized for the cpu access case.
>>
>> Alternative C: memfd
>> --------------------
>>
>> I think a new drm property type that accepts memfd would fit the bill
>> quit well:
>>
>> - memfd can be mmap(), so you avoid copies.
>>
>> - their distinct from gem_bo, so no chaos in apis everywhere with imposter
>> gem_bo that cannot ever be used for display.
>>
>> - memfd can be sealed, so we can validate that they have the right size
>>
>> - thanks to umdabuf there's already core mm code to properly pin them, so
>> painful to implement this all.
>>
>> For a driver interface I think the memfd should be pinned as long as it's
>> in a drm_crtc/plane/whatever_state structure, with a kernel vmap void *
>> pointer already set up. That way drivers can't get this wrong.
>>
>> The uapi has a few options:
>>
>> - Allow memfd to back drm_framebuffer. This won't result in api chaos
>> since the compositor creates these, and these memfd should never show up
>> in any property that would have a real fb backed by gem_bo. This still
>> feels horrible to me personally, but it would allow to support
>> histograms that need gem_bo in the same api. Personally I think we
>> should just do two flavors, they're too distinct.
>>
>> - A new memfd kms object like blob objects, which you can create and
>> destroy and which are refcounted. Creation would also pin the memfd and
>> check it has a sealed size (and whatever else we want sealed). This
>> avoids pin/unpin every time you change the memfd property, but no idea
>> whether that's a real use-case.
>>
>> - memfd properties just get the file descriptor (like in/out fences do)
>> and the drm atomic ioctl layer transparently pins/unpins as needed.
>>
>> Personally I think option C is neat, A doable, B really only for hw that
>> can dma in/out of histograms and where it's big enough that doing so is a
>> functional requirement.
> Also for all these we'd need to make these new properties opt-in and hide
> them from compositors who cannot cope. Just defensive programming best
> practices.
Thanks for the suggestions, having a new IPC memfd in drm is a great
idea and helps not only for this but should also help others like
writeback etc. I will explore more on the memfd.
Thanks and Regards,
Arun R Murthy
--------------------
> -Sima
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-17 12:27 ` Pekka Paalanen
@ 2025-03-03 7:52 ` Murthy, Arun R
2025-03-03 9:33 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-03 7:52 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
On 17-02-2025 17:57, Pekka Paalanen wrote:
> On Mon, 17 Feb 2025 12:08:08 +0200
> Pekka Paalanen <pekka.paalanen@haloniitty.fi> wrote:
>
>> Hi Arun,
>>
>> this whole series seems to be missing all the UAPI docs for the DRM
>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>> replacement for them, I would assume both are a requirement.
>>
>> Without the ReST docs it is really difficult to see how this new UAPI
>> should be used.
>>
>>
>> On Tue, 28 Jan 2025 21:21:07 +0530
>> Arun R Murthy <arun.r.murthy@intel.com> wrote:
>>
>>> Display Histogram is an array of bins and can be generated in many ways
>>> referred to as modes.
>>> Ex: HSV max(RGB), Wighted RGB etc.
>>>
>>> Understanding the histogram data format(Ex: HSV max(RGB))
>>> Histogram is just the pixel count.
>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
>>> 25 bits should be sufficient to represent this along with a buffer of 7
>>> bits(future use) u32 is being considered.
>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
>>> bits, hence 32 bins.
>>> Below mentioned algorithm illustrates the histogram generation in
>>> hardware.
>>>
>>> hist[32] = {0};
>>> for (i = 0; i < resolution; i++) {
>>> bin = max(RGB[i]);
>>> bin = bin >> 3; /* consider the most significant bits */
>>> hist[bin]++;
>>> }
>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
>>> count of each pixels will be placed in the last bin. Hence except
>>> hist[31] all other bins will have a value zero.
>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>>>
>>> Description of the structures, properties defined are documented in the
>>> header file include/uapi/drm/drm_mode.h
>>>
>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>>>
>>> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
>>> ---
>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
>>> 1 file changed, 65 insertions(+)
>>>
>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
>>> --- a/include/uapi/drm/drm_mode.h
>>> +++ b/include/uapi/drm/drm_mode.h
>>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
>>> __u32 pad;
>>> };
>>>
>>> +/**
>>> + * enum drm_mode_histogram
>>> + *
>>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
>>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
>>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
>>> + * can be a u32 value.
>>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>> I assume s/SDL/SDR/.
>>
>> This assumption seems false. SDR can be also 10-bit and probably even
>> more.
>>
>>> + * If the most significant 5 bits are considered, then bins = 2^5
>>> + * will be 32 bins.
>>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> As another reviewer pointed out before, there are 256 different
> possible values for an 8-bit integer, and not 255. Likewise, a 16-bit
> integer can have 65536 different values, not 65535. Zero is a possible
> value.
>
>
>> Does this mean that the histogram is computed on the pixel values
>> emitted to the cable? What if the cable format is YUV?
>>
>>> + * For illustration consider a full RED image of 10k resolution considering all
>>> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
>>> + * plane similarly with HDR the same would look like hist[65535] =
>>> + * {0,0,0,....44236800}
>> This SDR vs. HDR is a false dichotomy. I presume the meaningful
>> difference is bits-per-channel, not the dynamic range.
>>
>> It would be good to have the pseudocode snippet here instead of the
>> commit message. The commit message should not contain any UAPI notes
>> that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
>> message is probably not very useful, as the more interesting questions
>> are why this exists and what it can be used for.
>>
>>> + */
>>> +enum drm_mode_histogram {
>>> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
>> What does the HSV stand for?
>>
>> When talking about pixel values, my first impression is
>> hue-saturation-value. But there are no hue-saturation-value
>> computations at all?
>>
>>> +};
>>> +
>>> +/**
>>> + * struct drm_histogram_caps
>>> + *
>>> + * @histogram_mode: histogram generation modes, defined in the
>>> + * enum drm_mode_histogram
>>> + * @bins_count: number of bins for a chosen histogram mode. For illustration
>>> + * refer the above defined histogram mode.
>>> + */
>>> +struct drm_histogram_caps {
>>> + __u32 histogram_mode;
>>> + __u32 bins_count;
>>> +};
>> Patch 3 says:
>>
>> + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
>> + * Description of the structure is in include/uapi/drm/drm_mode.h
>>
>> This is a read-only property, right?
>>
>> The blob contains one struct drm_histogram_caps. What if more than one
>> mode is supported?
>>
>> If the bin count depends on the bits-per-channel of something which
>> depends on set video mode or other things, how does updating work?
>> What if userspace uses a stale count? How does userspace ensure it uses
>> the current count?
>>
>>> +
>>> +/**
>>> + * struct drm_histogram_config
>>> + *
>>> + * @hist_mode_data: address to the histogram mode specific data if any
>> Do I understand correctly that the KMS blob will contain a userspace
>> virtual memory address (a user pointer)? How does that work? What are
>> the lifetime requirements for that memory?
>>
>> I do not remember any precedent of this, and I suspect it's not a good
>> design. I believe all the data should be contained in the blobs, e.g.
>> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
>> for returning histogram data to userspace, but at least all the data
>> sent to the kernel should be contained in the blob itself since it
>> seems to be quite small. Variable length is ok for blobs.
Sorry forgot to add the reason for choosing u64 based ptr in the UAPI.
This histogram is related(something to do) to the color. drm_color is
also exposing the rgb values as __u64 pointer in the struct
drm_mode_crtc_lut
But using __u32 offset as suggested is a very good approach as in
IN_FORMATS.
Thanks and Regards,
Arun R Murthy
--------------------
>>> + * @nr_hist_mode_data: number of elements pointed by the address in
>>> + * hist_mode_data
>>> + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
>>> + * @enable: flag to enable/disable histogram
>>> + */
>>> +struct drm_histogram_config {
>>> + __u64 hist_mode_data;
>>> + __u32 nr_hist_mode_data;
>>> + enum drm_mode_histogram hist_mode;
>>> + bool enable;
>> Don't enum and bool have non-fixed sizes? Hence inappropriate as UABI,
>> if architecture, build options, or the contents of the enum change the
>> ABI.
> To clarify: defining named values with an enum {...} block is ok. Using
> the enum type in ABI may cause problems.
>
>
> Thanks,
> pq
>
>>> +};
>>> +
>>> +/**
>>> + * struct drm_histogram
>>> + *
>>> + * @config: histogram configuration data pointed by struct drm_histogram_config
>> s/pointed by/defined by/ I presume? That much is obvious from the field
>> type. What does it mean? Why is struct drm_histogram_config a separate
>> struct?
>>
>>> + * @data_ptr: pointer to the array of histogram.
>>> + * Histogram is an array of bins. Data format for each bin depends
>>> + * on the histogram mode. Refer to the above histogram modes for
>>> + * more information.
>> Another userspace virtual address stored in a KMS blob?
>>
>>> + * @nr_elements: number of bins in the histogram.
>>> + */
>>> +struct drm_histogram {
>>> + struct drm_histogram_config config;
>>> + __u64 data_ptr;
>>> + __u32 nr_elements;
>>> +};
>>> +
>>> #if defined(__cplusplus)
>>> }
>>> #endif
>>>
>> Thanks,
>> pq
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-20 15:50 ` Pekka Paalanen
@ 2025-03-03 7:53 ` Murthy, Arun R
2025-03-03 9:20 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-03 7:53 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
On 20-02-2025 21:20, Pekka Paalanen wrote:
> On Wed, 19 Feb 2025 09:28:51 +0530
> "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>
>> On 18-02-2025 21:48, Pekka Paalanen wrote:
>>> On Tue, 18 Feb 2025 11:13:39 +0530
>>> "Murthy, Arun R"<arun.r.murthy@intel.com> wrote:
>>>
>>>> On 17-02-2025 15:38, Pekka Paalanen wrote:
>>>>> Hi Arun,
>>>>>
>>>>> this whole series seems to be missing all the UAPI docs for the DRM
>>>>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>>>>> replacement for them, I would assume both are a requirement.
>>>>>
>>>>> Without the ReST docs it is really difficult to see how this new UAPI
>>>>> should be used.
>>>> Hi Pekka,
>>>> I also realized later on this. Will add this in my next patchset.
>>>>> On Tue, 28 Jan 2025 21:21:07 +0530
>>>>> Arun R Murthy<arun.r.murthy@intel.com> wrote:
>>>>>
>>>>>> Display Histogram is an array of bins and can be generated in many ways
>>>>>> referred to as modes.
>>>>>> Ex: HSV max(RGB), Wighted RGB etc.
>>>>>>
>>>>>> Understanding the histogram data format(Ex: HSV max(RGB))
>>>>>> Histogram is just the pixel count.
>>>>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
>>>>>> 25 bits should be sufficient to represent this along with a buffer of 7
>>>>>> bits(future use) u32 is being considered.
>>>>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
>>>>>> bits, hence 32 bins.
>>>>>> Below mentioned algorithm illustrates the histogram generation in
>>>>>> hardware.
>>>>>>
>>>>>> hist[32] = {0};
>>>>>> for (i = 0; i < resolution; i++) {
>>>>>> bin = max(RGB[i]);
>>>>>> bin = bin >> 3; /* consider the most significant bits */
>>>>>> hist[bin]++;
>>>>>> }
>>>>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
>>>>>> count of each pixels will be placed in the last bin. Hence except
>>>>>> hist[31] all other bins will have a value zero.
>>>>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>>>>>>
>>>>>> Description of the structures, properties defined are documented in the
>>>>>> header file include/uapi/drm/drm_mode.h
>>>>>>
>>>>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>>>>>>
>>>>>> Signed-off-by: Arun R Murthy<arun.r.murthy@intel.com>
>>>>>> ---
>>>>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>> 1 file changed, 65 insertions(+)
>>>>>>
>>>>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>>>>>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
>>>>>> --- a/include/uapi/drm/drm_mode.h
>>>>>> +++ b/include/uapi/drm/drm_mode.h
>>>>>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
>>>>>> __u32 pad;
>>>>>> };
>>>>>>
>>>>>> +/**
>>>>>> + * enum drm_mode_histogram
>>>>>> + *
>>>>>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
>>>>>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
>>>>>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
>>>>>> + * can be a u32 value.
>>>>>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>>>>> I assume s/SDL/SDR/.
>>>> Yes, sorry TYPO
>>>>> This assumption seems false. SDR can be also 10-bit and probably even
>>>>> more.
>>>> Yes but in practice majority of them being 8-bit. So have considered
>>>> 8-bit for illustration purpose only.
>>>> The design itself should accommodate 10-bit as well.
>>> Hi Arun,
>>>
>>> if these are just examples, then there is no need to mention SDR or
>>> HDR. You can say that if "thing" is 8-bit, then there are 256 possible
>>> values, and we could have 256 bins or we could have just 32 bins.
>>>
>>> But what is "thing"? Let's see below.
>> Sure will remove these over here and add then in the ReST document.
>>>>>> + * If the most significant 5 bits are considered, then bins = 2^5
>>>>>> + * will be 32 bins.
>>>>>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
>>>>> Does this mean that the histogram is computed on the pixel values
>>>>> emitted to the cable? What if the cable format is YUV?
>>>> Yes, again the illustration over here is max(RGB) used for histogram
>>>> generation.
>>>> If YUV is used or weighted RGB is used for histogram generation then the
>>>> mode will have to change and accordingly the data for that mode.
>>> Do you mean that the HDMI or DisplayPort signalling mode (YUV vs. RGB?
>>> sub-sampling? bit-depth?) affects which histogram modes can be used?
>> No this is actually for user as to how to interpret the histogram data
>> that is being sent from the KMD. UMD reads this histogram so in order to
>> understand the format of this data he needs to know the histogram mode.
>>> Currently userspace cannot know or control the signalling mode. How
>>> would userspace know which histogram modes are possible?
>> As part of drm_histogram_caps struct under HISTOGRAM_CAPS property KMD
>> will expose all of the supported histogram modes to the user. User will
>> then choose one among the supported modes by drm_histogram_config
>> struct(HISTOGRAM_ENABLE property)
>>> You should also define at which point of the pixel pipeline the
>>> histogram is recorded. Is it before, say, CRTC DEGAMMA processing? Is
>>> it after signal encoding to the 6/8/10/12/14/16-bit RGB or YUV format?
>>> Before or after YUV sub-sampling? Limited or full range?
>> This again is the hardware design. Theoretically this histogram hardware
>> will be at the end of the hardware pipe, i.e after hardware/software
>> composition is done.
> Hi Arun,
>
> sure, it may be by hardware design, but the UAPI must specify or
> communicate exactly what it is. This seems to be the recurring theme in
> all the remaining comments, so I trimmed them away.
>
> A generic UAPI is mandatory, because that's KMS policy AFAIU. A generic
> UAPI cannot key anything off of the hardware revision. Instead,
> everything must be specified and communicated explicitly. It's good if
> AMD has similar functionality, someone from their team could take a
> look so you can come up with an UAPI that works for both.
>
> Dmitry Baryshkov tried to ask for the same thing. Assuming I know
> nothing about the hardware, and the only documentation I have is the
> KMS UAPI documentation (userland side, not kernel internals), I should
> be able to write a program from scratch that correctly records and
> analyses the histogram on every piece of hardware where the kernel
> driver exposes it. That means explaining exactly what the driver and the
> hardware will do when I poke that UAPI.
Hi Pekka,
Sorry got getting back late on this.
I totally agree that the UAPI should not be any hardware specific and
have taken care to get rid of such if any.
Here we are just exposing the histogram data and what point is the
histogram generated is out of the scope. Generated histogram is exposed
to the user. Please let me know if anything is hardware specific, will
change it.
I feel the rst documentation as suggested is missing and is creating the
gap. Can I go ahead create the rst documentation and then repost the
series and then we can continue the review?
Thanks and Regards,
Arun R Murthy
--------------------
>
> Thanks,
> pq
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-20 16:26 ` Dmitry Baryshkov
@ 2025-03-03 7:54 ` Murthy, Arun R
0 siblings, 0 replies; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-03 7:54 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Pekka Paalanen, intel-xe, intel-gfx, dri-devel, suraj.kandpal
On 20-02-2025 21:56, Dmitry Baryshkov wrote:
> On Tue, Feb 18, 2025 at 11:13:39AM +0530, Murthy, Arun R wrote:
>> On 17-02-2025 15:38, Pekka Paalanen wrote:
>>> Hi Arun,
>>>
>>> this whole series seems to be missing all the UAPI docs for the DRM
>>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
>>> replacement for them, I would assume both are a requirement.
>>>
>>> Without the ReST docs it is really difficult to see how this new UAPI
>>> should be used.
>> Hi Pekka,
>> I also realized later on this. Will add this in my next patchset.
>>> On Tue, 28 Jan 2025 21:21:07 +0530
>>> Arun R Murthy <arun.r.murthy@intel.com> wrote:
>>>
>>>> Display Histogram is an array of bins and can be generated in many ways
>>>> referred to as modes.
>>>> Ex: HSV max(RGB), Wighted RGB etc.
>>>>
>>>> Understanding the histogram data format(Ex: HSV max(RGB))
>>>> Histogram is just the pixel count.
>>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
>>>> 25 bits should be sufficient to represent this along with a buffer of 7
>>>> bits(future use) u32 is being considered.
>>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
>>>> bits, hence 32 bins.
>>>> Below mentioned algorithm illustrates the histogram generation in
>>>> hardware.
>>>>
>>>> hist[32] = {0};
>>>> for (i = 0; i < resolution; i++) {
>>>> bin = max(RGB[i]);
>>>> bin = bin >> 3; /* consider the most significant bits */
>>>> hist[bin]++;
>>>> }
>>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
>>>> count of each pixels will be placed in the last bin. Hence except
>>>> hist[31] all other bins will have a value zero.
>>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
>>>>
>>>> Description of the structures, properties defined are documented in the
>>>> header file include/uapi/drm/drm_mode.h
>>>>
>>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
>>>>
>>>> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
>>>> ---
>>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 65 insertions(+)
>>>>
>>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>>>> index c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61b20ac6cbf5df69e9 100644
>>>> --- a/include/uapi/drm/drm_mode.h
>>>> +++ b/include/uapi/drm/drm_mode.h
>>>> @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
>>>> __u32 pad;
>>>> };
>>>> +/**
>>>> + * enum drm_mode_histogram
>>>> + *
>>>> + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
>>>> + * Maximum resolution at present 10k, 10240x4320 = 44236800
>>>> + * can be denoted in 25bits. With an additional 7 bits in buffer each bin
>>>> + * can be a u32 value.
>>>> + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>>> I assume s/SDL/SDR/.
>> Yes, sorry TYPO
>>> This assumption seems false. SDR can be also 10-bit and probably even
>>> more.
>> Yes but in practice majority of them being 8-bit. So have considered 8-bit
>> for illustration purpose only.
>> The design itself should accommodate 10-bit as well.
>>>> + * If the most significant 5 bits are considered, then bins = 2^5
>>>> + * will be 32 bins.
>>>> + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
>>> Does this mean that the histogram is computed on the pixel values
>>> emitted to the cable? What if the cable format is YUV?
>> Yes, again the illustration over here is max(RGB) used for histogram
>> generation.
>> If YUV is used or weighted RGB is used for histogram generation then the
>> mode will have to change and accordingly the data for that mode.
>>>> + * For illustration consider a full RED image of 10k resolution considering all
>>>> + * 8 bits histogram would look like hist[255] = {0,0,....44236800} with SDR
>>>> + * plane similarly with HDR the same would look like hist[65535] =
>>>> + * {0,0,0,....44236800}
>>> This SDR vs. HDR is a false dichotomy. I presume the meaningful
>>> difference is bits-per-channel, not the dynamic range.
>>>
>>> It would be good to have the pseudocode snippet here instead of the
>>> commit message. The commit message should not contain any UAPI notes
>>> that are not in the UAPI docs. OTOH, repeating UAPI docs in the commit
>>> message is probably not very useful, as the more interesting questions
>>> are why this exists and what it can be used for.
>> I have the pseudocode in the cover letter of this patchset.
>>>> + */
>>>> +enum drm_mode_histogram {
>>>> + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01,
>>> What does the HSV stand for?
>>>
>>> When talking about pixel values, my first impression is
>>> hue-saturation-value. But there are no hue-saturation-value
>>> computations at all?
>> The computation will have to be done by the user in the library.
>>>> +};
>>>> +
>>>> +/**
>>>> + * struct drm_histogram_caps
>>>> + *
>>>> + * @histogram_mode: histogram generation modes, defined in the
>>>> + * enum drm_mode_histogram
>>>> + * @bins_count: number of bins for a chosen histogram mode. For illustration
>>>> + * refer the above defined histogram mode.
>>>> + */
>>>> +struct drm_histogram_caps {
>>>> + __u32 histogram_mode;
>>>> + __u32 bins_count;
>>>> +};
>>> Patch 3 says:
>>>
>>> + * Property HISTOGRAM_CAPS is a blob pointing to the struct drm_histogram_caps
>>> + * Description of the structure is in include/uapi/drm/drm_mode.h
>>>
>>> This is a read-only property, right?
>>>
>>> The blob contains one struct drm_histogram_caps. What if more than one
>>> mode is supported?
>> Multiple modes can be ORed. User will have to choose one of them depending
>> on the algorithm that he is developing/using.
> No. Modes can not be ORed. The structure can be applicable to a single
> mode (e.g. user settings) or to a multiple modes (e.g. caps).
I meant the same. KMD can support multiple modes and when setting the
config only one among the supported mode will have to be choosen by the
user.
Sorry if I created some confusion over here.
Thanks and Regards,
Arun R Murthy
--------------------
> So when the struct describes a single mode, it should be just that
> mode, enumerated linearly, starting from 0. When you have a struct
> which can actually be related to several modes, it should have a value
> of BIT(DRM_MODE_HISTOGRAM_foo) | BIT(DRM_MODE_HISTOGRAM_bar).
>
>
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-03 7:53 ` Murthy, Arun R
@ 2025-03-03 9:20 ` Pekka Paalanen
2025-03-19 12:08 ` Murthy, Arun R
0 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-03-03 9:20 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 5476 bytes --]
On Mon, 3 Mar 2025 13:23:42 +0530
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> On 20-02-2025 21:20, Pekka Paalanen wrote:
> > On Wed, 19 Feb 2025 09:28:51 +0530
> > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> >
> >> On 18-02-2025 21:48, Pekka Paalanen wrote:
> >>> On Tue, 18 Feb 2025 11:13:39 +0530
> >>> "Murthy, Arun R"<arun.r.murthy@intel.com> wrote:
> >>>
> >>>> On 17-02-2025 15:38, Pekka Paalanen wrote:
> >>>>> Hi Arun,
> >>>>>
> >>>>> this whole series seems to be missing all the UAPI docs for the DRM
> >>>>> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> >>>>> replacement for them, I would assume both are a requirement.
> >>>>>
> >>>>> Without the ReST docs it is really difficult to see how this new UAPI
> >>>>> should be used.
> >>>> Hi Pekka,
> >>>> I also realized later on this. Will add this in my next patchset.
> >>>>> On Tue, 28 Jan 2025 21:21:07 +0530
> >>>>> Arun R Murthy<arun.r.murthy@intel.com> wrote:
> >>>>>
> >>>>>> Display Histogram is an array of bins and can be generated in many ways
> >>>>>> referred to as modes.
> >>>>>> Ex: HSV max(RGB), Wighted RGB etc.
> >>>>>>
> >>>>>> Understanding the histogram data format(Ex: HSV max(RGB))
> >>>>>> Histogram is just the pixel count.
> >>>>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> >>>>>> 25 bits should be sufficient to represent this along with a buffer of 7
> >>>>>> bits(future use) u32 is being considered.
> >>>>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> >>>>>> bits, hence 32 bins.
> >>>>>> Below mentioned algorithm illustrates the histogram generation in
> >>>>>> hardware.
> >>>>>>
> >>>>>> hist[32] = {0};
> >>>>>> for (i = 0; i < resolution; i++) {
> >>>>>> bin = max(RGB[i]);
> >>>>>> bin = bin >> 3; /* consider the most significant bits */
> >>>>>> hist[bin]++;
> >>>>>> }
> >>>>>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
> >>>>>> count of each pixels will be placed in the last bin. Hence except
> >>>>>> hist[31] all other bins will have a value zero.
> >>>>>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
> >>>>>>
> >>>>>> Description of the structures, properties defined are documented in the
> >>>>>> header file include/uapi/drm/drm_mode.h
> >>>>>>
> >>>>>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >>>>>>
> >>>>>> Signed-off-by: Arun R Murthy<arun.r.murthy@intel.com>
> >>>>>> ---
> >>>>>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> >>>>>> 1 file changed, 65 insertions(+)
...
> > Hi Arun,
> >
> > sure, it may be by hardware design, but the UAPI must specify or
> > communicate exactly what it is. This seems to be the recurring theme in
> > all the remaining comments, so I trimmed them away.
> >
> > A generic UAPI is mandatory, because that's KMS policy AFAIU. A generic
> > UAPI cannot key anything off of the hardware revision. Instead,
> > everything must be specified and communicated explicitly. It's good if
> > AMD has similar functionality, someone from their team could take a
> > look so you can come up with an UAPI that works for both.
> >
> > Dmitry Baryshkov tried to ask for the same thing. Assuming I know
> > nothing about the hardware, and the only documentation I have is the
> > KMS UAPI documentation (userland side, not kernel internals), I should
> > be able to write a program from scratch that correctly records and
> > analyses the histogram on every piece of hardware where the kernel
> > driver exposes it. That means explaining exactly what the driver and the
> > hardware will do when I poke that UAPI.
>
> Hi Pekka,
> Sorry got getting back late on this.
> I totally agree that the UAPI should not be any hardware specific and
> have taken care to get rid of such if any.
> Here we are just exposing the histogram data and what point is the
> histogram generated is out of the scope.
It's not out of scope. Understanding exactly at what point the
histogram is generated in the KMS pixel pipeline is paramount to being
able to use the results correctly - how it relates to the framebuffers'
contents and KMS pixel pipeline configuration.
As a simple example, if the histogram is recorded before CRTC GAMMA
processing, then changing CRTC GAMMA will not change the histogram. Or,
if the histogram is recorded after CRTC GAMMA processing, then changing
CRTC GAMMA will change the histogram as well, assuming the content
stays the same. This makes a fundamental difference to how the
histogram results should be looked at. Userspace needs to know whether
the differences in the histogram over time are caused by changes in the
content or by changes driven by the userspace itself.
In the CRTC GAMMA example, it's not just whether changing GAMMA
directly changes the histogram. GAMMA also changes the units on the
x-axis of the histogram, are they optical or electrical for instance.
Those units are important, too, because the ideal target histogram has a
very different shape depending on the units.
> I feel the rst documentation as suggested is missing and is creating the
> gap. Can I go ahead create the rst documentation and then repost the
> series and then we can continue the review?
I'm not sure why you are asking? Of course, I guess.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-03 7:52 ` Murthy, Arun R
@ 2025-03-03 9:33 ` Pekka Paalanen
0 siblings, 0 replies; 63+ messages in thread
From: Pekka Paalanen @ 2025-03-03 9:33 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe, intel-gfx, dri-devel, suraj.kandpal, dmitry.baryshkov
[-- Attachment #1: Type: text/plain, Size: 3737 bytes --]
On Mon, 3 Mar 2025 13:22:29 +0530
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> On 17-02-2025 17:57, Pekka Paalanen wrote:
> > On Mon, 17 Feb 2025 12:08:08 +0200
> > Pekka Paalanen <pekka.paalanen@haloniitty.fi> wrote:
> >
> >> Hi Arun,
> >>
> >> this whole series seems to be missing all the UAPI docs for the DRM
> >> ReST files, e.g. drm-kms.rst. The UAPI header doc comments are not a
> >> replacement for them, I would assume both are a requirement.
> >>
> >> Without the ReST docs it is really difficult to see how this new UAPI
> >> should be used.
> >>
> >>
> >> On Tue, 28 Jan 2025 21:21:07 +0530
> >> Arun R Murthy <arun.r.murthy@intel.com> wrote:
> >>
> >>> Display Histogram is an array of bins and can be generated in many ways
> >>> referred to as modes.
> >>> Ex: HSV max(RGB), Wighted RGB etc.
> >>>
> >>> Understanding the histogram data format(Ex: HSV max(RGB))
> >>> Histogram is just the pixel count.
> >>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> >>> 25 bits should be sufficient to represent this along with a buffer of 7
> >>> bits(future use) u32 is being considered.
> >>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> >>> bits, hence 32 bins.
> >>> Below mentioned algorithm illustrates the histogram generation in
> >>> hardware.
> >>>
> >>> hist[32] = {0};
> >>> for (i = 0; i < resolution; i++) {
> >>> bin = max(RGB[i]);
> >>> bin = bin >> 3; /* consider the most significant bits */
> >>> hist[bin]++;
> >>> }
> >>> If the entire image is Red color then max(255,0,0) is 255 so the pixel
> >>> count of each pixels will be placed in the last bin. Hence except
> >>> hist[31] all other bins will have a value zero.
> >>> Generated histogram in this case would be hist[32] = {0,0,....44236800}
> >>>
> >>> Description of the structures, properties defined are documented in the
> >>> header file include/uapi/drm/drm_mode.h
> >>>
> >>> v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >>>
> >>> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> >>> ---
> >>> include/uapi/drm/drm_mode.h | 65 +++++++++++++++++++++++++++++++++++++++++++++
> >>> 1 file changed, 65 insertions(+)
> >>>
> >>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
...
> >>> +/**
> >>> + * struct drm_histogram_config
> >>> + *
> >>> + * @hist_mode_data: address to the histogram mode specific data if any
> >> Do I understand correctly that the KMS blob will contain a userspace
> >> virtual memory address (a user pointer)? How does that work? What are
> >> the lifetime requirements for that memory?
> >>
> >> I do not remember any precedent of this, and I suspect it's not a good
> >> design. I believe all the data should be contained in the blobs, e.g.
> >> how IN_FORMATS does it. I'm not sure what would be the best UAPI here
> >> for returning histogram data to userspace, but at least all the data
> >> sent to the kernel should be contained in the blob itself since it
> >> seems to be quite small. Variable length is ok for blobs.
> Sorry forgot to add the reason for choosing u64 based ptr in the UAPI.
> This histogram is related(something to do) to the color. drm_color is
> also exposing the rgb values as __u64 pointer in the struct
> drm_mode_crtc_lut
struct drm_mode_crtc_lut is used in the ioctls DRM_IOCTL_MODE_GETGAMMA
and DRM_IOCTL_MODE_SETGAMMA. The pointers are used only inside the
ioctl call for copying the data to/from user, and they are never saved
for later use in the kernel. That's the fundamental difference. KMS
blob objects OTOH are by definition saved in the kernel for re-use.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-02-14 6:38 ` Kandpal, Suraj
2025-02-14 8:38 ` Kandpal, Suraj
@ 2025-03-13 6:10 ` Murthy, Arun R
1 sibling, 0 replies; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-13 6:10 UTC (permalink / raw)
To: Kandpal, Suraj, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: dmitry.baryshkov@linaro.org
> > Display Histogram is an array of bins and can be generated in many
> > ways referred to as modes.
> > Ex: HSV max(RGB), Wighted RGB etc.
> >
> > Understanding the histogram data format(Ex: HSV max(RGB)) Histogram is
> > just the pixel count.
> > For a maximum resolution of 10k (10240 x 4320 = 44236800)
> > 25 bits should be sufficient to represent this along with a buffer of
> > 7 bits(future
> > use) u32 is being considered.
> > max(RGB) can be 255 i.e 0xFF 8 bit, considering the most significant 5
> > bits, hence 32 bins.
> > Below mentioned algorithm illustrates the histogram generation in hardware.
> >
> > hist[32] = {0};
> > for (i = 0; i < resolution; i++) {
> > bin = max(RGB[i]);
> > bin = bin >> 3; /* consider the most significant bits */
> > hist[bin]++;
> > }
> > If the entire image is Red color then max(255,0,0) is 255 so the pixel
> > count of each pixels will be placed in the last bin. Hence except
> > hist[31] all other bins will have a value zero.
> > Generated histogram in this case would be hist[32] =
> > {0,0,....44236800}
> >
> > Description of the structures, properties defined are documented in
> > the header file include/uapi/drm/drm_mode.h
> >
> > v8: Added doc for HDR planes, removed reserved variables (Dmitry)
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> > include/uapi/drm/drm_mode.h | 65
> > +++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 65 insertions(+)
> >
> > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > index
> >
> c082810c08a8b234ef2672ecf54fc8c05ddc2bd3..b8b7b18843ae7224263a9c61
> b
> > 20ac6cbf5df69e9 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -1355,6 +1355,71 @@ struct drm_mode_closefb {
> > __u32 pad;
> > };
> >
> > +/**
> > + * enum drm_mode_histogram
> > + *
> > + * @DRM_MODE_HISTOGRAM_HSV_MAX_RGB:
> > + * Maximum resolution at present 10k, 10240x4320 = 44236800
> > + * can be denoted in 25bits. With an additional 7 bits in buffer each
> > +bin
> > + * can be a u32 value.
> > + * For SDL, Maximum value of max(RGB) is 255, so max 255 bins.
>
> Type: SDR
>
> > + * If the most significant 5 bits are considered, then bins = 2^5
> > + * will be 32 bins.
> > + * For HDR, maximum value of max(RGB) is 65535, so max 65535 bins.
> > + * For illustration consider a full RED image of 10k resolution
> > +considering all
> > + * 8 bits histogram would look like hist[255] = {0,0,....44236800}
> > +with SDR
> > + * plane similarly with HDR the same would look like hist[65535] =
> > + * {0,0,0,....44236800}
> > + */
> > +enum drm_mode_histogram {
> > + DRM_MODE_HISTOGRAM_HSV_MAX_RGB = 0x01, };
> > +
> > +/**
> > + * struct drm_histogram_caps
> > + *
> > + * @histogram_mode: histogram generation modes, defined in the
> > + * enum drm_mode_histogram
> > + * @bins_count: number of bins for a chosen histogram mode. For
> illustration
> > + * refer the above defined histogram mode.
> > + */
> > +struct drm_histogram_caps {
> > + __u32 histogram_mode;
>
> Do we really need __u32 for histogram mode don't you think a __u16 should
> suffice?
>
For future compatibility we have it as __u32 but yes __u16 should be fine.
I am fine changing to __u16 if no other comments on this.
>
> > + __u32 bins_count;
>
> Nit: bin_count sounds better.
>
> > +};
> > +
> > +/**
> > + * struct drm_histogram_config
> > + *
> > + * @hist_mode_data: address to the histogram mode specific data if
> > +any
> > + * @nr_hist_mode_data: number of elements pointed by the address in
> > + * hist_mode_data
> > + * @hist_mode: histogram mode(HSV max(RGB), RGB, LUMA etc)
> > + * @enable: flag to enable/disable histogram */ struct
> > +drm_histogram_config {
> > + __u64 hist_mode_data;
> > + __u32 nr_hist_mode_data;
> > + enum drm_mode_histogram hist_mode;
> > + bool enable;
> > +};
> > +
> > +/**
> > + * struct drm_histogram
> > + *
> > + * @config: histogram configuration data pointed by struct
> > +drm_histogram_config
> > + * @data_ptr: pointer to the array of histogram.
> > + * Histogram is an array of bins. Data format for each bin depends
> > + * on the histogram mode. Refer to the above histogram modes for
>
> I think you can write the drm_histogram_mode_caps instead of writing
> histogram mode So people can directly jump to it
>
Mode_caps will give all the modes supported by the hardware and this mode_config will choose one among the supported modes hence the name.
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-03 9:20 ` Pekka Paalanen
@ 2025-03-19 12:08 ` Murthy, Arun R
2025-03-20 9:23 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-19 12:08 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj
> On Mon, 3 Mar 2025 13:23:42 +0530
> "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>
> > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > On Wed, 19 Feb 2025 09:28:51 +0530
> > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > >
> > >> On 18-02-2025 21:48, Pekka Paalanen wrote:
> > >>> On Tue, 18 Feb 2025 11:13:39 +0530 "Murthy, Arun
> > >>> R"<arun.r.murthy@intel.com> wrote:
> > >>>
> > >>>> On 17-02-2025 15:38, Pekka Paalanen wrote:
> > >>>>> Hi Arun,
> > >>>>>
> > >>>>> this whole series seems to be missing all the UAPI docs for the
> > >>>>> DRM ReST files, e.g. drm-kms.rst. The UAPI header doc comments
> > >>>>> are not a replacement for them, I would assume both are a
> requirement.
> > >>>>>
> > >>>>> Without the ReST docs it is really difficult to see how this new
> > >>>>> UAPI should be used.
> > >>>> Hi Pekka,
> > >>>> I also realized later on this. Will add this in my next patchset.
> > >>>>> On Tue, 28 Jan 2025 21:21:07 +0530 Arun R
> > >>>>> Murthy<arun.r.murthy@intel.com> wrote:
> > >>>>>
> > >>>>>> Display Histogram is an array of bins and can be generated in
> > >>>>>> many ways referred to as modes.
> > >>>>>> Ex: HSV max(RGB), Wighted RGB etc.
> > >>>>>>
> > >>>>>> Understanding the histogram data format(Ex: HSV max(RGB))
> > >>>>>> Histogram is just the pixel count.
> > >>>>>> For a maximum resolution of 10k (10240 x 4320 = 44236800)
> > >>>>>> 25 bits should be sufficient to represent this along with a
> > >>>>>> buffer of 7 bits(future use) u32 is being considered.
> > >>>>>> max(RGB) can be 255 i.e 0xFF 8 bit, considering the most
> > >>>>>> significant 5 bits, hence 32 bins.
> > >>>>>> Below mentioned algorithm illustrates the histogram generation
> > >>>>>> in hardware.
> > >>>>>>
> > >>>>>> hist[32] = {0};
> > >>>>>> for (i = 0; i < resolution; i++) {
> > >>>>>> bin = max(RGB[i]);
> > >>>>>> bin = bin >> 3; /* consider the most significant bits */
> > >>>>>> hist[bin]++;
> > >>>>>> }
> > >>>>>> If the entire image is Red color then max(255,0,0) is 255 so
> > >>>>>> the pixel count of each pixels will be placed in the last bin.
> > >>>>>> Hence except hist[31] all other bins will have a value zero.
> > >>>>>> Generated histogram in this case would be hist[32] =
> > >>>>>> {0,0,....44236800}
> > >>>>>>
> > >>>>>> Description of the structures, properties defined are
> > >>>>>> documented in the header file include/uapi/drm/drm_mode.h
> > >>>>>>
> > >>>>>> v8: Added doc for HDR planes, removed reserved variables
> > >>>>>> (Dmitry)
> > >>>>>>
> > >>>>>> Signed-off-by: Arun R Murthy<arun.r.murthy@intel.com>
> > >>>>>> ---
> > >>>>>> include/uapi/drm/drm_mode.h | 65
> +++++++++++++++++++++++++++++++++++++++++++++
> > >>>>>> 1 file changed, 65 insertions(+)
>
> ...
>
> > > Hi Arun,
> > >
> > > sure, it may be by hardware design, but the UAPI must specify or
> > > communicate exactly what it is. This seems to be the recurring theme
> > > in all the remaining comments, so I trimmed them away.
> > >
> > > A generic UAPI is mandatory, because that's KMS policy AFAIU. A
> > > generic UAPI cannot key anything off of the hardware revision.
> > > Instead, everything must be specified and communicated explicitly.
> > > It's good if AMD has similar functionality, someone from their team
> > > could take a look so you can come up with an UAPI that works for both.
> > >
> > > Dmitry Baryshkov tried to ask for the same thing. Assuming I know
> > > nothing about the hardware, and the only documentation I have is the
> > > KMS UAPI documentation (userland side, not kernel internals), I
> > > should be able to write a program from scratch that correctly
> > > records and analyses the histogram on every piece of hardware where
> > > the kernel driver exposes it. That means explaining exactly what the
> > > driver and the hardware will do when I poke that UAPI.
> >
> > Hi Pekka,
> > Sorry got getting back late on this.
> > I totally agree that the UAPI should not be any hardware specific and
> > have taken care to get rid of such if any.
> > Here we are just exposing the histogram data and what point is the
> > histogram generated is out of the scope.
>
> It's not out of scope. Understanding exactly at what point the histogram is
> generated in the KMS pixel pipeline is paramount to being able to use the
> results correctly - how it relates to the framebuffers'
> contents and KMS pixel pipeline configuration.
>
While working around this comment, it looks to be quite challenging to
address this comment and agree that this will have to be addressed and is
important for the user to know at which point in the pixel pipeline configuration
the histogram is generated.
I can think of 2 options on addressing this.
1. Have this documented in the driver. Since this can vary on each vendor
hardware, can have this documented in the drivers or ReST document.
2. Maybe have a bitmapping like we have it for histogram_mode. Define
user readable macros for that.
Ex: CC1_DEGAMMA_HIST_CC2
In this case histogram is between the two color conversion hardware block
in the pixel pipeline.
This macro will have to be defined on need basis and define a u32 variable
for this bit manipulation.
Please let me know your opinion on this.
Thanks and Regards,
Arun R Murthy
--------------------
> As a simple example, if the histogram is recorded before CRTC GAMMA
> processing, then changing CRTC GAMMA will not change the histogram. Or, if
> the histogram is recorded after CRTC GAMMA processing, then changing CRTC
> GAMMA will change the histogram as well, assuming the content stays the
> same. This makes a fundamental difference to how the histogram results should
> be looked at. Userspace needs to know whether the differences in the
> histogram over time are caused by changes in the content or by changes driven
> by the userspace itself.
>
> In the CRTC GAMMA example, it's not just whether changing GAMMA directly
> changes the histogram. GAMMA also changes the units on the x-axis of the
> histogram, are they optical or electrical for instance.
> Those units are important, too, because the ideal target histogram has a very
> different shape depending on the units.
>
> > I feel the rst documentation as suggested is missing and is creating
> > the gap. Can I go ahead create the rst documentation and then repost
> > the series and then we can continue the review?
>
> I'm not sure why you are asking? Of course, I guess.
>
>
> Thanks,
> pq
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-19 12:08 ` Murthy, Arun R
@ 2025-03-20 9:23 ` Pekka Paalanen
2025-03-26 6:03 ` Murthy, Arun R
0 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-03-20 9:23 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj, harry.wentland,
alex.hung
[-- Attachment #1: Type: text/plain, Size: 3112 bytes --]
On Wed, 19 Mar 2025 12:08:15 +0000
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > On Mon, 3 Mar 2025 13:23:42 +0530
> > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> >
> > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > On Wed, 19 Feb 2025 09:28:51 +0530
> > > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
...
> > > Hi Pekka,
> > > Sorry got getting back late on this.
> > > I totally agree that the UAPI should not be any hardware specific and
> > > have taken care to get rid of such if any.
> > > Here we are just exposing the histogram data and what point is the
> > > histogram generated is out of the scope.
> >
> > It's not out of scope. Understanding exactly at what point the histogram is
> > generated in the KMS pixel pipeline is paramount to being able to use the
> > results correctly - how it relates to the framebuffers'
> > contents and KMS pixel pipeline configuration.
> >
>
> While working around this comment, it looks to be quite challenging to
> address this comment and agree that this will have to be addressed and is
> important for the user to know at which point in the pixel pipeline configuration
> the histogram is generated.
> I can think of 2 options on addressing this.
>
> 1. Have this documented in the driver. Since this can vary on each vendor
> hardware, can have this documented in the drivers or ReST document.
>
Hi Arun,
this is not acceptable in KMS, because it requires userspace to have
code that depends on the hardware revision or identity. When new
hardware appears, it will not be enough to update the drivers, one will
also need to update userspace. There currently is no userspace
"standard KMS library" to abstract all drivers further, like there is
libcamera and Mesa.
> 2. Maybe have a bitmapping like we have it for histogram_mode. Define
> user readable macros for that.
> Ex: CC1_DEGAMMA_HIST_CC2
> In this case histogram is between the two color conversion hardware block
> in the pixel pipeline.
> This macro will have to be defined on need basis and define a u32 variable
> for this bit manipulation.
This one still has problems in that some hardware may not have all the
non-HIST elements or not in the same order. It's a better abstraction
than option 1, but it's still weak.
I can see one solid solution, but it won't be usable for quite some
time I suppose:
https://lore.kernel.org/dri-devel/20241220043410.416867-5-alex.hung@amd.com/
The current work on the color pipelines UAPI is concentrated on the
per-plane operations. The idea is that once those are hashed out, the
same design is applied to CRTCs as well, deprecating all existing CRTC
color processing properties. A histogram processing element could be
exposed as a colorop object, and its position in a CRTC color pipeline
represents the point where the histogram is collected.
That would be the best possible UAPI design on current knowledge in my
opinion.
Btw. this applies also to the image enhancement processing element you
are proposing.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-20 9:23 ` Pekka Paalanen
@ 2025-03-26 6:03 ` Murthy, Arun R
2025-03-27 8:59 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-26 6:03 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj,
harry.wentland@amd.com, alex.hung@amd.com
> On Wed, 19 Mar 2025 12:08:15 +0000
> "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>
> > > On Mon, 3 Mar 2025 13:23:42 +0530
> > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > >
> > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > <arun.r.murthy@intel.com> wrote:
>
> ...
>
> > > > Hi Pekka,
> > > > Sorry got getting back late on this.
> > > > I totally agree that the UAPI should not be any hardware specific
> > > > and have taken care to get rid of such if any.
> > > > Here we are just exposing the histogram data and what point is the
> > > > histogram generated is out of the scope.
> > >
> > > It's not out of scope. Understanding exactly at what point the
> > > histogram is generated in the KMS pixel pipeline is paramount to
> > > being able to use the results correctly - how it relates to the framebuffers'
> > > contents and KMS pixel pipeline configuration.
> > >
> >
> > While working around this comment, it looks to be quite challenging to
> > address this comment and agree that this will have to be addressed and
> > is important for the user to know at which point in the pixel pipeline
> > configuration the histogram is generated.
> > I can think of 2 options on addressing this.
> >
> > 1. Have this documented in the driver. Since this can vary on each
> > vendor hardware, can have this documented in the drivers or ReST document.
> >
>
> Hi Arun,
>
> this is not acceptable in KMS, because it requires userspace to have code that
> depends on the hardware revision or identity. When new hardware appears, it
> will not be enough to update the drivers, one will also need to update
> userspace. There currently is no userspace "standard KMS library" to abstract
> all drivers further, like there is libcamera and Mesa.
>
> > 2. Maybe have a bitmapping like we have it for histogram_mode. Define
> > user readable macros for that.
> > Ex: CC1_DEGAMMA_HIST_CC2
> > In this case histogram is between the two color conversion hardware
> > block in the pixel pipeline.
> > This macro will have to be defined on need basis and define a u32
> > variable for this bit manipulation.
>
> This one still has problems in that some hardware may not have all the non-
> HIST elements or not in the same order. It's a better abstraction than option 1,
> but it's still weak.
>
> I can see one solid solution, but it won't be usable for quite some time I
> suppose:
>
> https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> alex.hung@amd.com/
>
> The current work on the color pipelines UAPI is concentrated on the per-plane
> operations. The idea is that once those are hashed out, the same design is
> applied to CRTCs as well, deprecating all existing CRTC color processing
> properties. A histogram processing element could be exposed as a colorop
> object, and its position in a CRTC color pipeline represents the point where the
> histogram is collected.
>
> That would be the best possible UAPI design on current knowledge in my
> opinion.
>
Yes this would be the best design, but looking into the timeline for this CRTC
color pipeline can we proceed with this as in interim solution.
Once we have the CRTC color pipeline in drm, will rebase this histogram to
make use of the pipeline.
We can also take up the crtc color pipeline and will also start contributing
to get things faster but since there is not timeline defined for that activity,
would it be viable to go ahead with option2 as in interim solution?
Thanks and Regards,
Arun R Murthy
-------------------
> Btw. this applies also to the image enhancement processing element you are
> proposing.
>
>
> Thanks,
> pq
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-26 6:03 ` Murthy, Arun R
@ 2025-03-27 8:59 ` Pekka Paalanen
2025-03-28 5:06 ` Murthy, Arun R
0 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-03-27 8:59 UTC (permalink / raw)
To: Murthy, Arun R
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj,
harry.wentland@amd.com, alex.hung@amd.com
[-- Attachment #1: Type: text/plain, Size: 4113 bytes --]
On Wed, 26 Mar 2025 06:03:27 +0000
"Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > On Wed, 19 Mar 2025 12:08:15 +0000
> > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> >
> > > > On Mon, 3 Mar 2025 13:23:42 +0530
> > > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > > >
> > > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > > <arun.r.murthy@intel.com> wrote:
> >
> > ...
> >
> > > > > Hi Pekka,
> > > > > Sorry got getting back late on this.
> > > > > I totally agree that the UAPI should not be any hardware specific
> > > > > and have taken care to get rid of such if any.
> > > > > Here we are just exposing the histogram data and what point is the
> > > > > histogram generated is out of the scope.
> > > >
> > > > It's not out of scope. Understanding exactly at what point the
> > > > histogram is generated in the KMS pixel pipeline is paramount to
> > > > being able to use the results correctly - how it relates to the framebuffers'
> > > > contents and KMS pixel pipeline configuration.
> > > >
> > >
> > > While working around this comment, it looks to be quite challenging to
> > > address this comment and agree that this will have to be addressed and
> > > is important for the user to know at which point in the pixel pipeline
> > > configuration the histogram is generated.
> > > I can think of 2 options on addressing this.
> > >
> > > 1. Have this documented in the driver. Since this can vary on each
> > > vendor hardware, can have this documented in the drivers or ReST document.
> > >
> >
> > Hi Arun,
> >
> > this is not acceptable in KMS, because it requires userspace to have code that
> > depends on the hardware revision or identity. When new hardware appears, it
> > will not be enough to update the drivers, one will also need to update
> > userspace. There currently is no userspace "standard KMS library" to abstract
> > all drivers further, like there is libcamera and Mesa.
> >
> > > 2. Maybe have a bitmapping like we have it for histogram_mode. Define
> > > user readable macros for that.
> > > Ex: CC1_DEGAMMA_HIST_CC2
> > > In this case histogram is between the two color conversion hardware
> > > block in the pixel pipeline.
> > > This macro will have to be defined on need basis and define a u32
> > > variable for this bit manipulation.
> >
> > This one still has problems in that some hardware may not have all the non-
> > HIST elements or not in the same order. It's a better abstraction than option 1,
> > but it's still weak.
> >
> > I can see one solid solution, but it won't be usable for quite some time I
> > suppose:
> >
> > https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> > alex.hung@amd.com/
> >
> > The current work on the color pipelines UAPI is concentrated on the per-plane
> > operations. The idea is that once those are hashed out, the same design is
> > applied to CRTCs as well, deprecating all existing CRTC color processing
> > properties. A histogram processing element could be exposed as a colorop
> > object, and its position in a CRTC color pipeline represents the point where the
> > histogram is collected.
> >
> > That would be the best possible UAPI design on current knowledge in my
> > opinion.
> >
> Yes this would be the best design, but looking into the timeline for this CRTC
> color pipeline can we proceed with this as in interim solution.
> Once we have the CRTC color pipeline in drm, will rebase this histogram to
> make use of the pipeline.
> We can also take up the crtc color pipeline and will also start contributing
> to get things faster but since there is not timeline defined for that activity,
> would it be viable to go ahead with option2 as in interim solution?
Hi Arun,
I think that's something the DRM maintainers should chime in on.
Thanks,
pq
> > Btw. this applies also to the image enhancement processing element you are
> > proposing.
> >
> >
> > Thanks,
> > pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-27 8:59 ` Pekka Paalanen
@ 2025-03-28 5:06 ` Murthy, Arun R
2025-04-17 6:31 ` Shankar, Uma
0 siblings, 1 reply; 63+ messages in thread
From: Murthy, Arun R @ 2025-03-28 5:06 UTC (permalink / raw)
To: Pekka Paalanen
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj,
harry.wentland@amd.com, alex.hung@amd.com, Vetter, Simona,
airlied@gmail.com
> On Wed, 26 Mar 2025 06:03:27 +0000
> "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>
> > > On Wed, 19 Mar 2025 12:08:15 +0000
> > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > >
> > > > > On Mon, 3 Mar 2025 13:23:42 +0530 "Murthy, Arun R"
> > > > > <arun.r.murthy@intel.com> wrote:
> > > > >
> > > > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > > > <arun.r.murthy@intel.com> wrote:
> > >
> > > ...
> > >
> > > > > > Hi Pekka,
> > > > > > Sorry got getting back late on this.
> > > > > > I totally agree that the UAPI should not be any hardware
> > > > > > specific and have taken care to get rid of such if any.
> > > > > > Here we are just exposing the histogram data and what point is
> > > > > > the histogram generated is out of the scope.
> > > > >
> > > > > It's not out of scope. Understanding exactly at what point the
> > > > > histogram is generated in the KMS pixel pipeline is paramount to
> > > > > being able to use the results correctly - how it relates to the
> framebuffers'
> > > > > contents and KMS pixel pipeline configuration.
> > > > >
> > > >
> > > > While working around this comment, it looks to be quite
> > > > challenging to address this comment and agree that this will have
> > > > to be addressed and is important for the user to know at which
> > > > point in the pixel pipeline configuration the histogram is generated.
> > > > I can think of 2 options on addressing this.
> > > >
> > > > 1. Have this documented in the driver. Since this can vary on
> > > > each vendor hardware, can have this documented in the drivers or ReST
> document.
> > > >
> > >
> > > Hi Arun,
> > >
> > > this is not acceptable in KMS, because it requires userspace to have
> > > code that depends on the hardware revision or identity. When new
> > > hardware appears, it will not be enough to update the drivers, one
> > > will also need to update userspace. There currently is no userspace
> > > "standard KMS library" to abstract all drivers further, like there is libcamera
> and Mesa.
> > >
> > > > 2. Maybe have a bitmapping like we have it for histogram_mode.
> > > > Define user readable macros for that.
> > > > Ex: CC1_DEGAMMA_HIST_CC2
> > > > In this case histogram is between the two color conversion
> > > > hardware block in the pixel pipeline.
> > > > This macro will have to be defined on need basis and define a u32
> > > > variable for this bit manipulation.
> > >
> > > This one still has problems in that some hardware may not have all
> > > the non- HIST elements or not in the same order. It's a better
> > > abstraction than option 1, but it's still weak.
> > >
> > > I can see one solid solution, but it won't be usable for quite some
> > > time I
> > > suppose:
> > >
> > > https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> > > alex.hung@amd.com/
> > >
> > > The current work on the color pipelines UAPI is concentrated on the
> > > per-plane operations. The idea is that once those are hashed out,
> > > the same design is applied to CRTCs as well, deprecating all
> > > existing CRTC color processing properties. A histogram processing
> > > element could be exposed as a colorop object, and its position in a
> > > CRTC color pipeline represents the point where the histogram is collected.
> > >
> > > That would be the best possible UAPI design on current knowledge in
> > > my opinion.
> > >
> > Yes this would be the best design, but looking into the timeline for
> > this CRTC color pipeline can we proceed with this as in interim solution.
> > Once we have the CRTC color pipeline in drm, will rebase this
> > histogram to make use of the pipeline.
> > We can also take up the crtc color pipeline and will also start
> > contributing to get things faster but since there is not timeline
> > defined for that activity, would it be viable to go ahead with option2 as in
> interim solution?
>
> Hi Arun,
>
> I think that's something the DRM maintainers should chime in on.
>
>
> Thanks,
> pq
>
drm Maintainers, any inputs on this?
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-03-28 5:06 ` Murthy, Arun R
@ 2025-04-17 6:31 ` Shankar, Uma
2025-04-17 7:18 ` Pekka Paalanen
0 siblings, 1 reply; 63+ messages in thread
From: Shankar, Uma @ 2025-04-17 6:31 UTC (permalink / raw)
To: Murthy, Arun R, Pekka Paalanen
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, Kandpal, Suraj,
harry.wentland@amd.com, alex.hung@amd.com, Vetter, Simona,
airlied@gmail.com
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Murthy,
> Arun R
> Sent: Friday, March 28, 2025 10:36 AM
> To: Pekka Paalanen <pekka.paalanen@haloniitty.fi>
> Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org; Kandpal, Suraj <suraj.kandpal@intel.com>;
> harry.wentland@amd.com; alex.hung@amd.com; Vetter, Simona
> <simona.vetter@intel.com>; airlied@gmail.com
> Subject: RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
>
> > On Wed, 26 Mar 2025 06:03:27 +0000
> > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> >
> > > > On Wed, 19 Mar 2025 12:08:15 +0000 "Murthy, Arun R"
> > > > <arun.r.murthy@intel.com> wrote:
> > > >
> > > > > > On Mon, 3 Mar 2025 13:23:42 +0530 "Murthy, Arun R"
> > > > > > <arun.r.murthy@intel.com> wrote:
> > > > > >
> > > > > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > > > > <arun.r.murthy@intel.com> wrote:
> > > >
> > > > ...
> > > >
> > > > > > > Hi Pekka,
> > > > > > > Sorry got getting back late on this.
> > > > > > > I totally agree that the UAPI should not be any hardware
> > > > > > > specific and have taken care to get rid of such if any.
> > > > > > > Here we are just exposing the histogram data and what point
> > > > > > > is the histogram generated is out of the scope.
> > > > > >
> > > > > > It's not out of scope. Understanding exactly at what point the
> > > > > > histogram is generated in the KMS pixel pipeline is paramount
> > > > > > to being able to use the results correctly - how it relates to
> > > > > > the
> > framebuffers'
> > > > > > contents and KMS pixel pipeline configuration.
> > > > > >
> > > > >
> > > > > While working around this comment, it looks to be quite
> > > > > challenging to address this comment and agree that this will
> > > > > have to be addressed and is important for the user to know at
> > > > > which point in the pixel pipeline configuration the histogram is generated.
> > > > > I can think of 2 options on addressing this.
> > > > >
> > > > > 1. Have this documented in the driver. Since this can vary on
> > > > > each vendor hardware, can have this documented in the drivers or
> > > > > ReST
> > document.
> > > > >
> > > >
> > > > Hi Arun,
> > > >
> > > > this is not acceptable in KMS, because it requires userspace to
> > > > have code that depends on the hardware revision or identity. When
> > > > new hardware appears, it will not be enough to update the drivers,
> > > > one will also need to update userspace. There currently is no
> > > > userspace "standard KMS library" to abstract all drivers further,
> > > > like there is libcamera
> > and Mesa.
> > > >
> > > > > 2. Maybe have a bitmapping like we have it for histogram_mode.
> > > > > Define user readable macros for that.
> > > > > Ex: CC1_DEGAMMA_HIST_CC2
> > > > > In this case histogram is between the two color conversion
> > > > > hardware block in the pixel pipeline.
> > > > > This macro will have to be defined on need basis and define a
> > > > > u32 variable for this bit manipulation.
> > > >
> > > > This one still has problems in that some hardware may not have all
> > > > the non- HIST elements or not in the same order. It's a better
> > > > abstraction than option 1, but it's still weak.
> > > >
> > > > I can see one solid solution, but it won't be usable for quite
> > > > some time I
> > > > suppose:
> > > >
> > > > https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> > > > alex.hung@amd.com/
> > > >
> > > > The current work on the color pipelines UAPI is concentrated on
> > > > the per-plane operations. The idea is that once those are hashed
> > > > out, the same design is applied to CRTCs as well, deprecating all
> > > > existing CRTC color processing properties. A histogram processing
> > > > element could be exposed as a colorop object, and its position in
> > > > a CRTC color pipeline represents the point where the histogram is collected.
> > > >
> > > > That would be the best possible UAPI design on current knowledge
> > > > in my opinion.
> > > >
> > > Yes this would be the best design, but looking into the timeline for
> > > this CRTC color pipeline can we proceed with this as in interim solution.
> > > Once we have the CRTC color pipeline in drm, will rebase this
> > > histogram to make use of the pipeline.
> > > We can also take up the crtc color pipeline and will also start
> > > contributing to get things faster but since there is not timeline
> > > defined for that activity, would it be viable to go ahead with
> > > option2 as in
> > interim solution?
> >
> > Hi Arun,
> >
> > I think that's something the DRM maintainers should chime in on.
As a first step, I think we can expose the Histogram through the property.
We can later hook this into the crtc color pipeline once we implement it.
A userspace implementation showing end to end benefit of the feature and
usecase would be needed. Hope this is ok and no strong objection to this
approach.
Regards,
Uma Shankar
> >
> > Thanks,
> > pq
> >
> drm Maintainers, any inputs on this?
>
> Thanks and Regards,
> Arun R Murthy
> --------------------
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-04-17 6:31 ` Shankar, Uma
@ 2025-04-17 7:18 ` Pekka Paalanen
2025-04-17 10:50 ` Shankar, Uma
0 siblings, 1 reply; 63+ messages in thread
From: Pekka Paalanen @ 2025-04-17 7:18 UTC (permalink / raw)
To: Shankar, Uma
Cc: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
Kandpal, Suraj, harry.wentland@amd.com, alex.hung@amd.com,
Vetter, Simona, airlied@gmail.com
[-- Attachment #1: Type: text/plain, Size: 5728 bytes --]
On Thu, 17 Apr 2025 06:31:21 +0000
"Shankar, Uma" <uma.shankar@intel.com> wrote:
> > -----Original Message-----
> > From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Murthy,
> > Arun R
> > Sent: Friday, March 28, 2025 10:36 AM
> > To: Pekka Paalanen <pekka.paalanen@haloniitty.fi>
> > Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> > devel@lists.freedesktop.org; Kandpal, Suraj <suraj.kandpal@intel.com>;
> > harry.wentland@amd.com; alex.hung@amd.com; Vetter, Simona
> > <simona.vetter@intel.com>; airlied@gmail.com
> > Subject: RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
> >
> > > On Wed, 26 Mar 2025 06:03:27 +0000
> > > "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> > >
> > > > > On Wed, 19 Mar 2025 12:08:15 +0000 "Murthy, Arun R"
> > > > > <arun.r.murthy@intel.com> wrote:
> > > > >
> > > > > > > On Mon, 3 Mar 2025 13:23:42 +0530 "Murthy, Arun R"
> > > > > > > <arun.r.murthy@intel.com> wrote:
> > > > > > >
> > > > > > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > > > > > <arun.r.murthy@intel.com> wrote:
> > > > >
> > > > > ...
> > > > >
> > > > > > > > Hi Pekka,
> > > > > > > > Sorry got getting back late on this.
> > > > > > > > I totally agree that the UAPI should not be any hardware
> > > > > > > > specific and have taken care to get rid of such if any.
> > > > > > > > Here we are just exposing the histogram data and what point
> > > > > > > > is the histogram generated is out of the scope.
> > > > > > >
> > > > > > > It's not out of scope. Understanding exactly at what point the
> > > > > > > histogram is generated in the KMS pixel pipeline is paramount
> > > > > > > to being able to use the results correctly - how it relates to
> > > > > > > the
> > > framebuffers'
> > > > > > > contents and KMS pixel pipeline configuration.
> > > > > > >
> > > > > >
> > > > > > While working around this comment, it looks to be quite
> > > > > > challenging to address this comment and agree that this will
> > > > > > have to be addressed and is important for the user to know at
> > > > > > which point in the pixel pipeline configuration the histogram is generated.
> > > > > > I can think of 2 options on addressing this.
> > > > > >
> > > > > > 1. Have this documented in the driver. Since this can vary on
> > > > > > each vendor hardware, can have this documented in the drivers or
> > > > > > ReST
> > > document.
> > > > > >
> > > > >
> > > > > Hi Arun,
> > > > >
> > > > > this is not acceptable in KMS, because it requires userspace to
> > > > > have code that depends on the hardware revision or identity. When
> > > > > new hardware appears, it will not be enough to update the drivers,
> > > > > one will also need to update userspace. There currently is no
> > > > > userspace "standard KMS library" to abstract all drivers further,
> > > > > like there is libcamera
> > > and Mesa.
> > > > >
> > > > > > 2. Maybe have a bitmapping like we have it for histogram_mode.
> > > > > > Define user readable macros for that.
> > > > > > Ex: CC1_DEGAMMA_HIST_CC2
> > > > > > In this case histogram is between the two color conversion
> > > > > > hardware block in the pixel pipeline.
> > > > > > This macro will have to be defined on need basis and define a
> > > > > > u32 variable for this bit manipulation.
> > > > >
> > > > > This one still has problems in that some hardware may not have all
> > > > > the non- HIST elements or not in the same order. It's a better
> > > > > abstraction than option 1, but it's still weak.
> > > > >
> > > > > I can see one solid solution, but it won't be usable for quite
> > > > > some time I
> > > > > suppose:
> > > > >
> > > > > https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> > > > > alex.hung@amd.com/
> > > > >
> > > > > The current work on the color pipelines UAPI is concentrated on
> > > > > the per-plane operations. The idea is that once those are hashed
> > > > > out, the same design is applied to CRTCs as well, deprecating all
> > > > > existing CRTC color processing properties. A histogram processing
> > > > > element could be exposed as a colorop object, and its position in
> > > > > a CRTC color pipeline represents the point where the histogram is collected.
> > > > >
> > > > > That would be the best possible UAPI design on current knowledge
> > > > > in my opinion.
> > > > >
> > > > Yes this would be the best design, but looking into the timeline for
> > > > this CRTC color pipeline can we proceed with this as in interim solution.
> > > > Once we have the CRTC color pipeline in drm, will rebase this
> > > > histogram to make use of the pipeline.
> > > > We can also take up the crtc color pipeline and will also start
> > > > contributing to get things faster but since there is not timeline
> > > > defined for that activity, would it be viable to go ahead with
> > > > option2 as in
> > > interim solution?
> > >
> > > Hi Arun,
> > >
> > > I think that's something the DRM maintainers should chime in on.
>
> As a first step, I think we can expose the Histogram through the property.
> We can later hook this into the crtc color pipeline once we implement it.
Do you mean upstreamed as well?
How is that different from the original proposal here that I raised
concerns about?
Thanks,
pq
> A userspace implementation showing end to end benefit of the feature and
> usecase would be needed. Hope this is ok and no strong objection to this
> approach.
>
> Regards,
> Uma Shankar
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 63+ messages in thread
* RE: [PATCH v8 01/14] drm: Define histogram structures exposed to user
2025-04-17 7:18 ` Pekka Paalanen
@ 2025-04-17 10:50 ` Shankar, Uma
0 siblings, 0 replies; 63+ messages in thread
From: Shankar, Uma @ 2025-04-17 10:50 UTC (permalink / raw)
To: Pekka Paalanen
Cc: Murthy, Arun R, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
Kandpal, Suraj, harry.wentland@amd.com, alex.hung@amd.com,
Vetter, Simona, airlied@gmail.com
> -----Original Message-----
> From: Pekka Paalanen <pekka.paalanen@haloniitty.fi>
> Sent: Thursday, April 17, 2025 12:48 PM
> To: Shankar, Uma <uma.shankar@intel.com>
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; intel-xe@lists.freedesktop.org;
> intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; Kandpal, Suraj
> <suraj.kandpal@intel.com>; harry.wentland@amd.com; alex.hung@amd.com;
> Vetter, Simona <simona.vetter@intel.com>; airlied@gmail.com
> Subject: Re: [PATCH v8 01/14] drm: Define histogram structures exposed to user
>
> On Thu, 17 Apr 2025 06:31:21 +0000
> "Shankar, Uma" <uma.shankar@intel.com> wrote:
>
> > > -----Original Message-----
> > > From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of
> > > Murthy, Arun R
> > > Sent: Friday, March 28, 2025 10:36 AM
> > > To: Pekka Paalanen <pekka.paalanen@haloniitty.fi>
> > > Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > > dri- devel@lists.freedesktop.org; Kandpal, Suraj
> > > <suraj.kandpal@intel.com>; harry.wentland@amd.com;
> > > alex.hung@amd.com; Vetter, Simona <simona.vetter@intel.com>;
> > > airlied@gmail.com
> > > Subject: RE: [PATCH v8 01/14] drm: Define histogram structures
> > > exposed to user
> > >
> > > > On Wed, 26 Mar 2025 06:03:27 +0000 "Murthy, Arun R"
> > > > <arun.r.murthy@intel.com> wrote:
> > > >
> > > > > > On Wed, 19 Mar 2025 12:08:15 +0000 "Murthy, Arun R"
> > > > > > <arun.r.murthy@intel.com> wrote:
> > > > > >
> > > > > > > > On Mon, 3 Mar 2025 13:23:42 +0530 "Murthy, Arun R"
> > > > > > > > <arun.r.murthy@intel.com> wrote:
> > > > > > > >
> > > > > > > > > On 20-02-2025 21:20, Pekka Paalanen wrote:
> > > > > > > > > > On Wed, 19 Feb 2025 09:28:51 +0530 "Murthy, Arun R"
> > > > > > > > > > <arun.r.murthy@intel.com> wrote:
> > > > > >
> > > > > > ...
> > > > > >
> > > > > > > > > Hi Pekka,
> > > > > > > > > Sorry got getting back late on this.
> > > > > > > > > I totally agree that the UAPI should not be any hardware
> > > > > > > > > specific and have taken care to get rid of such if any.
> > > > > > > > > Here we are just exposing the histogram data and what
> > > > > > > > > point is the histogram generated is out of the scope.
> > > > > > > >
> > > > > > > > It's not out of scope. Understanding exactly at what point
> > > > > > > > the histogram is generated in the KMS pixel pipeline is
> > > > > > > > paramount to being able to use the results correctly - how
> > > > > > > > it relates to the
> > > > framebuffers'
> > > > > > > > contents and KMS pixel pipeline configuration.
> > > > > > > >
> > > > > > >
> > > > > > > While working around this comment, it looks to be quite
> > > > > > > challenging to address this comment and agree that this will
> > > > > > > have to be addressed and is important for the user to know
> > > > > > > at which point in the pixel pipeline configuration the histogram is
> generated.
> > > > > > > I can think of 2 options on addressing this.
> > > > > > >
> > > > > > > 1. Have this documented in the driver. Since this can vary
> > > > > > > on each vendor hardware, can have this documented in the
> > > > > > > drivers or ReST
> > > > document.
> > > > > > >
> > > > > >
> > > > > > Hi Arun,
> > > > > >
> > > > > > this is not acceptable in KMS, because it requires userspace
> > > > > > to have code that depends on the hardware revision or
> > > > > > identity. When new hardware appears, it will not be enough to
> > > > > > update the drivers, one will also need to update userspace.
> > > > > > There currently is no userspace "standard KMS library" to
> > > > > > abstract all drivers further, like there is libcamera
> > > > and Mesa.
> > > > > >
> > > > > > > 2. Maybe have a bitmapping like we have it for histogram_mode.
> > > > > > > Define user readable macros for that.
> > > > > > > Ex: CC1_DEGAMMA_HIST_CC2
> > > > > > > In this case histogram is between the two color conversion
> > > > > > > hardware block in the pixel pipeline.
> > > > > > > This macro will have to be defined on need basis and define
> > > > > > > a
> > > > > > > u32 variable for this bit manipulation.
> > > > > >
> > > > > > This one still has problems in that some hardware may not have
> > > > > > all the non- HIST elements or not in the same order. It's a
> > > > > > better abstraction than option 1, but it's still weak.
> > > > > >
> > > > > > I can see one solid solution, but it won't be usable for quite
> > > > > > some time I
> > > > > > suppose:
> > > > > >
> > > > > > https://lore.kernel.org/dri-devel/20241220043410.416867-5-
> > > > > > alex.hung@amd.com/
> > > > > >
> > > > > > The current work on the color pipelines UAPI is concentrated
> > > > > > on the per-plane operations. The idea is that once those are
> > > > > > hashed out, the same design is applied to CRTCs as well,
> > > > > > deprecating all existing CRTC color processing properties. A
> > > > > > histogram processing element could be exposed as a colorop
> > > > > > object, and its position in a CRTC color pipeline represents the point
> where the histogram is collected.
> > > > > >
> > > > > > That would be the best possible UAPI design on current
> > > > > > knowledge in my opinion.
> > > > > >
> > > > > Yes this would be the best design, but looking into the timeline
> > > > > for this CRTC color pipeline can we proceed with this as in interim solution.
> > > > > Once we have the CRTC color pipeline in drm, will rebase this
> > > > > histogram to make use of the pipeline.
> > > > > We can also take up the crtc color pipeline and will also start
> > > > > contributing to get things faster but since there is not
> > > > > timeline defined for that activity, would it be viable to go
> > > > > ahead with
> > > > > option2 as in
> > > > interim solution?
> > > >
> > > > Hi Arun,
> > > >
> > > > I think that's something the DRM maintainers should chime in on.
> >
> > As a first step, I think we can expose the Histogram through the property.
> > We can later hook this into the crtc color pipeline once we implement it.
>
> Do you mean upstreamed as well?
>
> How is that different from the original proposal here that I raised concerns about?
Hi Pekka,
I meant the option 2 as an interim approach to get the visibility to userspace of histogram
blocks which can be extended further once we get the full crtc color pipeline in place.
Regards,
Uma Shankar
>
> Thanks,
> pq
>
> > A userspace implementation showing end to end benefit of the feature
> > and usecase would be needed. Hope this is ok and no strong objection
> > to this approach.
> >
> > Regards,
> > Uma Shankar
> >
^ permalink raw reply [flat|nested] 63+ messages in thread
end of thread, other threads:[~2025-04-17 10:50 UTC | newest]
Thread overview: 63+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-28 15:51 [PATCH v8 00/14] Display Global Histogram Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 01/14] drm: Define histogram structures exposed to user Arun R Murthy
2025-02-14 6:38 ` Kandpal, Suraj
2025-02-14 8:38 ` Kandpal, Suraj
2025-03-13 6:10 ` Murthy, Arun R
2025-02-17 10:08 ` Pekka Paalanen
2025-02-17 12:27 ` Pekka Paalanen
2025-03-03 7:52 ` Murthy, Arun R
2025-03-03 9:33 ` Pekka Paalanen
2025-02-17 17:26 ` Simona Vetter
2025-02-17 22:23 ` Simona Vetter
2025-02-18 6:01 ` Murthy, Arun R
2025-02-19 13:31 ` Simona Vetter
2025-03-03 7:50 ` Murthy, Arun R
2025-02-18 5:43 ` Murthy, Arun R
2025-02-18 16:18 ` Pekka Paalanen
2025-02-19 3:58 ` Murthy, Arun R
2025-02-20 15:50 ` Pekka Paalanen
2025-03-03 7:53 ` Murthy, Arun R
2025-03-03 9:20 ` Pekka Paalanen
2025-03-19 12:08 ` Murthy, Arun R
2025-03-20 9:23 ` Pekka Paalanen
2025-03-26 6:03 ` Murthy, Arun R
2025-03-27 8:59 ` Pekka Paalanen
2025-03-28 5:06 ` Murthy, Arun R
2025-04-17 6:31 ` Shankar, Uma
2025-04-17 7:18 ` Pekka Paalanen
2025-04-17 10:50 ` Shankar, Uma
2025-02-20 16:26 ` Dmitry Baryshkov
2025-03-03 7:54 ` Murthy, Arun R
2025-01-28 15:51 ` [PATCH v8 02/14] drm: Define ImageEnhancemenT LUT " Arun R Murthy
2025-02-14 9:11 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 03/14] drm/crtc: Expose API to create drm crtc property for histogram Arun R Murthy
2025-02-14 9:36 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 04/14] drm/crtc: Expose API to create drm crtc property for IET LUT Arun R Murthy
2025-02-14 9:47 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 05/14] drm/i915/histogram: Define registers for histogram Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 06/14] drm/i915/histogram: Add support " Arun R Murthy
2025-02-14 10:02 ` Kandpal, Suraj
2025-02-14 10:24 ` Kandpal, Suraj
2025-02-17 6:09 ` Kandpal, Suraj
2025-02-16 14:32 ` [v8,06/14] " Thasleem, Mohammed
2025-01-28 15:51 ` [PATCH v8 07/14] drm/xe: Add histogram support to Xe builds Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 08/14] drm/i915/histogram: histogram interrupt handling Arun R Murthy
2025-02-14 10:19 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm histogram Arun R Murthy
2025-02-14 10:22 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 10/14] drm/i915/iet: Add support to writing the IET LUT data Arun R Murthy
2025-02-17 4:23 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 11/14] drm/i915/crtc: Hook i915 IET LUT with the drm IET properties Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 12/14] drm/i915/histogram: histogram delay counter doesnt reset Arun R Murthy
2025-01-28 15:51 ` [PATCH v8 13/14] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
2025-02-17 6:25 ` Kandpal, Suraj
2025-01-28 15:51 ` [PATCH v8 14/14] drm/i915/histogram: Enable pipe dithering Arun R Murthy
2025-02-17 6:20 ` Kandpal, Suraj
2025-01-28 18:16 ` ✓ CI.Patch_applied: success for Display Global Histogram (rev9) Patchwork
2025-01-28 18:16 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-28 18:18 ` ✓ CI.KUnit: success " Patchwork
2025-01-28 18:47 ` ✓ CI.Build: " Patchwork
2025-01-28 18:49 ` ✗ CI.Hooks: failure " Patchwork
2025-01-28 18:50 ` ✗ CI.checksparse: warning " Patchwork
2025-01-28 19:24 ` ✓ Xe.CI.BAT: success " Patchwork
2025-01-29 7:39 ` ✗ Xe.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).