Re: [PATCH 4/5] netdev: implement infrastructure for threadable napi irq

From: kbuild test robot
Date: Wed Jun 15 2016 - 10:14:15 EST


Hi,

[auto build test ERROR on tip/irq/core]
[also build test ERROR on v4.7-rc3 next-20160615]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Paolo-Abeni/genirq-threadable-IRQ-support/20160615-214836
config: cris-etrax-100lx_v2_defconfig (attached as .config)
compiler: cris-linux-gcc (GCC) 4.6.3
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=cris

All error/warnings (new ones prefixed by >>):

>> net/core/dev.c:3457:5: warning: "CONFIG_IRQ_FORCED_THREADING" is not defined [-Wundef]
net/core/dev.c: In function '____napi_schedule':
>> net/core/dev.c:3516:3: error: implicit declaration of function 'napi_threaded_poll' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors

vim +/napi_threaded_poll +3516 net/core/dev.c

3451 EXPORT_SYMBOL(netdev_max_backlog);
3452
3453 int netdev_tstamp_prequeue __read_mostly = 1;
3454 int netdev_budget __read_mostly = 300;
3455 int weight_p __read_mostly = 64; /* old backlog weight */
3456
> 3457 #if CONFIG_IRQ_FORCED_THREADING
3458 static int napi_poll(struct napi_struct *n, struct list_head *repoll);
3459
3460 static void napi_threaded_poll(struct napi_struct *napi)
3461 {
3462 unsigned long time_limit = jiffies + 2;
3463 struct list_head dummy_repoll;
3464 int budget = netdev_budget;
3465 bool again = true;
3466
3467 if (test_and_set_bit(NAPI_STATE_SCHED_THREAD, &napi->state))
3468 return;
3469
3470 local_irq_enable();
3471 INIT_LIST_HEAD(&dummy_repoll);
3472
3473 while (again) {
3474 /* ensure that the poll list is not empty */
3475 if (list_empty(&dummy_repoll))
3476 list_add(&napi->poll_list, &dummy_repoll);
3477
3478 budget -= napi_poll(napi, &dummy_repoll);
3479
3480 if (napi_disable_pending(napi))
3481 again = false;
3482 else if (!test_bit(NAPI_STATE_SCHED, &napi->state))
3483 again = false;
3484 else if (kthread_should_stop())
3485 again = false;
3486
3487 if (!again || unlikely(budget <= 0 ||
3488 time_after_eq(jiffies, time_limit))) {
3489 /* no need to reschedule if we are going to stop */
3490 if (again)
3491 cond_resched_softirq();
3492 time_limit = jiffies + 2;
3493 budget = netdev_budget;
3494 rcu_bh_qs();
3495 __kfree_skb_flush();
3496 }
3497 }
3498
3499 clear_bit(NAPI_STATE_SCHED_THREAD, &napi->state);
3500 local_irq_disable();
3501 }
3502
3503 static inline bool napi_is_threaded(struct napi_struct *napi)
3504 {
3505 return current == napi->thread;
3506 }
3507 #else
3508 #define napi_is_threaded(napi) 0
3509 #endif
3510
3511 /* Called with irq disabled */
3512 static inline void ____napi_schedule(struct softnet_data *sd,
3513 struct napi_struct *napi)
3514 {
3515 if (napi_is_threaded(napi)) {
> 3516 napi_threaded_poll(napi);
3517 return;
3518 }
3519 list_add_tail(&napi->poll_list, &sd->poll_list);

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data