]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/ap: Refine AP bus bindings complete processing
authorHarald Freudenberger <freude@linux.ibm.com>
Tue, 6 Aug 2024 10:06:23 +0000 (12:06 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Aug 2024 15:36:07 +0000 (17:36 +0200)
commit b4f5bd60d558f6ba451d7e76aa05782c07a182a3 upstream.

With the rework of the AP bus scan and the introduction of
a bindings complete completion also the timing until the
userspace finally receives a AP bus binding complete uevent
had increased. Unfortunately this event triggers some important
jobs for preparation of KVM guests, for example the modification
of card/queue masks to reassign AP resources to the alternate
AP queue device driver (vfio_ap) which is the precondition
for building mediated devices which may be a precondition for
starting KVM guests using AP resources.

This small fix now triggers the check for binding complete
each time an AP device driver has registered. With this patch
the bindings complete may be posted up to 30s earlier as there
is no need to wait for the next AP bus scan any more.

Fixes: 778412ab915d ("s390/ap: rearm APQNs bindings complete completion")
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Cc: stable@vger.kernel.org
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/s390/crypto/ap_bus.c

index 898865be0dad91ea2d15276a0ecb31771ea16628..99fadfb4cd9f26f94f6cacddbe7f258fef62ce51 100644 (file)
@@ -971,11 +971,16 @@ int ap_driver_register(struct ap_driver *ap_drv, struct module *owner,
                       char *name)
 {
        struct device_driver *drv = &ap_drv->driver;
+       int rc;
 
        drv->bus = &ap_bus_type;
        drv->owner = owner;
        drv->name = name;
-       return driver_register(drv);
+       rc = driver_register(drv);
+
+       ap_check_bindings_complete();
+
+       return rc;
 }
 EXPORT_SYMBOL(ap_driver_register);