Re: mcp251x hangs during ifup
From: Marc Kleine-Budde <mkl@pengutronix.de>
Date: 2021-03-04 00:23:59
On 03.03.2021 09:44:54, ukrfoil.com, Cтудиопак Украина, Восточный регион wrote:
| root@nanopi-neo:~#cat /proc/interrupts
| CPU0 CPU1 CPU2 CPU3
| 25: 0 0 0 0 GICv2 50 Level timer@1c20c00
| 26: 0 0 0 0 GICv2 29 Level arch_timer
| 27: 1696369 3348041 3820461 82777 GICv2 30 Level arch_timer
| 30: 0 0 0 0 GICv2 82 Level 1c02000.dma-controller
| 32: 5404 0 0 0 GICv2 92 Level sunxi-mmc
| 34: 0 0 0 0 GICv2 103 Level musb-hdrc.2.auto
| 35: 0 0 0 0 GICv2 104 Level ehci_hcd:usb1
| 36: 0 0 0 0 GICv2 105 Level ohci_hcd:usb2
| 37: 0 0 0 0 GICv2 110 Level ehci_hcd:usb3
| 38: 0 0 0 0 GICv2 111 Level ohci_hcd:usb4
| 42: 9952 0 0 0 GICv2 114 Level eth0
| 43: 4 0 0 0 GICv2 97 Level sun6i-spi
| 46: 49 0 0 0 GICv2 32 Level ttyS0
| 47: 211302239 0 0 0 GICv2 38 Level mv64xxx_i2c
| 48: 18992623 0 0 0 GICv2 39 Level mv64xxx_i2c
| 49: 0 0 0 0 GICv2 72 Level 1f00000.rtc
| 63: 0 0 0 0 GICv2 152 Level arm-pmu
| 64: 0 0 0 0 GICv2 153 Level arm-pmu
| 65: 0 0 0 0 GICv2 154 Level arm-pmu
| 66: 0 0 0 0 GICv2 155 Level arm-pmu
| 111: 1 0 0 0 sunxi_pio_edge 44 Edge usb0-id-det
| IPI0: 0 0 0 0 CPU wakeup interrupts
| IPI1: 0 0 0 0 Timer broadcast interrupts
| IPI2: 47 88 79 82 Rescheduling interrupts
| IPI3: 304963 2353917 362091 1661 Function call interrupts
| IPI4: 0 0 0 0 CPU stop interrupts
| IPI5: 0 0 0 0 IRQ work interrupts
| IPI6: 0 0 0 0 completion interrupts
| Err: 0
[...]
| root@nanopi-neo:~#cat /proc/interrupts
| CPU0 CPU1 CPU2 CPU3
| 25: 0 0 0 0 GICv2 50 Level timer@1c20c00
| 26: 0 0 0 0 GICv2 29 Level arch_timer
| 27: 1711040 3437940 3850320 84900 GICv2 30 Level arch_timer
| 30: 0 0 0 0 GICv2 82 Level 1c02000.dma-controller
| 32: 5516 0 0 0 GICv2 92 Level sunxi-mmc
| 34: 0 0 0 0 GICv2 103 Level musb-hdrc.2.auto
| 35: 0 0 0 0 GICv2 104 Level ehci_hcd:usb1
| 36: 0 0 0 0 GICv2 105 Level ohci_hcd:usb2
| 37: 0 0 0 0 GICv2 110 Level ehci_hcd:usb3
| 38: 0 0 0 0 GICv2 111 Level ohci_hcd:usb4
| 42: 10190 0 0 0 GICv2 114 Level eth0
| 43: 18 0 0 0 GICv2 97 Level sun6i-spi
| 46: 49 0 0 0 GICv2 32 Level ttyS0
| 47: 214592622 0 0 0 GICv2 38 Level mv64xxx_i2c
| 48: 19314189 0 0 0 GICv2 39 Level mv64xxx_i2c
| 49: 0 0 0 0 GICv2 72 Level 1f00000.rtc
| 63: 0 0 0 0 GICv2 152 Level arm-pmu
| 64: 0 0 0 0 GICv2 153 Level arm-pmu
| 65: 0 0 0 0 GICv2 154 Level arm-pmu
| 66: 0 0 0 0 GICv2 155 Level arm-pmu
| 107: 1 0 0 0 sunxi_pio_edge 40 Edge spi0.0
| 111: 1 0 0 0 sunxi_pio_edge 44 Edge usb0-id-det
| IPI0: 0 0 0 0 CPU wakeup interrupts
| IPI1: 0 0 0 0 Timer broadcast interrupts
| IPI2: 48 88 85 83 Rescheduling interrupts
| IPI3: 305542 2828247 362982 1704 Function call interrupts
| IPI4: 0 0 0 0 CPU stop interrupts
| IPI5: 0 0 0 0 IRQ work interrupts
| IPI6: 0 0 0 0 completion interrupts
| Err: 0
That looks good, the IRQ is not shared. Can you test again with
IRQ_TYPE_EDGE_FALLING in the DT instead of IRQ_TYPE_LEVEL_LOW?
| can0: can@0 {
| reg = <0>;
| compatible = "microchip,mcp2515";
| pinctrl-names = "default";
| pinctrl-0 = <&can0_pin_irq>;
| interrupt-parent = <&pio>;
| interrupts = <6 8 IRQ_TYPE_EDGE_FALLING>;
You better use IRQ_TYPE_LEVEL_LOW instead of IRQ_TYPE_EDGE_FALLING, but
that's unrelated to this problem.
| clocks = <&can0_osc_fixed>;
| spi-max-frequency = <10000000>;
| gpio-controller;
| gpio-cells = <2>;
| status = "okay";
| };
regards,
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | Attachments
- signature.asc [application/pgp-signature] 488 bytes