mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-06 19:07:20 +00:00
kernel: bump 6.6 to 6.6.85
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.85 Removed upstreamed: bcm27xx/patches-6.6/950-1498-dts-bcm2711-PL011-UARTs-are-actually-r1p5.patch[1] bcm27xx/patches-6.6/950-1551-drm-v3d-Don-t-run-jobs-that-have-errors-flagged-in-i.patch[2] Manually rebased: bcm27xx/patches-6.6/950-1512-dts-bcm2711-Don-t-mark-timer-regs-unconfigured.patch All other patches automatically rebased. 1. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.85&id=61820187b3ef5a15aed7ef49ed1fcc13398b449c 2. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.85&id=7cd375d46afcce906cfcddf5aec6b318199d1f16 Build system: x86/64 Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64 Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64 Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/18379 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
7728f66606
commit
2e71e41ce6
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .84
|
||||
LINUX_KERNEL_HASH-6.6.84 = 7fd20721551a61db347c5ac6ca05818e24058682be4e4389dc51e88d4ac17ba7
|
||||
LINUX_VERSION-6.6 = .85
|
||||
LINUX_KERNEL_HASH-6.6.85 = 5ebaccf4ca3428cd26817bae62171f4efd270eed866a3e3d0a1d9e970b7b7529
|
||||
|
@ -423,7 +423,7 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
|
||||
v3d_switch_perfmon(v3d, &job->base);
|
||||
|
||||
/* XXX: Set the QCFG */
|
||||
@@ -190,6 +301,7 @@ v3d_tfu_job_run(struct drm_sched_job *sc
|
||||
@@ -194,6 +305,7 @@ v3d_tfu_job_run(struct drm_sched_job *sc
|
||||
|
||||
trace_v3d_submit_tfu(dev, to_v3d_fence(fence)->seqno);
|
||||
|
||||
@ -431,7 +431,7 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
|
||||
V3D_WRITE(V3D_TFU_IIA, job->args.iia);
|
||||
V3D_WRITE(V3D_TFU_IIS, job->args.iis);
|
||||
V3D_WRITE(V3D_TFU_ICA, job->args.ica);
|
||||
@@ -231,6 +343,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
@@ -238,6 +350,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
|
||||
trace_v3d_submit_csd(dev, to_v3d_fence(fence)->seqno);
|
||||
|
||||
@ -439,7 +439,7 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
|
||||
v3d_switch_perfmon(v3d, &job->base);
|
||||
|
||||
for (i = 1; i <= 6; i++)
|
||||
@@ -247,7 +360,10 @@ v3d_cache_clean_job_run(struct drm_sched
|
||||
@@ -254,7 +367,10 @@ v3d_cache_clean_job_run(struct drm_sched
|
||||
struct v3d_job *job = to_v3d_job(sched_job);
|
||||
struct v3d_dev *v3d = job->v3d;
|
||||
|
||||
@ -450,7 +450,7 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -385,8 +501,18 @@ v3d_sched_init(struct v3d_dev *v3d)
|
||||
@@ -392,8 +508,18 @@ v3d_sched_init(struct v3d_dev *v3d)
|
||||
int hw_jobs_limit = 1;
|
||||
int job_hang_limit = 0;
|
||||
int hang_limit_ms = 500;
|
||||
@ -469,7 +469,7 @@ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
|
||||
ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
|
||||
&v3d_bin_sched_ops,
|
||||
hw_jobs_limit, job_hang_limit,
|
||||
@@ -440,9 +566,20 @@ void
|
||||
@@ -447,9 +573,20 @@ void
|
||||
v3d_sched_fini(struct v3d_dev *v3d)
|
||||
{
|
||||
enum v3d_queue q;
|
||||
|
@ -600,7 +600,7 @@ v2: fix kernel panic with debug-fs interface to list registers
|
||||
static struct dma_fence *
|
||||
v3d_tfu_job_run(struct drm_sched_job *sched_job)
|
||||
{
|
||||
@@ -302,20 +304,22 @@ v3d_tfu_job_run(struct drm_sched_job *sc
|
||||
@@ -306,20 +308,22 @@ v3d_tfu_job_run(struct drm_sched_job *sc
|
||||
trace_v3d_submit_tfu(dev, to_v3d_fence(fence)->seqno);
|
||||
|
||||
v3d_sched_stats_add_job(&v3d->gpu_queue_stats[V3D_TFU], sched_job);
|
||||
@ -635,16 +635,16 @@ v2: fix kernel panic with debug-fs interface to list registers
|
||||
|
||||
return fence;
|
||||
}
|
||||
@@ -327,7 +331,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
@@ -331,7 +335,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
struct v3d_dev *v3d = job->base.v3d;
|
||||
struct drm_device *dev = &v3d->drm;
|
||||
struct dma_fence *fence;
|
||||
- int i;
|
||||
+ int i, csd_cfg0_reg, csd_cfg_reg_count;
|
||||
|
||||
v3d->csd_job = job;
|
||||
|
||||
@@ -346,10 +350,12 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
if (unlikely(job->base.base.s_fence->finished.error))
|
||||
return NULL;
|
||||
@@ -353,10 +357,12 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
v3d_sched_stats_add_job(&v3d->gpu_queue_stats[V3D_CSD], sched_job);
|
||||
v3d_switch_perfmon(v3d, &job->base);
|
||||
|
||||
@ -660,7 +660,7 @@ v2: fix kernel panic with debug-fs interface to list registers
|
||||
|
||||
return fence;
|
||||
}
|
||||
@@ -452,7 +458,8 @@ v3d_csd_job_timedout(struct drm_sched_jo
|
||||
@@ -459,7 +465,8 @@ v3d_csd_job_timedout(struct drm_sched_jo
|
||||
{
|
||||
struct v3d_csd_job *job = to_csd_job(sched_job);
|
||||
struct v3d_dev *v3d = job->base.v3d;
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 87fc066350358ce45f5ad52424c8a2e351b1720c Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Tue, 7 Jan 2025 12:05:41 +0000
|
||||
Subject: [PATCH] dts: bcm2711: PL011 UARTs are actually r1p5
|
||||
|
||||
The ARM PL011 UART instances in BCM2711 are r1p5 spec, which means they
|
||||
have 32-entry FIFOs. The correct periphid value for this is 0x00341011.
|
||||
Thanks to N Buchwitz for pointing this out.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm2711.dtsi | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
|
||||
+++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
|
||||
@@ -134,7 +134,7 @@
|
||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
<&clocks BCM2835_CLOCK_VPU>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
- arm,primecell-periphid = <0x00241011>;
|
||||
+ arm,primecell-periphid = <0x00341011>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
<&clocks BCM2835_CLOCK_VPU>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
- arm,primecell-periphid = <0x00241011>;
|
||||
+ arm,primecell-periphid = <0x00341011>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
<&clocks BCM2835_CLOCK_VPU>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
- arm,primecell-periphid = <0x00241011>;
|
||||
+ arm,primecell-periphid = <0x00341011>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
<&clocks BCM2835_CLOCK_VPU>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
- arm,primecell-periphid = <0x00241011>;
|
||||
+ arm,primecell-periphid = <0x00341011>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@@ -1155,6 +1155,7 @@
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
+ arm,primecell-periphid = <0x00341011>;
|
||||
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
@ -20,17 +20,6 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
|
||||
+++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
|
||||
@@ -451,8 +451,6 @@
|
||||
IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
|
||||
IRQ_TYPE_LEVEL_LOW)>;
|
||||
- /* This only applies to the ARMv7 stub */
|
||||
- arm,cpu-registers-not-fw-configured;
|
||||
};
|
||||
|
||||
cpus: cpus {
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
|
||||
@@ -741,8 +741,6 @@
|
||||
|
@ -1,61 +0,0 @@
|
||||
From 5258ca4ad089548a72657522443b9c3e46fd125b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ma=C3=ADra=20Canal?= <mcanal@igalia.com>
|
||||
Date: Sat, 22 Feb 2025 14:40:21 -0300
|
||||
Subject: [PATCH] drm/v3d: Don't run jobs that have errors flagged in its fence
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The V3D driver still relies on `drm_sched_increase_karma()` and
|
||||
`drm_sched_resubmit_jobs()` for resubmissions when a timeout occurs.
|
||||
The function `drm_sched_increase_karma()` marks the job as guilty, while
|
||||
`drm_sched_resubmit_jobs()` sets an error (-ECANCELED) in the DMA fence of
|
||||
that guilty job.
|
||||
|
||||
Because of this, we must check whether the job’s DMA fence has been
|
||||
flagged with an error before executing the job. Otherwise, the same guilty
|
||||
job may be resubmitted indefinitely, causing repeated GPU resets.
|
||||
|
||||
This patch adds a check for an error on the job's fence to prevent running
|
||||
a guilty job that was previously flagged when the GPU timed out.
|
||||
|
||||
Note that the CPU and CACHE_CLEAN queues do not require this check, as
|
||||
their jobs are executed synchronously once the DRM scheduler starts them.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: d223f98f0209 ("drm/v3d: Add support for compute shader dispatch.")
|
||||
Fixes: 1584f16ca96e ("drm/v3d: Add support for submitting jobs to the TFU.")
|
||||
Signed-off-by: Maíra Canal <mcanal@igalia.com>
|
||||
---
|
||||
drivers/gpu/drm/v3d/v3d_sched.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpu/drm/v3d/v3d_sched.c
|
||||
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
|
||||
@@ -292,11 +292,15 @@ v3d_tfu_job_run(struct drm_sched_job *sc
|
||||
struct drm_device *dev = &v3d->drm;
|
||||
struct dma_fence *fence;
|
||||
|
||||
+ if (unlikely(job->base.base.s_fence->finished.error))
|
||||
+ return NULL;
|
||||
+
|
||||
+ v3d->tfu_job = job;
|
||||
+
|
||||
fence = v3d_fence_create(v3d, V3D_TFU);
|
||||
if (IS_ERR(fence))
|
||||
return NULL;
|
||||
|
||||
- v3d->tfu_job = job;
|
||||
if (job->base.irq_fence)
|
||||
dma_fence_put(job->base.irq_fence);
|
||||
job->base.irq_fence = dma_fence_get(fence);
|
||||
@@ -333,6 +337,9 @@ v3d_csd_job_run(struct drm_sched_job *sc
|
||||
struct dma_fence *fence;
|
||||
int i, csd_cfg0_reg, csd_cfg_reg_count;
|
||||
|
||||
+ if (unlikely(job->base.base.s_fence->finished.error))
|
||||
+ return NULL;
|
||||
+
|
||||
v3d->csd_job = job;
|
||||
|
||||
v3d_invalidate_caches(v3d);
|
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4551,6 +4570,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4554,6 +4573,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -5042,7 +5072,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -5045,7 +5075,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6304,6 +6335,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6307,6 +6338,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6315,6 +6348,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6318,6 +6351,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6515,6 +6549,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6518,6 +6552,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6525,11 +6561,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6528,11 +6564,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6556,6 +6602,8 @@ out:
|
||||
@@ -6559,6 +6605,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6575,6 +6623,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6578,6 +6626,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6658,6 +6707,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6661,6 +6710,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
Loading…
x
Reference in New Issue
Block a user