Re: [PATCH] gpio: mvebu: convert to noirq suspend/resume to prevent interrupt storm on resume

kernel test robot <[email protected]> Tue, 4 Aug 2026 23:15:08 +0800
Newsgroups dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi Rosen,

kernel test robot noticed the following build warnings:

[auto build test WARNING on brgl/gpio/for-next]
[also build test WARNING on linusw-pinctrl/devel linusw-pinctrl/for-next linus/master v7.2-rc6 next-20260803]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Rosen-Penev/gpio-mvebu-convert-to-noirq-suspend-resume-to-prevent-interrupt-storm-on-resume/20260804-155102
base:   https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
patch link:    https://lore.kernel.org/r/20260707233511.1272686-1-rosenp%40gmail.com
patch subject: [PATCH] gpio: mvebu: convert to noirq suspend/resume to prevent interrupt storm on resume
config: alpha-allmodconfig (https://download.01.org/0day-ci/archive/20260804/[email protected]/config)
compiler: alpha-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260804/[email protected]/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
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/gpio/gpio-mvebu.c:1034:12: warning: 'mvebu_gpio_resume' defined but not used [-Wunused-function]
    1034 | static int mvebu_gpio_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~
>> drivers/gpio/gpio-mvebu.c:982:12: warning: 'mvebu_gpio_suspend' defined but not used [-Wunused-function]
     982 | static int mvebu_gpio_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~


vim +/mvebu_gpio_resume +1034 drivers/gpio/gpio-mvebu.c

   981	
 > 982	static int mvebu_gpio_suspend(struct device *dev)
   983	{
   984		struct mvebu_gpio_chip *mvchip = dev_get_drvdata(dev);
   985		int i;
   986	
   987		regmap_read(mvchip->regs, GPIO_OUT_OFF + mvchip->offset,
   988			    &mvchip->out_reg);
   989		regmap_read(mvchip->regs, GPIO_IO_CONF_OFF + mvchip->offset,
   990			    &mvchip->io_conf_reg);
   991		regmap_read(mvchip->regs, GPIO_BLINK_EN_OFF + mvchip->offset,
   992			    &mvchip->blink_en_reg);
   993		regmap_read(mvchip->regs, GPIO_IN_POL_OFF + mvchip->offset,
   994			    &mvchip->in_pol_reg);
   995	
   996		switch (mvchip->soc_variant) {
   997		case MVEBU_GPIO_SOC_VARIANT_ORION:
   998		case MVEBU_GPIO_SOC_VARIANT_A8K:
   999			regmap_read(mvchip->regs, GPIO_EDGE_MASK_OFF + mvchip->offset,
  1000				    &mvchip->edge_mask_regs[0]);
  1001			regmap_read(mvchip->regs, GPIO_LEVEL_MASK_OFF + mvchip->offset,
  1002				    &mvchip->level_mask_regs[0]);
  1003			break;
  1004		case MVEBU_GPIO_SOC_VARIANT_MV78200:
  1005			for (i = 0; i < 2; i++) {
  1006				regmap_read(mvchip->regs,
  1007					    GPIO_EDGE_MASK_MV78200_OFF(i),
  1008					    &mvchip->edge_mask_regs[i]);
  1009				regmap_read(mvchip->regs,
  1010					    GPIO_LEVEL_MASK_MV78200_OFF(i),
  1011					    &mvchip->level_mask_regs[i]);
  1012			}
  1013			break;
  1014		case MVEBU_GPIO_SOC_VARIANT_ARMADAXP:
  1015			for (i = 0; i < 4; i++) {
  1016				regmap_read(mvchip->regs,
  1017					    GPIO_EDGE_MASK_ARMADAXP_OFF(i),
  1018					    &mvchip->edge_mask_regs[i]);
  1019				regmap_read(mvchip->regs,
  1020					    GPIO_LEVEL_MASK_ARMADAXP_OFF(i),
  1021					    &mvchip->level_mask_regs[i]);
  1022			}
  1023			break;
  1024		default:
  1025			BUG();
  1026		}
  1027	
  1028		if (IS_REACHABLE(CONFIG_PWM) && mvchip->mvpwm)
  1029			mvebu_pwm_suspend(mvchip);
  1030	
  1031		return 0;
  1032	}
  1033	
> 1034	static int mvebu_gpio_resume(struct device *dev)
  1035	{
  1036		struct mvebu_gpio_chip *mvchip = dev_get_drvdata(dev);
  1037		int i;
  1038	
  1039		regmap_write(mvchip->regs, GPIO_OUT_OFF + mvchip->offset,
  1040			     mvchip->out_reg);
  1041		regmap_write(mvchip->regs, GPIO_IO_CONF_OFF + mvchip->offset,
  1042			     mvchip->io_conf_reg);
  1043		regmap_write(mvchip->regs, GPIO_BLINK_EN_OFF + mvchip->offset,
  1044			     mvchip->blink_en_reg);
  1045		regmap_write(mvchip->regs, GPIO_IN_POL_OFF + mvchip->offset,
  1046			     mvchip->in_pol_reg);
  1047	
  1048		switch (mvchip->soc_variant) {
  1049		case MVEBU_GPIO_SOC_VARIANT_ORION:
  1050		case MVEBU_GPIO_SOC_VARIANT_A8K:
  1051			regmap_write(mvchip->regs, GPIO_EDGE_MASK_OFF + mvchip->offset,
  1052				     mvchip->edge_mask_regs[0]);
  1053			regmap_write(mvchip->regs, GPIO_LEVEL_MASK_OFF + mvchip->offset,
  1054				     mvchip->level_mask_regs[0]);
  1055			break;
  1056		case MVEBU_GPIO_SOC_VARIANT_MV78200:
  1057			for (i = 0; i < 2; i++) {
  1058				regmap_write(mvchip->regs,
  1059					     GPIO_EDGE_MASK_MV78200_OFF(i),
  1060					     mvchip->edge_mask_regs[i]);
  1061				regmap_write(mvchip->regs,
  1062					     GPIO_LEVEL_MASK_MV78200_OFF(i),
  1063					     mvchip->level_mask_regs[i]);
  1064			}
  1065			break;
  1066		case MVEBU_GPIO_SOC_VARIANT_ARMADAXP:
  1067			for (i = 0; i < 4; i++) {
  1068				regmap_write(mvchip->regs,
  1069					     GPIO_EDGE_MASK_ARMADAXP_OFF(i),
  1070					     mvchip->edge_mask_regs[i]);
  1071				regmap_write(mvchip->regs,
  1072					     GPIO_LEVEL_MASK_ARMADAXP_OFF(i),
  1073					     mvchip->level_mask_regs[i]);
  1074			}
  1075			break;
  1076		default:
  1077			BUG();
  1078		}
  1079	
  1080		if (IS_REACHABLE(CONFIG_PWM) && mvchip->mvpwm)
  1081			mvebu_pwm_resume(mvchip);
  1082	
  1083		return 0;
  1084	}
  1085	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki