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]

Reply via email to