summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2026-05-26 15:14:09 -0700
committerAndrew Morton <akpm@linux-foundation.org>2026-10-30 00:14:38 -0700
commitb96fce221d6dc5a78a4aa2023faa89bd4ec8f4d4 (patch)
tree7449f2730e753812d677e11080b44403f3fefb10
parent459d5effacc891442c348ec64496086aa0dee615 (diff)
downloadlinux-next-b96fce221d6dc5a78a4aa2023faa89bd4ec8f4d4.tar.gz
linux-next-b96fce221d6dc5a78a4aa2023faa89bd4ec8f4d4.zip
drivers/media/v4l2-core/v4l2-vp9.c: reduce inlining
csky allmodconfig, gcc-15.2.0: drivers/media/v4l2-core/v4l2-vp9.c: In function 'v4l2_vp9_adapt_noncoef_probs': drivers/media/v4l2-core/v4l2-vp9.c:1834:1: error: the frame size of 1436 bytes is larger than 1280 bytes [-Werror=frame-larger-than=] The amount of inlining in there is simply nuts. This patch semi-randomly uninlines various things and fixes the above. Ad the .text size reduction is tremendous: ts:/usr/src/25> size drivers/media/v4l2-core/v4l2-vp9.o text data bss dec hex filename 22450 36 0 22486 57d6 drivers/media/v4l2-core/v4l2-vp9.o-before 16144 36 0 16180 3f34 drivers/media/v4l2-core/v4l2-vp9.o-after Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
-rw-r--r--drivers/media/v4l2-core/v4l2-vp9.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/media/v4l2-core/v4l2-vp9.c b/drivers/media/v4l2-core/v4l2-vp9.c
index 859589f1fd35..e965ffbd9b8a 100644
--- a/drivers/media/v4l2-core/v4l2-vp9.c
+++ b/drivers/media/v4l2-core/v4l2-vp9.c
@@ -1582,25 +1582,25 @@ static inline u8 noncoef_merge_prob(u8 pre_prob, u32 ct0, u32 ct1)
* merge_prob(p[9], c[9], [10])
*/
-static inline void merge_probs_variant_a(u8 *p, const u32 *c, u16 count_sat, u32 update_factor)
+static noinline_for_stack void merge_probs_variant_a(u8 *p, const u32 *c, u16 count_sat, u32 update_factor)
{
p[1] = merge_prob(p[1], c[0], c[1] + c[2], count_sat, update_factor);
p[2] = merge_prob(p[2], c[1], c[2], count_sat, update_factor);
}
-static inline void merge_probs_variant_b(u8 *p, const u32 *c, u16 count_sat, u32 update_factor)
+static noinline_for_stack void merge_probs_variant_b(u8 *p, const u32 *c, u16 count_sat, u32 update_factor)
{
p[0] = merge_prob(p[0], c[0], c[1], count_sat, update_factor);
}
-static inline void merge_probs_variant_c(u8 *p, const u32 *c)
+static noinline_for_stack void merge_probs_variant_c(u8 *p, const u32 *c)
{
p[0] = noncoef_merge_prob(p[0], c[2], c[1] + c[0] + c[3]);
p[1] = noncoef_merge_prob(p[1], c[0], c[1] + c[3]);
p[2] = noncoef_merge_prob(p[2], c[1], c[3]);
}
-static void merge_probs_variant_d(u8 *p, const u32 *c)
+static noinline_for_stack void merge_probs_variant_d(u8 *p, const u32 *c)
{
u32 sum = 0, s2;
@@ -1624,20 +1624,20 @@ static void merge_probs_variant_d(u8 *p, const u32 *c)
p[8] = noncoef_merge_prob(p[8], c[6], c[7]);
}
-static inline void merge_probs_variant_e(u8 *p, const u32 *c)
+static noinline_for_stack void merge_probs_variant_e(u8 *p, const u32 *c)
{
p[0] = noncoef_merge_prob(p[0], c[0], c[1] + c[2] + c[3]);
p[1] = noncoef_merge_prob(p[1], c[1], c[2] + c[3]);
p[2] = noncoef_merge_prob(p[2], c[2], c[3]);
}
-static inline void merge_probs_variant_f(u8 *p, const u32 *c)
+static noinline_for_stack void merge_probs_variant_f(u8 *p, const u32 *c)
{
p[0] = noncoef_merge_prob(p[0], c[0], c[1] + c[2]);
p[1] = noncoef_merge_prob(p[1], c[1], c[2]);
}
-static void merge_probs_variant_g(u8 *p, const u32 *c)
+static noinline_for_stack void merge_probs_variant_g(u8 *p, const u32 *c)
{
u32 sum;
@@ -1659,12 +1659,12 @@ static void merge_probs_variant_g(u8 *p, const u32 *c)
}
/* 8.4.3 Coefficient probability adaptation process */
-static inline void adapt_probs_variant_a_coef(u8 *p, const u32 *c, u32 update_factor)
+static noinline_for_stack void adapt_probs_variant_a_coef(u8 *p, const u32 *c, u32 update_factor)
{
merge_probs_variant_a(p, c, 24, update_factor);
}
-static inline void adapt_probs_variant_b_coef(u8 *p, const u32 *c, u32 update_factor)
+static noinline_for_stack void adapt_probs_variant_b_coef(u8 *p, const u32 *c, u32 update_factor)
{
merge_probs_variant_b(p, c, 24, update_factor);
}
@@ -1724,33 +1724,33 @@ static inline void adapt_probs_variant_b(u8 *p, const u32 *c)
merge_probs_variant_b(p, c, 20, 128);
}
-static inline void adapt_probs_variant_c(u8 *p, const u32 *c)
+static noinline_for_stack void adapt_probs_variant_c(u8 *p, const u32 *c)
{
merge_probs_variant_c(p, c);
}
-static inline void adapt_probs_variant_d(u8 *p, const u32 *c)
+static noinline_for_stack void adapt_probs_variant_d(u8 *p, const u32 *c)
{
merge_probs_variant_d(p, c);
}
-static inline void adapt_probs_variant_e(u8 *p, const u32 *c)
+static noinline_for_stack void adapt_probs_variant_e(u8 *p, const u32 *c)
{
merge_probs_variant_e(p, c);
}
-static inline void adapt_probs_variant_f(u8 *p, const u32 *c)
+static noinline_for_stack void adapt_probs_variant_f(u8 *p, const u32 *c)
{
merge_probs_variant_f(p, c);
}
-static inline void adapt_probs_variant_g(u8 *p, const u32 *c)
+static noinline_for_stack void adapt_probs_variant_g(u8 *p, const u32 *c)
{
merge_probs_variant_g(p, c);
}
/* 8.4.4 Non coefficient probability adaptation process, adapt_prob() */
-static inline u8 adapt_prob(u8 prob, const u32 counts[2])
+static noinline_for_stack u8 adapt_prob(u8 prob, const u32 counts[2])
{
return noncoef_merge_prob(prob, counts[0], counts[1]);
}