From nobody Mon Sep 28 05:45:56 2026 Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D36C37F8DA for ; Wed, 26 Aug 2026 07:57:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787731028; cv=none; b=fZRt/gah+v0NlI8Fr1rFSB1YVM3myTmxiX/gcuiBEp5/NqEccy+1kIjj42hV78Dv7qJD5xtEPMX+yxBKG7KLxUlx4rbUAL7zI84c8Xl7GJoiCAAcxhjY/HNhCYGB2PD5f+uieTZIzVcsaF6jm6qgktuvktDTnxdoLGWv8cpDyG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787731028; c=relaxed/simple; bh=irq1ZzN4qGOt7dFxoLdezaSmwKjAePLBNwCWCVdefwI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=mtgWXnvwJk6zk5cE7EuDni86fVXORItBpjH4BKv+rIa12Fn3Gn2l44DLrfXOzlnU3VobQUN6XaYIJ9Y6kAXLHsikH2uL4WvsJwATeuRlJejwIM6BGTdjHypzcx+L083Qn4F6xIxTqdRyVLRXDtsZT1z+pHeXMccol0f/zpPiG/A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=bZeMPD2W; arc=none smtp.client-ip=220.197.31.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="bZeMPD2W" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=l5 DCbOFO8G0s/Q8OJxYUOcFzHiGx4ySYHAQkjhp+Hz0=; b=bZeMPD2Wmg8soN8rLo Qu16cH07jOlZN203BGEDDeNDfVLsLIPzgqs10WTo8jiAt7gT5kBqht1V6W5WF49/ c69W2Lh3T5L72Nh1btYhmgxB3CHUfwTzw7vZUDh0YREyyDxAQUg84B2/C1bSNCci heOaf+/Ba3dBJcFu5drjbZ5/Q= Received: from localhost.localdomain (unknown []) by gzsmtp2 (Coremail) with SMTP id PSgvCgDXiekenI5qFXNnNA--.65018S2; Wed, 26 Aug 2026 15:56:14 +0800 (CST) From: oushixiong1025@163.com To: Thomas Zimmermann Cc: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Shixiong Ou Subject: [PATCH] drm/sysfb: Clear entire framebuffer in atomic_disable Date: Wed, 26 Aug 2026 15:56:13 +0800 Message-Id: <20260826075613.483617-1-oushixiong1025@163.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: PSgvCgDXiekenI5qFXNnNA--.65018S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7WFy8tF1fCFW5KF1DKFy8Xwb_yoW8Kr48pF 43CFyqgr4rta1Yg398Cay0vry3Xa98t3y8Jr17t3s3C3Z5Ka4xCF1rGry7CFWDJrWkWr1f XwnIyFWDJ3W0kw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07Um0PDUUUUU= X-CM-SenderInfo: xrxvxxx0lr0wirqskqqrwthudrp/xtbC-h5se2qOnB6XpgAA3g Content-Type: text/plain; charset="utf-8" From: Shixiong Ou drm_sysfb_plane_helper_atomic_disable() previously used plane_state->src_* coordinates to construct the clear rectangle, which depends on user-controlled input. Instead, clear the entire visible framebuffer region using fb_mode dimensions, and use drm_format_info_min_pitch() to compute the safe per-line clear size without touching non-visible bytes at the end of each line. Signed-off-by: Shixiong Ou Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/sysfb/drm_sysfb_modeset.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c b/drivers/gpu/drm/sy= sfb/drm_sysfb_modeset.c index 9a4c210d6f96..c109ecab9d7a 100644 --- a/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c +++ b/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c @@ -376,28 +376,28 @@ void drm_sysfb_plane_helper_atomic_disable(struct drm= _plane *plane, struct drm_device *dev =3D plane->dev; struct drm_sysfb_device *sysfb =3D to_drm_sysfb_device(dev); struct iosys_map dst =3D sysfb->fb_addr; - struct drm_plane_state *plane_state =3D drm_atomic_get_new_plane_state(st= ate, plane); void __iomem *dst_vmap =3D dst.vaddr_iomem; /* TODO: Use mapping abstract= ion */ unsigned int dst_pitch =3D sysfb->fb_pitch; const struct drm_format_info *dst_format =3D sysfb->fb_format; struct drm_rect dst_clip; - unsigned long lines, linepixels, i; + unsigned long lines, linepixels, dst_size, i; int idx; =20 - drm_rect_init(&dst_clip, - plane_state->src_x >> 16, plane_state->src_y >> 16, - plane_state->src_w >> 16, plane_state->src_h >> 16); + drm_rect_init(&dst_clip, 0, 0, + sysfb->fb_mode.hdisplay, sysfb->fb_mode.vdisplay); =20 lines =3D drm_rect_height(&dst_clip); linepixels =3D drm_rect_width(&dst_clip); + dst_size =3D min_t(unsigned long, + drm_format_info_min_pitch(dst_format, 0, linepixels), + dst_pitch); =20 if (!drm_dev_enter(dev, &idx)) return; =20 /* Clear buffer to black if disabled */ - dst_vmap +=3D drm_fb_clip_offset(dst_pitch, dst_format, &dst_clip); for (i =3D 0; i < lines; ++i) { - memset_io(dst_vmap, 0, linepixels * dst_format->cpp[0]); + memset_io(dst_vmap, 0, dst_size); dst_vmap +=3D dst_pitch; } =20 --=20 2.25.1