Re: dev_WARN_ONCE cause gpio-watchdog reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在 2022/3/18 16:38, Schmid, Carsten 写道:
Hi Qianfan,

do you have a serial console connected where the dmesg is sent to?
Be aware that in such a case, at 115kBaud, 1 ms is needed to
print 10 characters.
When i look at the timestamps between two lines of the stack dump,
i can see that ~10ms are needed to print one line which means 100 chars.
Thats reasonable.

Thanks for yours replay. Yes, there has a serial console work in 115200bps but I had found it is not the cause of the problem. I had send another email with a picture seems failed. Let me paste the text of that email:

I had changed the "hw_margin_ms" to "200" (so that gpio-wdt.c toggle pin every 100ms), remove dev_WARN_ONCE message and sniffer uart console and gpio watchdog signal.

watchdog should toggle gpio every 100ms, but it delayed more than 1s after kernel print "unregister 'rndis_host' usb-musb-hdrc.0-1, RNDIS device", after that gpio-wdt work again. Next is the console logs:

[  491.593980] usb 1-1: new full-speed USB device number 7 using musb-hdrc
[  491.774272] usb 1-1: not running at top speed; connect to a high speed hub [  491.785749] usb 1-1: New USB device found, idVendor=0451, idProduct=6141, bcdDevice= 0.00 [  491.794469] usb 1-1: New USB device strings: Mfr=33, Product=37, SerialNumber=0
[  491.802167] usb 1-1: Product: AM335x USB
[  491.806327] usb 1-1: Manufacturer: Texas Instruments
[  491.858139] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-musb-hdrc.0-1, RNDIS device, 8a:25:2a:15:03:45
[  496.031464] musb-hdrc musb-hdrc.0: ep11 RX three-strikes error
[  498.041123] usb 1-1: USB disconnect, device number 7
[  498.046691] rndis_host 1-1:1.0 usb0: unregister 'rndis_host' usb-musb-hdrc.0-1, RNDIS device

AM335X's USB doesn't work again after 'RX three-strikes error' but it can enum device successful.

[ 9438.753947] usb 1-1: new full-speed USB device number 10 using musb-hdrc
[ 9438.934240] usb 1-1: not running at top speed; connect to a high speed hub [ 9438.942467] usb 1-1: New USB device found, idVendor=0451, idProduct=6141, bcdDevice= 0.00 [ 9438.951130] usb 1-1: New USB device strings: Mfr=33, Product=37, SerialNumber=0
[ 9438.958847] usb 1-1: Product: AM335x USB
[ 9438.962973] usb 1-1: Manufacturer: Texas Instruments
[ 9439.014957] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-musb-hdrc.0-1, RNDIS device, ee:2e:c1:14:d6:3d
[ 9443.189848] musb-hdrc musb-hdrc.0: ep11 RX three-strikes error
[ 9445.195341] usb 1-1: USB disconnect, device number 10
[ 9445.200985] rndis_host 1-1:1.0 usb0: unregister 'rndis_host' usb-musb-hdrc.0-1, RNDIS device
[ 9453.833951] usb 1-1: new full-speed USB device number 11 using musb-hdrc
[ 9454.014192] usb 1-1: not running at top speed; connect to a high speed hub [ 9454.022270] usb 1-1: New USB device found, idVendor=0451, idProduct=6141, bcdDevice= 0.00 [ 9454.030963] usb 1-1: New USB device strings: Mfr=33, Product=37, SerialNumber=0
[ 9454.038664] usb 1-1: Product: AM335x USB
[ 9454.042788] usb 1-1: Manufacturer: Texas Instruments
[ 9454.094669] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-musb-hdrc.0-1, RNDIS device, c2:73:62:68:c9:92
[ 9458.269536] musb-hdrc musb-hdrc.0: ep11 RX three-strikes error
[ 9460.275036] usb 1-1: USB disconnect, device number 11
[ 9460.280671] rndis_host 1-1:1.0 usb0: unregister 'rndis_host' usb-musb-hdrc.0-1, RNDIS device

So I think it's a bug of MUSB, not caused by dev_WARN_ONCE. But I can't check which stop hrtimer.

I hit that pitfall in the past multiple times ....

Best regards
Carsten

-----Original Message-----
From: qianfan <qianfanguijin@xxxxxxx>
Sent: Freitag, 18. März 2022 03:08
To: Bin Liu <b-liu@xxxxxx>; Wim Van Sebroeck <wim@xxxxxxxxxxxxxxxxxx>; Guenter Roeck <linux@xxxxxxxxxxxx>
Cc: linux-usb@xxxxxxxxxxxxxxx; linux-watchdog@xxxxxxxxxxxxxxx
Subject: Re: dev_WARN_ONCE cause gpio-watchdog reset


在 2022/3/18 8:44, qianfan 写道:
Hi:

I have a custom AM3352 board with linux v5.15 support. I had enabled
gpio-watchdog driver and the timeout of gpio-watchdog is 1.6s .

The system will reboot when AM3352's MUSB driver print warn message:
(next is the log)

[ 1555.665496] ------------[ cut here ]------------
[ 1555.670343] WARNING: CPU: 0 PID: 345 at
drivers/usb/musb/musb_host.c:115 musb_h_tx_flush_fifo+0x11c/0x13c
[ 1555.680395] musb-hdrc musb-hdrc.0: Could not flush host TX10 fifo:
csr: 2403
[ 1555.687779] Modules linked in:
[ 1555.690989] CPU: 0 PID: 345 Comm: kworker/0:1 Not tainted
5.15.0-00013-g0ccd7df8f5ad #122
[ 1555.699560] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 1555.705946] Workqueue: usb_hub_wq hub_event
[ 1555.710359] [<c0111438>] (unwind_backtrace) from [<c010b9f4>]
(show_stack+0x10/0x14)
[ 1555.718497] [<c010b9f4>] (show_stack) from [<c0adc24c>]
(dump_stack_lvl+0x40/0x4c)
[ 1555.726453] [<c0adc24c>] (dump_stack_lvl) from [<c0136264>]
(__warn+0xf0/0x104)
[ 1555.734126] [<c0136264>] (__warn) from [<c01362ec>]
(warn_slowpath_fmt+0x74/0xbc)
[ 1555.741973] [<c01362ec>] (warn_slowpath_fmt) from [<c07e8b40>]
(musb_h_tx_flush_fifo+0x11c/0x13c)
[ 1555.751280] [<c07e8b40>] (musb_h_tx_flush_fifo) from [<c07ea024>]
(musb_cleanup_urb+0x128/0x204)
[ 1555.760495] [<c07ea024>] (musb_cleanup_urb) from [<c07ea1e4>]
(musb_urb_dequeue+0xe4/0x17c)
[ 1555.769253] [<c07ea1e4>] (musb_urb_dequeue) from [<c07c33f4>]
(usb_hcd_flush_endpoint+0x118/0x130)
[ 1555.778654] [<c07c33f4>] (usb_hcd_flush_endpoint) from [<c07c66ec>]
(usb_disable_endpoint+0x58/0xa4)
[ 1555.788232] [<c07c66ec>] (usb_disable_endpoint) from [<c07c6828>]
(usb_disable_interface+0x3c/0x54)
[ 1555.797716] [<c07c6828>] (usb_disable_interface) from [<c07c8f3c>]
(usb_unbind_interface+0x160/0x224)
[ 1555.807385] [<c07c8f3c>] (usb_unbind_interface) from [<c06a731c>]
(device_release_driver_internal+0x1d0/0x1d8)
[ 1555.817882] [<c06a731c>] (device_release_driver_internal) from
[<c07b062c>] (usbnet_cdc_unbind+0x70/0x78)
[ 1555.827926] [<c07b062c>] (usbnet_cdc_unbind) from [<c07b2098>]
(usbnet_disconnect+0x48/0xd8)
[ 1555.836780] [<c07b2098>] (usbnet_disconnect) from [<c07c8e40>]
(usb_unbind_interface+0x64/0x224)
[ 1555.845993] [<c07c8e40>] (usb_unbind_interface) from [<c06a731c>]
(device_release_driver_internal+0x1d0/0x1d8)
[ 1555.856480] [<c06a731c>] (device_release_driver_internal) from
[<c06a5bf4>] (bus_remove_device+0xc8/0xf8)
[ 1555.866515] [<c06a5bf4>] (bus_remove_device) from [<c06a0e5c>]
(device_del+0x180/0x404)
[ 1555.874909] [<c06a0e5c>] (device_del) from [<c07c68c8>]
(usb_disable_device+0x88/0x130)
[ 1555.883300] [<c07c68c8>] (usb_disable_device) from [<c07bd410>]
(usb_disconnect+0xb0/0x234)
[ 1555.892057] [<c07bd410>] (usb_disconnect) from [<c07bf968>]
(hub_event+0xf3c/0x1288)
[ 1555.900179] [<c07bf968>] (hub_event) from [<c015306c>]
(process_one_work+0x22c/0x55c)
[ 1555.908401] [<c015306c>] (process_one_work) from [<c01533c8>]
(worker_thread+0x2c/0x5cc)
[ 1555.916889] [<c01533c8>] (worker_thread) from [<c015b028>]
(kthread+0x140/0x168)
[ 1555.924652] [<c015b028>] (kthread) from [<c0100150>]
(ret_from_fork+0x14/0x24)
[ 1555.932226] Exception stack(0▒
U-Boot SPL 2022.01-rc1-00183-gfa5b4e2d19 (Feb 24 2022 - 15:48:38 +0800)
Trying to boot from NAND

Could you please give me some advice?

Thanks

Adding a printk message on gpio_wdt_ping and redroduce this question:

diff --git a/drivers/watchdog/gpio_wdt.c b/drivers/watchdog/gpio_wdt.c
index 4102328a522f..fcfd07e0445a 100644
--- a/drivers/watchdog/gpio_wdt.c
+++ b/drivers/watchdog/gpio_wdt.c
@@ -57,6 +57,7 @@ static int gpio_wdt_ping(struct watchdog_device *wdd)
          case HW_ALGO_TOGGLE:
                  /* Toggle output pin */
                  priv->state = !priv->state;
+               printk("gwp\n");
                  gpiod_set_value_cansleep(priv->gpiod, priv->state);
                  break;
          case HW_ALGO_LEVEL:

Next is the log:

[   90.222821] gwp
[   91.024956] gwp
[   91.826936] gwp
[   92.628898] gwp
[   93.430888] gwp
[   94.232859] gwp
[   94.264325] musb-hdrc musb-hdrc.0: ep11 RX three-strikes error
[   95.034845] gwp
[   95.836791] gwp
[   96.164582] gwp
[   96.269984] usb 1-1: USB disconnect, device number 3
[   96.275556] rndis_host 1-1:1.0 usb0: unregister 'rndis_host'
usb-musb-hdrc.0-1, RNDIS device
[   97.279609] ------------[ cut here ]------------
[   97.284455] WARNING: CPU: 0 PID: 67 at
drivers/usb/musb/musb_host.c:115 musb_h_tx_flush_fifo+0x11c/0x13c
[   97.294417] musb-hdrc musb-hdrc.0: Could not flush host TX10 fifo:
csr: 2403
[   97.301801] Modules linked in:
[   97.305012] CPU: 0 PID: 67 Comm: kworker/0:12 Not tainted
5.15.0-00013-g0ccd7df8f5ad-dirty #123
[   97.314130] Hardware name: Generic AM33XX (Flattened Device Tree)
[   97.320515] Workqueue: usb_hub_wq hub_event
[   97.324928] [<c0111438>] (unwind_backtrace) from [<c010b9f4>]
(show_stack+0x10/0x14)
[   97.333066] [<c010b9f4>] (show_stack) from [<c0adc25c>]
(dump_stack_lvl+0x40/0x4c)
[   97.341023] [<c0adc25c>] (dump_stack_lvl) from [<c0136264>]
(__warn+0xf0/0x104)
[   97.348697] [<c0136264>] (__warn) from [<c01362ec>]
(warn_slowpath_fmt+0x74/0xbc)
[   97.356545] [<c01362ec>] (warn_slowpath_fmt) from [<c07e8b40>]
(musb_h_tx_flush_fifo+0x11c/0x13c)
[   97.365854] [<c07e8b40>] (musb_h_tx_flush_fifo) from [<c07ea024>]
(musb_cleanup_urb+0x128/0x204)
[   97.375069] [<c07ea024>] (musb_cleanup_urb) from [<c07ea1e4>]
(musb_urb_dequeue+0xe4/0x17c)
[   97.383829] [<c07ea1e4>] (musb_urb_dequeue) from [<c07c33f4>]
(usb_hcd_flush_endpoint+0x118/0x130)
[   97.393230] [<c07c33f4>] (usb_hcd_flush_endpoint) from [<c07c66ec>]
(usb_disable_endpoint+0x58/0xa4)
[   97.402810] [<c07c66ec>] (usb_disable_endpoint) from [<c07c6828>]
(usb_disable_interface+0x3c/0x54)
[   97.412294] [<c07c6828>] (usb_disable_interface) from [<c07c8f3c>]
(usb_unbind_interface+0x160/0x224)
[   97.421963] [<c07c8f3c>] (usb_unbind_interface) from [<c06a731c>]
(device_release_driver_internal+0x1d0/0x1d8)
[   97.432461] [<c06a731c>] (device_release_driver_internal) from
[<c07b062c>] (usbnet_cdc_unbind+0x70/0x78)
[   97.442505] [<c07b062c>] (usbnet_cdc_unbind) from [<c07b2098>]
(usbnet_disconnect+0x48/0xd8)
[   97.451359] [<c07b2098>] (usbnet_disconnect) from [<c07c8e40>]
(usb_unbind_interface+0x64/0x224)
[   97.460573] [<c07c8e40>] (usb_unbind_interface) from [<c06a731c>]
(device_release_driver_internal+0x1d0/0x1d8)
[   97.471061] [<c06a731c>] (device_release_driver_internal) from
[<c06a5bf4>] (bus_remove_device+0xc8/0xf8)
[   97.481097] [<c06a5bf4>] (bus_remove_device) from [<c06a0e5c>]
(device_del+0x180/0x404)
[   97.489491] [<c06a0e5c>] (device_del) from [<c07c68c8>]
(usb_disable_device+0x88/0x130)
[   97.497882] [<c07c68c8>] (usb_disable_device) from [<c07bd410>]
(usb_disconnect+0xb0/0x234)
[   97.506640] [<c07bd410>] (usb_disconnect) from [<c07bf968>]
(hub_event+0xf3c/0x1288)
[   97.514762] [<c07bf968>] (hub_event) from [<c015306c>]
(process_one_work+0x22c/0x55c)
[   97.522986] [<c015306c>] (process_one_work) from [<c01533c8>]
(worker_thread+0x2c/0x5cc)
[   97.531473] [<c01533c8>] (worker_thread) from [<c015b028>]
(kthread+0x140/0x168)
[   97.539237] [<c015b028>] (kthread) from [<c0100150>]
(ret_from_fork+0x14/0x24)
[   97.546812] Exception stack(0xc3157fb0 to 0xc3157ff8)
[   97.552106] 7fa0:                                     00000000
00000000 00000000 00000000
[   97.560674] 7fc0: 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000
[   97.569241] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[   97.576170] ---[ end trace 96798796855f16a3 ]---
[   97.582427] gwp
[   98.384391] gwp
[   99.186369] gwp
[   99.988316] gwp

The last time before dev_WARN_ONCE is [   96.164582] and the next time
is [   97.582427]. It took about 1.4 seconds.

But It should be 0.8s. Here is my dts configurations about gpio-watchdog:

      watchdog: watchdog {
          compatible = "linux,wdt-gpio";
          pinctrl-names = "default";
          pinctrl-0 = <&gpiowdt_pins>;

          gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
          enable-gpios = <&gpio3 7 GPIO_ACTIVE_LOW>;
          always-running;
          hw_algo = "toggle";
          hw_margin_ms = <1600>;
      };

The watchdog ping work is trigger by kthread_queue_work, is it means
dev_WARN_ONCE delayed kthread_queue_work?


-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux