drivers/irqchip/irq-renesas-rzv2h.c:382 rzv2h_tint_set_type() warn: subtract is higher precedence than shift

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Biju Das <[email protected]>
CC: Thomas Gleixner <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f5bbbfec59b4e2fb7520a91de3df8a6174325d6a
commit: cd4a3ced4d1cdb14ffe905657b98a91e9d239dfb irqchip/renesas-rzv2h: Prevent TINT spurious interrupt during resume
date:   7 months ago
:::::: branch date: 33 hours ago
:::::: commit date: 7 months ago
config: arm64-randconfig-r073-20260812 (https://download.01.org/0day-ci/archive/20260813/[email protected]/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
smatch: v0.5.0-9187-g5189e3fb

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: cd4a3ced4d1c ("irqchip/renesas-rzv2h: Prevent TINT spurious interrupt during resume")
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

smatch warnings:
drivers/irqchip/irq-renesas-rzv2h.c:382 rzv2h_tint_set_type() warn: subtract is higher precedence than shift
drivers/irqchip/irq-renesas-rzv2h.c:382 rzv2h_tint_set_type() warn: subtract is higher precedence than shift
drivers/irqchip/irq-renesas-rzv2h.c:382 rzv2h_tint_set_type() warn: subtract is higher precedence than shift
drivers/irqchip/irq-renesas-rzv2h.c:382 rzv2h_tint_set_type() warn: subtract is higher precedence than shift

vim +382 drivers/irqchip/irq-renesas-rzv2h.c

0d7605e75ac2d8 Fabrizio Castro 2024-10-10  325  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  326  static int rzv2h_tint_set_type(struct irq_data *d, unsigned int type)
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  327  {
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  328  	u32 titsr, titsr_k, titsel_n, tien;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  329  	struct rzv2h_icu_priv *priv;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  330  	u32 tssr, tssr_k, tssel_n;
cd4a3ced4d1cdb Biju Das        2026-01-13  331  	u32 titsr_cur, tssr_cur;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  332  	unsigned int hwirq;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  333  	u32 tint, sense;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  334  	int tint_nr;
1a6ebcc10b138a Biju Das        2025-02-24  335  	u8 nr_tint;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  336  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  337  	switch (type & IRQ_TYPE_SENSE_MASK) {
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  338  	case IRQ_TYPE_LEVEL_LOW:
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  339  		sense = ICU_TINT_LEVEL_LOW;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  340  		break;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  341  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  342  	case IRQ_TYPE_LEVEL_HIGH:
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  343  		sense = ICU_TINT_LEVEL_HIGH;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  344  		break;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  345  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  346  	case IRQ_TYPE_EDGE_RISING:
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  347  		sense = ICU_TINT_EDGE_RISING;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  348  		break;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  349  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  350  	case IRQ_TYPE_EDGE_FALLING:
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  351  		sense = ICU_TINT_EDGE_FALLING;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  352  		break;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  353  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  354  	default:
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  355  		return -EINVAL;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  356  	}
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  357  
eb23d23d082d09 Biju Das        2025-02-24  358  	priv = irq_data_to_priv(d);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  359  	tint = (u32)(uintptr_t)irq_data_get_irq_chip_data(d);
eb23d23d082d09 Biju Das        2025-02-24  360  	if (tint > priv->info->max_tssel)
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  361  		return -EINVAL;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  362  
399b2799985237 Biju Das        2025-02-24  363  	if (priv->info->tssel_lut)
399b2799985237 Biju Das        2025-02-24  364  		tint = priv->info->tssel_lut[tint];
399b2799985237 Biju Das        2025-02-24  365  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  366  	hwirq = irqd_to_hwirq(d);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  367  	tint_nr = hwirq - ICU_TINT_START;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  368  
1a6ebcc10b138a Biju Das        2025-02-24  369  	nr_tint = 32 / priv->info->field_width;
1a6ebcc10b138a Biju Das        2025-02-24  370  	tssr_k = tint_nr / nr_tint;
1a6ebcc10b138a Biju Das        2025-02-24  371  	tssel_n = tint_nr % nr_tint;
76c3b774734feb Biju Das        2025-02-24  372  	tien = ICU_TSSR_TIEN(tssel_n, priv->info->field_width);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  373  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  374  	titsr_k = ICU_TITSR_K(tint_nr);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  375  	titsel_n = ICU_TITSR_TITSEL_N(tint_nr);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  376  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  377  	guard(raw_spinlock)(&priv->lock);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  378  
0a9d6ef64e5e91 Biju Das        2025-02-24  379  	tssr = readl_relaxed(priv->base + priv->info->t_offs + ICU_TSSR(tssr_k));
cd4a3ced4d1cdb Biju Das        2026-01-13  380  	titsr = readl_relaxed(priv->base + priv->info->t_offs + ICU_TITSR(titsr_k));
cd4a3ced4d1cdb Biju Das        2026-01-13  381  
cd4a3ced4d1cdb Biju Das        2026-01-13 @382  	tssr_cur = field_get(ICU_TSSR_TSSEL_MASK(tssel_n, priv->info->field_width), tssr);
cd4a3ced4d1cdb Biju Das        2026-01-13  383  	titsr_cur = field_get(ICU_TITSR_TITSEL_MASK(titsel_n), titsr);
cd4a3ced4d1cdb Biju Das        2026-01-13  384  	if (tssr_cur == tint && titsr_cur == sense)
cd4a3ced4d1cdb Biju Das        2026-01-13  385  		return 0;
cd4a3ced4d1cdb Biju Das        2026-01-13  386  
e3a16c33db69ff Biju Das        2025-02-24  387  	tssr &= ~(ICU_TSSR_TSSEL_MASK(tssel_n, priv->info->field_width) | tien);
e3a16c33db69ff Biju Das        2025-02-24  388  	tssr |= ICU_TSSR_TSSEL_PREP(tint, tssel_n, priv->info->field_width);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  389  
0a9d6ef64e5e91 Biju Das        2025-02-24  390  	writel_relaxed(tssr, priv->base + priv->info->t_offs + ICU_TSSR(tssr_k));
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  391  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  392  	titsr &= ~ICU_TITSR_TITSEL_MASK(titsel_n);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  393  	titsr |= ICU_TITSR_TITSEL_PREP(sense, titsel_n);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  394  
0a9d6ef64e5e91 Biju Das        2025-02-24  395  	writel_relaxed(titsr, priv->base + priv->info->t_offs + ICU_TITSR(titsr_k));
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  396  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  397  	rzv2h_clear_tint_int(priv, hwirq);
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  398  
0a9d6ef64e5e91 Biju Das        2025-02-24  399  	writel_relaxed(tssr | tien, priv->base + priv->info->t_offs + ICU_TSSR(tssr_k));
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  400  
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  401  	return 0;
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  402  }
0d7605e75ac2d8 Fabrizio Castro 2024-10-10  403  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.