On Fri, 22 Feb 2019 16:29:56 +0100 Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > We need to associate the ap_vfio_queue, which will hold the > per queue information for interrupt with a matrix mediated device > which hold the configuration and the way to the CRYCB. > > Let's do this when assigning a APID or a APQI to the mediated device > and clear the relation when unassigning. > > Queuing the devices on a list of free devices and testing the > matrix_mdev pointer to the associated matrix allow us to know > if the queue is associated to the matrix device and associated > or not to a mediated device. > > When resetting an AP queue we must wait until there are no more > messages in the message queue before considering the queue is really > in a clean state. > > Let's do it and wait until the status response code indicate the > queue is empty after issuing a PAPQ/ZAPQ instruction. I'm a bit confused about the context where that list moving etc. is supposed to take place. When are we assigning/deassigning? Is there even supposed to be any activity that we need to zap on the queues? Do we need any serialization/locking on the lists? > > Being at work on the reset function, let's simplify > vfio_ap_mdev_reset_queue and vfio_ap_mdev_reset_queues by using the > vfio_ap_queue structure as parameter. > > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> > --- > drivers/s390/crypto/vfio_ap_ops.c | 385 +++++++++++++++++++------------------- > 1 file changed, 189 insertions(+), 196 deletions(-)