Messages in this thread | | | Subject | Re: [PATCH v6 2/7] s390: ap: new vfio_ap_queue structure | From | Pierre Morel <> | Date | Thu, 28 Mar 2019 13:53:25 +0100 |
| |
On 27/03/2019 12:00, Harald Freudenberger wrote: > 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
...snip...
>>> +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? > When I understand this here right this code is called when a queue goes > 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.
You are right Harald, the function is called when un-assigning a queue from a mediated device, so it must be reset before to assign it to another.
Regards, Pierre
-- Pierre Morel Linux/KVM/QEMU in Böblingen - Germany
| |