virtio-devices: vhost_user: Don't set features twice

The virtio features are negotiated and set at the time the device is
created, hence there's no need to set the features again while going
through the vhost-user setup that is performed upon queue activation.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf 2021-05-18 17:22:39 +02:00
parent 5d2df70a79
commit 334aa8c941
4 changed files with 1 additions and 21 deletions

View File

@ -222,7 +222,6 @@ impl VirtioDevice for Blk {
queues, queues,
queue_evts, queue_evts,
&interrupt_cb, &interrupt_cb,
self.common.acked_features,
) )
.map_err(ActivateError::VhostUserBlkSetup)?; .map_err(ActivateError::VhostUserBlkSetup)?;

View File

@ -445,7 +445,6 @@ impl VirtioDevice for Fs {
queues, queues,
queue_evts, queue_evts,
&interrupt_cb, &interrupt_cb,
self.common.acked_features,
) )
.map_err(ActivateError::VhostUserFsSetup)?; .map_err(ActivateError::VhostUserFsSetup)?;

View File

@ -223,7 +223,6 @@ impl VirtioDevice for Net {
queues, queues,
queue_evts, queue_evts,
&interrupt_cb, &interrupt_cb,
self.common.acked_features,
) )
.map_err(ActivateError::VhostUserNetSetup)?; .map_err(ActivateError::VhostUserNetSetup)?;

View File

@ -68,7 +68,7 @@ pub fn add_memory_region(vu: &mut Master, region: &Arc<GuestRegionMmap>) -> Resu
.map_err(Error::VhostUserAddMemReg) .map_err(Error::VhostUserAddMemReg)
} }
pub fn setup_vhost_user_vring( pub fn setup_vhost_user(
vu: &mut Master, vu: &mut Master,
mem: &GuestMemoryMmap, mem: &GuestMemoryMmap,
queues: Vec<Queue>, queues: Vec<Queue>,
@ -114,8 +114,6 @@ pub fn setup_vhost_user_vring(
{ {
vu.set_vring_call(queue_index, &eventfd) vu.set_vring_call(queue_index, &eventfd)
.map_err(Error::VhostUserSetVringCall)?; .map_err(Error::VhostUserSetVringCall)?;
} else {
return Err(Error::MissingIrqFd);
} }
vu.set_vring_kick(queue_index, &queue_evts[queue_index]) vu.set_vring_kick(queue_index, &queue_evts[queue_index])
@ -128,21 +126,6 @@ pub fn setup_vhost_user_vring(
Ok(()) Ok(())
} }
pub fn setup_vhost_user(
vu: &mut Master,
mem: &GuestMemoryMmap,
queues: Vec<Queue>,
queue_evts: Vec<EventFd>,
virtio_interrupt: &Arc<dyn VirtioInterrupt>,
acked_features: u64,
) -> Result<()> {
// Set features based on the acked features from the guest driver.
vu.set_features(acked_features)
.map_err(Error::VhostUserSetFeatures)?;
setup_vhost_user_vring(vu, mem, queues, queue_evts, virtio_interrupt)
}
pub fn reset_vhost_user(vu: &mut Master, num_queues: usize) -> Result<()> { pub fn reset_vhost_user(vu: &mut Master, num_queues: usize) -> Result<()> {
for queue_index in 0..num_queues { for queue_index in 0..num_queues {
// Disable the vrings. // Disable the vrings.