On 26.03.19 21:45, Tony Krowiak wrote:
On 3/22/19 10:43 AM, Pierre Morel wrote:
The AP interruptions are assigned on a queue basis and
When I understand this here right this code is called when a queue goes+static void vfio_ap_free_queue(int apqn, struct ap_matrix_mdev *matrix_mdev)
+{
+ÂÂÂ struct vfio_ap_queue *q;
+
+ÂÂÂ q = vfio_ap_get_queue(apqn, &matrix_mdev->qlist);
+ÂÂÂ if (!q)
+ÂÂÂÂÂÂÂ return;
+ÂÂÂ q->matrix_mdev = NULL;
+ÂÂÂ vfio_ap_mdev_reset_queue(q);
I'm wondering if it's necessary to reset the queue here. The only time
a queue is used is when a guest using the mdev device is started. When
that guest is terminated, the fd for the mdev device is closed and the
mdev device's release callback is invoked. The release callback resets
the queues assigned to the mdev device. Is it really necessary to
reset the queue again when it is unassigned even if there would have
been no subsequent activity?
away from the guest but is still reserved for use by the vfio dd. So it is
possible to assign the queue now to another guest. But then it makes
sense to clear all the entries in the millicode queue because a pending
reply could be "received" by the wrong guest.
If this function is just called on remove of a queue device where the
device goes back to the AP bus, a reset is not needed.