From: Gautam Dawar <1924603@bugs.launchpad.net>
To: qemu-devel@nongnu.org
Subject: [Bug 1924603] Re: Incorrect feature negotiation for vhost-vdpa netdevice
Date: Tue, 18 May 2021 08:11:06 -0000 [thread overview]
Message-ID: <162132546640.7851.4472373007511733656.malone@gac.canonical.com> (raw)
In-Reply-To: 161851052657.18499.4390060645724242620.malonedeb@wampee.canonical.com
Thanks Thomas Huth.
I couldn't find an option to assign the issue on gitlab to anyone. Can
you please help with that?
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1924603
Title:
Incorrect feature negotiation for vhost-vdpa netdevice
Status in QEMU:
Invalid
Bug description:
QEMU cmdline:
=============
./x86_64-softmmu/qemu-system-x86_64 -machine accel=kvm -m 2G -hda /gautam/centos75_1.qcow2 -name gautam,process=gautam -enable-kvm -netdev vhost-vdpa,id=mynet0,vhostdev=/dev/vhost-vdpa-0 -device virtio-net-pci,netdev=mynet0,mac=02:AA:BB:DD:00:20,disable-modern=off,page-per-vq=on -cpu host --nographic
Host OS:
========
Linux kernel 5.11 running on x86 host
Guest OS:
==========
CentOS 7.5
Root cause analysis:
=====================
For vhost-vdpa netdevice, the feature negotiation results in sending
the superset of features received from device in call to get_features
vdpa ops callback.
During the feature-negotiation phase, the acknowledged feature bits
are initialized with backend_features and then checked for supported
feature bits in vhost_ack_features():
void vhost_net_ack_features(struct vhost_net *net, uint64_t features)
{
net->dev.acked_features = net->dev.backend_features;
vhost_ack_features(&net->dev, vhost_net_get_feature_bits(net), features);
}
The vhost_ack_features() function just builds up on the dev.acked_features and never trims it down:
void vhost_ack_features(struct vhost_dev *hdev, const int *feature_bits, uint64_t features)
{ const int *bit = feature_bits;
while (*bit != VHOST_INVALID_FEATURE_BIT) {
uint64_t bit_mask = (1ULL << *bit);
if (features & bit_mask)
hdev->acked_features |= bit_mask;
bit++;
}
}
Because of this hdev->acked_features is always minimally equal to the
value of device features and this is the value that is passed to the
device in set_features callback:
static int vhost_dev_set_features(struct vhost_dev *dev, bool enable_log)
{
uint64_t *features = dev->acked_features;
.....
r = dev->vhost_ops->*vhost_set_features*(dev, features);
}
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1924603/+subscriptions
next prev parent reply other threads:[~2021-05-18 8:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-15 18:15 [Bug 1924603] [NEW] Incorrect feature negotiation for vhost-vdpa netdevice Gautam Dawar
2021-04-15 18:17 ` [Bug 1924603] " Gautam Dawar
2021-05-13 8:09 ` Gautam Dawar
2021-05-15 9:40 ` Thomas Huth
2021-05-17 18:33 ` Thomas Huth
2021-05-18 8:11 ` Gautam Dawar [this message]
2021-05-18 10:06 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=162132546640.7851.4472373007511733656.malone@gac.canonical.com \
--to=1924603@bugs.launchpad.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.