linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
@ 2015-09-28  0:34 Ben Hutchings
  2015-09-28 10:34 ` Lee Jones
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Ben Hutchings @ 2015-09-28  0:34 UTC (permalink / raw)
  To: Maxim Levitsky, Roger Tseng; +Cc: LKML, Lee Jones

[-- Attachment #1: Type: text/plain, Size: 822 bytes --]

rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix).  A load average of ~1 on a system that
should be idle is somewhat alarming.

Change the sleep to be interruptible, but still ignore signals.

A better fix might be to replace this loop with a delayed work item.

References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
 		if (host->eject)
 			break;
 
-		msleep(1000);
+		if (msleep_interruptible(1000))
+			flush_signals(current);
 	}
 
 	complete(&host->detect_ms_exit);
-- 
Ben Hutchings
All extremists should be taken out and shot.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-09-28  0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
@ 2015-09-28 10:34 ` Lee Jones
  2015-09-28 11:10   ` Ben Hutchings
  2015-10-08  3:37 ` Roger Tseng
  2015-10-08  7:19 ` Lee Jones
  2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2015-09-28 10:34 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML

The subsystem is missing from the subject line.

On Mon, 28 Sep 2015, Ben Hutchings wrote:
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix).  A load average of ~1 on a system that
> should be idle is somewhat alarming.
> 
> Change the sleep to be interruptible, but still ignore signals.
> 
> A better fix might be to replace this loop with a delayed work item.
> 
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

How was this patch made?  Where's the diff etc?

Why was this patch sent to me?

> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
>  		if (host->eject)
>  			break;
>  
> -		msleep(1000);
> +		if (msleep_interruptible(1000))
> +			flush_signals(current);
>  	}
>  
>  	complete(&host->detect_ms_exit);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-09-28 10:34 ` Lee Jones
@ 2015-09-28 11:10   ` Ben Hutchings
  2015-09-28 11:23     ` Lee Jones
  0 siblings, 1 reply; 12+ messages in thread
From: Ben Hutchings @ 2015-09-28 11:10 UTC (permalink / raw)
  To: Lee Jones; +Cc: Maxim Levitsky, Roger Tseng, LKML

[-- Attachment #1: Type: text/plain, Size: 1367 bytes --]

On Mon, 2015-09-28 at 11:34 +0100, Lee Jones wrote:
> The subsystem is missing from the subject line.
> 
> On Mon, 28 Sep 2015, Ben Hutchings wrote:
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix).  A load average of ~1 on a system
> > that
> > should be idle is somewhat alarming.
> > 
> > Change the sleep to be interruptible, but still ignore signals.
> > 
> > A better fix might be to replace this loop with a delayed work
> > item.
> > 
> > References: https://bugs.debian.org/765717
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> 
> How was this patch made?  Where's the diff etc?

With quilt.

> Why was this patch sent to me?

I think I must have added you previously as MFD maintainer, but as this
doesn't touch rtsx_pcr or rtsx_usb it's not really in your area.  Sorry
to bother you.

Ben.

> > ---
> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> >  		if (host->eject)
> >  			break;
> >  
> > -		msleep(1000);
> > +		if (msleep_interruptible(1000))
> > +			flush_signals(current);
> >  	}
> >  
> >  	complete(&host->detect_ms_exit);
> 
-- 
Ben Hutchings
All extremists should be taken out and shot.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-09-28 11:10   ` Ben Hutchings
@ 2015-09-28 11:23     ` Lee Jones
  0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2015-09-28 11:23 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML

On Mon, 28 Sep 2015, Ben Hutchings wrote:
> On Mon, 2015-09-28 at 11:34 +0100, Lee Jones wrote:
> > The subsystem is missing from the subject line.
> > 
> > On Mon, 28 Sep 2015, Ben Hutchings wrote:
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix).  A load average of ~1 on a system
> > > that
> > > should be idle is somewhat alarming.
> > > 
> > > Change the sleep to be interruptible, but still ignore signals.
> > > 
> > > A better fix might be to replace this loop with a delayed work
> > > item.
> > > 
> > > References: https://bugs.debian.org/765717
> > > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> > 
> > How was this patch made?  Where's the diff etc?
> 
> With quilt.

Old Skool! ;)

> > Why was this patch sent to me?
> 
> I think I must have added you previously as MFD maintainer, but as this
> doesn't touch rtsx_pcr or rtsx_usb it's not really in your area.  Sorry
> to bother you.

No worries.

> > > ---
> > > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > > @@ -706,7 +706,8 @@ poll_again:
> > >  		if (host->eject)
> > >  			break;
> > >  
> > > -		msleep(1000);
> > > +		if (msleep_interruptible(1000))
> > > +			flush_signals(current);
> > >  	}
> > >  
> > >  	complete(&host->detect_ms_exit);
> > 



-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-09-28  0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
  2015-09-28 10:34 ` Lee Jones
@ 2015-10-08  3:37 ` Roger Tseng
  2015-10-08  7:19 ` Lee Jones
  2 siblings, 0 replies; 12+ messages in thread
From: Roger Tseng @ 2015-10-08  3:37 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Maxim Levitsky, LKML, Lee Jones

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1105 bytes --]

On Mon, 2015-09-28 at 01:34 +0100, Ben Hutchings wrote:
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix).  A load average of ~1 on a system that
> should be idle is somewhat alarming.
> 
> Change the sleep to be interruptible, but still ignore signals.
> 
> A better fix might be to replace this loop with a delayed work item.
The change should be OK providing it does the same delay. You can add my
ack.

> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
>  		if (host->eject)
>  			break;
>  
> -		msleep(1000);
> +		if (msleep_interruptible(1000))
> +			flush_signals(current);
>  	}
>  
>  	complete(&host->detect_ms_exit);

-- 
Best regards,
Roger Tseng
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-09-28  0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
  2015-09-28 10:34 ` Lee Jones
  2015-10-08  3:37 ` Roger Tseng
@ 2015-10-08  7:19 ` Lee Jones
  2015-10-08 19:35   ` Ben Hutchings
  2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2015-10-08  7:19 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML

On Mon, 28 Sep 2015, Ben Hutchings wrote:

> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix).  A load average of ~1 on a system that
> should be idle is somewhat alarming.
> 
> Change the sleep to be interruptible, but still ignore signals.
> 
> A better fix might be to replace this loop with a delayed work item.
> 
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

Any chance you can use Git instead of Quilt?  Failing that, is there a
way to tell Quilt to supply a diffstat in the patch?

> ---
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
>  		if (host->eject)
>  			break;
>  
> -		msleep(1000);
> +		if (msleep_interruptible(1000))
> +			flush_signals(current);
>  	}
>  
>  	complete(&host->detect_ms_exit);



-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-10-08  7:19 ` Lee Jones
@ 2015-10-08 19:35   ` Ben Hutchings
  2015-10-09  7:18     ` Lee Jones
  0 siblings, 1 reply; 12+ messages in thread
From: Ben Hutchings @ 2015-10-08 19:35 UTC (permalink / raw)
  To: Lee Jones; +Cc: Maxim Levitsky, Roger Tseng, LKML


[-- Attachment #1.1: Type: text/plain, Size: 1432 bytes --]

On Thu, 2015-10-08 at 08:19 +0100, Lee Jones wrote:
> On Mon, 28 Sep 2015, Ben Hutchings wrote:
> 
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix).  A load average of ~1 on a system that
> > should be idle is somewhat alarming.
> > 
> > Change the sleep to be interruptible, but still ignore signals.
> > 
> > A better fix might be to replace this loop with a delayed work item.
> > 
> > References: https://bugs.debian.org/765717
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> 
> Any chance you can use Git instead of Quilt?  Failing that, is there a
> way to tell Quilt to supply a diffstat in the patch?

Why does it matter?  'git am' is happy to apply it.  But in case it
really does make a difference, I've attached the git-format-patch
version.

Ben.

> > ---
> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> >  > > 	> > 	> > if (host->eject)
> >  > > 	> > 	> > 	> > break;
> >  
> > -> > 	> > 	> > msleep(1000);
> > +> > 	> > 	> > if (msleep_interruptible(1000))
> > +> > 	> > 	> > 	> > flush_signals(current);
> >  > > 	> > }
> >  
> >  > > 	> > complete(&host->detect_ms_exit);
> 
> 
> 
-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.

[-- Attachment #1.2: 0001-rtsx_usb_ms-Use-msleep_interruptible-in-polling-loop.patch --]
[-- Type: text/x-patch, Size: 1170 bytes --]

From 34dca6b208a1108a9499412f584468b31ee025e0 Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sun, 26 Oct 2014 03:39:42 +0000
Subject: [PATCH] rtsx_usb_ms: Use msleep_interruptible() in polling loop

rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix).  A load average of ~1 on a system that
should be idle is somewhat alarming.

Change the sleep to be interruptible, but still ignore signals.

A better fix might be to replace this loop with a delayed work item.

References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/memstick/host/rtsx_usb_ms.c b/drivers/memstick/host/rtsx_usb_ms.c
index 1105db2..645dede 100644
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
 		if (host->eject)
 			break;
 
-		msleep(1000);
+		if (msleep_interruptible(1000))
+			flush_signals(current);
 	}
 
 	complete(&host->detect_ms_exit);

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2015-10-08 19:35   ` Ben Hutchings
@ 2015-10-09  7:18     ` Lee Jones
  0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2015-10-09  7:18 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Maxim Levitsky, Roger Tseng, LKML

On Thu, 08 Oct 2015, Ben Hutchings wrote:

> On Thu, 2015-10-08 at 08:19 +0100, Lee Jones wrote:
> > On Mon, 28 Sep 2015, Ben Hutchings wrote:
> > 
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix).  A load average of ~1 on a system that
> > > should be idle is somewhat alarming.
> > > 
> > > Change the sleep to be interruptible, but still ignore signals.
> > > 
> > > A better fix might be to replace this loop with a delayed work item.
> > > 
> > > References: https://bugs.debian.org/765717
> > > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> > 
> > Any chance you can use Git instead of Quilt?  Failing that, is there a
> > way to tell Quilt to supply a diffstat in the patch?
> 
> Why does it matter?

To this patch?  It probably doesn't.

In general?  It absolutely helps with patch review -- it's the second
thing I look at.  Diffstats are especially helpful if/when patches
cross subsystem boundaries or when multiple files a touched.  Until I
scroll down I have no idea if this is just a memstick patch (which I
can see at the bottom of my screen) or in fact amends 5 subsystems
and requires special handling.

> 'git am' is happy to apply it.  But in case it
> really does make a difference, I've attached the git-format-patch
> version.

I meant more 'from now on', rather than that patch being a special
case.  Ultimately it's your decision.  I just think it makes things
that little bit easier for the reviewer, as I'm sure you can
appreciate.

> > > ---
> > > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > > @@ -706,7 +706,8 @@ poll_again:
> > >  > > 	> > 	> > if (host->eject)
> > >  > > 	> > 	> > 	> > break;
> > >  
> > > -> > 	> > 	> > msleep(1000);
> > > +> > 	> > 	> > if (msleep_interruptible(1000))
> > > +> > 	> > 	> > 	> > flush_signals(current);
> > >  > > 	> > }
> > >  
> > >  > > 	> > complete(&host->detect_ms_exit);
> > 
> > 
> > 

> From 34dca6b208a1108a9499412f584468b31ee025e0 Mon Sep 17 00:00:00 2001
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Sun, 26 Oct 2014 03:39:42 +0000
> Subject: [PATCH] rtsx_usb_ms: Use msleep_interruptible() in polling loop
> 
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix).  A load average of ~1 on a system that
> should be idle is somewhat alarming.
> 
> Change the sleep to be interruptible, but still ignore signals.
> 
> A better fix might be to replace this loop with a delayed work item.
> 
> References: https://bugs.debian.org/765717
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
>  drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/memstick/host/rtsx_usb_ms.c b/drivers/memstick/host/rtsx_usb_ms.c
> index 1105db2..645dede 100644
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
>  		if (host->eject)
>  			break;
>  
> -		msleep(1000);
> +		if (msleep_interruptible(1000))
> +			flush_signals(current);
>  	}
>  
>  	complete(&host->detect_ms_exit);




-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
@ 2016-05-02 20:17 Oleksandr Natalenko
  2016-05-02 20:56 ` Andrew Morton
  0 siblings, 1 reply; 12+ messages in thread
From: Oleksandr Natalenko @ 2016-05-02 20:17 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Andrew Morton, Lee Jones, Wolfram Sang, Roger Tseng, linux-kernel

This patch has already been posted to LKML by Ben Hutchings ~6 months
ago, but AFAIK no further action were performed. However, this patch
really fixes weird loadavg with RTS5129 card reader, so I would wonder
if this could be merged. AFAIK, it has been applied to some distros'
kernels, e.g., Ubuntu.

Original Ben's message goes below.

rtsx_usb_ms creates a task that mostly sleeps, but tasks in
uninterruptible sleep still contribute to the load average (for
bug-compatibility with Unix).  A load average of ~1 on a system that
should be idle is somewhat alarming.

Change the sleep to be interruptible, but still ignore signals.

A better fix might be to replace this loop with a delayed work item.

References: https://bugs.debian.org/765717
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
---
  drivers/memstick/host/rtsx_usb_ms.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/memstick/host/rtsx_usb_ms.c 
b/drivers/memstick/host/rtsx_usb_ms.c
index 1105db2..645dede 100644
--- a/drivers/memstick/host/rtsx_usb_ms.c
+++ b/drivers/memstick/host/rtsx_usb_ms.c
@@ -706,7 +706,8 @@ poll_again:
  		if (host->eject)
  			break;

-		msleep(1000);
+		if (msleep_interruptible(1000))
+			flush_signals(current);
  	}

  	complete(&host->detect_ms_exit);
-- 
2.8.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2016-05-02 20:17 Oleksandr Natalenko
@ 2016-05-02 20:56 ` Andrew Morton
  2016-05-03 13:40   ` Oleg Nesterov
  0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2016-05-02 20:56 UTC (permalink / raw)
  To: Oleksandr Natalenko
  Cc: Ben Hutchings, Lee Jones, Wolfram Sang, Roger Tseng, linux-kernel,
	Oleg Nesterov

On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko <oleksandr@natalenko.name> wrote:

> This patch has already been posted to LKML by Ben Hutchings ~6 months
> ago, but AFAIK no further action were performed. However, this patch
> really fixes weird loadavg with RTS5129 card reader, so I would wonder
> if this could be merged. AFAIK, it has been applied to some distros'
> kernels, e.g., Ubuntu.
> 
> Original Ben's message goes below.
> 
> rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> uninterruptible sleep still contribute to the load average (for
> bug-compatibility with Unix).  A load average of ~1 on a system that
> should be idle is somewhat alarming.
> 
> Change the sleep to be interruptible, but still ignore signals.
> 
> A better fix might be to replace this loop with a delayed work item.
> 

hm.

> index 1105db2..645dede 100644
> --- a/drivers/memstick/host/rtsx_usb_ms.c
> +++ b/drivers/memstick/host/rtsx_usb_ms.c
> @@ -706,7 +706,8 @@ poll_again:
>   		if (host->eject)
>   			break;
> 
> -		msleep(1000);
> +		if (msleep_interruptible(1000))
> +			flush_signals(current);
>   	}
> 
>   	complete(&host->detect_ms_exit);

flush_signals() is a bit scary.  If this was a userspace task and it
had (say) SIGINT pending then it would be very rude for a device driver
to rub that out.

But this isn't a userspace task - it's a kthread.  So I don't *think*
it can get any signals anyway?

And looking at Oleg's 9e7c8f8c62c1e1cda203b it appears that
flush_signals() is for flushing signals of a userspace task, not a
kthread?  Despite the comment "Flush all pending signals for this
kthread".

Confused.  It's been a while since I looked at this stuff and people
have mucked with it.  Oleg, can you please sort me out?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2016-05-02 20:56 ` Andrew Morton
@ 2016-05-03 13:40   ` Oleg Nesterov
  2016-05-03 15:22     ` Ben Hutchings
  0 siblings, 1 reply; 12+ messages in thread
From: Oleg Nesterov @ 2016-05-03 13:40 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Oleksandr Natalenko, Ben Hutchings, Lee Jones, Wolfram Sang,
	Roger Tseng, linux-kernel

On 05/02, Andrew Morton wrote:
>
> On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko <oleksandr@natalenko.name> wrote:
>
> > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > uninterruptible sleep still contribute to the load average (for
> > bug-compatibility with Unix).

We have TASK_NOLOAD/TASK_IDLE, you can just use schedule_timeout_idle(HZ).

but msleep_interruptible(1000) is fine too.

> > --- a/drivers/memstick/host/rtsx_usb_ms.c
> > +++ b/drivers/memstick/host/rtsx_usb_ms.c
> > @@ -706,7 +706,8 @@ poll_again:
> >   		if (host->eject)
> >   			break;
> >
> > -		msleep(1000);
> > +		if (msleep_interruptible(1000))
> > +			flush_signals(current);
> >   	}
> >
> >   	complete(&host->detect_ms_exit);
>
> flush_signals() is a bit scary.
...
> But this isn't a userspace task - it's a kthread.  So I don't *think*
> it can get any signals anyway?

Agreed, it is not needed and only adds some confusion, so I think
rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch should be
updated.

A kernel thread ignores all signals unless it does allow_signal(), so
you can safely remove flush_signals().

Oleg.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop
  2016-05-03 13:40   ` Oleg Nesterov
@ 2016-05-03 15:22     ` Ben Hutchings
  0 siblings, 0 replies; 12+ messages in thread
From: Ben Hutchings @ 2016-05-03 15:22 UTC (permalink / raw)
  To: Oleg Nesterov, Andrew Morton
  Cc: Oleksandr Natalenko, Lee Jones, Wolfram Sang, Roger Tseng,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 726 bytes --]

On Tue, 2016-05-03 at 15:40 +0200, Oleg Nesterov wrote:
> On 05/02, Andrew Morton wrote:
> > 
> > 
> > On Mon, 02 May 2016 23:17:41 +0300 Oleksandr Natalenko  wrote:
> > 
> > > 
> > > rtsx_usb_ms creates a task that mostly sleeps, but tasks in
> > > uninterruptible sleep still contribute to the load average (for
> > > bug-compatibility with Unix).
> We have TASK_NOLOAD/TASK_IDLE, you can just use schedule_timeout_idle(HZ).
[...]

I wasn't aware of that function... ah, that would be because it's new
in 4.6.  It seems much clearer to use that than to use
msleep_interruptible() and ignore the result.

Ben.

-- 
Ben Hutchings
In a hierarchy, every employee tends to rise to his level of incompetence.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-05-03 15:23 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-28  0:34 [PATCH RESEND] rtsx_usb_ms: Use msleep_interruptible() in polling loop Ben Hutchings
2015-09-28 10:34 ` Lee Jones
2015-09-28 11:10   ` Ben Hutchings
2015-09-28 11:23     ` Lee Jones
2015-10-08  3:37 ` Roger Tseng
2015-10-08  7:19 ` Lee Jones
2015-10-08 19:35   ` Ben Hutchings
2015-10-09  7:18     ` Lee Jones
  -- strict thread matches above, loose matches on Subject: below --
2016-05-02 20:17 Oleksandr Natalenko
2016-05-02 20:56 ` Andrew Morton
2016-05-03 13:40   ` Oleg Nesterov
2016-05-03 15:22     ` Ben Hutchings

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).