* drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
@ 2022-11-18 13:49 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-11-18 13:49 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "low confidence static check warning: drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "huangjie.albert" <huangjie.albert@bytedance.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84368d882b9688bfac77ce48d33b1e20a4e4a787
commit: a7722890fdfb2aaeb6b02d68bb0f1e411e58d539 virtio_ring : keep used_wrap_counter in vq->last_used_idx
date: 5 months ago
:::::: branch date: 16 hours ago
:::::: commit date: 5 months ago
compiler: sparc-linux-gcc (GCC) 12.1.0
reproduce (cppcheck warning):
# apt-get install cppcheck
git checkout a7722890fdfb2aaeb6b02d68bb0f1e411e58d539
cppcheck --quiet --enable=style,performance,portability --template=gcc FILE
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR);
^
vim +1712 drivers/virtio/virtio_ring.c
5a22242160201b Jason Wang 2021-06-04 1658
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1659 static struct virtqueue *vring_create_virtqueue_packed(
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1660 unsigned int index,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1661 unsigned int num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1662 unsigned int vring_align,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1663 struct virtio_device *vdev,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1664 bool weak_barriers,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1665 bool may_reduce_num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1666 bool context,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1667 bool (*notify)(struct virtqueue *),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1668 void (*callback)(struct virtqueue *),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1669 const char *name)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1670 {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1671 struct vring_virtqueue *vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1672 struct vring_packed_desc *ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1673 struct vring_packed_desc_event *driver, *device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1674 dma_addr_t ring_dma_addr, driver_event_dma_addr, device_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1675 size_t ring_size_in_bytes, event_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1676
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1677 ring_size_in_bytes = num * sizeof(struct vring_packed_desc);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1678
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1679 ring = vring_alloc_queue(vdev, ring_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1680 &ring_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1681 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1682 if (!ring)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1683 goto err_ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1684
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1685 event_size_in_bytes = sizeof(struct vring_packed_desc_event);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1686
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1687 driver = vring_alloc_queue(vdev, event_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1688 &driver_event_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1689 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1690 if (!driver)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1691 goto err_driver;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1692
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1693 device = vring_alloc_queue(vdev, event_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1694 &device_event_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1695 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1696 if (!device)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1697 goto err_device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1698
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1699 vq = kmalloc(sizeof(*vq), GFP_KERNEL);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1700 if (!vq)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1701 goto err_vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1702
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1703 vq->vq.callback = callback;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1704 vq->vq.vdev = vdev;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1705 vq->vq.name = name;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1706 vq->vq.num_free = num;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1707 vq->vq.index = index;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1708 vq->we_own_ring = true;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1709 vq->notify = notify;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1710 vq->weak_barriers = weak_barriers;
8b4ec69d7e098a Jason Wang 2022-05-27 1711 vq->broken = true;
a7722890fdfb2a huangjie.albert 2022-06-17 @1712 vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR);
8d622d21d24803 Michael S. Tsirkin 2021-04-13 1713 vq->event_triggered = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1714 vq->num_added = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1715 vq->packed_ring = true;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1716 vq->use_dma_api = vring_use_dma_api(vdev);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1717 #ifdef DEBUG
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1718 vq->in_use = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1719 vq->last_add_time_valid = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1720 #endif
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1721
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1722 vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC) &&
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1723 !context;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1724 vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1725
45383fb0f42db3 Tiwei Bie 2019-01-23 1726 if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
45383fb0f42db3 Tiwei Bie 2019-01-23 1727 vq->weak_barriers = false;
45383fb0f42db3 Tiwei Bie 2019-01-23 1728
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1729 vq->packed.ring_dma_addr = ring_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1730 vq->packed.driver_event_dma_addr = driver_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1731 vq->packed.device_event_dma_addr = device_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1732
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1733 vq->packed.ring_size_in_bytes = ring_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1734 vq->packed.event_size_in_bytes = event_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1735
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1736 vq->packed.vring.num = num;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1737 vq->packed.vring.desc = ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1738 vq->packed.vring.driver = driver;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1739 vq->packed.vring.device = device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1740
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1741 vq->packed.next_avail_idx = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1742 vq->packed.avail_wrap_counter = 1;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1743 vq->packed.event_flags_shadow = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1744 vq->packed.avail_used_flags = 1 << VRING_PACKED_DESC_F_AVAIL;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1745
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1746 vq->packed.desc_state = kmalloc_array(num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1747 sizeof(struct vring_desc_state_packed),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1748 GFP_KERNEL);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1749 if (!vq->packed.desc_state)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1750 goto err_desc_state;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1751
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1752 memset(vq->packed.desc_state, 0,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1753 num * sizeof(struct vring_desc_state_packed));
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1754
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1755 /* Put everything in free lists. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1756 vq->free_head = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1757
5a22242160201b Jason Wang 2021-06-04 1758 vq->packed.desc_extra = vring_alloc_desc_extra(vq, num);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1759 if (!vq->packed.desc_extra)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1760 goto err_desc_extra;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1761
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1762 /* No callback? Tell other side not to bother us. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1763 if (!callback) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1764 vq->packed.event_flags_shadow = VRING_PACKED_EVENT_FLAG_DISABLE;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1765 vq->packed.vring.driver->flags =
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1766 cpu_to_le16(vq->packed.event_flags_shadow);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1767 }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1768
0e566c8f0f2e83 Parav Pandit 2021-07-21 1769 spin_lock(&vdev->vqs_list_lock);
e152d8af4220a0 Dan Carpenter 2020-12-04 1770 list_add_tail(&vq->vq.list, &vdev->vqs);
0e566c8f0f2e83 Parav Pandit 2021-07-21 1771 spin_unlock(&vdev->vqs_list_lock);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1772 return &vq->vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1773
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1774 err_desc_extra:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1775 kfree(vq->packed.desc_state);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1776 err_desc_state:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1777 kfree(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1778 err_vq:
ae93d8ea0fa701 Dan Carpenter 2020-12-04 1779 vring_free_queue(vdev, event_size_in_bytes, device, device_event_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1780 err_device:
ae93d8ea0fa701 Dan Carpenter 2020-12-04 1781 vring_free_queue(vdev, event_size_in_bytes, driver, driver_event_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1782 err_driver:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1783 vring_free_queue(vdev, ring_size_in_bytes, ring, ring_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1784 err_ring:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1785 return NULL;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1786 }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1787
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
* drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
@ 2023-01-03 13:27 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-01-03 13:27 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "low confidence static check warning: drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "huangjie.albert" <huangjie.albert@bytedance.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 69b41ac87e4a664de78a395ff97166f0b2943210
commit: a7722890fdfb2aaeb6b02d68bb0f1e411e58d539 virtio_ring : keep used_wrap_counter in vq->last_used_idx
date: 6 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 6 months ago
compiler: xtensa-linux-gcc (GCC) 12.1.0
reproduce (cppcheck warning):
# apt-get install cppcheck
git checkout a7722890fdfb2aaeb6b02d68bb0f1e411e58d539
cppcheck --quiet --enable=style,performance,portability --template=gcc FILE
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> kernel/ucount.c:134:60: warning: Parameter 'ns' can be declared as pointer to const [constParameter]
static struct ucounts *find_ucounts(struct user_namespace *ns, kuid_t uid, struct hlist_head *hashent)
^
>> kernel/ucount.c:297:21: warning: Parameter 'last' can be declared as pointer to const [constParameter]
struct ucounts *last, enum ucount_type type)
^
>> kernel/ucount.c:35:46: warning: Parameter 'set' can be declared as pointer to const [constParameter]
static int set_is_seen(struct ctl_table_set *set)
^
--
>> kernel/irq/manage.c:966:39: warning: Same expression in both branches of ternary operator. [duplicateExpressionTernary]
chip ? (chip->name ? : "unknown") : "unknown");
^
>> kernel/irq/manage.c:1345:46: warning: Parameter 'dev_id' can be declared as pointer to const [constParameter]
void irq_wake_thread(unsigned int irq, void *dev_id)
^
kernel/irq/manage.c:1874:66: warning: Parameter 'dev_id' can be declared as pointer to const [constParameter]
static struct irqaction *__free_irq(struct irq_desc *desc, void *dev_id)
^
kernel/irq/manage.c:2460:77: warning: Parameter 'dev_id' can be declared as pointer to const [constParameter]
static struct irqaction *__free_percpu_irq(unsigned int irq, void __percpu *dev_id)
^
>> drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR);
^
>> fs/fuse/inode.c:411:17: warning: Uninitialized variable: fm_iter->sb [uninitvar]
if (!fm_iter->sb)
^
--
>> fs/userfaultfd.c:876:40: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses. [clarifyCondition]
BUG_ON(!!vma->vm_userfaultfd_ctx.ctx ^
^
fs/userfaultfd.c:1343:40: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses. [clarifyCondition]
BUG_ON(!!cur->vm_userfaultfd_ctx.ctx ^
^
fs/userfaultfd.c:1550:40: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses. [clarifyCondition]
BUG_ON(!!cur->vm_userfaultfd_ctx.ctx ^
^
>> fs/userfaultfd.c:791:51: warning: Parameter 'ctx' can be declared as pointer to const [constParameter]
static bool has_unmap_ctx(struct userfaultfd_ctx *ctx, struct list_head *unmaps,
^
>> fs/userfaultfd.c:713:12: warning: Uninitialized variables: fctx.orig, fctx.new, fctx.list [uninitvar]
dup_fctx(fctx);
^
>> fs/userfaultfd.c:843:42: warning: Uninitialized variable: ctx->ctx [uninitvar]
userfaultfd_event_wait_completion(ctx->ctx, &ewq);
^
vim +1712 drivers/virtio/virtio_ring.c
5a22242160201b Jason Wang 2021-06-04 1658
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1659 static struct virtqueue *vring_create_virtqueue_packed(
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1660 unsigned int index,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1661 unsigned int num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1662 unsigned int vring_align,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1663 struct virtio_device *vdev,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1664 bool weak_barriers,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1665 bool may_reduce_num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1666 bool context,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1667 bool (*notify)(struct virtqueue *),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1668 void (*callback)(struct virtqueue *),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1669 const char *name)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1670 {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1671 struct vring_virtqueue *vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1672 struct vring_packed_desc *ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1673 struct vring_packed_desc_event *driver, *device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1674 dma_addr_t ring_dma_addr, driver_event_dma_addr, device_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1675 size_t ring_size_in_bytes, event_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1676
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1677 ring_size_in_bytes = num * sizeof(struct vring_packed_desc);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1678
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1679 ring = vring_alloc_queue(vdev, ring_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1680 &ring_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1681 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1682 if (!ring)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1683 goto err_ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1684
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1685 event_size_in_bytes = sizeof(struct vring_packed_desc_event);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1686
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1687 driver = vring_alloc_queue(vdev, event_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1688 &driver_event_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1689 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1690 if (!driver)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1691 goto err_driver;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1692
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1693 device = vring_alloc_queue(vdev, event_size_in_bytes,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1694 &device_event_dma_addr,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1695 GFP_KERNEL|__GFP_NOWARN|__GFP_ZERO);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1696 if (!device)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1697 goto err_device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1698
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1699 vq = kmalloc(sizeof(*vq), GFP_KERNEL);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1700 if (!vq)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1701 goto err_vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1702
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1703 vq->vq.callback = callback;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1704 vq->vq.vdev = vdev;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1705 vq->vq.name = name;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1706 vq->vq.num_free = num;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1707 vq->vq.index = index;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1708 vq->we_own_ring = true;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1709 vq->notify = notify;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1710 vq->weak_barriers = weak_barriers;
8b4ec69d7e098a Jason Wang 2022-05-27 1711 vq->broken = true;
a7722890fdfb2a huangjie.albert 2022-06-17 @1712 vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR);
8d622d21d24803 Michael S. Tsirkin 2021-04-13 1713 vq->event_triggered = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1714 vq->num_added = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1715 vq->packed_ring = true;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1716 vq->use_dma_api = vring_use_dma_api(vdev);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1717 #ifdef DEBUG
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1718 vq->in_use = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1719 vq->last_add_time_valid = false;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1720 #endif
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1721
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1722 vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC) &&
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1723 !context;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1724 vq->event = virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1725
45383fb0f42db3 Tiwei Bie 2019-01-23 1726 if (virtio_has_feature(vdev, VIRTIO_F_ORDER_PLATFORM))
45383fb0f42db3 Tiwei Bie 2019-01-23 1727 vq->weak_barriers = false;
45383fb0f42db3 Tiwei Bie 2019-01-23 1728
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1729 vq->packed.ring_dma_addr = ring_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1730 vq->packed.driver_event_dma_addr = driver_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1731 vq->packed.device_event_dma_addr = device_event_dma_addr;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1732
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1733 vq->packed.ring_size_in_bytes = ring_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1734 vq->packed.event_size_in_bytes = event_size_in_bytes;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1735
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1736 vq->packed.vring.num = num;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1737 vq->packed.vring.desc = ring;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1738 vq->packed.vring.driver = driver;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1739 vq->packed.vring.device = device;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1740
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1741 vq->packed.next_avail_idx = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1742 vq->packed.avail_wrap_counter = 1;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1743 vq->packed.event_flags_shadow = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1744 vq->packed.avail_used_flags = 1 << VRING_PACKED_DESC_F_AVAIL;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1745
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1746 vq->packed.desc_state = kmalloc_array(num,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1747 sizeof(struct vring_desc_state_packed),
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1748 GFP_KERNEL);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1749 if (!vq->packed.desc_state)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1750 goto err_desc_state;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1751
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1752 memset(vq->packed.desc_state, 0,
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1753 num * sizeof(struct vring_desc_state_packed));
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1754
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1755 /* Put everything in free lists. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1756 vq->free_head = 0;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1757
5a22242160201b Jason Wang 2021-06-04 1758 vq->packed.desc_extra = vring_alloc_desc_extra(vq, num);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1759 if (!vq->packed.desc_extra)
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1760 goto err_desc_extra;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1761
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1762 /* No callback? Tell other side not to bother us. */
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1763 if (!callback) {
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1764 vq->packed.event_flags_shadow = VRING_PACKED_EVENT_FLAG_DISABLE;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1765 vq->packed.vring.driver->flags =
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1766 cpu_to_le16(vq->packed.event_flags_shadow);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1767 }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1768
0e566c8f0f2e83 Parav Pandit 2021-07-21 1769 spin_lock(&vdev->vqs_list_lock);
e152d8af4220a0 Dan Carpenter 2020-12-04 1770 list_add_tail(&vq->vq.list, &vdev->vqs);
0e566c8f0f2e83 Parav Pandit 2021-07-21 1771 spin_unlock(&vdev->vqs_list_lock);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1772 return &vq->vq;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1773
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1774 err_desc_extra:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1775 kfree(vq->packed.desc_state);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1776 err_desc_state:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1777 kfree(vq);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1778 err_vq:
ae93d8ea0fa701 Dan Carpenter 2020-12-04 1779 vring_free_queue(vdev, event_size_in_bytes, device, device_event_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1780 err_device:
ae93d8ea0fa701 Dan Carpenter 2020-12-04 1781 vring_free_queue(vdev, event_size_in_bytes, driver, driver_event_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1782 err_driver:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1783 vring_free_queue(vdev, ring_size_in_bytes, ring, ring_dma_addr);
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1784 err_ring:
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1785 return NULL;
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1786 }
1ce9e6055fa0a9 Tiwei Bie 2018-11-21 1787
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-01-03 13:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-18 13:49 drivers/virtio/virtio_ring.c:1712:24: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck] kernel test robot
2023-01-03 13:27 kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).