-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1 iQEcBAABAgAGBQJi36ocAAoJEO8Ells5jWIRuOYH/jtaDNGTBs/h8A041gQaCMmw jufUXHCdKGgmZMpJ/AoCUWx4USdx8hEGSt/j4kvSmIPX+VLuCfLefHDlTxndiWAv fnUr4NB7LAz2b5D3d5QX1Np+zHG5mHx95KfDIaWdcz9N1HUHlEOakxTDc2EvR1hF yh8g2n5xdvzK5kWvPcNgJpU/ezDumOFo04JndBb4fIqDmZfW3hvJQ3IKiS3P1J9C Kbb/usoXGrdoZ9T1R2cqtn1CxrgfMlF2pKJFWzs3nU+ewD9C6oKS4rDQCZxx+JEx ZvfnSTUPgBBlT4zqZTTjyFQMQdtis5qK5iAKDEENkqVC1iULPhnM9DN0qxcIoQs= =SpWG -----END PGP SIGNATURE----- Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging # gpg: Signature made Tue 26 Jul 2022 09:47:24 BST # gpg: using RSA key EF04965B398D6211 # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" [marginal] # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 215D 46F4 8246 689E C77F 3562 EF04 965B 398D 6211 * tag 'net-pull-request' of https://github.com/jasowang/qemu: vdpa: Fix memory listener deletions of iova tree vhost: Get vring base from vq, not svq e1000e: Fix possible interrupt loss when using MSI Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
0d0275c31f
@ -159,6 +159,8 @@ e1000e_intrmgr_on_throttling_timer(void *opaque)
|
||||
|
||||
if (msi_enabled(timer->core->owner)) {
|
||||
trace_e1000e_irq_msi_notify_postponed();
|
||||
/* Clear msi_causes_pending to fire MSI eventually */
|
||||
timer->core->msi_causes_pending = 0;
|
||||
e1000e_set_interrupt_cause(timer->core, 0);
|
||||
} else {
|
||||
trace_e1000e_irq_legacy_notify_postponed();
|
||||
|
@ -290,7 +290,7 @@ static void vhost_vdpa_listener_region_del(MemoryListener *listener,
|
||||
|
||||
result = vhost_iova_tree_find_iova(v->iova_tree, &mem_region);
|
||||
iova = result->iova;
|
||||
vhost_iova_tree_remove(v->iova_tree, &mem_region);
|
||||
vhost_iova_tree_remove(v->iova_tree, result);
|
||||
}
|
||||
vhost_vdpa_iotlb_batch_begin_once(v);
|
||||
ret = vhost_vdpa_dma_unmap(v, iova, int128_get64(llsize));
|
||||
@ -1179,7 +1179,18 @@ static int vhost_vdpa_set_vring_base(struct vhost_dev *dev,
|
||||
struct vhost_vring_state *ring)
|
||||
{
|
||||
struct vhost_vdpa *v = dev->opaque;
|
||||
VirtQueue *vq = virtio_get_queue(dev->vdev, ring->index);
|
||||
|
||||
/*
|
||||
* vhost-vdpa devices does not support in-flight requests. Set all of them
|
||||
* as available.
|
||||
*
|
||||
* TODO: This is ok for networking, but other kinds of devices might
|
||||
* have problems with these retransmissions.
|
||||
*/
|
||||
while (virtqueue_rewind(vq, 1)) {
|
||||
continue;
|
||||
}
|
||||
if (v->shadow_vqs_enabled) {
|
||||
/*
|
||||
* Device vring base was set at device start. SVQ base is handled by
|
||||
@ -1195,21 +1206,10 @@ static int vhost_vdpa_get_vring_base(struct vhost_dev *dev,
|
||||
struct vhost_vring_state *ring)
|
||||
{
|
||||
struct vhost_vdpa *v = dev->opaque;
|
||||
int vdpa_idx = ring->index - dev->vq_index;
|
||||
int ret;
|
||||
|
||||
if (v->shadow_vqs_enabled) {
|
||||
VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, vdpa_idx);
|
||||
|
||||
/*
|
||||
* Setting base as last used idx, so destination will see as available
|
||||
* all the entries that the device did not use, including the in-flight
|
||||
* processing ones.
|
||||
*
|
||||
* TODO: This is ok for networking, but other kinds of devices might
|
||||
* have problems with these retransmissions.
|
||||
*/
|
||||
ring->num = svq->last_used_idx;
|
||||
ring->num = virtio_queue_get_last_avail_idx(dev->vdev, ring->index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user