bcm27xx: refresh patches for v6.12.29

Commit 0912d3f595 ("kernel: bump 6.12 to 6.12.29") was merged right after
bcm27xx 6.12 support commits, causing conflicts.

Refresh patches and removed upstreamed patch in v6.12.29:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=a5f162727b91e480656da1876247a91f651f76de

Fixes: 0912d3f595 ("kernel: bump 6.12 to 6.12.29")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
Álvaro Fernández Rojas 2025-05-21 17:19:42 +02:00
parent df52612351
commit edf9ed96a4
8 changed files with 18 additions and 97 deletions

View file

@ -26,7 +26,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
.vidioc_enum_framesizes = vidioc_enum_framesizes,
.vidioc_enum_frameintervals = vidioc_enum_frameintervals,
.vidioc_g_parm = vidioc_g_parm,
@@ -1930,7 +1931,7 @@ static int bcm2835_mmal_probe(struct vch
@@ -1931,7 +1932,7 @@ static int bcm2835_mmal_probe(struct vch
q = &dev->capture.vb_vidq;
memset(q, 0, sizeof(*q));
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

View file

@ -315,7 +315,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0);
if (ddc) {
panel->ddc = of_find_i2c_adapter_by_node(ddc);
@@ -2261,6 +2242,32 @@ static const struct panel_desc friendlya
@@ -2262,6 +2243,32 @@ static const struct panel_desc friendlya
},
};
@ -348,7 +348,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000,
.hdisplay = 480,
@@ -2441,6 +2448,38 @@ static const struct panel_desc innolux_a
@@ -2442,6 +2449,38 @@ static const struct panel_desc innolux_a
.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
};
@ -387,7 +387,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
@@ -3854,6 +3893,31 @@ static const struct panel_desc rocktech_
@@ -3855,6 +3894,31 @@ static const struct panel_desc rocktech_
.connector_type = DRM_MODE_CONNECTOR_DPI,
};
@ -419,7 +419,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 },
@@ -4798,6 +4862,9 @@ static const struct of_device_id platfor
@@ -4799,6 +4863,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e,
}, {
@ -429,7 +429,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
.compatible = "giantplus,gpg482739qs5",
.data = &giantplus_gpg482739qs5
}, {
@@ -4819,6 +4886,9 @@ static const struct of_device_id platfor
@@ -4820,6 +4887,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
@ -439,7 +439,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
.compatible = "innolux,at070tn92",
.data = &innolux_at070tn92,
}, {
@@ -4978,6 +5048,9 @@ static const struct of_device_id platfor
@@ -4979,6 +5049,9 @@ static const struct of_device_id platfor
.compatible = "rocktech,rk043fn48h",
.data = &rocktech_rk043fn48h,
}, {
@ -449,7 +449,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
.compatible = "rocktech,rk070er9427",
.data = &rocktech_rk070er9427,
}, {
@@ -5334,6 +5407,9 @@ static const struct panel_desc_dsi osd10
@@ -5335,6 +5408,9 @@ static const struct panel_desc_dsi osd10
.lanes = 4,
};
@ -459,7 +459,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
static const struct of_device_id dsi_of_match[] = {
{
.compatible = "auo,b080uan01",
@@ -5357,20 +5433,137 @@ static const struct of_device_id dsi_of_
@@ -5358,20 +5434,137 @@ static const struct of_device_id dsi_of_
.compatible = "osddisplays,osd101t2045-53ts",
.data = &osd101t2045_53ts
}, {

View file

@ -48,7 +48,7 @@ Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
unsigned int pageblock_order __read_mostly;
#endif
@@ -2270,12 +2291,13 @@ __rmqueue(struct zone *zone, unsigned in
@@ -2269,12 +2290,13 @@ __rmqueue(struct zone *zone, unsigned in
if (IS_ENABLED(CONFIG_CMA)) {
/*
* Balance movable allocations between regular and CMA areas by

View file

@ -341,7 +341,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
* @hsphy_interface: "utmi" or "ulpi"
* @connected: true when we're connected to a host, false otherwise
* @softconnect: true when gadget connect is called, false when disconnect runs
@@ -1334,6 +1338,7 @@ struct dwc3 {
@@ -1337,6 +1341,7 @@ struct dwc3 {
u8 tx_max_burst_prd;
u8 tx_fifo_resize_max_num;
u8 clear_stall_protocol;

View file

@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
* @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter
* running based on ref_clk
* @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
@@ -1382,6 +1385,7 @@ struct dwc3 {
@@ -1385,6 +1388,7 @@ struct dwc3 {
unsigned ulpi_ext_vbus_drv:1;
unsigned parkmode_disable_ss_quirk:1;
unsigned parkmode_disable_hs_quirk:1;

View file

@ -66,7 +66,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
* @parkmode_disable_ss_quirk: If set, disable park mode feature for all
* Superspeed instances.
* @parkmode_disable_hs_quirk: If set, disable park mode feature for all
@@ -1383,6 +1387,8 @@ struct dwc3 {
@@ -1386,6 +1390,8 @@ struct dwc3 {
unsigned dis_tx_ipgap_linecheck_quirk:1;
unsigned resume_hs_terminations:1;
unsigned ulpi_ext_vbus_drv:1;

View file

@ -19,11 +19,11 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -1909,6 +1909,7 @@ static int bcm2835_mmal_probe(struct vch
__func__, ret);
goto free_dev;
@@ -1883,6 +1883,7 @@ static int bcm2835_mmal_probe(struct vch
ret = -ENOMEM;
goto cleanup_gdev;
}
+ dev->v4l2_dev.dev = &device->dev;
/* setup v4l controls */
ret = bcm2835_mmal_init_controls(dev, &dev->ctrl_handler);
/* v4l2 core mutex used to protect all fops and v4l2 ioctls. */
mutex_init(&dev->mutex);

View file

@ -1,79 +0,0 @@
From 59a7f3aa7c3045b92bfde6fd342017053d2d304c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ADra=20Canal?= <mcanal@igalia.com>
Date: Sun, 27 Apr 2025 17:28:21 -0300
Subject: [PATCH] drm/v3d: Add job to pending list if the reset was skipped
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When a CL/CSD job times out, we check if the GPU has made any progress
since the last timeout. If so, instead of resetting the hardware, we skip
the reset and let the timer get rearmed. This gives long-running jobs a
chance to complete.
However, when `timedout_job()` is called, the job in question is removed
from the pending list, which means it won't be automatically freed through
`free_job()`. Consequently, when we skip the reset and keep the job
running, the job won't be freed when it finally completes.
This situation leads to a memory leak, as exposed in [1].
Similarly to commit 704d3d60fec4 ("drm/etnaviv: don't block scheduler when
GPU is still active"), this patch ensures the job is put back on the
pending list when extending the timeout.
Cc: stable@vger.kernel.org # 6.0
Link: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12227 [1]
Reported-by: Daivik Bhatia <dtgs1208@gmail.com>
Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
drivers/gpu/drm/v3d/v3d_sched.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
@@ -744,11 +744,6 @@ v3d_gpu_reset_for_timeout(struct v3d_dev
return DRM_GPU_SCHED_STAT_NOMINAL;
}
-/* If the current address or return address have changed, then the GPU
- * has probably made progress and we should delay the reset. This
- * could fail if the GPU got in an infinite loop in the CL, but that
- * is pretty unlikely outside of an i-g-t testcase.
- */
static enum drm_gpu_sched_stat
v3d_cl_job_timedout(struct drm_sched_job *sched_job, enum v3d_queue q,
u32 *timedout_ctca, u32 *timedout_ctra)
@@ -758,9 +753,16 @@ v3d_cl_job_timedout(struct drm_sched_job
u32 ctca = V3D_CORE_READ(0, V3D_CLE_CTNCA(q));
u32 ctra = V3D_CORE_READ(0, V3D_CLE_CTNRA(q));
+ /* If the current address or return address have changed, then the GPU
+ * has probably made progress and we should delay the reset. This
+ * could fail if the GPU got in an infinite loop in the CL, but that
+ * is pretty unlikely outside of an i-g-t testcase.
+ */
if (*timedout_ctca != ctca || *timedout_ctra != ctra) {
*timedout_ctca = ctca;
*timedout_ctra = ctra;
+
+ list_add(&sched_job->list, &sched_job->sched->pending_list);
return DRM_GPU_SCHED_STAT_NOMINAL;
}
@@ -800,11 +802,13 @@ v3d_csd_job_timedout(struct drm_sched_jo
struct v3d_dev *v3d = job->base.v3d;
u32 batches = V3D_CORE_READ(0, V3D_CSD_CURRENT_CFG4(v3d->ver));
- /* If we've made progress, skip reset and let the timer get
- * rearmed.
+ /* If we've made progress, skip reset, add the job to the pending
+ * list, and let the timer get rearmed.
*/
if (job->timedout_batches != batches) {
job->timedout_batches = batches;
+
+ list_add(&sched_job->list, &sched_job->sched->pending_list);
return DRM_GPU_SCHED_STAT_NOMINAL;
}