Re: [PATCH 4/7] can: m_can: Do not cancel timer from within timer
From: kernel test robot
Date: Sat Jul 27 2024 - 05:33:38 EST
Hi Markus,
kernel test robot noticed the following build warnings:
[auto build test WARNING on mkl-can-next/testing]
[also build test WARNING on linus/master v6.10 next-20240726]
[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/Markus-Schneider-Pargmann/can-m_can-Reset-coalescing-during-suspend-resume/20240727-042714
base: https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git testing
patch link: https://lore.kernel.org/r/20240726195944.2414812-5-msp%40baylibre.com
patch subject: [PATCH 4/7] can: m_can: Do not cancel timer from within timer
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20240727/202407271748.gsVE0Hih-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240727/202407271748.gsVE0Hih-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
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407271748.gsVE0Hih-lkp@xxxxxxxxx/
All warnings (new ones prefixed by >>):
>> drivers/net/can/m_can/m_can.c:1205: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* This interrupt handler is called either from the interrupt thread or a
vim +1205 drivers/net/can/m_can/m_can.c
1203
1204 /**
> 1205 * This interrupt handler is called either from the interrupt thread or a
1206 * hrtimer. This has implications like cancelling a timer won't be possible
1207 * blocking.
1208 */
1209 static int m_can_interrupt_handler(struct m_can_classdev *cdev)
1210 {
1211 struct net_device *dev = cdev->net;
1212 u32 ir;
1213 int ret;
1214
1215 if (pm_runtime_suspended(cdev->dev))
1216 return IRQ_NONE;
1217
1218 ir = m_can_read(cdev, M_CAN_IR);
1219 m_can_coalescing_update(cdev, ir);
1220 if (!ir)
1221 return IRQ_NONE;
1222
1223 /* ACK all irqs */
1224 m_can_write(cdev, M_CAN_IR, ir);
1225
1226 if (cdev->ops->clear_interrupts)
1227 cdev->ops->clear_interrupts(cdev);
1228
1229 /* schedule NAPI in case of
1230 * - rx IRQ
1231 * - state change IRQ
1232 * - bus error IRQ and bus error reporting
1233 */
1234 if (ir & (IR_RF0N | IR_RF0W | IR_ERR_ALL_30X)) {
1235 cdev->irqstatus = ir;
1236 if (!cdev->is_peripheral) {
1237 m_can_disable_all_interrupts(cdev);
1238 napi_schedule(&cdev->napi);
1239 } else {
1240 ret = m_can_rx_handler(dev, NAPI_POLL_WEIGHT, ir);
1241 if (ret < 0)
1242 return ret;
1243 }
1244 }
1245
1246 if (cdev->version == 30) {
1247 if (ir & IR_TC) {
1248 /* Transmission Complete Interrupt*/
1249 u32 timestamp = 0;
1250 unsigned int frame_len;
1251
1252 if (cdev->is_peripheral)
1253 timestamp = m_can_get_timestamp(cdev);
1254 frame_len = m_can_tx_update_stats(cdev, 0, timestamp);
1255 m_can_finish_tx(cdev, 1, frame_len);
1256 }
1257 } else {
1258 if (ir & (IR_TEFN | IR_TEFW)) {
1259 /* New TX FIFO Element arrived */
1260 ret = m_can_echo_tx_event(dev);
1261 if (ret != 0)
1262 return ret;
1263 }
1264 }
1265
1266 if (cdev->is_peripheral)
1267 can_rx_offload_threaded_irq_finish(&cdev->offload);
1268
1269 return IRQ_HANDLED;
1270 }
1271
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki