2019-04-29 15:20:43

by Prarit Bhargava

[permalink] [raw]
Subject: [PATCH] kernel/module: Reschedule while waiting for modules to finish loading

Heiko, do you want a Signed-off-by or a Reported-by? Either one works
for me.

P.

----8<----

On a s390 z14 LAR with 2 cpus about stalls about 3% of the time while
loading the s390_trng.ko module.

Add a reschedule point to the loop that waits for modules to complete
loading.

Reported-by: Heiko Carstens <[email protected]>
Fixes: linux-next commit f9a75c1d717f ("modules: Only return -EEXIST for modules that have finished loading")
Signed-off-by: Prarit Bhargava <[email protected]>
Cc: Jessica Yu <[email protected]>
---
kernel/module.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/module.c b/kernel/module.c
index 410eeb7e4f1d..48748cfec991 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3585,6 +3585,7 @@ static int add_unformed_module(struct module *mod)
finished_loading(mod->name));
if (err)
goto out_unlocked;
+ cond_resched();
goto again;
}
err = -EEXIST;
--
2.18.1


2019-04-30 07:52:21

by Jessica Yu

[permalink] [raw]
Subject: Re: [PATCH] kernel/module: Reschedule while waiting for modules to finish loading

+++ Prarit Bhargava [29/04/19 11:17 -0400]:
>Heiko, do you want a Signed-off-by or a Reported-by? Either one works
>for me.
>
>P.

I think you forgot to CC Heiko :)

>----8<----
>
>On a s390 z14 LAR with 2 cpus about stalls about 3% of the time while
>loading the s390_trng.ko module.
>
>Add a reschedule point to the loop that waits for modules to complete
>loading.
>
>Reported-by: Heiko Carstens <[email protected]>
>Fixes: linux-next commit f9a75c1d717f ("modules: Only return -EEXIST for modules that have finished loading")
>Signed-off-by: Prarit Bhargava <[email protected]>
>Cc: Jessica Yu <[email protected]>
>---
> kernel/module.c | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/kernel/module.c b/kernel/module.c
>index 410eeb7e4f1d..48748cfec991 100644
>--- a/kernel/module.c
>+++ b/kernel/module.c
>@@ -3585,6 +3585,7 @@ static int add_unformed_module(struct module *mod)
> finished_loading(mod->name));
> if (err)
> goto out_unlocked;
>+ cond_resched();
> goto again;
> }
> err = -EEXIST;
>--
>2.18.1
>

2019-04-30 09:19:43

by Heiko Carstens

[permalink] [raw]
Subject: Re: [PATCH] kernel/module: Reschedule while waiting for modules to finish loading

On Tue, Apr 30, 2019 at 09:51:08AM +0200, Jessica Yu wrote:
> +++ Prarit Bhargava [29/04/19 11:17 -0400]:
> >Heiko, do you want a Signed-off-by or a Reported-by? Either one works
> >for me.
> >
> >P.
>
> I think you forgot to CC Heiko :)

Indeed ;)

I'm fine with the Reported-by tag. Thank you!

> >----8<----
> >
> >On a s390 z14 LAR with 2 cpus about stalls about 3% of the time while
> >loading the s390_trng.ko module.
> >
> >Add a reschedule point to the loop that waits for modules to complete
> >loading.
> >
> >Reported-by: Heiko Carstens <[email protected]>
> >Fixes: linux-next commit f9a75c1d717f ("modules: Only return -EEXIST for modules that have finished loading")
> >Signed-off-by: Prarit Bhargava <[email protected]>
> >Cc: Jessica Yu <[email protected]>
> >---
> >kernel/module.c | 1 +
> >1 file changed, 1 insertion(+)
> >
> >diff --git a/kernel/module.c b/kernel/module.c
> >index 410eeb7e4f1d..48748cfec991 100644
> >--- a/kernel/module.c
> >+++ b/kernel/module.c
> >@@ -3585,6 +3585,7 @@ static int add_unformed_module(struct module *mod)
> > finished_loading(mod->name));
> > if (err)
> > goto out_unlocked;
> >+ cond_resched();
> > goto again;
> > }
> > err = -EEXIST;
> >--
> >2.18.1
> >

2019-04-30 11:30:18

by Prarit Bhargava

[permalink] [raw]
Subject: Re: [PATCH] kernel/module: Reschedule while waiting for modules to finish loading



On 4/30/19 3:51 AM, Jessica Yu wrote:
> +++ Prarit Bhargava [29/04/19 11:17 -0400]:
>> Heiko, do you want a Signed-off-by or a Reported-by?  Either one works
>> for me.
>>
>> P.
>
> I think you forgot to CC Heiko :)

#oops.

I forgot that git-send-email doesn't pick up "Reported-by".

P.

>
>> ----8<----
>>
>> On a s390 z14 LAR with 2 cpus about stalls about 3% of the time while
>> loading the s390_trng.ko module.
>>
>> Add a reschedule point to the loop that waits for modules to complete
>> loading.
>>
>> Reported-by: Heiko Carstens <[email protected]>
>> Fixes: linux-next commit f9a75c1d717f ("modules: Only return -EEXIST for
>> modules that have finished loading")
>> Signed-off-by: Prarit Bhargava <[email protected]>
>> Cc: Jessica Yu <[email protected]>
>> ---
>> kernel/module.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/kernel/module.c b/kernel/module.c
>> index 410eeb7e4f1d..48748cfec991 100644
>> --- a/kernel/module.c
>> +++ b/kernel/module.c
>> @@ -3585,6 +3585,7 @@ static int add_unformed_module(struct module *mod)
>>                            finished_loading(mod->name));
>>             if (err)
>>                 goto out_unlocked;
>> +            cond_resched();
>>             goto again;
>>         }
>>         err = -EEXIST;
>> -- 
>> 2.18.1
>>

2019-04-30 12:18:53

by Jessica Yu

[permalink] [raw]
Subject: Re: [PATCH] kernel/module: Reschedule while waiting for modules to finish loading

+++ Prarit Bhargava [29/04/19 11:17 -0400]:
>Heiko, do you want a Signed-off-by or a Reported-by? Either one works
>for me.
>
>P.
>
>----8<----
>
>On a s390 z14 LAR with 2 cpus about stalls about 3% of the time while
>loading the s390_trng.ko module.
>
>Add a reschedule point to the loop that waits for modules to complete
>loading.
>
>Reported-by: Heiko Carstens <[email protected]>
>Fixes: linux-next commit f9a75c1d717f ("modules: Only return -EEXIST for modules that have finished loading")
>Signed-off-by: Prarit Bhargava <[email protected]>
>Cc: Jessica Yu <[email protected]>

Thanks for the fix! Applied to modules-next.

Jessica