On Fri Jun 20 13:14:23 2025 +0200, Arnd Bergmann wrote:
> This function initializes two large structures with arrays. On at least
> parisc, the specific code sequence here leads to a badly misoptimized
> output from the compiler along with a warning about the resulting
> excessive stack usage from many spilled variables:
>
> drivers/media/tuners/mxl5005s.c: In function 'MXL5005_ControlInit.isra':
> drivers/media/tuners/mxl5005s.c:1660:1: warning: the frame size of 1400 bytes
> is larger than 1024 bytes [-Wframe-larger-than=]
>
> Splitting this one function into two functions avoids this because there
> are few temporaries that can be spilled to the stack in each of the smaller
> structures, so this avoids the warning and also improves readability.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>
Patch committed.
Thanks,
Hans Verkuil
drivers/media/tuners/mxl5005s.c | 6 ++++++
1 file changed, 6 insertions(+)
---
diff --git a/drivers/media/tuners/mxl5005s.c b/drivers/media/tuners/mxl5005s.c
index ba22bf594ac7..d57570290e93 100644
--- a/drivers/media/tuners/mxl5005s.c
+++ b/drivers/media/tuners/mxl5005s.c
@@ -1174,7 +1174,12 @@ static u16 MXL5005_ControlInit(struct dvb_frontend *fe)
state->Init_Ctrl[39].bit[0] = 3;
state->Init_Ctrl[39].val[0] = 1;
+ return 0;
+}
+static u16 MXL5005_ControlInitCH(struct dvb_frontend *fe)
+{
+ struct mxl5005s_state *state = fe->tuner_priv;
state->CH_Ctrl_Num = CHCTRL_NUM ;
state->CH_Ctrl[0].Ctrl_Num = DN_POLY ;
@@ -1663,6 +1668,7 @@ static void InitTunerControls(struct dvb_frontend *fe)
{
MXL5005_RegisterInit(fe);
MXL5005_ControlInit(fe);
+ MXL5005_ControlInitCH(fe);
#ifdef _MXL_INTERNAL
MXL5005_MXLControlInit(fe);
#endif
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]