[PATCH 2/3] usb: gadget: fsl_qe_udc: do not use tasklet_disable before tasklet_kill

Subsystems: the rest, usb subsystem

STALE5009d

4 messages, 3 authors, 2012-10-31 · open the first message on its own page

[PATCH 2/3] usb: gadget: fsl_qe_udc: do not use tasklet_disable before tasklet_kill

From: Xiaotian Feng <hidden>
Date: 2012-10-31 08:05:48

If tasklet_disable() is called before related tasklet handled,
tasklet_kill will never be finished. tasklet_kill is enough.

Signed-off-by: Xiaotian Feng <redacted>
Cc: Li Yang <redacted>
Cc: Felipe Balbi <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
---
 drivers/usb/gadget/fsl_qe_udc.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index b09452d..4ad3b82 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -2661,7 +2661,7 @@ static int __devexit qe_udc_remove(struct platform_device *ofdev)
 	usb_del_gadget_udc(&udc->gadget);
 
 	udc->done = &done;
-	tasklet_disable(&udc->rx_tasklet);
+	tasklet_kill(&udc->rx_tasklet);
 
 	if (udc->nullmap) {
 		dma_unmap_single(udc->gadget.dev.parent,
@@ -2698,8 +2698,6 @@ static int __devexit qe_udc_remove(struct platform_device *ofdev)
 	free_irq(udc->usb_irq, udc);
 	irq_dispose_mapping(udc->usb_irq);
 
-	tasklet_kill(&udc->rx_tasklet);
-
 	iounmap(udc->usb_regs);
 
 	device_unregister(&udc->gadget.dev);
-- 
1.7.9.5

Re: [PATCH 2/3] usb: gadget: fsl_qe_udc: do not use tasklet_disable before tasklet_kill

From: Felipe Balbi <hidden>
Date: 2012-10-31 13:32:57

On Wed, Oct 31, 2012 at 04:06:00PM +0800, Xiaotian Feng wrote:
If tasklet_disable() is called before related tasklet handled,
tasklet_kill will never be finished. tasklet_kill is enough.
how did you test this ? Why changing FSL driver instead of switching
over to chipidea which is supposed to be shared by every licensee of the
chipidea core ?
quoted hunk
Signed-off-by: Xiaotian Feng <redacted>
Cc: Li Yang <redacted>
Cc: Felipe Balbi <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
---
 drivers/usb/gadget/fsl_qe_udc.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index b09452d..4ad3b82 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -2661,7 +2661,7 @@ static int __devexit qe_udc_remove(struct platform_device *ofdev)
 	usb_del_gadget_udc(&udc->gadget);
 
 	udc->done = &done;
-	tasklet_disable(&udc->rx_tasklet);
+	tasklet_kill(&udc->rx_tasklet);
 
 	if (udc->nullmap) {
 		dma_unmap_single(udc->gadget.dev.parent,
@@ -2698,8 +2698,6 @@ static int __devexit qe_udc_remove(struct platform_device *ofdev)
 	free_irq(udc->usb_irq, udc);
 	irq_dispose_mapping(udc->usb_irq);
 
-	tasklet_kill(&udc->rx_tasklet);
-
 	iounmap(udc->usb_regs);
 
 	device_unregister(&udc->gadget.dev);
-- 
1.7.9.5
-- 
balbi

Re: [PATCH 2/3] usb: gadget: fsl_qe_udc: do not use tasklet_disable before tasklet_kill

From: Li Yang <hidden>
Date: 2012-10-31 14:35:40

On Wed, Oct 31, 2012 at 9:26 PM, Felipe Balbi [off-list ref] wrote:
On Wed, Oct 31, 2012 at 04:06:00PM +0800, Xiaotian Feng wrote:
quoted
If tasklet_disable() is called before related tasklet handled,
tasklet_kill will never be finished. tasklet_kill is enough.
how did you test this ? Why changing FSL driver instead of switching
over to chipidea which is supposed to be shared by every licensee of the
chipidea core ?
The QE UDC is an private controller that is not compatible with the
Chipidea core.

- Leo

Re: [PATCH 2/3] usb: gadget: fsl_qe_udc: do not use tasklet_disable before tasklet_kill

From: Felipe Balbi <hidden>
Date: 2012-10-31 14:41:06

Hi,

On Wed, Oct 31, 2012 at 10:35:37PM +0800, Li Yang wrote:
On Wed, Oct 31, 2012 at 9:26 PM, Felipe Balbi [off-list ref] wrote:
quoted
On Wed, Oct 31, 2012 at 04:06:00PM +0800, Xiaotian Feng wrote:
quoted
If tasklet_disable() is called before related tasklet handled,
tasklet_kill will never be finished. tasklet_kill is enough.
how did you test this ? Why changing FSL driver instead of switching
over to chipidea which is supposed to be shared by every licensee of the
chipidea core ?
The QE UDC is an private controller that is not compatible with the
Chipidea core.
thanks for the clarification, but you still haven't answered how you
tested this ;-)

-- 
balbi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help