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