From: Shaohua Li <shaohua.li@xxxxxxxxx> serio shutdown is quite slow. It sometimes will take 0.2s for each port. Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx> Cc: Arjan van de Ven <arjan@xxxxxxxxxxxxx> Cc: Dmitry Torokhov <dtor@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/input/serio/serio.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff -puN drivers/input/serio/serio.c~serios-async-shutdown drivers/input/serio/serio.c --- a/drivers/input/serio/serio.c~serios-async-shutdown +++ a/drivers/input/serio/serio.c @@ -36,6 +36,7 @@ #include <linux/kthread.h> #include <linux/mutex.h> #include <linux/freezer.h> +#include <linux/async.h> MODULE_AUTHOR("Vojtech Pavlik <vojtech@xxxxxx>"); MODULE_DESCRIPTION("Serio abstraction core"); @@ -792,11 +793,17 @@ static void serio_cleanup(struct serio * mutex_unlock(&serio->drv_mutex); } +static void serio_async_shutdown(void *data, async_cookie_t cookie) +{ + struct serio *serio = data; + serio_cleanup(serio); +} + static void serio_shutdown(struct device *dev) { struct serio *serio = to_serio_port(dev); - serio_cleanup(serio); + async_schedule(serio_async_shutdown, serio); } static void serio_attach_driver(struct serio_driver *drv) _ -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html