Re: [PATCH v7 09/22] s390: vfio-ap: register matrix device with VFIO mdev framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/27/2018 07:26 AM, Halil Pasic wrote:


On 07/27/2018 01:17 PM, Cornelia Huck wrote:
On Fri, 27 Jul 2018 13:13:40 +0200
Halil Pasic <pasic@xxxxxxxxxxxxx> wrote:

@@ -65,6 +66,21 @@ static int vfio_ap_matrix_dev_create(void)
   {
       int ret;
   +    mutex_init(&matrix_dev.lock);
+    INIT_LIST_HEAD(&matrix_dev.mdev_list);
+
+    /* Test if PQAP(QCI) instruction is available */
+    if (test_facility(12)) {
+        ret = ap_qci(&matrix_dev.info);
+        if (ret && (ret != -EOPNOTSUPP)) {

So, is facility 12 a pre-req for PQAP(QCI)? Can the code work if
matrix_dev.info is not populated?

Yes and yes. It's basically only used in vfio_ap_matrix_init() and it
has fallbacks.

Ok. So facility 12 is required but not sufficient for PQAP(QCI) to be
available? (Just asking as I cannot check the doc; if it works with
fallbacks I'm fine.)

I took a look at the ap_qci() function. It returns:

    0:           success
    -EOPNOTSUPP: returned when an exception occurs executing the
                 PQAP(QCI) instruction

I conclude that if STFLE.12 is set, then the PQAP(QCI) instruction
should work. If -ENOPNOTSUPP is returned, then this would be a
serious error and I think we should return an error from this function.



AFAIR it should be sufficient in our case. My guess is that the non 0
return code stands for program exceptions that are not related to the
availability of QCI.







[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux