* [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.