stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>,
	Jun Lei <Jun.Lei@amd.com>, Qingqing Zhuo <qingqing.zhuo@amd.com>,
	Daniel Wheeler <daniel.wheeler@amd.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.13 044/266] drm/amd/display: fix odm scaling
Date: Thu, 15 Jul 2021 20:36:39 +0200	[thread overview]
Message-ID: <20210715182622.061596699@linuxfoundation.org> (raw)
In-Reply-To: <20210715182613.933608881@linuxfoundation.org>

From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>

[ Upstream commit 6566cae7aef30da8833f1fa0eb854baf33b96676 ]

There are two issues with scaling calculations, odm recout
calculation and matching viewport to actual recout.

This change fixes both issues. Odm recout calculation via
special casing and viewport matching issue by reworking
the viewport calcualtion to use scaling ratios and recout
to derrive the required offset and size.

Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../gpu/drm/amd/display/dc/core/dc_resource.c | 568 +++++++-----------
 drivers/gpu/drm/amd/display/dc/dc_types.h     |   5 -
 .../drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c |  12 +-
 .../drm/amd/display/dc/dcn20/dcn20_resource.c |  14 +-
 .../amd/display/dc/dml/display_mode_structs.h |   2 +
 .../drm/amd/display/dc/dml/display_mode_vba.c |  13 +
 .../gpu/drm/amd/display/dc/inc/hw/transform.h |   4 -
 7 files changed, 232 insertions(+), 386 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
index 8cb937c046aa..78278a10d899 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -695,124 +695,23 @@ static void calculate_split_count_and_index(struct pipe_ctx *pipe_ctx, int *spli
 	}
 }
 
-static void calculate_viewport(struct pipe_ctx *pipe_ctx)
+/*
+ * This is a preliminary vp size calculation to allow us to check taps support.
+ * The result is completely overridden afterwards.
+ */
+static void calculate_viewport_size(struct pipe_ctx *pipe_ctx)
 {
-	const struct dc_plane_state *plane_state = pipe_ctx->plane_state;
-	const struct dc_stream_state *stream = pipe_ctx->stream;
 	struct scaler_data *data = &pipe_ctx->plane_res.scl_data;
-	struct rect surf_src = plane_state->src_rect;
-	struct rect clip, dest;
-	int vpc_div = (data->format == PIXEL_FORMAT_420BPP8
-			|| data->format == PIXEL_FORMAT_420BPP10) ? 2 : 1;
-	int split_count = 0;
-	int split_idx = 0;
-	bool orthogonal_rotation, flip_y_start, flip_x_start;
-
-	calculate_split_count_and_index(pipe_ctx, &split_count, &split_idx);
 
-	if (stream->view_format == VIEW_3D_FORMAT_SIDE_BY_SIDE ||
-		stream->view_format == VIEW_3D_FORMAT_TOP_AND_BOTTOM) {
-		split_count = 0;
-		split_idx = 0;
-	}
-
-	/* The actual clip is an intersection between stream
-	 * source and surface clip
-	 */
-	dest = plane_state->dst_rect;
-	clip.x = stream->src.x > plane_state->clip_rect.x ?
-			stream->src.x : plane_state->clip_rect.x;
-
-	clip.width = stream->src.x + stream->src.width <
-			plane_state->clip_rect.x + plane_state->clip_rect.width ?
-			stream->src.x + stream->src.width - clip.x :
-			plane_state->clip_rect.x + plane_state->clip_rect.width - clip.x ;
-
-	clip.y = stream->src.y > plane_state->clip_rect.y ?
-			stream->src.y : plane_state->clip_rect.y;
-
-	clip.height = stream->src.y + stream->src.height <
-			plane_state->clip_rect.y + plane_state->clip_rect.height ?
-			stream->src.y + stream->src.height - clip.y :
-			plane_state->clip_rect.y + plane_state->clip_rect.height - clip.y ;
-
-	/*
-	 * Need to calculate how scan origin is shifted in vp space
-	 * to correctly rotate clip and dst
-	 */
-	get_vp_scan_direction(
-			plane_state->rotation,
-			plane_state->horizontal_mirror,
-			&orthogonal_rotation,
-			&flip_y_start,
-			&flip_x_start);
-
-	if (orthogonal_rotation) {
-		swap(clip.x, clip.y);
-		swap(clip.width, clip.height);
-		swap(dest.x, dest.y);
-		swap(dest.width, dest.height);
-	}
-	if (flip_x_start) {
-		clip.x = dest.x + dest.width - clip.x - clip.width;
-		dest.x = 0;
-	}
-	if (flip_y_start) {
-		clip.y = dest.y + dest.height - clip.y - clip.height;
-		dest.y = 0;
-	}
-
-	/* offset = surf_src.ofs + (clip.ofs - surface->dst_rect.ofs) * scl_ratio
-	 * num_pixels = clip.num_pix * scl_ratio
-	 */
-	data->viewport.x = surf_src.x + (clip.x - dest.x) * surf_src.width / dest.width;
-	data->viewport.width = clip.width * surf_src.width / dest.width;
-
-	data->viewport.y = surf_src.y + (clip.y - dest.y) * surf_src.height / dest.height;
-	data->viewport.height = clip.height * surf_src.height / dest.height;
-
-	/* Handle split */
-	if (split_count) {
-		/* extra pixels in the division remainder need to go to pipes after
-		 * the extra pixel index minus one(epimo) defined here as:
-		 */
-		int epimo = 0;
-
-		if (orthogonal_rotation) {
-			if (flip_y_start)
-				split_idx = split_count - split_idx;
-
-			epimo = split_count - data->viewport.height % (split_count + 1);
-
-			data->viewport.y += (data->viewport.height / (split_count + 1)) * split_idx;
-			if (split_idx > epimo)
-				data->viewport.y += split_idx - epimo - 1;
-			data->viewport.height = data->viewport.height / (split_count + 1) + (split_idx > epimo ? 1 : 0);
-		} else {
-			if (flip_x_start)
-				split_idx = split_count - split_idx;
-
-			epimo = split_count - data->viewport.width % (split_count + 1);
-
-			data->viewport.x += (data->viewport.width / (split_count + 1)) * split_idx;
-			if (split_idx > epimo)
-				data->viewport.x += split_idx - epimo - 1;
-			data->viewport.width = data->viewport.width / (split_count + 1) + (split_idx > epimo ? 1 : 0);
-		}
+	data->viewport.width = dc_fixpt_ceil(dc_fixpt_mul_int(data->ratios.horz, data->recout.width));
+	data->viewport.height = dc_fixpt_ceil(dc_fixpt_mul_int(data->ratios.vert, data->recout.height));
+	data->viewport_c.width = dc_fixpt_ceil(dc_fixpt_mul_int(data->ratios.horz_c, data->recout.width));
+	data->viewport_c.height = dc_fixpt_ceil(dc_fixpt_mul_int(data->ratios.vert_c, data->recout.height));
+	if (pipe_ctx->plane_state->rotation == ROTATION_ANGLE_90 ||
+			pipe_ctx->plane_state->rotation == ROTATION_ANGLE_270) {
+		swap(data->viewport.width, data->viewport.height);
+		swap(data->viewport_c.width, data->viewport_c.height);
 	}
-
-	/* Round down, compensate in init */
-	data->viewport_c.x = data->viewport.x / vpc_div;
-	data->viewport_c.y = data->viewport.y / vpc_div;
-	data->inits.h_c = (data->viewport.x % vpc_div) != 0 ? dc_fixpt_half : dc_fixpt_zero;
-	data->inits.v_c = (data->viewport.y % vpc_div) != 0 ? dc_fixpt_half : dc_fixpt_zero;
-
-	/* Round up, assume original video size always even dimensions */
-	data->viewport_c.width = (data->viewport.width + vpc_div - 1) / vpc_div;
-	data->viewport_c.height = (data->viewport.height + vpc_div - 1) / vpc_div;
-
-	data->viewport_unadjusted = data->viewport;
-	data->viewport_c_unadjusted = data->viewport_c;
 }
 
 static void calculate_recout(struct pipe_ctx *pipe_ctx)
@@ -821,26 +720,21 @@ static void calculate_recout(struct pipe_ctx *pipe_ctx)
 	const struct dc_stream_state *stream = pipe_ctx->stream;
 	struct scaler_data *data = &pipe_ctx->plane_res.scl_data;
 	struct rect surf_clip = plane_state->clip_rect;
-	bool pri_split_tb = pipe_ctx->bottom_pipe &&
-			pipe_ctx->bottom_pipe->plane_state == pipe_ctx->plane_state &&
-			stream->view_format == VIEW_3D_FORMAT_TOP_AND_BOTTOM;
-	bool sec_split_tb = pipe_ctx->top_pipe &&
-			pipe_ctx->top_pipe->plane_state == pipe_ctx->plane_state &&
-			stream->view_format == VIEW_3D_FORMAT_TOP_AND_BOTTOM;
-	int split_count = 0;
-	int split_idx = 0;
+	bool split_tb = stream->view_format == VIEW_3D_FORMAT_TOP_AND_BOTTOM;
+	int split_count, split_idx;
 
 	calculate_split_count_and_index(pipe_ctx, &split_count, &split_idx);
+	if (stream->view_format == VIEW_3D_FORMAT_SIDE_BY_SIDE)
+		split_idx = 0;
 
 	/*
 	 * Only the leftmost ODM pipe should be offset by a nonzero distance
 	 */
-	if (!pipe_ctx->prev_odm_pipe) {
+	if (!pipe_ctx->prev_odm_pipe || split_idx == split_count) {
 		data->recout.x = stream->dst.x;
 		if (stream->src.x < surf_clip.x)
 			data->recout.x += (surf_clip.x - stream->src.x) * stream->dst.width
 						/ stream->src.width;
-
 	} else
 		data->recout.x = 0;
 
@@ -861,26 +755,31 @@ static void calculate_recout(struct pipe_ctx *pipe_ctx)
 	if (data->recout.height + data->recout.y > stream->dst.y + stream->dst.height)
 		data->recout.height = stream->dst.y + stream->dst.height - data->recout.y;
 
-	/* Handle h & v split, handle rotation using viewport */
-	if (sec_split_tb) {
-		data->recout.y += data->recout.height / 2;
-		/* Floor primary pipe, ceil 2ndary pipe */
-		data->recout.height = (data->recout.height + 1) / 2;
-	} else if (pri_split_tb)
+	/* Handle h & v split */
+	if (split_tb) {
+		ASSERT(data->recout.height % 2 == 0);
 		data->recout.height /= 2;
-	else if (split_count) {
-		/* extra pixels in the division remainder need to go to pipes after
-		 * the extra pixel index minus one(epimo) defined here as:
-		 */
-		int epimo = split_count - data->recout.width % (split_count + 1);
-
-		/*no recout offset due to odm */
+	} else if (split_count) {
 		if (!pipe_ctx->next_odm_pipe && !pipe_ctx->prev_odm_pipe) {
+			/* extra pixels in the division remainder need to go to pipes after
+			 * the extra pixel index minus one(epimo) defined here as:
+			 */
+			int epimo = split_count - data->recout.width % (split_count + 1);
+
 			data->recout.x += (data->recout.width / (split_count + 1)) * split_idx;
 			if (split_idx > epimo)
 				data->recout.x += split_idx - epimo - 1;
+			ASSERT(stream->view_format != VIEW_3D_FORMAT_SIDE_BY_SIDE || data->recout.width % 2 == 0);
+			data->recout.width = data->recout.width / (split_count + 1) + (split_idx > epimo ? 1 : 0);
+		} else {
+			/* odm */
+			if (split_idx == split_count) {
+				/* rightmost pipe is the remainder recout */
+				data->recout.width -= data->h_active * split_count - data->recout.x;
+				data->recout.x = 0;
+			} else
+				data->recout.width = data->h_active - data->recout.x;
 		}
-		data->recout.width = data->recout.width / (split_count + 1) + (split_idx > epimo ? 1 : 0);
 	}
 }
 
@@ -934,9 +833,15 @@ static void calculate_scaling_ratios(struct pipe_ctx *pipe_ctx)
 			pipe_ctx->plane_res.scl_data.ratios.vert_c, 19);
 }
 
-static inline void adjust_vp_and_init_for_seamless_clip(
+
+/*
+ * We completely calculate vp offset, size and inits here based entirely on scaling
+ * ratios and recout for pixel perfect pipe combine.
+ */
+static void calculate_init_and_vp(
 		bool flip_scan_dir,
-		int recout_skip,
+		int recout_offset_within_recout_full,
+		int recout_size,
 		int src_size,
 		int taps,
 		struct fixed31_32 ratio,
@@ -944,91 +849,87 @@ static inline void adjust_vp_and_init_for_seamless_clip(
 		int *vp_offset,
 		int *vp_size)
 {
-	if (!flip_scan_dir) {
-		/* Adjust for viewport end clip-off */
-		if ((*vp_offset + *vp_size) < src_size) {
-			int vp_clip = src_size - *vp_size - *vp_offset;
-			int int_part = dc_fixpt_floor(dc_fixpt_sub(*init, ratio));
-
-			int_part = int_part > 0 ? int_part : 0;
-			*vp_size += int_part < vp_clip ? int_part : vp_clip;
-		}
-
-		/* Adjust for non-0 viewport offset */
-		if (*vp_offset) {
-			int int_part;
-
-			*init = dc_fixpt_add(*init, dc_fixpt_mul_int(ratio, recout_skip));
-			int_part = dc_fixpt_floor(*init) - *vp_offset;
-			if (int_part < taps) {
-				int int_adj = *vp_offset >= (taps - int_part) ?
-							(taps - int_part) : *vp_offset;
-				*vp_offset -= int_adj;
-				*vp_size += int_adj;
-				int_part += int_adj;
-			} else if (int_part > taps) {
-				*vp_offset += int_part - taps;
-				*vp_size -= int_part - taps;
-				int_part = taps;
-			}
-			init->value &= 0xffffffff;
-			*init = dc_fixpt_add_int(*init, int_part);
-		}
-	} else {
-		/* Adjust for non-0 viewport offset */
-		if (*vp_offset) {
-			int int_part = dc_fixpt_floor(dc_fixpt_sub(*init, ratio));
-
-			int_part = int_part > 0 ? int_part : 0;
-			*vp_size += int_part < *vp_offset ? int_part : *vp_offset;
-			*vp_offset -= int_part < *vp_offset ? int_part : *vp_offset;
-		}
+	struct fixed31_32 temp;
+	int int_part;
 
-		/* Adjust for viewport end clip-off */
-		if ((*vp_offset + *vp_size) < src_size) {
-			int int_part;
-			int end_offset = src_size - *vp_offset - *vp_size;
-
-			/*
-			 * this is init if vp had no offset, keep in mind this is from the
-			 * right side of vp due to scan direction
-			 */
-			*init = dc_fixpt_add(*init, dc_fixpt_mul_int(ratio, recout_skip));
-			/*
-			 * this is the difference between first pixel of viewport available to read
-			 * and init position, takning into account scan direction
-			 */
-			int_part = dc_fixpt_floor(*init) - end_offset;
-			if (int_part < taps) {
-				int int_adj = end_offset >= (taps - int_part) ?
-							(taps - int_part) : end_offset;
-				*vp_size += int_adj;
-				int_part += int_adj;
-			} else if (int_part > taps) {
-				*vp_size += int_part - taps;
-				int_part = taps;
-			}
-			init->value &= 0xffffffff;
-			*init = dc_fixpt_add_int(*init, int_part);
-		}
+	/*
+	 * First of the taps starts sampling pixel number <init_int_part> corresponding to recout
+	 * pixel 1. Next recout pixel samples int part of <init + scaling ratio> and so on.
+	 * All following calculations are based on this logic.
+	 *
+	 * Init calculated according to formula:
+	 * 	init = (scaling_ratio + number_of_taps + 1) / 2
+	 * 	init_bot = init + scaling_ratio
+	 * 	to get pixel perfect combine add the fraction from calculating vp offset
+	 */
+	temp = dc_fixpt_mul_int(ratio, recout_offset_within_recout_full);
+	*vp_offset = dc_fixpt_floor(temp);
+	temp.value &= 0xffffffff;
+	*init = dc_fixpt_truncate(dc_fixpt_add(dc_fixpt_div_int(
+			dc_fixpt_add_int(ratio, taps + 1), 2), temp), 19);
+	/*
+	 * If viewport has non 0 offset and there are more taps than covered by init then
+	 * we should decrease the offset and increase init so we are never sampling
+	 * outside of viewport.
+	 */
+	int_part = dc_fixpt_floor(*init);
+	if (int_part < taps) {
+		int_part = taps - int_part;
+		if (int_part > *vp_offset)
+			int_part = *vp_offset;
+		*vp_offset -= int_part;
+		*init = dc_fixpt_add_int(*init, int_part);
 	}
+	/*
+	 * If taps are sampling outside of viewport at end of recout and there are more pixels
+	 * available in the surface we should increase the viewport size, regardless set vp to
+	 * only what is used.
+	 */
+	temp = dc_fixpt_add(*init, dc_fixpt_mul_int(ratio, recout_size - 1));
+	*vp_size = dc_fixpt_floor(temp);
+	if (*vp_size + *vp_offset > src_size)
+		*vp_size = src_size - *vp_offset;
+
+	/* We did all the math assuming we are scanning same direction as display does,
+	 * however mirror/rotation changes how vp scans vs how it is offset. If scan direction
+	 * is flipped we simply need to calculate offset from the other side of plane.
+	 * Note that outside of viewport all scaling hardware works in recout space.
+	 */
+	if (flip_scan_dir)
+		*vp_offset = src_size - *vp_offset - *vp_size;
 }
 
-static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx)
+static void calculate_inits_and_viewports(struct pipe_ctx *pipe_ctx)
 {
 	const struct dc_plane_state *plane_state = pipe_ctx->plane_state;
 	const struct dc_stream_state *stream = pipe_ctx->stream;
-	struct pipe_ctx *odm_pipe = pipe_ctx;
 	struct scaler_data *data = &pipe_ctx->plane_res.scl_data;
-	struct rect src = pipe_ctx->plane_state->src_rect;
-	int recout_skip_h, recout_skip_v, surf_size_h, surf_size_v;
+	struct rect src = plane_state->src_rect;
 	int vpc_div = (data->format == PIXEL_FORMAT_420BPP8
-			|| data->format == PIXEL_FORMAT_420BPP10) ? 2 : 1;
+				|| data->format == PIXEL_FORMAT_420BPP10) ? 2 : 1;
+	int split_count, split_idx, ro_lb, ro_tb, recout_full_x, recout_full_y;
 	bool orthogonal_rotation, flip_vert_scan_dir, flip_horz_scan_dir;
-	int odm_idx = 0;
 
+	calculate_split_count_and_index(pipe_ctx, &split_count, &split_idx);
 	/*
-	 * Need to calculate the scan direction for viewport to make adjustments
+	 * recout full is what the recout would have been if we didnt clip
+	 * the source plane at all. We only care about left(ro_lb) and top(ro_tb)
+	 * offsets of recout within recout full because those are the directions
+	 * we scan from and therefore the only ones that affect inits.
+	 */
+	recout_full_x = stream->dst.x + (plane_state->dst_rect.x - stream->src.x)
+			* stream->dst.width / stream->src.width;
+	recout_full_y = stream->dst.y + (plane_state->dst_rect.y - stream->src.y)
+			* stream->dst.height / stream->src.height;
+	if (pipe_ctx->prev_odm_pipe && split_idx)
+		ro_lb = data->h_active * split_idx - recout_full_x;
+	else
+		ro_lb = data->recout.x - recout_full_x;
+	ro_tb = data->recout.y - recout_full_y;
+	ASSERT(ro_lb >= 0 && ro_tb >= 0);
+
+	/*
+	 * Work in recout rotation since that requires less transformations
 	 */
 	get_vp_scan_direction(
 			plane_state->rotation,
@@ -1037,145 +938,62 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx)
 			&flip_vert_scan_dir,
 			&flip_horz_scan_dir);
 
-	/* Calculate src rect rotation adjusted to recout space */
-	surf_size_h = src.x + src.width;
-	surf_size_v = src.y + src.height;
-	if (flip_horz_scan_dir)
-		src.x = 0;
-	if (flip_vert_scan_dir)
-		src.y = 0;
 	if (orthogonal_rotation) {
-		swap(src.x, src.y);
 		swap(src.width, src.height);
+		swap(flip_vert_scan_dir, flip_horz_scan_dir);
 	}
 
-	/*modified recout_skip_h calculation due to odm having no recout offset*/
-	while (odm_pipe->prev_odm_pipe) {
-		odm_idx++;
-		odm_pipe = odm_pipe->prev_odm_pipe;
-	}
-	/*odm_pipe is the leftmost pipe in the ODM group*/
-	recout_skip_h = odm_idx * data->recout.width;
-
-	/* Recout matching initial vp offset = recout_offset - (stream dst offset +
-	 *			((surf dst offset - stream src offset) * 1/ stream scaling ratio)
-	 *			- (surf surf_src offset * 1/ full scl ratio))
-	 */
-	recout_skip_h += odm_pipe->plane_res.scl_data.recout.x
-				- (stream->dst.x + (plane_state->dst_rect.x - stream->src.x)
-					* stream->dst.width / stream->src.width -
-					src.x * plane_state->dst_rect.width / src.width
-					* stream->dst.width / stream->src.width);
-
-
-	recout_skip_v = data->recout.y - (stream->dst.y + (plane_state->dst_rect.y - stream->src.y)
-					* stream->dst.height / stream->src.height -
-					src.y * plane_state->dst_rect.height / src.height
-					* stream->dst.height / stream->src.height);
-	if (orthogonal_rotation)
-		swap(recout_skip_h, recout_skip_v);
-	/*
-	 * Init calculated according to formula:
-	 * 	init = (scaling_ratio + number_of_taps + 1) / 2
-	 * 	init_bot = init + scaling_ratio
-	 * 	init_c = init + truncated_vp_c_offset(from calculate viewport)
-	 */
-	data->inits.h = dc_fixpt_truncate(dc_fixpt_div_int(
-			dc_fixpt_add_int(data->ratios.horz, data->taps.h_taps + 1), 2), 19);
-
-	data->inits.h_c = dc_fixpt_truncate(dc_fixpt_add(data->inits.h_c, dc_fixpt_div_int(
-			dc_fixpt_add_int(data->ratios.horz_c, data->taps.h_taps_c + 1), 2)), 19);
-
-	data->inits.v = dc_fixpt_truncate(dc_fixpt_div_int(
-			dc_fixpt_add_int(data->ratios.vert, data->taps.v_taps + 1), 2), 19);
-
-	data->inits.v_c = dc_fixpt_truncate(dc_fixpt_add(data->inits.v_c, dc_fixpt_div_int(
-			dc_fixpt_add_int(data->ratios.vert_c, data->taps.v_taps_c + 1), 2)), 19);
-
-	/*
-	 * Taps, inits and scaling ratios are in recout space need to rotate
-	 * to viewport rotation before adjustment
-	 */
-	adjust_vp_and_init_for_seamless_clip(
+	calculate_init_and_vp(
 			flip_horz_scan_dir,
-			recout_skip_h,
-			surf_size_h,
-			orthogonal_rotation ? data->taps.v_taps : data->taps.h_taps,
-			orthogonal_rotation ? data->ratios.vert : data->ratios.horz,
-			orthogonal_rotation ? &data->inits.v : &data->inits.h,
+			ro_lb,
+			data->recout.width,
+			src.width,
+			data->taps.h_taps,
+			data->ratios.horz,
+			&data->inits.h,
 			&data->viewport.x,
 			&data->viewport.width);
-	adjust_vp_and_init_for_seamless_clip(
+	calculate_init_and_vp(
 			flip_horz_scan_dir,
-			recout_skip_h,
-			surf_size_h / vpc_div,
-			orthogonal_rotation ? data->taps.v_taps_c : data->taps.h_taps_c,
-			orthogonal_rotation ? data->ratios.vert_c : data->ratios.horz_c,
-			orthogonal_rotation ? &data->inits.v_c : &data->inits.h_c,
+			ro_lb,
+			data->recout.width,
+			src.width / vpc_div,
+			data->taps.h_taps_c,
+			data->ratios.horz_c,
+			&data->inits.h_c,
 			&data->viewport_c.x,
 			&data->viewport_c.width);
-	adjust_vp_and_init_for_seamless_clip(
+	calculate_init_and_vp(
 			flip_vert_scan_dir,
-			recout_skip_v,
-			surf_size_v,
-			orthogonal_rotation ? data->taps.h_taps : data->taps.v_taps,
-			orthogonal_rotation ? data->ratios.horz : data->ratios.vert,
-			orthogonal_rotation ? &data->inits.h : &data->inits.v,
+			ro_tb,
+			data->recout.height,
+			src.height,
+			data->taps.v_taps,
+			data->ratios.vert,
+			&data->inits.v,
 			&data->viewport.y,
 			&data->viewport.height);
-	adjust_vp_and_init_for_seamless_clip(
+	calculate_init_and_vp(
 			flip_vert_scan_dir,
-			recout_skip_v,
-			surf_size_v / vpc_div,
-			orthogonal_rotation ? data->taps.h_taps_c : data->taps.v_taps_c,
-			orthogonal_rotation ? data->ratios.horz_c : data->ratios.vert_c,
-			orthogonal_rotation ? &data->inits.h_c : &data->inits.v_c,
+			ro_tb,
+			data->recout.height,
+			src.height / vpc_div,
+			data->taps.v_taps_c,
+			data->ratios.vert_c,
+			&data->inits.v_c,
 			&data->viewport_c.y,
 			&data->viewport_c.height);
-
-	/* Interlaced inits based on final vert inits */
-	data->inits.v_bot = dc_fixpt_add(data->inits.v, data->ratios.vert);
-	data->inits.v_c_bot = dc_fixpt_add(data->inits.v_c, data->ratios.vert_c);
-
-}
-
-/*
- * When handling 270 rotation in mixed SLS mode, we have
- * stream->timing.h_border_left that is non zero.  If we are doing
- * pipe-splitting, this h_border_left value gets added to recout.x and when it
- * calls calculate_inits_and_adj_vp() and
- * adjust_vp_and_init_for_seamless_clip(), it can cause viewport.height for a
- * pipe to be incorrect.
- *
- * To fix this, instead of using stream->timing.h_border_left, we can use
- * stream->dst.x to represent the border instead.  So we will set h_border_left
- * to 0 and shift the appropriate amount in stream->dst.x.  We will then
- * perform all calculations in resource_build_scaling_params() based on this
- * and then restore the h_border_left and stream->dst.x to their original
- * values.
- *
- * shift_border_left_to_dst() will shift the amount of h_border_left to
- * stream->dst.x and set h_border_left to 0.  restore_border_left_from_dst()
- * will restore h_border_left and stream->dst.x back to their original values
- * We also need to make sure pipe_ctx->plane_res.scl_data.h_active uses the
- * original h_border_left value in its calculation.
- */
-static int shift_border_left_to_dst(struct pipe_ctx *pipe_ctx)
-{
-	int store_h_border_left = pipe_ctx->stream->timing.h_border_left;
-
-	if (store_h_border_left) {
-		pipe_ctx->stream->timing.h_border_left = 0;
-		pipe_ctx->stream->dst.x += store_h_border_left;
+	if (orthogonal_rotation) {
+		swap(data->viewport.x, data->viewport.y);
+		swap(data->viewport.width, data->viewport.height);
+		swap(data->viewport_c.x, data->viewport_c.y);
+		swap(data->viewport_c.width, data->viewport_c.height);
 	}
-	return store_h_border_left;
-}
-
-static void restore_border_left_from_dst(struct pipe_ctx *pipe_ctx,
-					 int store_h_border_left)
-{
-	pipe_ctx->stream->dst.x -= store_h_border_left;
-	pipe_ctx->stream->timing.h_border_left = store_h_border_left;
+	data->viewport.x += src.x;
+	data->viewport.y += src.y;
+	ASSERT(src.x % vpc_div == 0 && src.y % vpc_div == 0);
+	data->viewport_c.x += src.x / vpc_div;
+	data->viewport_c.y += src.y / vpc_div;
 }
 
 bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
@@ -1183,48 +1001,42 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
 	const struct dc_plane_state *plane_state = pipe_ctx->plane_state;
 	struct dc_crtc_timing *timing = &pipe_ctx->stream->timing;
 	bool res = false;
-	int store_h_border_left = shift_border_left_to_dst(pipe_ctx);
 	DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
-	/* Important: scaling ratio calculation requires pixel format,
-	 * lb depth calculation requires recout and taps require scaling ratios.
-	 * Inits require viewport, taps, ratios and recout of split pipe
-	 */
+
 	pipe_ctx->plane_res.scl_data.format = convert_pixel_format_to_dalsurface(
 			pipe_ctx->plane_state->format);
 
-	calculate_scaling_ratios(pipe_ctx);
-
-	calculate_viewport(pipe_ctx);
+	/* Timing borders are part of vactive that we are also supposed to skip in addition
+	 * to any stream dst offset. Since dm logic assumes dst is in addressable
+	 * space we need to add the the left and top borders to dst offsets temporarily.
+	 * TODO: fix in DM, stream dst is supposed to be in vactive
+	 */
+	pipe_ctx->stream->dst.x += timing->h_border_left;
+	pipe_ctx->stream->dst.y += timing->v_border_top;
 
-	if (pipe_ctx->plane_res.scl_data.viewport.height < MIN_VIEWPORT_SIZE ||
-		pipe_ctx->plane_res.scl_data.viewport.width < MIN_VIEWPORT_SIZE) {
-		if (store_h_border_left) {
-			restore_border_left_from_dst(pipe_ctx,
-				store_h_border_left);
-		}
-		return false;
-	}
+	/* Calculate H and V active size */
+	pipe_ctx->plane_res.scl_data.h_active = timing->h_addressable +
+			timing->h_border_left + timing->h_border_right;
+	pipe_ctx->plane_res.scl_data.v_active = timing->v_addressable +
+		timing->v_border_top + timing->v_border_bottom;
+	if (pipe_ctx->next_odm_pipe || pipe_ctx->prev_odm_pipe)
+		pipe_ctx->plane_res.scl_data.h_active /= get_num_odm_splits(pipe_ctx) + 1;
 
+	/* depends on h_active */
 	calculate_recout(pipe_ctx);
+	/* depends on pixel format */
+	calculate_scaling_ratios(pipe_ctx);
+	/* depends on scaling ratios and recout, does not calculate offset yet */
+	calculate_viewport_size(pipe_ctx);
 
-	/**
+	/*
+	 * LB calculations depend on vp size, h/v_active and scaling ratios
 	 * Setting line buffer pixel depth to 24bpp yields banding
 	 * on certain displays, such as the Sharp 4k
 	 */
 	pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
 	pipe_ctx->plane_res.scl_data.lb_params.alpha_en = plane_state->per_pixel_alpha;
 
-	pipe_ctx->plane_res.scl_data.recout.x += timing->h_border_left;
-	pipe_ctx->plane_res.scl_data.recout.y += timing->v_border_top;
-
-	pipe_ctx->plane_res.scl_data.h_active = timing->h_addressable +
-		store_h_border_left + timing->h_border_right;
-	pipe_ctx->plane_res.scl_data.v_active = timing->v_addressable +
-		timing->v_border_top + timing->v_border_bottom;
-	if (pipe_ctx->next_odm_pipe || pipe_ctx->prev_odm_pipe)
-		pipe_ctx->plane_res.scl_data.h_active /= get_num_odm_splits(pipe_ctx) + 1;
-
-	/* Taps calculations */
 	if (pipe_ctx->plane_res.xfm != NULL)
 		res = pipe_ctx->plane_res.xfm->funcs->transform_get_optimal_number_of_taps(
 				pipe_ctx->plane_res.xfm, &pipe_ctx->plane_res.scl_data, &plane_state->scaling_quality);
@@ -1251,9 +1063,31 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
 					&plane_state->scaling_quality);
 	}
 
+	/*
+	 * Depends on recout, scaling ratios, h_active and taps
+	 * May need to re-check lb size after this in some obscure scenario
+	 */
 	if (res)
-		/* May need to re-check lb size after this in some obscure scenario */
-		calculate_inits_and_adj_vp(pipe_ctx);
+		calculate_inits_and_viewports(pipe_ctx);
+
+	/*
+	 * Handle side by side and top bottom 3d recout offsets after vp calculation
+	 * since 3d is special and needs to calculate vp as if there is no recout offset
+	 * This may break with rotation, good thing we aren't mixing hw rotation and 3d
+	 */
+	if (pipe_ctx->top_pipe && pipe_ctx->top_pipe->plane_state == plane_state) {
+		ASSERT(plane_state->rotation == ROTATION_ANGLE_0 ||
+			(pipe_ctx->stream->view_format != VIEW_3D_FORMAT_TOP_AND_BOTTOM &&
+				pipe_ctx->stream->view_format != VIEW_3D_FORMAT_SIDE_BY_SIDE));
+		if (pipe_ctx->stream->view_format == VIEW_3D_FORMAT_TOP_AND_BOTTOM)
+			pipe_ctx->plane_res.scl_data.recout.y += pipe_ctx->plane_res.scl_data.recout.height;
+		else if (pipe_ctx->stream->view_format == VIEW_3D_FORMAT_SIDE_BY_SIDE)
+			pipe_ctx->plane_res.scl_data.recout.x += pipe_ctx->plane_res.scl_data.recout.width;
+	}
+
+	if (pipe_ctx->plane_res.scl_data.viewport.height < MIN_VIEWPORT_SIZE ||
+			pipe_ctx->plane_res.scl_data.viewport.width < MIN_VIEWPORT_SIZE)
+		res = false;
 
 	DC_LOG_SCALER("%s pipe %d:\nViewport: height:%d width:%d x:%d y:%d  Recout: height:%d width:%d x:%d y:%d  HACTIVE:%d VACTIVE:%d\n"
 			"src_rect: height:%d width:%d x:%d y:%d  dst_rect: height:%d width:%d x:%d y:%d  clip_rect: height:%d width:%d x:%d y:%d\n",
@@ -1282,8 +1116,8 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
 			plane_state->clip_rect.x,
 			plane_state->clip_rect.y);
 
-	if (store_h_border_left)
-		restore_border_left_from_dst(pipe_ctx, store_h_border_left);
+	pipe_ctx->stream->dst.x -= timing->h_border_left;
+	pipe_ctx->stream->dst.y -= timing->v_border_top;
 
 	return res;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dc_types.h b/drivers/gpu/drm/amd/display/dc/dc_types.h
index 432754eaf10b..a6f21f9de6e4 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_types.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_types.h
@@ -271,11 +271,6 @@ struct dc_edid_caps {
 	struct dc_panel_patch panel_patch;
 };
 
-struct view {
-	uint32_t width;
-	uint32_t height;
-};
-
 struct dc_mode_flags {
 	/* note: part of refresh rate flag*/
 	uint32_t INTERLACE :1;
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
index 98ab4b776924..a33f522a2648 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
@@ -631,8 +631,10 @@ static void dpp1_dscl_set_manual_ratio_init(
 		SCL_V_INIT_INT, init_int);
 
 	if (REG(SCL_VERT_FILTER_INIT_BOT)) {
-		init_frac = dc_fixpt_u0d19(data->inits.v_bot) << 5;
-		init_int = dc_fixpt_floor(data->inits.v_bot);
+		struct fixed31_32 bot = dc_fixpt_add(data->inits.v, data->ratios.vert);
+
+		init_frac = dc_fixpt_u0d19(bot) << 5;
+		init_int = dc_fixpt_floor(bot);
 		REG_SET_2(SCL_VERT_FILTER_INIT_BOT, 0,
 			SCL_V_INIT_FRAC_BOT, init_frac,
 			SCL_V_INIT_INT_BOT, init_int);
@@ -645,8 +647,10 @@ static void dpp1_dscl_set_manual_ratio_init(
 		SCL_V_INIT_INT_C, init_int);
 
 	if (REG(SCL_VERT_FILTER_INIT_BOT_C)) {
-		init_frac = dc_fixpt_u0d19(data->inits.v_c_bot) << 5;
-		init_int = dc_fixpt_floor(data->inits.v_c_bot);
+		struct fixed31_32 bot = dc_fixpt_add(data->inits.v_c, data->ratios.vert_c);
+
+		init_frac = dc_fixpt_u0d19(bot) << 5;
+		init_int = dc_fixpt_floor(bot);
 		REG_SET_2(SCL_VERT_FILTER_INIT_BOT_C, 0,
 			SCL_V_INIT_FRAC_BOT_C, init_frac,
 			SCL_V_INIT_INT_BOT_C, init_int);
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
index 8357aa3c41d5..d7d70b9bb387 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
@@ -2289,12 +2289,14 @@ int dcn20_populate_dml_pipes_from_context(
 
 			pipes[pipe_cnt].pipe.src.source_scan = pln->rotation == ROTATION_ANGLE_90
 					|| pln->rotation == ROTATION_ANGLE_270 ? dm_vert : dm_horz;
-			pipes[pipe_cnt].pipe.src.viewport_y_y = scl->viewport_unadjusted.y;
-			pipes[pipe_cnt].pipe.src.viewport_y_c = scl->viewport_c_unadjusted.y;
-			pipes[pipe_cnt].pipe.src.viewport_width = scl->viewport_unadjusted.width;
-			pipes[pipe_cnt].pipe.src.viewport_width_c = scl->viewport_c_unadjusted.width;
-			pipes[pipe_cnt].pipe.src.viewport_height = scl->viewport_unadjusted.height;
-			pipes[pipe_cnt].pipe.src.viewport_height_c = scl->viewport_c_unadjusted.height;
+			pipes[pipe_cnt].pipe.src.viewport_y_y = scl->viewport.y;
+			pipes[pipe_cnt].pipe.src.viewport_y_c = scl->viewport_c.y;
+			pipes[pipe_cnt].pipe.src.viewport_width = scl->viewport.width;
+			pipes[pipe_cnt].pipe.src.viewport_width_c = scl->viewport_c.width;
+			pipes[pipe_cnt].pipe.src.viewport_height = scl->viewport.height;
+			pipes[pipe_cnt].pipe.src.viewport_height_c = scl->viewport_c.height;
+			pipes[pipe_cnt].pipe.src.viewport_width_max = pln->src_rect.width;
+			pipes[pipe_cnt].pipe.src.viewport_height_max = pln->src_rect.height;
 			pipes[pipe_cnt].pipe.src.surface_width_y = pln->plane_size.surface_size.width;
 			pipes[pipe_cnt].pipe.src.surface_height_y = pln->plane_size.surface_size.height;
 			pipes[pipe_cnt].pipe.src.surface_width_c = pln->plane_size.chroma_size.width;
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
index 2ece3690bfa3..a0f0c54c863b 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
@@ -253,6 +253,8 @@ struct _vcs_dpi_display_pipe_source_params_st {
 	unsigned int viewport_y_c;
 	unsigned int viewport_width_c;
 	unsigned int viewport_height_c;
+	unsigned int viewport_width_max;
+	unsigned int viewport_height_max;
 	unsigned int data_pitch;
 	unsigned int data_pitch_c;
 	unsigned int meta_pitch;
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
index 2a967458065b..8e5c9d22b364 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
@@ -630,6 +630,19 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
 				}
 			}
 		}
+		if (src->viewport_width_max) {
+			int hdiv_c = src->source_format >= dm_420_8 && src->source_format <= dm_422_10 ? 2 : 1;
+			int vdiv_c = src->source_format >= dm_420_8 && src->source_format <= dm_420_12 ? 2 : 1;
+
+			if (mode_lib->vba.ViewportWidth[mode_lib->vba.NumberOfActivePlanes] > src->viewport_width_max)
+				mode_lib->vba.ViewportWidth[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width_max;
+			if (mode_lib->vba.ViewportHeight[mode_lib->vba.NumberOfActivePlanes] > src->viewport_height_max)
+				mode_lib->vba.ViewportHeight[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height_max;
+			if (mode_lib->vba.ViewportWidthChroma[mode_lib->vba.NumberOfActivePlanes] > src->viewport_width_max / hdiv_c)
+				mode_lib->vba.ViewportWidthChroma[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width_max / hdiv_c;
+			if (mode_lib->vba.ViewportHeightChroma[mode_lib->vba.NumberOfActivePlanes] > src->viewport_height_max / vdiv_c)
+				mode_lib->vba.ViewportHeightChroma[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height_max / vdiv_c;
+		}
 
 		if (pipes[k].pipe.src.immediate_flip) {
 			mode_lib->vba.ImmediateFlipSupport = true;
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h b/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h
index 2947d1b15512..2a0db2b03047 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h
@@ -162,9 +162,7 @@ struct scl_inits {
 	struct fixed31_32 h;
 	struct fixed31_32 h_c;
 	struct fixed31_32 v;
-	struct fixed31_32 v_bot;
 	struct fixed31_32 v_c;
-	struct fixed31_32 v_c_bot;
 };
 
 struct scaler_data {
@@ -173,8 +171,6 @@ struct scaler_data {
 	struct scaling_taps taps;
 	struct rect viewport;
 	struct rect viewport_c;
-	struct rect viewport_unadjusted;
-	struct rect viewport_c_unadjusted;
 	struct rect recout;
 	struct scaling_ratios ratios;
 	struct scl_inits inits;
-- 
2.30.2




  parent reply	other threads:[~2021-07-15 19:09 UTC|newest]

Thread overview: 277+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-15 18:35 [PATCH 5.13 000/266] 5.13.3-rc1 review Greg Kroah-Hartman
2021-07-15 18:35 ` [PATCH 5.13 001/266] drm/mxsfb: Dont select DRM_KMS_FB_HELPER Greg Kroah-Hartman
2021-07-15 18:35 ` [PATCH 5.13 002/266] drm/zte: " Greg Kroah-Hartman
2021-07-15 18:35 ` [PATCH 5.13 003/266] drm/ast: Fixed CVE for DP501 Greg Kroah-Hartman
2021-07-15 18:35 ` [PATCH 5.13 004/266] drm/amd/display: fix HDCP reset sequence on reinitialize Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 005/266] drm/amd/display: Revert wait vblank on update dpp clock Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 006/266] drm/amd/display: Fix BSOD with NULL check Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 007/266] drm/amd/amdgpu/sriov disable all ip hw status by default Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 008/266] drm/vc4: fix argument ordering in vc4_crtc_get_margins() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 009/266] drm/bridge: nwl-dsi: Force a full modeset when crtc_state->active is changed to be true Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 010/266] drm/imx: Add 8 pixel alignment fix Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 011/266] net: pch_gbe: Use proper accessors to BE data in pch_ptp_match() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 012/266] drm/amdgpu: change the default timeout for kernel compute queues Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 013/266] drm/amd/display: Fix clock table filling logic Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 014/266] drm/amd/display: fix use_max_lb flag for 420 pixel formats Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 015/266] clk: renesas: rcar-usb2-clock-sel: Fix error handling in .probe() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 016/266] MIPS: Loongson64: Fix build error secondary_kexec_args undeclared under !SMP Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 017/266] hugetlb: clear huge pte during flush function on mips platform Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 018/266] atm: iphase: fix possible use-after-free in ia_module_exit() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 019/266] mISDN: fix possible use-after-free in HFC_cleanup() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 020/266] atm: nicstar: Fix possible use-after-free in nicstar_cleanup() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 021/266] net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 022/266] drm/mediatek: Fix PM reference leak in mtk_crtc_ddp_hw_init() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 023/266] drm/panfrost: devfreq: Disable devfreq when num_supplies > 1 Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 024/266] net: mdio: ipq8064: add regmap config to disable REGCACHE Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 025/266] drm/bridge: lt9611: Add missing MODULE_DEVICE_TABLE Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 026/266] reiserfs: add check for invalid 1st journal block Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 027/266] drm/virtio: Fix double free on probe failure Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 028/266] net: mdio: provide shim implementation of devm_of_mdiobus_register Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 029/266] net/sched: cls_api: increase max_reclassify_loop Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 030/266] net: ethernet: ixp4xx: Fix return value check in ixp4xx_eth_probe() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 031/266] pinctrl: equilibrium: Add missing MODULE_DEVICE_TABLE Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 032/266] drm/scheduler: Fix hang when sched_entity released Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 033/266] drm/sched: Avoid data corruptions Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 034/266] udf: Fix NULL pointer dereference in udf_symlink function Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 035/266] net: xilinx_emaclite: Do not print real IOMEM pointer Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 036/266] drm/amd/pm: fix return value in aldebaran_set_mp1_state() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 037/266] drm/vc4: Fix clock source for VEC PixelValve on BCM2711 Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 038/266] drm/vc4: hdmi: Fix PM reference leak in vc4_hdmi_encoder_pre_crtc_co() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 039/266] e100: handle eeprom as little endian Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 040/266] igb: handle vlan types with checker enabled Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 041/266] igb: fix assignment on big endian machines Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 042/266] drm/bridge: cdns: Fix PM reference leak in cdns_dsi_transfer() Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 043/266] clk: renesas: r8a77995: Add ZA2 clock Greg Kroah-Hartman
2021-07-15 18:36 ` Greg Kroah-Hartman [this message]
2021-07-15 18:36 ` [PATCH 5.13 045/266] drm/amdgpu/swsmu/aldebaran: fix check in is_dpm_running Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 046/266] net/mlx5e: IPsec/rep_tc: Fix rep_tc_update_skb drops IPsec packet Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 047/266] net/mlx5: Fix lag port remapping logic Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 048/266] drm: rockchip: add missing registers for RK3188 Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 049/266] drm: rockchip: add missing registers for RK3066 Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 050/266] net: stmmac: the XPCS obscures a potential "PHY not found" error Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 051/266] RDMA/rtrs: Change MAX_SESS_QUEUE_DEPTH Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 052/266] drm/tegra: hub: Fix YUV support Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 053/266] clk: tegra: Fix refcounting of gate clocks Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 054/266] clk: tegra: Ensure that PLLU configuration is applied properly Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 055/266] drm: bridge: cdns-mhdp8546: Fix PM reference leak in Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 056/266] virtio-net: Add validation for used length Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 057/266] ipv6: use prandom_u32() for ID generation Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 058/266] MIPS: cpu-probe: Fix FPU detection on Ingenic JZ4760(B) Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 059/266] MIPS: ingenic: Select CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 060/266] drm/amdgpu: fix metadata_size for ubo ioctl queries Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 061/266] drm/amdgpu: fix sdma firmware version error in sriov Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 062/266] drm/amd/display: Avoid HDCP over-read and corruption Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 063/266] drm/amdgpu: remove unsafe optimization to drop preamble ib Greg Kroah-Hartman
2021-07-15 18:36 ` [PATCH 5.13 064/266] clk: tegra: tegra124-emc: Fix clock imbalance in emc_set_timing() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 065/266] net: tcp better handling of reordering then loss cases Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 066/266] icmp: fix lib conflict with trinity Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 067/266] RDMA/cxgb4: Fix missing error code in create_qp() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 068/266] dm space maps: dont reset space map allocation cursor when committing Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 069/266] dm writecache: dont split bios when overwriting contiguous cache content Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 070/266] dm: Fix dm_accept_partial_bio() relative to zone management commands Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 071/266] block: introduce BIO_ZONE_WRITE_LOCKED bio flag Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 072/266] net: bridge: mrp: Update ring transitions Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 073/266] pinctrl: mcp23s08: fix race condition in irq handler Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 074/266] ice: set the value of global config lock timeout longer Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 075/266] ice: fix clang warning regarding deadcode.DeadStores Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 076/266] virtio_net: Remove BUG() to avoid machine dead Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 077/266] net: mscc: ocelot: check return value after calling platform_get_resource() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 078/266] net: bcmgenet: " Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 079/266] net: mvpp2: " Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 080/266] net: micrel: " Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 081/266] net: moxa: Use devm_platform_get_and_ioremap_resource() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 082/266] drm/amd/display: Fix DCN 3.01 DSCCLK validation Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 083/266] drm/amd/display: Revert "Fix clock table filling logic" Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 084/266] drm/amd/display: Update scaling settings on modeset Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 085/266] drm/amd/display: Release MST resources on switch from MST to SST Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 086/266] drm/amd/display: Set DISPCLK_MAX_ERRDET_CYCLES to 7 Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 087/266] drm/amd/display: Fix off-by-one error in DML Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 088/266] drm/amd/display: Fix crash during MPO + ODM combine mode recalculation Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 089/266] net: phy: realtek: add delay to fix RXC generation issue Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 090/266] selftests: Clean forgotten resources as part of cleanup() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 091/266] net: sgi: ioc3-eth: check return value after calling platform_get_resource() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 092/266] drm/amdkfd: use allowed domain for vmbo validation Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 093/266] fjes: check return value after calling platform_get_resource() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 094/266] net: mido: mdio-mux-bcm-iproc: Use devm_platform_get_and_ioremap_resource() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 095/266] selinux: use __GFP_NOWARN with GFP_NOWAIT in the AVC Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 096/266] r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 097/266] drm/amd/display: Verify Gamma & Degamma LUT sizes in amdgpu_dm_atomic_check Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 098/266] ibmvnic: fix kernel build warnings in build_hdr_descs_arr Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 099/266] xfrm: Fix error reporting in xfrm_state_construct Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 100/266] dm writecache: commit just one block, not a full page Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 101/266] wlcore/wl12xx: Fix wl12xx get_mac error if device is in ELP Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 102/266] net: phy: nxp-c45-tja11xx: enable MDIO write access to the master/slave registers Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 103/266] wl1251: Fix possible buffer overflow in wl1251_cmd_scan Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 104/266] cw1200: add missing MODULE_DEVICE_TABLE Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 105/266] drm/amdkfd: fix circular locking on get_wave_state Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 106/266] drm/amd/display: Cover edge-case when changing DISPCLK WDIVIDER Greg Kroah-Hartman
2021-07-15 21:12   ` Stefan Lippers-Hollmann
2021-07-16 18:01     ` Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 107/266] drm/amdkfd: Fix circular lock in nocpsch path Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 108/266] net: hsr: dont check sequence number if tag removal is offloaded Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 109/266] bpf: Fix up register-based shifts in interpreter to silence KUBSAN Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 110/266] ext4: fix memory leak in ext4_fill_super Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 111/266] ice: fix incorrect payload indicator on PTYPE Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 112/266] ice: mark PTYPE 2 as reserved Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 113/266] mt76: mt7615: fix fixed-rate tx status reporting Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 114/266] mt76: dma: use ieee80211_tx_status_ext to free packets when tx fails Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 115/266] net: fix mistake path for netdev_features_strings Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 116/266] net: ipa: Add missing of_node_put() in ipa_firmware_load() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 117/266] net: sched: fix error return code in tcf_del_walker() Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 118/266] io_uring: fix false WARN_ONCE Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 119/266] drm/amdgpu: fix bad address translation for sienna_cichlid Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 120/266] drm/amdkfd: Walk through list with dqm lock hold Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 121/266] mt76: mt7915: fix tssi indication field of DBDC NICs Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 122/266] mt76: mt7921: fix reset under the deep sleep is enabled Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 123/266] mt76: mt7921: reset wfsys during hw probe Greg Kroah-Hartman
2021-07-15 18:37 ` [PATCH 5.13 124/266] mt76: mt7921: enable hw offloading for wep keys Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 125/266] mt76: connac: fix UC entry is being overwritten Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 126/266] mt76: connac: fix the maximum interval schedule scan can support Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 127/266] mt76: mt7915: fix IEEE80211_HE_PHY_CAP7_MAX_NC for station mode Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 128/266] mt76: fix iv and CCMP header insertion Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 129/266] rtl8xxxu: Fix device info for RTL8192EU devices Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 130/266] MIPS: add PMD table accounting into MIPSpmd_alloc_one Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 131/266] net: fec: add FEC_QUIRK_HAS_MULTI_QUEUES represents i.MX6SX ENET IP Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 132/266] net: fec: add ndo_select_queue to fix TX bandwidth fluctuations Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 133/266] atm: nicstar: use dma_free_coherent instead of kfree Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 134/266] atm: nicstar: register the interrupt handler in the right place Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 135/266] vsock: notify server to shutdown when client has pending signal Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 136/266] drm/amd/display: Fix edp_bootup_bl_level initialization issue Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 137/266] RDMA/rxe: Dont overwrite errno from ib_umem_get() Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 138/266] iwlwifi: mvm: dont change band on bound PHY contexts Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 139/266] iwlwifi: mvm: apply RX diversity per PHY context Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 140/266] iwlwifi: mvm: fix error print when session protection ends Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 141/266] iwlwifi: pcie: free IML DMA memory allocation Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 142/266] iwlwifi: pcie: fix context info freeing Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 143/266] rtw88: 8822c: update RF parameter tables to v62 Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 144/266] rtw88: add quirks to disable pci capabilities Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 145/266] sfc: avoid double pci_remove of VFs Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 146/266] sfc: error code if SRIOV cannot be disabled Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 147/266] wireless: wext-spy: Fix out-of-bounds warning Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 148/266] cfg80211: fix default HE tx bitrate mask in 2G band Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 149/266] mac80211: consider per-CPU statistics if present Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 150/266] mac80211_hwsim: add concurrent channels scanning support over virtio Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 151/266] mac80211: Properly WARN on HW scan before restart Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 152/266] IB/isert: Align target max I/O size to initiator size Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 153/266] media, bpf: Do not copy more entries than user space requested Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 154/266] net: retrieve netns cookie via getsocketopt Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 155/266] net: ip: avoid OOM kills with large UDP sends over loopback Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 156/266] RDMA/cma: Fix rdma_resolve_route() memory leak Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 157/266] Bluetooth: btusb: Fixed too many in-token issue for Mediatek Chip Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 158/266] Bluetooth: cmtp: fix file refcount when cmtp_attach_device fails Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 159/266] Bluetooth: Fix the HCI to MGMT status conversion table Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 160/266] Bluetooth: Fix alt settings for incoming SCO with transparent coding format Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 161/266] Bluetooth: Shutdown controller after workqueues are flushed or cancelled Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 162/266] Bluetooth: btusb: Add a new QCA_ROME device (0cf3:e500) Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 163/266] Bluetooth: L2CAP: Fix invalid access if ECRED Reconfigure fails Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 164/266] Bluetooth: L2CAP: Fix invalid access on ECRED Connection response Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 165/266] Bluetooth: btusb: Add support USB ALT 3 for WBS Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 166/266] Bluetooth: mgmt: Fix the command returns garbage parameter value Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 167/266] Bluetooth: btusb: use default nvm if boardID is 0 for wcn6855 Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 168/266] Bluetooth: btusb: fix bt fiwmare downloading failure issue for qca btsoc Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 169/266] sched/fair: Ensure _sum and _avg values stay consistent Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 170/266] bpf: Fix false positive kmemleak report in bpf_ringbuf_area_alloc() Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 171/266] flow_offload: action should not be NULL when it is referenced Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 172/266] sctp: validate from_addr_param return Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 173/266] sctp: add size validation when walking chunks Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 174/266] MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 175/266] MIPS: set mips32r5 for virt extensions Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 176/266] MIPS: CI20: Reduce clocksource to 750 kHz Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 177/266] PCI: tegra194: Fix host initialization during resume Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 178/266] MIPS: MT extensions are not available on MIPS32r1 Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 179/266] mm/mremap: hold the rmap lock in write mode when moving page table entries Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 180/266] powerpc/mm: Fix lockup on kernel exec fault Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 181/266] powerpc/bpf: Reject atomic ops in ppc32 JIT Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 182/266] powerpc/xive: Fix error handling when allocating an IPI Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 183/266] powerpc/barrier: Avoid collision with clangs __lwsync macro Greg Kroah-Hartman
2021-07-15 18:38 ` [PATCH 5.13 184/266] powerpc/powernv/vas: Release reference to tgid during window close Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 185/266] drm/amdgpu: add new dimgrey cavefish DID Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 186/266] drm/amdgpu: Update NV SIMD-per-CU to 2 Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 187/266] drm/amdgpu: enable sdma0 tmz for Raven/Renoir(V2) Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 188/266] drm/amdgpu: fix NAK-G generation during PCI-e link width switch Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 189/266] drm/amdgpu: fix the hang caused by PCIe " Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 190/266] drm/radeon: Add the missed drm_gem_object_put() in radeon_user_framebuffer_create() Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 191/266] drm/radeon: Call radeon_suspend_kms() in radeon_pci_shutdown() for Loongson64 Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 192/266] drm/vc4: txp: Properly set the possible_crtcs mask Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 193/266] drm/vc4: crtc: Skip the TXP Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 194/266] drm/vc4: hdmi: Prevent clock unbalance Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 195/266] drm/dp: Handle zeroed port counts in drm_dp_read_downstream_info() Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 196/266] drm/rockchip: dsi: remove extra component_del() call Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 197/266] drm/amd/display: fix incorrrect valid irq check Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 198/266] pinctrl/amd: Add device HID for new AMD GPIO controller Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 199/266] drm/amd/display: Reject non-zero src_y and src_x for video planes Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 200/266] drm/ingenic: Fix pixclock rate for 24-bit serial panels Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 201/266] drm/tegra: Dont set allow_fb_modifiers explicitly Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 202/266] drm/msm/mdp4: Fix modifier support enabling Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 203/266] drm/arm/malidp: Always list modifiers Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 204/266] drm/nouveau: Dont set allow_fb_modifiers explicitly Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 205/266] drm/ingenic: Switch IPU plane to type OVERLAY Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 206/266] drm/i915/display: Do not zero past infoframes.vsc Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 207/266] mmc: sdhci-acpi: Disable write protect detection on Toshiba Encore 2 WT8-B Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 208/266] mmc: sdhci: Fix warning message when accessing RPMB in HS400 mode Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 209/266] mmc: core: clear flags before allowing to retune Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 210/266] mmc: core: Allow UHS-I voltage switch for SDSC cards if supported Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 211/266] docs: Makefile: Use CONFIG_SHELL not SHELL Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 212/266] ata: ahci_sunxi: Disable DIPM Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 213/266] arm64: tlb: fix the TTL value of tlb_get_level Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 214/266] cpu/hotplug: Cure the cpusets trainwreck Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 215/266] clocksource/arm_arch_timer: Improve Allwinner A64 timer workaround Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 216/266] fpga: stratix10-soc: Add missing fpga_mgr_free() call Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 217/266] ASoC: tegra: Set driver_name=tegra for all machine drivers Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 218/266] mwifiex: bring down link before deleting interface Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 219/266] i40e: fix PTP on 5Gb links Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 220/266] qemu_fw_cfg: Make fw_cfg_rev_attr a proper kobj_attribute Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 221/266] ipmi/watchdog: Stop watchdog timer when the current action is none Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 222/266] xfrm: policy: Read seqcount outside of rcu-read side in xfrm_policy_lookup_bytype Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 223/266] thermal/drivers/int340x/processor_thermal: Fix tcc setting Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 224/266] ubifs: Fix races between xattr_{set|get} and listxattr operations Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 225/266] power: supply: ab8500: Fix an old bug Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 226/266] mfd: syscon: Free the allocated name field of struct regmap_config Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 227/266] nvmem: core: add a missing of_node_put Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 228/266] lkdtm/bugs: XFAIL UNALIGNED_LOAD_STORE_WRITE Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 229/266] selftests/lkdtm: Fix expected text for CR4 pinning Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 230/266] extcon: intel-mrfld: Sync hardware and software state on init Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 231/266] lkdtm: Enable DOUBLE_FAULT on all architectures Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 232/266] seq_buf: Fix overflow in seq_buf_putmem_hex() Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 233/266] rq-qos: fix missed wake-ups in rq_qos_throttle try two Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 234/266] tracing: Simplify & fix saved_tgids logic Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 235/266] tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 236/266] ipack/carriers/tpci200: Fix a double free in tpci200_pci_probe Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 237/266] coresight: Propagate symlink failure Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 238/266] coresight: tmc-etf: Fix global-out-of-bounds in tmc_update_etf_buffer() Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 239/266] dm zoned: check zone capacity Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 240/266] dm writecache: flush origin device when writing and cache is full Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 241/266] dm btree remove: assign new_root only when removal succeeds Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 242/266] PCI: Leave Apple Thunderbolt controllers on for s2idle or standby Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 243/266] PCI: aardvark: Fix checking for PIO Non-posted Request Greg Kroah-Hartman
2021-07-15 18:39 ` [PATCH 5.13 244/266] PCI: aardvark: Implement workaround for the readback value of VEND_ID Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 245/266] media: subdev: disallow ioctl for saa6588/davinci Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 246/266] media: i2c: ccs-core: fix pm_runtime_get_sync() usage count Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 247/266] media: dtv5100: fix control-request directions Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 248/266] media: zr364xx: fix memory leak in zr364xx_start_readpipe Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 249/266] media: ccs: Fix the op_pll_multiplier address Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 250/266] media: gspca/sq905: fix control-request direction Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 251/266] media: gspca/sunplus: fix zero-length control requests Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 252/266] media: rtl28xxu: fix zero-length control request Greg Kroah-Hartman
2021-07-16  7:54   ` Johan Hovold
2021-07-16 17:59     ` Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 253/266] media: uvcvideo: Fix pixel format change for Elgato Cam Link 4K Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 254/266] s390/vdso: always enable vdso Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 255/266] s390/vdso64: add sigreturn,rt_sigreturn and restart_syscall Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 256/266] s390/vdso: rename VDSO64_LBASE to VDSO_LBASE Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 257/266] s390/vdso: add minimal compat vdso Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 258/266] s390/signal: switch to using vdso for sigreturn and syscall restart Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 259/266] dm writecache: write at least 4k when committing Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 260/266] pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq() Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 261/266] drm/ast: Remove reference to struct drm_device.pdev Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 262/266] ext4: fix possible UAF when remounting r/o a mmp-protected file system Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 263/266] jfs: fix GPF in diFree Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 264/266] media: v4l2-core: explicitly clear ioctl input data Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 265/266] smackfs: restrict bytes count in smk_set_cipso() Greg Kroah-Hartman
2021-07-15 18:40 ` [PATCH 5.13 266/266] f2fs: fix to avoid racing on fsync_entry_slab by multi filesystem instances Greg Kroah-Hartman
2021-07-15 21:40 ` [PATCH 5.13 000/266] 5.13.3-rc1 review Daniel Díaz
2021-07-16 18:08   ` Greg Kroah-Hartman
2021-07-15 22:42 ` Florian Fainelli
2021-07-16 11:35 ` Jon Hunter
2021-07-16 15:26 ` Guenter Roeck
2021-07-16 18:01   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210715182622.061596699@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=Dmytro.Laktyushkin@amd.com \
    --cc=Jun.Lei@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=daniel.wheeler@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=qingqing.zhuo@amd.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).