Re: drivers/gpu/drm/tiny/pixpaper.c:579:12: warning: stack frame size (19288) exceeds limit (8192) in 'pixpaper_panel_hw_init'
From: David Laight
Date: Thu Apr 23 2026 - 04:26:58 EST
On Thu, 23 Apr 2026 08:20:01 +0800
kernel test robot <lkp@xxxxxxxxx> wrote:
> Hi LiangCheng,
>
> FYI, the error/warning still remains.
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 2e68039281932e6dc37718a1ea7cbb8e2cda42e6
> commit: c9e70639f5915f2d084a0126e62fe53a52c29cea drm: tiny: Add support for Mayqueen Pixpaper e-ink panel
> date: 8 months ago
> config: x86_64-randconfig-075-20260423 (https://download.01.org/0day-ci/archive/20260423/202604230813.tiodR4pT-lkp@xxxxxxxxx/config)
> compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
> rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260423/202604230813.tiodR4pT-lkp@xxxxxxxxx/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Fixes: c9e70639f591 ("drm: tiny: Add support for Mayqueen Pixpaper e-ink panel")
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202604230813.tiodR4pT-lkp@xxxxxxxxx/
>
> All warnings (new ones prefixed by >>):
>
> >> drivers/gpu/drm/tiny/pixpaper.c:579:12: warning: stack frame size (19288) exceeds limit (8192) in 'pixpaper_panel_hw_init' [-Wframe-larger-than]
> 579 | static int pixpaper_panel_hw_init(struct pixpaper_panel *panel)
> | ^
> 1 warning generated.
>
>
> vim +/pixpaper_panel_hw_init +579 drivers/gpu/drm/tiny/pixpaper.c
>
> 578
> > 579 static int pixpaper_panel_hw_init(struct pixpaper_panel *panel)
> 580 {
> 581 struct pixpaper_error_ctx err = { .errno_code = 0 };
> 582
> 583 gpiod_set_value_cansleep(panel->reset, 0);
> 584 msleep(50);
> 585 gpiod_set_value_cansleep(panel->reset, 1);
> 586 msleep(50);
> 587
> 588 pixpaper_wait_for_panel(panel);
> 589
> 590 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_4D, &err);
> 591 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_4D_CONFIG, &err);
Both the above functions need marking unconditionally 'noinline'.
They both contain usleep_range(1, 5) so the performance can't matter.
So inlining just bloats the object file and clang+kasan tends to allocate
the per-function on-stack data separately for each inlined call.
David
> 592 if (err.errno_code)
> 593 goto init_fail;
> 594 pixpaper_wait_for_panel(panel);
> 595
> 596 pixpaper_send_cmd(panel, PIXPAPER_CMD_PANEL_SETTING, &err);
> 597 pixpaper_send_data(panel, PIXPAPER_PSR_CONFIG, &err);
> 598 pixpaper_send_data(panel, PIXPAPER_PSR_CONFIG2, &err);
> 599 if (err.errno_code)
> 600 goto init_fail;
> 601 pixpaper_wait_for_panel(panel);
> 602
> 603 pixpaper_send_cmd(panel, PIXPAPER_CMD_POWER_SETTING, &err);
> 604 pixpaper_send_data(panel, PIXPAPER_PWR_CONFIG1, &err);
> 605 pixpaper_send_data(panel, PIXPAPER_PWR_CONFIG2, &err);
> 606 pixpaper_send_data(panel, PIXPAPER_PWR_VSP_8_2V, &err);
> 607 pixpaper_send_data(panel, PIXPAPER_PWR_VSPL_15V, &err);
> 608 pixpaper_send_data(panel, PIXPAPER_PWR_VSN_4V, &err);
> 609 pixpaper_send_data(panel, PIXPAPER_PWR_VSP_8_2V, &err);
> 610 if (err.errno_code)
> 611 goto init_fail;
> 612 pixpaper_wait_for_panel(panel);
> 613
> 614 pixpaper_send_cmd(panel, PIXPAPER_CMD_POWER_OFF_SEQUENCE, &err);
> 615 pixpaper_send_data(panel, PIXPAPER_PFS_CONFIG1, &err);
> 616 pixpaper_send_data(panel, PIXPAPER_PFS_CONFIG2, &err);
> 617 pixpaper_send_data(panel, PIXPAPER_PFS_CONFIG3, &err);
> 618 if (err.errno_code)
> 619 goto init_fail;
> 620 pixpaper_wait_for_panel(panel);
> 621
> 622 pixpaper_send_cmd(panel, PIXPAPER_CMD_BOOSTER_SOFT_START, &err);
> 623 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG1, &err);
> 624 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG2, &err);
> 625 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG3, &err);
> 626 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG4, &err);
> 627 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG5, &err);
> 628 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG6, &err);
> 629 pixpaper_send_data(panel, PIXPAPER_BTST_CONFIG7, &err);
> 630 if (err.errno_code)
> 631 goto init_fail;
> 632 pixpaper_wait_for_panel(panel);
> 633
> 634 pixpaper_send_cmd(panel, PIXPAPER_CMD_PLL_CONTROL, &err);
> 635 pixpaper_send_data(panel, PIXPAPER_PLL_CONFIG, &err);
> 636 if (err.errno_code)
> 637 goto init_fail;
> 638 pixpaper_wait_for_panel(panel);
> 639
> 640 pixpaper_send_cmd(panel, PIXPAPER_CMD_TEMP_SENSOR_CALIB, &err);
> 641 pixpaper_send_data(panel, PIXPAPER_TSE_CONFIG, &err);
> 642 if (err.errno_code)
> 643 goto init_fail;
> 644 pixpaper_wait_for_panel(panel);
> 645
> 646 pixpaper_send_cmd(panel, PIXPAPER_CMD_VCOM_INTERVAL, &err);
> 647 pixpaper_send_data(panel, PIXPAPER_CDI_CONFIG, &err);
> 648 if (err.errno_code)
> 649 goto init_fail;
> 650 pixpaper_wait_for_panel(panel);
> 651
> 652 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_60, &err);
> 653 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_60_CONFIG1, &err);
> 654 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_60_CONFIG2, &err);
> 655 if (err.errno_code)
> 656 goto init_fail;
> 657 pixpaper_wait_for_panel(panel);
> 658
> 659 pixpaper_send_cmd(panel, PIXPAPER_CMD_RESOLUTION_SETTING, &err);
> 660 pixpaper_send_data(panel, PIXPAPER_TRES_HRES_H, &err);
> 661 pixpaper_send_data(panel, PIXPAPER_TRES_HRES_L, &err);
> 662 pixpaper_send_data(panel, PIXPAPER_TRES_VRES_H, &err);
> 663 pixpaper_send_data(panel, PIXPAPER_TRES_VRES_L, &err);
> 664 if (err.errno_code)
> 665 goto init_fail;
> 666 pixpaper_wait_for_panel(panel);
> 667
> 668 pixpaper_send_cmd(panel, PIXPAPER_CMD_GATE_SOURCE_START, &err);
> 669 pixpaper_send_data(panel, PIXPAPER_GSST_S_START, &err);
> 670 pixpaper_send_data(panel, PIXPAPER_GSST_RESERVED, &err);
> 671 pixpaper_send_data(panel, PIXPAPER_GSST_G_START_H, &err);
> 672 pixpaper_send_data(panel, PIXPAPER_GSST_G_START_L, &err);
> 673 if (err.errno_code)
> 674 goto init_fail;
> 675 pixpaper_wait_for_panel(panel);
> 676
> 677 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_E7, &err);
> 678 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_E7_CONFIG, &err);
> 679 if (err.errno_code)
> 680 goto init_fail;
> 681 pixpaper_wait_for_panel(panel);
> 682
> 683 pixpaper_send_cmd(panel, PIXPAPER_CMD_POWER_SAVING, &err);
> 684 pixpaper_send_data(panel, PIXPAPER_PWS_CONFIG, &err);
> 685 if (err.errno_code)
> 686 goto init_fail;
> 687 pixpaper_wait_for_panel(panel);
> 688
> 689 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_E0, &err);
> 690 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_E0_CONFIG, &err);
> 691 if (err.errno_code)
> 692 goto init_fail;
> 693 pixpaper_wait_for_panel(panel);
> 694
> 695 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_B4, &err);
> 696 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_B4_CONFIG, &err);
> 697 if (err.errno_code)
> 698 goto init_fail;
> 699 pixpaper_wait_for_panel(panel);
> 700
> 701 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_B5, &err);
> 702 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_B5_CONFIG, &err);
> 703 if (err.errno_code)
> 704 goto init_fail;
> 705 pixpaper_wait_for_panel(panel);
> 706
> 707 pixpaper_send_cmd(panel, PIXPAPER_CMD_UNKNOWN_E9, &err);
> 708 pixpaper_send_data(panel, PIXPAPER_UNKNOWN_E9_CONFIG, &err);
> 709 if (err.errno_code)
> 710 goto init_fail;
> 711 pixpaper_wait_for_panel(panel);
> 712
> 713 return 0;
> 714
> 715 init_fail:
> 716 drm_err(&panel->drm, "Hardware initialization failed (err=%d)\n",
> 717 err.errno_code);
> 718 return err.errno_code;
> 719 }
> 720
>