[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201709030525.Cws08kPn%fengguang.wu@intel.com>
Date: Sun, 3 Sep 2017 05:58:25 +0800
From: kbuild test robot <lkp@...el.com>
To: Eric Dumazet <edumazet@...gle.com>
Cc: kbuild-all@...org, "David S . Miller" <davem@...emloft.net>,
netdev <netdev@...r.kernel.org>,
Willem de Bruijn <willemb@...gle.com>,
Eric Dumazet <edumazet@...gle.com>,
Eric Dumazet <eric.dumazet@...il.com>
Subject: Re: [PATCH net-next 2/2] net: convert (struct ubuf_info)->refcnt to
refcount_t
Hi Eric,
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Eric-Dumazet/net-ubuf_info-refcnt-conversion/20170903-043506
config: i386-randconfig-i1-201736 (attached as .config)
compiler: gcc-4.8 (Debian 4.8.4-1) 4.8.4
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All warnings (new ones prefixed by >>):
drivers//vhost/net.c: In function 'handle_tx':
>> drivers//vhost/net.c:536:4: warning: passing argument 1 of 'atomic_set' from incompatible pointer type [enabled by default]
atomic_set(&ubuf->refcnt, 1);
^
In file included from include/linux/atomic.h:4:0,
from arch/x86/include/asm/thread_info.h:53,
from include/linux/thread_info.h:37,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:80,
from include/linux/spinlock.h:50,
from include/linux/wait.h:8,
from include/linux/eventfd.h:12,
from drivers//vhost/net.c:10:
arch/x86/include/asm/atomic.h:36:29: note: expected 'struct atomic_t *' but argument is of type 'struct refcount_t *'
static __always_inline void atomic_set(atomic_t *v, int i)
^
vim +/atomic_set +536 drivers//vhost/net.c
0ed005ce0 Jason Wang 2017-01-18 442
3a4d5c94e Michael S. Tsirkin 2010-01-14 443 /* Expects to be always run from workqueue - which acts as
3a4d5c94e Michael S. Tsirkin 2010-01-14 444 * read-size critical section for our kind of RCU. */
3a4d5c94e Michael S. Tsirkin 2010-01-14 445 static void handle_tx(struct vhost_net *net)
3a4d5c94e Michael S. Tsirkin 2010-01-14 446 {
2839400f8 Asias He 2013-04-27 447 struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX];
81f95a558 Michael S. Tsirkin 2013-04-28 448 struct vhost_virtqueue *vq = &nvq->vq;
98a527aac Al Viro 2014-12-10 449 unsigned out, in;
d5675bd20 Michael S. Tsirkin 2010-06-24 450 int head;
3a4d5c94e Michael S. Tsirkin 2010-01-14 451 struct msghdr msg = {
3a4d5c94e Michael S. Tsirkin 2010-01-14 452 .msg_name = NULL,
3a4d5c94e Michael S. Tsirkin 2010-01-14 453 .msg_namelen = 0,
3a4d5c94e Michael S. Tsirkin 2010-01-14 454 .msg_control = NULL,
3a4d5c94e Michael S. Tsirkin 2010-01-14 455 .msg_controllen = 0,
3a4d5c94e Michael S. Tsirkin 2010-01-14 456 .msg_flags = MSG_DONTWAIT,
3a4d5c94e Michael S. Tsirkin 2010-01-14 457 };
3a4d5c94e Michael S. Tsirkin 2010-01-14 458 size_t len, total_len = 0;
70181d512 Jason Wang 2013-04-10 459 int err;
3a4d5c94e Michael S. Tsirkin 2010-01-14 460 size_t hdr_size;
28457ee69 Arnd Bergmann 2010-03-09 461 struct socket *sock;
fe729a57c Asias He 2013-05-06 462 struct vhost_net_ubuf_ref *uninitialized_var(ubufs);
cedb9bdce Michael S. Tsirkin 2012-12-06 463 bool zcopy, zcopy_used;
28457ee69 Arnd Bergmann 2010-03-09 464
2e26af79b Asias He 2013-05-07 465 mutex_lock(&vq->mutex);
2e26af79b Asias He 2013-05-07 466 sock = vq->private_data;
3a4d5c94e Michael S. Tsirkin 2010-01-14 467 if (!sock)
2e26af79b Asias He 2013-05-07 468 goto out;
3a4d5c94e Michael S. Tsirkin 2010-01-14 469
6b1e6cc78 Jason Wang 2016-06-23 470 if (!vq_iotlb_prefetch(vq))
6b1e6cc78 Jason Wang 2016-06-23 471 goto out;
6b1e6cc78 Jason Wang 2016-06-23 472
8ea8cf89e Michael S. Tsirkin 2011-05-20 473 vhost_disable_notify(&net->dev, vq);
3a4d5c94e Michael S. Tsirkin 2010-01-14 474
81f95a558 Michael S. Tsirkin 2013-04-28 475 hdr_size = nvq->vhost_hlen;
2839400f8 Asias He 2013-04-27 476 zcopy = nvq->ubufs;
3a4d5c94e Michael S. Tsirkin 2010-01-14 477
3a4d5c94e Michael S. Tsirkin 2010-01-14 478 for (;;) {
bab632d69 Michael S. Tsirkin 2011-07-18 479 /* Release DMAs done buffers first */
bab632d69 Michael S. Tsirkin 2011-07-18 480 if (zcopy)
eaae8132e Michael S. Tsirkin 2012-11-01 481 vhost_zerocopy_signal_used(net, vq);
bab632d69 Michael S. Tsirkin 2011-07-18 482
f7c6be404 Jason Wang 2013-09-02 483 /* If more outstanding DMAs, queue the work.
f7c6be404 Jason Wang 2013-09-02 484 * Handle upend_idx wrap around
f7c6be404 Jason Wang 2013-09-02 485 */
0ed005ce0 Jason Wang 2017-01-18 486 if (unlikely(vhost_exceeds_maxpend(net)))
f7c6be404 Jason Wang 2013-09-02 487 break;
f7c6be404 Jason Wang 2013-09-02 488
030881372 Jason Wang 2016-03-04 489 head = vhost_net_tx_get_vq_desc(net, vq, vq->iov,
3a4d5c94e Michael S. Tsirkin 2010-01-14 490 ARRAY_SIZE(vq->iov),
030881372 Jason Wang 2016-03-04 491 &out, &in);
d5675bd20 Michael S. Tsirkin 2010-06-24 492 /* On error, stop handling until the next kick. */
7b3384fc3 Michael S. Tsirkin 2010-07-01 493 if (unlikely(head < 0))
d5675bd20 Michael S. Tsirkin 2010-06-24 494 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 495 /* Nothing new? Wait for eventfd to tell us they refilled. */
3a4d5c94e Michael S. Tsirkin 2010-01-14 496 if (head == vq->num) {
8ea8cf89e Michael S. Tsirkin 2011-05-20 497 if (unlikely(vhost_enable_notify(&net->dev, vq))) {
8ea8cf89e Michael S. Tsirkin 2011-05-20 498 vhost_disable_notify(&net->dev, vq);
3a4d5c94e Michael S. Tsirkin 2010-01-14 499 continue;
3a4d5c94e Michael S. Tsirkin 2010-01-14 500 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 501 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 502 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 503 if (in) {
3a4d5c94e Michael S. Tsirkin 2010-01-14 504 vq_err(vq, "Unexpected descriptor format for TX: "
3a4d5c94e Michael S. Tsirkin 2010-01-14 505 "out %d, int %d\n", out, in);
3a4d5c94e Michael S. Tsirkin 2010-01-14 506 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 507 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 508 /* Skip header. TODO: support TSO. */
3a4d5c94e Michael S. Tsirkin 2010-01-14 509 len = iov_length(vq->iov, out);
c0371da60 Al Viro 2014-11-24 510 iov_iter_init(&msg.msg_iter, WRITE, vq->iov, out, len);
98a527aac Al Viro 2014-12-10 511 iov_iter_advance(&msg.msg_iter, hdr_size);
3a4d5c94e Michael S. Tsirkin 2010-01-14 512 /* Sanity check */
01e97e651 Al Viro 2014-12-15 513 if (!msg_data_left(&msg)) {
3a4d5c94e Michael S. Tsirkin 2010-01-14 514 vq_err(vq, "Unexpected header len for TX: "
3a4d5c94e Michael S. Tsirkin 2010-01-14 515 "%zd expected %zd\n",
98a527aac Al Viro 2014-12-10 516 len, hdr_size);
3a4d5c94e Michael S. Tsirkin 2010-01-14 517 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 518 }
01e97e651 Al Viro 2014-12-15 519 len = msg_data_left(&msg);
ce21a0291 Jason Wang 2013-09-02 520
ce21a0291 Jason Wang 2013-09-02 521 zcopy_used = zcopy && len >= VHOST_GOODCOPY_LEN
ce21a0291 Jason Wang 2013-09-02 522 && (nvq->upend_idx + 1) % UIO_MAXIOV !=
ce21a0291 Jason Wang 2013-09-02 523 nvq->done_idx
ce21a0291 Jason Wang 2013-09-02 524 && vhost_net_tx_select_zcopy(net);
cedb9bdce Michael S. Tsirkin 2012-12-06 525
bab632d69 Michael S. Tsirkin 2011-07-18 526 /* use msg_control to pass vhost zerocopy ubuf info to skb */
cedb9bdce Michael S. Tsirkin 2012-12-06 527 if (zcopy_used) {
46aa92d1b Michael S. Tsirkin 2013-03-17 528 struct ubuf_info *ubuf;
2839400f8 Asias He 2013-04-27 529 ubuf = nvq->ubuf_info + nvq->upend_idx;
bab632d69 Michael S. Tsirkin 2011-07-18 530
8b38694a2 Michael S. Tsirkin 2014-10-24 531 vq->heads[nvq->upend_idx].id = cpu_to_vhost32(vq, head);
ce21a0291 Jason Wang 2013-09-02 532 vq->heads[nvq->upend_idx].len = VHOST_DMA_IN_PROGRESS;
bab632d69 Michael S. Tsirkin 2011-07-18 533 ubuf->callback = vhost_zerocopy_callback;
2839400f8 Asias He 2013-04-27 534 ubuf->ctx = nvq->ubufs;
2839400f8 Asias He 2013-04-27 535 ubuf->desc = nvq->upend_idx;
1f8b977ab Willem de Bruijn 2017-08-03 @536 atomic_set(&ubuf->refcnt, 1);
bab632d69 Michael S. Tsirkin 2011-07-18 537 msg.msg_control = ubuf;
bab632d69 Michael S. Tsirkin 2011-07-18 538 msg.msg_controllen = sizeof(ubuf);
2839400f8 Asias He 2013-04-27 539 ubufs = nvq->ubufs;
0ad8b480d Michael S. Tsirkin 2014-02-13 540 atomic_inc(&ubufs->refcount);
2839400f8 Asias He 2013-04-27 541 nvq->upend_idx = (nvq->upend_idx + 1) % UIO_MAXIOV;
ce21a0291 Jason Wang 2013-09-02 542 } else {
4364d5f96 Jason Wang 2013-06-05 543 msg.msg_control = NULL;
ce21a0291 Jason Wang 2013-09-02 544 ubufs = NULL;
ce21a0291 Jason Wang 2013-09-02 545 }
0ed005ce0 Jason Wang 2017-01-18 546
0ed005ce0 Jason Wang 2017-01-18 547 total_len += len;
0ed005ce0 Jason Wang 2017-01-18 548 if (total_len < VHOST_NET_WEIGHT &&
0ed005ce0 Jason Wang 2017-01-18 549 !vhost_vq_avail_empty(&net->dev, vq) &&
0ed005ce0 Jason Wang 2017-01-18 550 likely(!vhost_exceeds_maxpend(net))) {
0ed005ce0 Jason Wang 2017-01-18 551 msg.msg_flags |= MSG_MORE;
0ed005ce0 Jason Wang 2017-01-18 552 } else {
0ed005ce0 Jason Wang 2017-01-18 553 msg.msg_flags &= ~MSG_MORE;
0ed005ce0 Jason Wang 2017-01-18 554 }
0ed005ce0 Jason Wang 2017-01-18 555
3a4d5c94e Michael S. Tsirkin 2010-01-14 556 /* TODO: Check specific error and bomb out unless ENOBUFS? */
1b7841404 Ying Xue 2015-03-02 557 err = sock->ops->sendmsg(sock, &msg, len);
3a4d5c94e Michael S. Tsirkin 2010-01-14 558 if (unlikely(err < 0)) {
cedb9bdce Michael S. Tsirkin 2012-12-06 559 if (zcopy_used) {
fe729a57c Asias He 2013-05-06 560 vhost_net_ubuf_put(ubufs);
2839400f8 Asias He 2013-04-27 561 nvq->upend_idx = ((unsigned)nvq->upend_idx - 1)
2839400f8 Asias He 2013-04-27 562 % UIO_MAXIOV;
bab632d69 Michael S. Tsirkin 2011-07-18 563 }
8dd014adf David Stevens 2010-07-27 564 vhost_discard_vq_desc(vq, 1);
3a4d5c94e Michael S. Tsirkin 2010-01-14 565 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 566 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 567 if (err != len)
95c0ec6a9 Michael S. Tsirkin 2010-06-24 568 pr_debug("Truncated TX packet: "
3a4d5c94e Michael S. Tsirkin 2010-01-14 569 " len %d != %zd\n", err, len);
cedb9bdce Michael S. Tsirkin 2012-12-06 570 if (!zcopy_used)
3a4d5c94e Michael S. Tsirkin 2010-01-14 571 vhost_add_used_and_signal(&net->dev, vq, head, 0);
c8fb217af Jason Wang 2012-05-02 572 else
eaae8132e Michael S. Tsirkin 2012-11-01 573 vhost_zerocopy_signal_used(net, vq);
eaae8132e Michael S. Tsirkin 2012-11-01 574 vhost_net_tx_packet(net);
3a4d5c94e Michael S. Tsirkin 2010-01-14 575 if (unlikely(total_len >= VHOST_NET_WEIGHT)) {
3a4d5c94e Michael S. Tsirkin 2010-01-14 576 vhost_poll_queue(&vq->poll);
3a4d5c94e Michael S. Tsirkin 2010-01-14 577 break;
3a4d5c94e Michael S. Tsirkin 2010-01-14 578 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 579 }
2e26af79b Asias He 2013-05-07 580 out:
3a4d5c94e Michael S. Tsirkin 2010-01-14 581 mutex_unlock(&vq->mutex);
3a4d5c94e Michael S. Tsirkin 2010-01-14 582 }
3a4d5c94e Michael S. Tsirkin 2010-01-14 583
:::::: The code at line 536 was first introduced by commit
:::::: 1f8b977ab32dc5d148f103326e80d9097f1cefb5 sock: enable MSG_ZEROCOPY
:::::: TO: Willem de Bruijn <willemb@...gle.com>
:::::: CC: David S. Miller <davem@...emloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (32722 bytes)
Powered by blists - more mailing lists