s390/ap: Refine AP bus bindings complete processing

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>

authored by Harald Freudenberger and committed by Vasily Gorbik b4f5bd60 32db4019

+6 -1
+6 -1
drivers/s390/crypto/ap_bus.c
··· 971 char *name) 972 { 973 struct device_driver *drv = &ap_drv->driver; 974 975 drv->bus = &ap_bus_type; 976 drv->owner = owner; 977 drv->name = name; 978 - return driver_register(drv); 979 } 980 EXPORT_SYMBOL(ap_driver_register); 981
··· 971 char *name) 972 { 973 struct device_driver *drv = &ap_drv->driver; 974 + int rc; 975 976 drv->bus = &ap_bus_type; 977 drv->owner = owner; 978 drv->name = name; 979 + rc = driver_register(drv); 980 + 981 + ap_check_bindings_complete(); 982 + 983 + return rc; 984 } 985 EXPORT_SYMBOL(ap_driver_register); 986