All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port
@ 2021-06-02  9:57 Li Jun
  2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Li Jun @ 2021-06-02  9:57 UTC (permalink / raw)
  To: linux, heikki.krogerus; +Cc: gregkh, linux-usb

A pending hrtimer may expire after the kthread_worker of tcpm port
is destroyed, see below kernel dump when do module unload, fix it
by cancel the 2 hrtimers.

[  111.517018] Unable to handle kernel paging request at virtual address ffff8000118cb880
[  111.518786] blk_update_request: I/O error, dev sda, sector 60061185 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  111.526594] Mem abort info:
[  111.526597]   ESR = 0x96000047
[  111.526600]   EC = 0x25: DABT (current EL), IL = 32 bits
[  111.526604]   SET = 0, FnV = 0
[  111.526607]   EA = 0, S1PTW = 0
[  111.526610] Data abort info:
[  111.526612]   ISV = 0, ISS = 0x00000047
[  111.526615]   CM = 0, WnR = 1
[  111.526619] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041d75000
[  111.526623] [ffff8000118cb880] pgd=10000001bffff003, p4d=10000001bffff003, pud=10000001bfffe003, pmd=10000001bfffa003, pte=0000000000000000
[  111.526642] Internal error: Oops: 96000047 [#1] PREEMPT SMP
[  111.526647] Modules linked in: dwc3_imx8mp dwc3 phy_fsl_imx8mq_usb [last unloaded: tcpci]
[  111.526663] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.13.0-rc4-00927-gebbe9dbd802c-dirty #36
[  111.526670] Hardware name: NXP i.MX8MPlus EVK board (DT)
[  111.526674] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO BTYPE=--)
[  111.526681] pc : queued_spin_lock_slowpath+0x1a0/0x390
[  111.526695] lr : _raw_spin_lock_irqsave+0x88/0xb4
[  111.526703] sp : ffff800010003e20
[  111.526706] x29: ffff800010003e20 x28: ffff00017f380180
[  111.537156] buffer_io_error: 6 callbacks suppressed
[  111.537162] Buffer I/O error on dev sda1, logical block 60040704, async page read
[  111.539932]  x27: ffff00017f3801c0
[  111.539938] x26: ffff800010ba2490 x25: 0000000000000000 x24: 0000000000000001
[  111.543025] blk_update_request: I/O error, dev sda, sector 60061186 op 0x0:(READ) flags 0x0 phys_seg 7 prio class 0
[  111.548304]
[  111.548306] x23: 00000000000000c0 x22: ffff0000c2a9f184 x21: ffff00017f380180
[  111.551374] Buffer I/O error on dev sda1, logical block 60040705, async page read
[  111.554499]
[  111.554503] x20: ffff0000c5f14210 x19: 00000000000000c0 x18: 0000000000000000
[  111.557391] Buffer I/O error on dev sda1, logical block 60040706, async page read
[  111.561218]
[  111.561222] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[  111.564205] Buffer I/O error on dev sda1, logical block 60040707, async page read
[  111.570887] x14: 00000000000000f5 x13: 0000000000000001 x12: 0000000000000040
[  111.570902] x11: ffff0000c05ac6d8
[  111.583420] Buffer I/O error on dev sda1, logical block 60040708, async page read
[  111.588978]  x10: 0000000000000000 x9 : 0000000000040000
[  111.588988] x8 : 0000000000000000
[  111.597173] Buffer I/O error on dev sda1, logical block 60040709, async page read
[  111.605766]  x7 : ffff00017f384880 x6 : ffff8000118cb880
[  111.605777] x5 : ffff00017f384880
[  111.611094] Buffer I/O error on dev sda1, logical block 60040710, async page read
[  111.617086]  x4 : 0000000000000000 x3 : ffff0000c2a9f184
[  111.617096] x2 : ffff8000118cb880
[  111.622242] Buffer I/O error on dev sda1, logical block 60040711, async page read
[  111.626927]  x1 : ffff8000118cb880 x0 : ffff00017f384888
[  111.626938] Call trace:
[  111.626942]  queued_spin_lock_slowpath+0x1a0/0x390
[  111.795809]  kthread_queue_work+0x30/0xc0
[  111.799828]  state_machine_timer_handler+0x20/0x30
[  111.804624]  __hrtimer_run_queues+0x140/0x1e0
[  111.808990]  hrtimer_interrupt+0xec/0x2c0
[  111.813004]  arch_timer_handler_phys+0x38/0x50
[  111.817456]  handle_percpu_devid_irq+0x88/0x150
[  111.821991]  __handle_domain_irq+0x80/0xe0
[  111.826093]  gic_handle_irq+0xc0/0x140
[  111.829848]  el1_irq+0xbc/0x154
[  111.832991]  arch_cpu_idle+0x1c/0x2c
[  111.836572]  default_idle_call+0x24/0x6c
[  111.840497]  do_idle+0x238/0x2ac
[  111.843729]  cpu_startup_entry+0x2c/0x70
[  111.847657]  rest_init+0xdc/0xec
[  111.850890]  arch_call_rest_init+0x14/0x20
[  111.854988]  start_kernel+0x508/0x540
[  111.858659] Code: 910020e0 8b0200c2 f861d884 aa0203e1 (f8246827)
[  111.864760] ---[ end trace 308b9a4a3dcb73ac ]---
[  111.869381] Kernel panic - not syncing: Oops: Fatal exception in interrupt
[  111.876258] SMP: stopping secondary CPUs
[  111.880185] Kernel Offset: disabled
[  111.883673] CPU features: 0x00001001,20000846
[  111.888031] Memory Limit: none
[  111.891090] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---

Fixes: 3ed8e1c2ac99 ("usb: typec: tcpm: Migrate workqueue to RT priority for processing events")
Signed-off-by: Li Jun <jun.li@nxp.com>
---
 drivers/usb/typec/tcpm/tcpm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 0db685d5d9c0..f47685e7923d 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -6328,6 +6328,9 @@ void tcpm_unregister_port(struct tcpm_port *port)
 {
 	int i;
 
+	hrtimer_cancel(&port->vdm_state_machine_timer);
+	hrtimer_cancel(&port->state_machine_timer);
+
 	tcpm_reset_port(port);
 	for (i = 0; i < ARRAY_SIZE(port->port_altmode); i++)
 		typec_unregister_altmode(port->port_altmode[i]);
-- 
2.25.1


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

* [PATCH 2/3] usb: typec: tcpm: cancel frs hrtimer when unregister tcpm port
  2021-06-02  9:57 [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port Li Jun
@ 2021-06-02  9:57 ` Li Jun
  2021-06-02 10:59   ` Guenter Roeck
  2021-06-07  9:17   ` Heikki Krogerus
  2021-06-02  9:57 ` [PATCH 3/3] usb: typec: tcpm: cancel send discover " Li Jun
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 9+ messages in thread
From: Li Jun @ 2021-06-02  9:57 UTC (permalink / raw)
  To: linux, heikki.krogerus; +Cc: gregkh, linux-usb

Like the state_machine_timer, we should also cancel possible pending
frs hrtimer when unregister tcpm port.

Fixes: 8dc4bd073663 ("usb: typec: tcpm: Add support for Sink Fast Role SWAP(FRS)")
Signed-off-by: Li Jun <jun.li@nxp.com>
---
 drivers/usb/typec/tcpm/tcpm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index f47685e7923d..c7460df2119d 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
 {
 	int i;
 
+	hrtimer_cancel(&port->enable_frs_timer);
 	hrtimer_cancel(&port->vdm_state_machine_timer);
 	hrtimer_cancel(&port->state_machine_timer);
 
-- 
2.25.1


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

* [PATCH 3/3] usb: typec: tcpm: cancel send discover hrtimer when unregister tcpm port
  2021-06-02  9:57 [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port Li Jun
  2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
@ 2021-06-02  9:57 ` Li Jun
  2021-06-02 11:00   ` Guenter Roeck
  2021-06-07  9:18   ` Heikki Krogerus
  2021-06-02 10:59 ` [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine " Guenter Roeck
  2021-06-07  9:16 ` Heikki Krogerus
  3 siblings, 2 replies; 9+ messages in thread
From: Li Jun @ 2021-06-02  9:57 UTC (permalink / raw)
  To: linux, heikki.krogerus; +Cc: gregkh, linux-usb

Like the state_machine_timer, we should also cancel possible pending
send discover identity hrtimer when unregister tcpm port.

Fixes: c34e85fa69b9 ("usb: typec: tcpm: Send DISCOVER_IDENTITY from dedicated work")
Signed-off-by: Li Jun <jun.li@nxp.com>
---
 drivers/usb/typec/tcpm/tcpm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index c7460df2119d..2899c9de6d20 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
 {
 	int i;
 
+	hrtimer_cancel(&port->send_discover_timer);
 	hrtimer_cancel(&port->enable_frs_timer);
 	hrtimer_cancel(&port->vdm_state_machine_timer);
 	hrtimer_cancel(&port->state_machine_timer);
-- 
2.25.1


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

* Re: [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port
  2021-06-02  9:57 [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port Li Jun
  2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
  2021-06-02  9:57 ` [PATCH 3/3] usb: typec: tcpm: cancel send discover " Li Jun
@ 2021-06-02 10:59 ` Guenter Roeck
  2021-06-07  9:16 ` Heikki Krogerus
  3 siblings, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2021-06-02 10:59 UTC (permalink / raw)
  To: Li Jun; +Cc: heikki.krogerus, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:07PM +0800, Li Jun wrote:
> A pending hrtimer may expire after the kthread_worker of tcpm port
> is destroyed, see below kernel dump when do module unload, fix it
> by cancel the 2 hrtimers.
> 
> [  111.517018] Unable to handle kernel paging request at virtual address ffff8000118cb880
> [  111.518786] blk_update_request: I/O error, dev sda, sector 60061185 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
> [  111.526594] Mem abort info:
> [  111.526597]   ESR = 0x96000047
> [  111.526600]   EC = 0x25: DABT (current EL), IL = 32 bits
> [  111.526604]   SET = 0, FnV = 0
> [  111.526607]   EA = 0, S1PTW = 0
> [  111.526610] Data abort info:
> [  111.526612]   ISV = 0, ISS = 0x00000047
> [  111.526615]   CM = 0, WnR = 1
> [  111.526619] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041d75000
> [  111.526623] [ffff8000118cb880] pgd=10000001bffff003, p4d=10000001bffff003, pud=10000001bfffe003, pmd=10000001bfffa003, pte=0000000000000000
> [  111.526642] Internal error: Oops: 96000047 [#1] PREEMPT SMP
> [  111.526647] Modules linked in: dwc3_imx8mp dwc3 phy_fsl_imx8mq_usb [last unloaded: tcpci]
> [  111.526663] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.13.0-rc4-00927-gebbe9dbd802c-dirty #36
> [  111.526670] Hardware name: NXP i.MX8MPlus EVK board (DT)
> [  111.526674] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO BTYPE=--)
> [  111.526681] pc : queued_spin_lock_slowpath+0x1a0/0x390
> [  111.526695] lr : _raw_spin_lock_irqsave+0x88/0xb4
> [  111.526703] sp : ffff800010003e20
> [  111.526706] x29: ffff800010003e20 x28: ffff00017f380180
> [  111.537156] buffer_io_error: 6 callbacks suppressed
> [  111.537162] Buffer I/O error on dev sda1, logical block 60040704, async page read
> [  111.539932]  x27: ffff00017f3801c0
> [  111.539938] x26: ffff800010ba2490 x25: 0000000000000000 x24: 0000000000000001
> [  111.543025] blk_update_request: I/O error, dev sda, sector 60061186 op 0x0:(READ) flags 0x0 phys_seg 7 prio class 0
> [  111.548304]
> [  111.548306] x23: 00000000000000c0 x22: ffff0000c2a9f184 x21: ffff00017f380180
> [  111.551374] Buffer I/O error on dev sda1, logical block 60040705, async page read
> [  111.554499]
> [  111.554503] x20: ffff0000c5f14210 x19: 00000000000000c0 x18: 0000000000000000
> [  111.557391] Buffer I/O error on dev sda1, logical block 60040706, async page read
> [  111.561218]
> [  111.561222] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
> [  111.564205] Buffer I/O error on dev sda1, logical block 60040707, async page read
> [  111.570887] x14: 00000000000000f5 x13: 0000000000000001 x12: 0000000000000040
> [  111.570902] x11: ffff0000c05ac6d8
> [  111.583420] Buffer I/O error on dev sda1, logical block 60040708, async page read
> [  111.588978]  x10: 0000000000000000 x9 : 0000000000040000
> [  111.588988] x8 : 0000000000000000
> [  111.597173] Buffer I/O error on dev sda1, logical block 60040709, async page read
> [  111.605766]  x7 : ffff00017f384880 x6 : ffff8000118cb880
> [  111.605777] x5 : ffff00017f384880
> [  111.611094] Buffer I/O error on dev sda1, logical block 60040710, async page read
> [  111.617086]  x4 : 0000000000000000 x3 : ffff0000c2a9f184
> [  111.617096] x2 : ffff8000118cb880
> [  111.622242] Buffer I/O error on dev sda1, logical block 60040711, async page read
> [  111.626927]  x1 : ffff8000118cb880 x0 : ffff00017f384888
> [  111.626938] Call trace:
> [  111.626942]  queued_spin_lock_slowpath+0x1a0/0x390
> [  111.795809]  kthread_queue_work+0x30/0xc0
> [  111.799828]  state_machine_timer_handler+0x20/0x30
> [  111.804624]  __hrtimer_run_queues+0x140/0x1e0
> [  111.808990]  hrtimer_interrupt+0xec/0x2c0
> [  111.813004]  arch_timer_handler_phys+0x38/0x50
> [  111.817456]  handle_percpu_devid_irq+0x88/0x150
> [  111.821991]  __handle_domain_irq+0x80/0xe0
> [  111.826093]  gic_handle_irq+0xc0/0x140
> [  111.829848]  el1_irq+0xbc/0x154
> [  111.832991]  arch_cpu_idle+0x1c/0x2c
> [  111.836572]  default_idle_call+0x24/0x6c
> [  111.840497]  do_idle+0x238/0x2ac
> [  111.843729]  cpu_startup_entry+0x2c/0x70
> [  111.847657]  rest_init+0xdc/0xec
> [  111.850890]  arch_call_rest_init+0x14/0x20
> [  111.854988]  start_kernel+0x508/0x540
> [  111.858659] Code: 910020e0 8b0200c2 f861d884 aa0203e1 (f8246827)
> [  111.864760] ---[ end trace 308b9a4a3dcb73ac ]---
> [  111.869381] Kernel panic - not syncing: Oops: Fatal exception in interrupt
> [  111.876258] SMP: stopping secondary CPUs
> [  111.880185] Kernel Offset: disabled
> [  111.883673] CPU features: 0x00001001,20000846
> [  111.888031] Memory Limit: none
> [  111.891090] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
> 
> Fixes: 3ed8e1c2ac99 ("usb: typec: tcpm: Migrate workqueue to RT priority for processing events")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index 0db685d5d9c0..f47685e7923d 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,9 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->vdm_state_machine_timer);
> +	hrtimer_cancel(&port->state_machine_timer);
> +
>  	tcpm_reset_port(port);
>  	for (i = 0; i < ARRAY_SIZE(port->port_altmode); i++)
>  		typec_unregister_altmode(port->port_altmode[i]);
> -- 
> 2.25.1
> 

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

* Re: [PATCH 2/3] usb: typec: tcpm: cancel frs hrtimer when unregister tcpm port
  2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
@ 2021-06-02 10:59   ` Guenter Roeck
  2021-06-07  9:17   ` Heikki Krogerus
  1 sibling, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2021-06-02 10:59 UTC (permalink / raw)
  To: Li Jun; +Cc: heikki.krogerus, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:08PM +0800, Li Jun wrote:
> Like the state_machine_timer, we should also cancel possible pending
> frs hrtimer when unregister tcpm port.
> 
> Fixes: 8dc4bd073663 ("usb: typec: tcpm: Add support for Sink Fast Role SWAP(FRS)")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index f47685e7923d..c7460df2119d 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->enable_frs_timer);
>  	hrtimer_cancel(&port->vdm_state_machine_timer);
>  	hrtimer_cancel(&port->state_machine_timer);
>  
> -- 
> 2.25.1
> 

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

* Re: [PATCH 3/3] usb: typec: tcpm: cancel send discover hrtimer when unregister tcpm port
  2021-06-02  9:57 ` [PATCH 3/3] usb: typec: tcpm: cancel send discover " Li Jun
@ 2021-06-02 11:00   ` Guenter Roeck
  2021-06-07  9:18   ` Heikki Krogerus
  1 sibling, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2021-06-02 11:00 UTC (permalink / raw)
  To: Li Jun; +Cc: heikki.krogerus, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:09PM +0800, Li Jun wrote:
> Like the state_machine_timer, we should also cancel possible pending
> send discover identity hrtimer when unregister tcpm port.
> 
> Fixes: c34e85fa69b9 ("usb: typec: tcpm: Send DISCOVER_IDENTITY from dedicated work")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index c7460df2119d..2899c9de6d20 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->send_discover_timer);
>  	hrtimer_cancel(&port->enable_frs_timer);
>  	hrtimer_cancel(&port->vdm_state_machine_timer);
>  	hrtimer_cancel(&port->state_machine_timer);
> -- 
> 2.25.1
> 

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

* Re: [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port
  2021-06-02  9:57 [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port Li Jun
                   ` (2 preceding siblings ...)
  2021-06-02 10:59 ` [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine " Guenter Roeck
@ 2021-06-07  9:16 ` Heikki Krogerus
  3 siblings, 0 replies; 9+ messages in thread
From: Heikki Krogerus @ 2021-06-07  9:16 UTC (permalink / raw)
  To: Li Jun; +Cc: linux, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:07PM +0800, Li Jun wrote:
> A pending hrtimer may expire after the kthread_worker of tcpm port
> is destroyed, see below kernel dump when do module unload, fix it
> by cancel the 2 hrtimers.
> 
> [  111.517018] Unable to handle kernel paging request at virtual address ffff8000118cb880
> [  111.518786] blk_update_request: I/O error, dev sda, sector 60061185 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
> [  111.526594] Mem abort info:
> [  111.526597]   ESR = 0x96000047
> [  111.526600]   EC = 0x25: DABT (current EL), IL = 32 bits
> [  111.526604]   SET = 0, FnV = 0
> [  111.526607]   EA = 0, S1PTW = 0
> [  111.526610] Data abort info:
> [  111.526612]   ISV = 0, ISS = 0x00000047
> [  111.526615]   CM = 0, WnR = 1
> [  111.526619] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041d75000
> [  111.526623] [ffff8000118cb880] pgd=10000001bffff003, p4d=10000001bffff003, pud=10000001bfffe003, pmd=10000001bfffa003, pte=0000000000000000
> [  111.526642] Internal error: Oops: 96000047 [#1] PREEMPT SMP
> [  111.526647] Modules linked in: dwc3_imx8mp dwc3 phy_fsl_imx8mq_usb [last unloaded: tcpci]
> [  111.526663] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.13.0-rc4-00927-gebbe9dbd802c-dirty #36
> [  111.526670] Hardware name: NXP i.MX8MPlus EVK board (DT)
> [  111.526674] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO BTYPE=--)
> [  111.526681] pc : queued_spin_lock_slowpath+0x1a0/0x390
> [  111.526695] lr : _raw_spin_lock_irqsave+0x88/0xb4
> [  111.526703] sp : ffff800010003e20
> [  111.526706] x29: ffff800010003e20 x28: ffff00017f380180
> [  111.537156] buffer_io_error: 6 callbacks suppressed
> [  111.537162] Buffer I/O error on dev sda1, logical block 60040704, async page read
> [  111.539932]  x27: ffff00017f3801c0
> [  111.539938] x26: ffff800010ba2490 x25: 0000000000000000 x24: 0000000000000001
> [  111.543025] blk_update_request: I/O error, dev sda, sector 60061186 op 0x0:(READ) flags 0x0 phys_seg 7 prio class 0
> [  111.548304]
> [  111.548306] x23: 00000000000000c0 x22: ffff0000c2a9f184 x21: ffff00017f380180
> [  111.551374] Buffer I/O error on dev sda1, logical block 60040705, async page read
> [  111.554499]
> [  111.554503] x20: ffff0000c5f14210 x19: 00000000000000c0 x18: 0000000000000000
> [  111.557391] Buffer I/O error on dev sda1, logical block 60040706, async page read
> [  111.561218]
> [  111.561222] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
> [  111.564205] Buffer I/O error on dev sda1, logical block 60040707, async page read
> [  111.570887] x14: 00000000000000f5 x13: 0000000000000001 x12: 0000000000000040
> [  111.570902] x11: ffff0000c05ac6d8
> [  111.583420] Buffer I/O error on dev sda1, logical block 60040708, async page read
> [  111.588978]  x10: 0000000000000000 x9 : 0000000000040000
> [  111.588988] x8 : 0000000000000000
> [  111.597173] Buffer I/O error on dev sda1, logical block 60040709, async page read
> [  111.605766]  x7 : ffff00017f384880 x6 : ffff8000118cb880
> [  111.605777] x5 : ffff00017f384880
> [  111.611094] Buffer I/O error on dev sda1, logical block 60040710, async page read
> [  111.617086]  x4 : 0000000000000000 x3 : ffff0000c2a9f184
> [  111.617096] x2 : ffff8000118cb880
> [  111.622242] Buffer I/O error on dev sda1, logical block 60040711, async page read
> [  111.626927]  x1 : ffff8000118cb880 x0 : ffff00017f384888
> [  111.626938] Call trace:
> [  111.626942]  queued_spin_lock_slowpath+0x1a0/0x390
> [  111.795809]  kthread_queue_work+0x30/0xc0
> [  111.799828]  state_machine_timer_handler+0x20/0x30
> [  111.804624]  __hrtimer_run_queues+0x140/0x1e0
> [  111.808990]  hrtimer_interrupt+0xec/0x2c0
> [  111.813004]  arch_timer_handler_phys+0x38/0x50
> [  111.817456]  handle_percpu_devid_irq+0x88/0x150
> [  111.821991]  __handle_domain_irq+0x80/0xe0
> [  111.826093]  gic_handle_irq+0xc0/0x140
> [  111.829848]  el1_irq+0xbc/0x154
> [  111.832991]  arch_cpu_idle+0x1c/0x2c
> [  111.836572]  default_idle_call+0x24/0x6c
> [  111.840497]  do_idle+0x238/0x2ac
> [  111.843729]  cpu_startup_entry+0x2c/0x70
> [  111.847657]  rest_init+0xdc/0xec
> [  111.850890]  arch_call_rest_init+0x14/0x20
> [  111.854988]  start_kernel+0x508/0x540
> [  111.858659] Code: 910020e0 8b0200c2 f861d884 aa0203e1 (f8246827)
> [  111.864760] ---[ end trace 308b9a4a3dcb73ac ]---
> [  111.869381] Kernel panic - not syncing: Oops: Fatal exception in interrupt
> [  111.876258] SMP: stopping secondary CPUs
> [  111.880185] Kernel Offset: disabled
> [  111.883673] CPU features: 0x00001001,20000846
> [  111.888031] Memory Limit: none
> [  111.891090] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
> 
> Fixes: 3ed8e1c2ac99 ("usb: typec: tcpm: Migrate workqueue to RT priority for processing events")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index 0db685d5d9c0..f47685e7923d 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,9 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->vdm_state_machine_timer);
> +	hrtimer_cancel(&port->state_machine_timer);
> +
>  	tcpm_reset_port(port);
>  	for (i = 0; i < ARRAY_SIZE(port->port_altmode); i++)
>  		typec_unregister_altmode(port->port_altmode[i]);
> -- 
> 2.25.1

-- 
heikki

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

* Re: [PATCH 2/3] usb: typec: tcpm: cancel frs hrtimer when unregister tcpm port
  2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
  2021-06-02 10:59   ` Guenter Roeck
@ 2021-06-07  9:17   ` Heikki Krogerus
  1 sibling, 0 replies; 9+ messages in thread
From: Heikki Krogerus @ 2021-06-07  9:17 UTC (permalink / raw)
  To: Li Jun; +Cc: linux, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:08PM +0800, Li Jun wrote:
> Like the state_machine_timer, we should also cancel possible pending
> frs hrtimer when unregister tcpm port.
> 
> Fixes: 8dc4bd073663 ("usb: typec: tcpm: Add support for Sink Fast Role SWAP(FRS)")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index f47685e7923d..c7460df2119d 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->enable_frs_timer);
>  	hrtimer_cancel(&port->vdm_state_machine_timer);
>  	hrtimer_cancel(&port->state_machine_timer);
>  
> -- 
> 2.25.1

-- 
heikki

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

* Re: [PATCH 3/3] usb: typec: tcpm: cancel send discover hrtimer when unregister tcpm port
  2021-06-02  9:57 ` [PATCH 3/3] usb: typec: tcpm: cancel send discover " Li Jun
  2021-06-02 11:00   ` Guenter Roeck
@ 2021-06-07  9:18   ` Heikki Krogerus
  1 sibling, 0 replies; 9+ messages in thread
From: Heikki Krogerus @ 2021-06-07  9:18 UTC (permalink / raw)
  To: Li Jun; +Cc: linux, gregkh, linux-usb

On Wed, Jun 02, 2021 at 05:57:09PM +0800, Li Jun wrote:
> Like the state_machine_timer, we should also cancel possible pending
> send discover identity hrtimer when unregister tcpm port.
> 
> Fixes: c34e85fa69b9 ("usb: typec: tcpm: Send DISCOVER_IDENTITY from dedicated work")
> Signed-off-by: Li Jun <jun.li@nxp.com>

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/tcpm/tcpm.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index c7460df2119d..2899c9de6d20 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -6328,6 +6328,7 @@ void tcpm_unregister_port(struct tcpm_port *port)
>  {
>  	int i;
>  
> +	hrtimer_cancel(&port->send_discover_timer);
>  	hrtimer_cancel(&port->enable_frs_timer);
>  	hrtimer_cancel(&port->vdm_state_machine_timer);
>  	hrtimer_cancel(&port->state_machine_timer);
> -- 
> 2.25.1

-- 
heikki

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

end of thread, other threads:[~2021-06-07  9:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-02  9:57 [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine hrtimer when unregister tcpm port Li Jun
2021-06-02  9:57 ` [PATCH 2/3] usb: typec: tcpm: cancel frs " Li Jun
2021-06-02 10:59   ` Guenter Roeck
2021-06-07  9:17   ` Heikki Krogerus
2021-06-02  9:57 ` [PATCH 3/3] usb: typec: tcpm: cancel send discover " Li Jun
2021-06-02 11:00   ` Guenter Roeck
2021-06-07  9:18   ` Heikki Krogerus
2021-06-02 10:59 ` [PATCH 1/3] usb: typec: tcpm: cancel vdm and state machine " Guenter Roeck
2021-06-07  9:16 ` Heikki Krogerus

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.