* drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
@ 2024-12-04 18:47 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2024-12-04 18:47 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Dave Jiang <dave.jiang@intel.com>
CC: Vinod Koul <vkoul@kernel.org>
CC: Tony Luck <tony.luck@intel.com>
CC: Dan Williams <dan.j.williams@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: feffde684ac29a3b7aec82d2df850fbdbdee55e4
commit: 0d5c10b4c84d6ae6255129e5f16a0d2119c74334 dmaengine: idxd: add work queue drain support
date: 4 years, 5 months ago
:::::: branch date: 24 hours ago
:::::: commit date: 4 years, 5 months ago
config: x86_64-randconfig-161-20241112 (https://download.01.org/0day-ci/archive/20241205/202412050237.MXIHJMPC-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412050237.MXIHJMPC-lkp@intel.com/
smatch warnings:
drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
vim +370 drivers/dma/idxd/device.c
bfe1d56091c1a4 Dave Jiang 2020-01-21 356
0d5c10b4c84d6a Dave Jiang 2020-06-26 357 static void idxd_cmd_exec(struct idxd_device *idxd, int cmd_code, u32 operand,
0d5c10b4c84d6a Dave Jiang 2020-06-26 358 u32 *status)
bfe1d56091c1a4 Dave Jiang 2020-01-21 359 {
bfe1d56091c1a4 Dave Jiang 2020-01-21 360 union idxd_command_reg cmd;
0d5c10b4c84d6a Dave Jiang 2020-06-26 361 DECLARE_COMPLETION_ONSTACK(done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 362 unsigned long flags;
bfe1d56091c1a4 Dave Jiang 2020-01-21 363
bfe1d56091c1a4 Dave Jiang 2020-01-21 364 memset(&cmd, 0, sizeof(cmd));
bfe1d56091c1a4 Dave Jiang 2020-01-21 365 cmd.cmd = cmd_code;
bfe1d56091c1a4 Dave Jiang 2020-01-21 366 cmd.operand = operand;
0d5c10b4c84d6a Dave Jiang 2020-06-26 367 cmd.int_req = 1;
0d5c10b4c84d6a Dave Jiang 2020-06-26 368
0d5c10b4c84d6a Dave Jiang 2020-06-26 369 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 @370 wait_event_lock_irq(idxd->cmd_waitq,
0d5c10b4c84d6a Dave Jiang 2020-06-26 371 !test_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags),
0d5c10b4c84d6a Dave Jiang 2020-06-26 372 idxd->dev_lock);
0d5c10b4c84d6a Dave Jiang 2020-06-26 373
bfe1d56091c1a4 Dave Jiang 2020-01-21 374 dev_dbg(&idxd->pdev->dev, "%s: sending cmd: %#x op: %#x\n",
bfe1d56091c1a4 Dave Jiang 2020-01-21 375 __func__, cmd_code, operand);
0d5c10b4c84d6a Dave Jiang 2020-06-26 376
0d5c10b4c84d6a Dave Jiang 2020-06-26 377 __set_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 378 idxd->cmd_done = &done;
bfe1d56091c1a4 Dave Jiang 2020-01-21 379 iowrite32(cmd.bits, idxd->reg_base + IDXD_CMD_OFFSET);
bfe1d56091c1a4 Dave Jiang 2020-01-21 380
0d5c10b4c84d6a Dave Jiang 2020-06-26 381 /*
0d5c10b4c84d6a Dave Jiang 2020-06-26 382 * After command submitted, release lock and go to sleep until
0d5c10b4c84d6a Dave Jiang 2020-06-26 383 * the command completes via interrupt.
0d5c10b4c84d6a Dave Jiang 2020-06-26 384 */
0d5c10b4c84d6a Dave Jiang 2020-06-26 385 spin_unlock_irqrestore(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 386 wait_for_completion(&done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 387 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 388 if (status)
0d5c10b4c84d6a Dave Jiang 2020-06-26 389 *status = ioread32(idxd->reg_base + IDXD_CMDSTS_OFFSET);
0d5c10b4c84d6a Dave Jiang 2020-06-26 390 __clear_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 391 /* Wake up other pending commands */
0d5c10b4c84d6a Dave Jiang 2020-06-26 392 wake_up(&idxd->cmd_waitq);
0d5c10b4c84d6a Dave Jiang 2020-06-26 393 spin_unlock_irqrestore(&idxd->dev_lock, flags);
bfe1d56091c1a4 Dave Jiang 2020-01-21 394 }
bfe1d56091c1a4 Dave Jiang 2020-01-21 395
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
@ 2024-12-05 7:53 Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2024-12-05 7:53 UTC (permalink / raw)
To: oe-kbuild, Dave Jiang
Cc: lkp, oe-kbuild-all, linux-kernel, Vinod Koul, Tony Luck,
Dan Williams
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: feffde684ac29a3b7aec82d2df850fbdbdee55e4
commit: 0d5c10b4c84d6ae6255129e5f16a0d2119c74334 dmaengine: idxd: add work queue drain support
config: x86_64-randconfig-161-20241112 (https://download.01.org/0day-ci/archive/20241205/202412050237.MXIHJMPC-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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 <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202412050237.MXIHJMPC-lkp@intel.com/
smatch warnings:
drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
vim +370 drivers/dma/idxd/device.c
0d5c10b4c84d6a Dave Jiang 2020-06-26 357 static void idxd_cmd_exec(struct idxd_device *idxd, int cmd_code, u32 operand,
0d5c10b4c84d6a Dave Jiang 2020-06-26 358 u32 *status)
bfe1d56091c1a4 Dave Jiang 2020-01-21 359 {
bfe1d56091c1a4 Dave Jiang 2020-01-21 360 union idxd_command_reg cmd;
0d5c10b4c84d6a Dave Jiang 2020-06-26 361 DECLARE_COMPLETION_ONSTACK(done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 362 unsigned long flags;
bfe1d56091c1a4 Dave Jiang 2020-01-21 363
bfe1d56091c1a4 Dave Jiang 2020-01-21 364 memset(&cmd, 0, sizeof(cmd));
bfe1d56091c1a4 Dave Jiang 2020-01-21 365 cmd.cmd = cmd_code;
bfe1d56091c1a4 Dave Jiang 2020-01-21 366 cmd.operand = operand;
0d5c10b4c84d6a Dave Jiang 2020-06-26 367 cmd.int_req = 1;
0d5c10b4c84d6a Dave Jiang 2020-06-26 368
0d5c10b4c84d6a Dave Jiang 2020-06-26 369 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 @370 wait_event_lock_irq(idxd->cmd_waitq,
0d5c10b4c84d6a Dave Jiang 2020-06-26 371 !test_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags),
0d5c10b4c84d6a Dave Jiang 2020-06-26 372 idxd->dev_lock);
Please understand that these emails complaining about ancient code are
from the zero day bot, not from me. The issue here is that
using spin_lock_irqsave() implies that perhaps the caller disabled IRQs
but then the wait_event_lock_irq() macro enables IRQs when it is
finished.
0d5c10b4c84d6a Dave Jiang 2020-06-26 373
bfe1d56091c1a4 Dave Jiang 2020-01-21 374 dev_dbg(&idxd->pdev->dev, "%s: sending cmd: %#x op: %#x\n",
bfe1d56091c1a4 Dave Jiang 2020-01-21 375 __func__, cmd_code, operand);
0d5c10b4c84d6a Dave Jiang 2020-06-26 376
0d5c10b4c84d6a Dave Jiang 2020-06-26 377 __set_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 378 idxd->cmd_done = &done;
bfe1d56091c1a4 Dave Jiang 2020-01-21 379 iowrite32(cmd.bits, idxd->reg_base + IDXD_CMD_OFFSET);
bfe1d56091c1a4 Dave Jiang 2020-01-21 380
0d5c10b4c84d6a Dave Jiang 2020-06-26 381 /*
0d5c10b4c84d6a Dave Jiang 2020-06-26 382 * After command submitted, release lock and go to sleep until
0d5c10b4c84d6a Dave Jiang 2020-06-26 383 * the command completes via interrupt.
0d5c10b4c84d6a Dave Jiang 2020-06-26 384 */
0d5c10b4c84d6a Dave Jiang 2020-06-26 385 spin_unlock_irqrestore(&idxd->dev_lock, flags);
This irqrestore sets the IRQs back to whatever they were when the function
was called.
0d5c10b4c84d6a Dave Jiang 2020-06-26 386 wait_for_completion(&done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 387 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 388 if (status)
0d5c10b4c84d6a Dave Jiang 2020-06-26 389 *status = ioread32(idxd->reg_base + IDXD_CMDSTS_OFFSET);
0d5c10b4c84d6a Dave Jiang 2020-06-26 390 __clear_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 391 /* Wake up other pending commands */
0d5c10b4c84d6a Dave Jiang 2020-06-26 392 wake_up(&idxd->cmd_waitq);
0d5c10b4c84d6a Dave Jiang 2020-06-26 393 spin_unlock_irqrestore(&idxd->dev_lock, flags);
bfe1d56091c1a4 Dave Jiang 2020-01-21 394 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
@ 2024-12-09 14:12 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2024-12-09 14:12 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Dave Jiang <dave.jiang@intel.com>
CC: Vinod Koul <vkoul@kernel.org>
CC: Tony Luck <tony.luck@intel.com>
CC: Dan Williams <dan.j.williams@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4
commit: 0d5c10b4c84d6ae6255129e5f16a0d2119c74334 dmaengine: idxd: add work queue drain support
date: 4 years, 5 months ago
:::::: branch date: 16 hours ago
:::::: commit date: 4 years, 5 months ago
config: x86_64-randconfig-161-20241112 (https://download.01.org/0day-ci/archive/20241209/202412092216.beBsxXQC-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412092216.beBsxXQC-lkp@intel.com/
smatch warnings:
drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq
vim +370 drivers/dma/idxd/device.c
bfe1d56091c1a4 Dave Jiang 2020-01-21 356
0d5c10b4c84d6a Dave Jiang 2020-06-26 357 static void idxd_cmd_exec(struct idxd_device *idxd, int cmd_code, u32 operand,
0d5c10b4c84d6a Dave Jiang 2020-06-26 358 u32 *status)
bfe1d56091c1a4 Dave Jiang 2020-01-21 359 {
bfe1d56091c1a4 Dave Jiang 2020-01-21 360 union idxd_command_reg cmd;
0d5c10b4c84d6a Dave Jiang 2020-06-26 361 DECLARE_COMPLETION_ONSTACK(done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 362 unsigned long flags;
bfe1d56091c1a4 Dave Jiang 2020-01-21 363
bfe1d56091c1a4 Dave Jiang 2020-01-21 364 memset(&cmd, 0, sizeof(cmd));
bfe1d56091c1a4 Dave Jiang 2020-01-21 365 cmd.cmd = cmd_code;
bfe1d56091c1a4 Dave Jiang 2020-01-21 366 cmd.operand = operand;
0d5c10b4c84d6a Dave Jiang 2020-06-26 367 cmd.int_req = 1;
0d5c10b4c84d6a Dave Jiang 2020-06-26 368
0d5c10b4c84d6a Dave Jiang 2020-06-26 369 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 @370 wait_event_lock_irq(idxd->cmd_waitq,
0d5c10b4c84d6a Dave Jiang 2020-06-26 371 !test_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags),
0d5c10b4c84d6a Dave Jiang 2020-06-26 372 idxd->dev_lock);
0d5c10b4c84d6a Dave Jiang 2020-06-26 373
bfe1d56091c1a4 Dave Jiang 2020-01-21 374 dev_dbg(&idxd->pdev->dev, "%s: sending cmd: %#x op: %#x\n",
bfe1d56091c1a4 Dave Jiang 2020-01-21 375 __func__, cmd_code, operand);
0d5c10b4c84d6a Dave Jiang 2020-06-26 376
0d5c10b4c84d6a Dave Jiang 2020-06-26 377 __set_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 378 idxd->cmd_done = &done;
bfe1d56091c1a4 Dave Jiang 2020-01-21 379 iowrite32(cmd.bits, idxd->reg_base + IDXD_CMD_OFFSET);
bfe1d56091c1a4 Dave Jiang 2020-01-21 380
0d5c10b4c84d6a Dave Jiang 2020-06-26 381 /*
0d5c10b4c84d6a Dave Jiang 2020-06-26 382 * After command submitted, release lock and go to sleep until
0d5c10b4c84d6a Dave Jiang 2020-06-26 383 * the command completes via interrupt.
0d5c10b4c84d6a Dave Jiang 2020-06-26 384 */
0d5c10b4c84d6a Dave Jiang 2020-06-26 385 spin_unlock_irqrestore(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 386 wait_for_completion(&done);
0d5c10b4c84d6a Dave Jiang 2020-06-26 387 spin_lock_irqsave(&idxd->dev_lock, flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 388 if (status)
0d5c10b4c84d6a Dave Jiang 2020-06-26 389 *status = ioread32(idxd->reg_base + IDXD_CMDSTS_OFFSET);
0d5c10b4c84d6a Dave Jiang 2020-06-26 390 __clear_bit(IDXD_FLAG_CMD_RUNNING, &idxd->flags);
0d5c10b4c84d6a Dave Jiang 2020-06-26 391 /* Wake up other pending commands */
0d5c10b4c84d6a Dave Jiang 2020-06-26 392 wake_up(&idxd->cmd_waitq);
0d5c10b4c84d6a Dave Jiang 2020-06-26 393 spin_unlock_irqrestore(&idxd->dev_lock, flags);
bfe1d56091c1a4 Dave Jiang 2020-01-21 394 }
bfe1d56091c1a4 Dave Jiang 2020-01-21 395
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-12-09 14:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-04 18:47 drivers/dma/idxd/device.c:370 idxd_cmd_exec() warn: mixing irqsave and irq kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2024-12-05 7:53 Dan Carpenter
2024-12-09 14:12 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.