I am running ubuntu based xillinux OS on my microzed board. I have connected a GSM modem to serial port UART1 (identified as PS1 on the Operating system). The issue I am facing is whenever I use the modem (as dial up modem using wvdial and generating an access pint via wifi module) at a baud rate of 115200 or above on this port, the error I get is mmc0: Timeout waiting for hardware interrupt. It hangs here. And then I have to reboot the microzed . However for speeds below 115200. it works well without any hanging issues. Why is this ? How can I resolve this ?
Edit: After a few seconds of getting mmc error, then comes
[ 168.436823] INFO: rcu_preempt self-detected stall on CPU { 0} (t=6000 jiffies g=420 c=419 q=370)
My device tree for reference:
/dts-v1/;
/ {
tmodel = "Xilinx Zynq";
tcompatible = "xlnx,zynq-7000";
t#size-cells = <0x1>;
t#address-cells = <0x1>;
tamba@0 {
ttphandle = <0x1>;
ttlinux,phandle = <0x1>;
ttranges;
ttcompatible = "xlnx,ps7-axi-interconnect-1.00.a", "simple-bus";
tt#size-cells = <0x1>;
tt#address-cells = <0x1>;
ttleds {
tttcompatible = "gpio-leds";
tttmmc_led {
ttttlinux,default-trigger = "mmc0";
ttttgpios = <0x5 0x2f 0x0>;
ttttlabel = "mmc_led";
ttt};
tt};
ttps7-xadc@f8007100 {
tttreg = <0xf8007100 0x20>;
tttinterrupts = <0x0 0x7 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-xadc-1.00.a";
tttclocks = <0x3 0xc>;
tt};
ttps7-usb@e0002000 {
tttreg = <0xe0002000 0x1000>;
tttphy_type = "ulpi";
tttinterrupts = <0x0 0x15 0x4>;
tttinterrupt-parent = <0x2>;
tttdr_mode = "host";
tttcompatible = "xlnx,ps7-usb-1.00.a";
tttclocks = <0x3 0x1c>;
tt};
ttuartlite_1@42C10000 {
tttclock = <0x5f5e100>;
tttinterrupts = <0x0 0x1e 0x1>;
tttinterrupt-parent = <0x2>;
tttreg = <0x42c10000 0x10000>;
tttcompatible = "xlnx,axi-uartlite-2.0", "xlnx,xps-uartlite-1.00.a", "xlnx,xps-uartlite-1.02.a";
tt};
ttuartlite_0@42C00000 {
tttclock = <0x5f5e100>;
tttinterrupts = <0x0 0x1d 0x1>;
tttinterrupt-parent = <0x2>;
tttreg = <0x42c00000 0x10000>;
tttcompatible = "xlnx,axi-uartlite-2.0", "xlnx,xps-uartlite-1.00.a", "xlnx,xps-uartlite-1.02.a";
tt};
ttserial@e0000000 {
tttxlnx,has-modem = <0x0>;
tttreg = <0xe0000000 0x1000>;
tttport-number = <0x1>;
tttinterrupts = <0x0 0x1b 0x4>;
tttinterrupt-parent = <0x2>;
tttdevice_type = "serial";
tttcurrent-speed = <0x1c200>;
tttcompatible = "xlnx,ps7-uart-1.00.a", "xlnx,xuartps";
tttclocks = <0x3 0x17 0x3 0x28>;
tttclock-names = "ref_clk", "aper_clk";
tt};
ttserial@e0001000 {
tttxlnx,has-modem = <0x0>;
tttreg = <0xe0001000 0x1000>;
tttport-number = <0x0>;
tttinterrupts = <0x0 0x32 0x4>;
tttinterrupt-parent = <0x2>;
tttdevice_type = "serial";
tttcurrent-speed = <0x1c200>;
tttcompatible = "xlnx,ps7-uart-1.00.a", "xlnx,xuartps";
tttclocks = <0x3 0x18 0x3 0x29>;
tttclock-names = "ref_clk", "aper_clk";
tt};
ttps7-ttc@f8001000 {
tttreg = <0xf8001000 0x1000>;
tttinterrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>;
tttinterrupt-parent = <0x2>;
tttinterrupt-names = "ttc0", "ttc1", "ttc2";
tttcompatible = "xlnx,ps7-ttc-1.00.a", "cdns,ttc";
tttclocks = <0x3 0x6>;
tt};
ttps7-slcr@f8000000 {
tttreg = <0xf8000000 0x1000>;
tttcompatible = "xlnx,ps7-slcr-1.00.a", "xlnx,zynq-slcr";
tttclocks {
tttt#size-cells = <0x0>;
tttt#address-cells = <0x1>;
ttttclkc {
tttttphandle = <0x3>;
tttttlinux,phandle = <0x3>;
tttttps-clk-frequency = <0x1fca055>;
tttttfclk-enable = <0xf>;
tttttcompatible = "xlnx,ps7-clkc";
tttttclock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb";
ttttt#clock-cells = <0x1>;
tttt};
ttt};
tt};
ttps7-sdio@e0100000 {
tttsdhci,wp-broken;
tttxlnx,has-power = <0x0>;
tttreg = <0xe0100000 0x1000>;
tttinterrupts = <0x0 0x18 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-sdio-1.00.a", "generic-sdhci", "arasan,sdhci-8.9a";
tttclocks = <0x3 0x15 0x3 0x20>;
tttclock-names = "clk_xin", "clk_ahb";
tttclock-frequency = <0x2faf080>;
tt};
ttps7-scuwdt@f8f00620 {
tttreg = <0xf8f00620 0xe0>;
tttinterrupts = <0x1 0xe 0x301>;
tttinterrupt-parent = <0x2>;
tttdevice_type = "watchdog";
tttcompatible = "xlnx,ps7-scuwdt-1.00.a";
tttclocks = <0x3 0x4>;
tt};
ttps7-scutimer@f8f00600 {
tttreg = <0xf8f00600 0x20>;
tttinterrupts = <0x1 0xd 0x301>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-scutimer-1.00.a", "arm,cortex-a9-twd-timer";
tttclocks = <0x3 0x4>;
tt};
ttps7-scugic@f8f01000 {
tttphandle = <0x2>;
tttlinux,phandle = <0x2>;
tttreg = <0xf8f01000 0x1000 0xf8f00100 0x100>;
tttnum_interrupts = <0x60>;
tttnum_cpus = <0x2>;
tttinterrupt-controller;
tttcompatible = "xlnx,ps7-scugic-1.00.a", "arm,cortex-a9-gic", "arm,gic";
ttt#size-cells = <0x1>;
ttt#interrupt-cells = <0x3>;
ttt#address-cells = <0x2>;
tt};
ttps7-qspi-linear@fc000000 {
tttreg = <0xfc000000 0x1000000>;
tttcompatible = "xlnx,ps7-qspi-linear-1.00.a";
tttclocks = <0x3 0xa 0x3 0x2b>;
tttclock-names = "ref_clk", "aper_clk";
tt};
ttps7-qspi@e000d000 {
ttt#size-cells = <0x0>;
ttt#address-cells = <0x1>;
tttxlnx,qspi-mode = <0x0>;
tttxlnx,fb-clk = <0x1>;
tttreg = <0xe000d000 0x1000>;
tttnum-chip-select = <0x1>;
tttis-dual = <0x0>;
tttinterrupts = <0x0 0x13 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-qspi-1.00.a";
tttclocks = <0x3 0xa 0x3 0x2b>;
tttclock-names = "ref_clk", "aper_clk";
tttflash@0 {
tttt#size-cells = <0x1>;
tttt#address-cells = <0x1>;
ttttspi-max-frequency = <0x2faf080>;
ttttreg = <0x0>;
ttttcompatible = "n25q128";
ttttpartition@qspi-bitstream {
tttttreg = <0xc00000 0x400000>;
tttttlabel = "qspi-bitstream";
tttt};
ttttpartition@qspi-rootfs {
tttttreg = <0x620000 0x5e0000>;
tttttlabel = "qspi-rootfs";
tttt};
ttttpartition@qspi-device-tree {
tttttreg = <0x600000 0x20000>;
tttttlabel = "qspi-device-tree";
tttt};
ttttpartition@qspi-linux {
tttttreg = <0x100000 0x500000>;
tttttlabel = "qspi-linux";
tttt};
ttttpartition@qspi-fsbl-uboot {
tttttreg = <0x0 0x100000>;
tttttlabel = "qspi-fsbl-uboot";
tttt};
ttt};
tt};
ttps7-pl310@f8f02000 {
tttreg = <0xf8f02000 0x1000>;
tttinterrupts = <0x0 0x2 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-pl310-1.00.a", "arm,pl310-cache";
tttcache-unified;
tttcache-level = <0x2>;
tttarm,tag-latency = <0x2 0x2 0x2>;
tttarm,data-latency = <0x3 0x2 0x2>;
tt};
ttps7-ocmc@f800c000 {
tttreg = <0xf800c000 0x1000>;
tttinterrupts = <0x0 0x3 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-ocmc-1.00.a", "xlnx,zynq-ocm-1.0";
tt};
ttps7-iop-bus-config@e0200000 {
tttreg = <0xe0200000 0x1000>;
tttcompatible = "xlnx,ps7-iop-bus-config-1.00.a";
tt};
ttps7-gpio@e000a000 {
tttphandle = <0x5>;
tttlinux,phandle = <0x5>;
tttreg = <0xe000a000 0x1000>;
tttinterrupts = <0x0 0x14 0x4>;
tttinterrupt-parent = <0x2>;
tttgpio-mask-low = <0xfe81>;
tttgpio-mask-high = <0xc0000>;
tttgpio-controller;
tttemio-gpio-width = <0x40>;
tttcompatible = "xlnx,ps7-gpio-1.00.a";
tttclocks = <0x3 0x2a>;
ttt#gpio-cells = <0x2>;
tt};
ttps7-ethernet@e000b000 {
tttxlnx,ptp-enet-clock = <0x69f6bcb>;
tttxlnx,has-mdio = <0x1>;
tttxlnx,eth-mode = <0x1>;
tttreg = <0xe000b000 0x1000>;
tttphy-mode = "rgmii-id";
tttphy-handle = <0x4>;
tttlocal-mac-address = [00 0a 35 00 01 22];
tttinterrupts = <0x0 0x16 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-ethernet-1.00.a";
tttclocks = <0x3 0xd 0x3 0x1e>;
tttclock-names = "ref_clk", "aper_clk";
ttt#size-cells = <0x0>;
ttt#address-cells = <0x1>;
tttmdio {
tttt#size-cells = <0x0>;
tttt#address-cells = <0x1>;
ttttphy@0 {
tttttphandle = <0x4>;
tttttlinux,phandle = <0x4>;
tttttreg = <0x0>;
tttttdevice_type = "ethernet-phy";
tttttcompatible = "marvell,88e1510";
tttt};
ttt};
tt};
ttps7-dma@f8003000 {
tttreg = <0xf8003000 0x1000>;
tttinterrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>;
tttinterrupt-parent = <0x2>;
tttinterrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7";
tttcompatible = "xlnx,ps7-dma-1.00.a", "arm,primecell", "arm,pl330";
tttclocks = <0x3 0x1b>;
tttclock-names = "apb_pclk";
ttt#dma-requests = <0x4>;
ttt#dma-channels = <0x8>;
ttt#dma-cells = <0x1>;
tt};
ttps7-dev-cfg@f8007000 {
tttreg = <0xf8007000 0x100>;
tttinterrupts = <0x0 0x8 0x4>;
tttinterrupt-parent = <0x2>;
tttcompatible = "xlnx,ps7-dev-cfg-1.00.a";
tttclocks = <0x3 0xc 0x3 0xf 0x3 0x10 0x3 0x11 0x3 0x12>;
tttclock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3";
tt};
ttps7-ddrc@f8006000 {
tttxlnx,has-ecc = <0x0>;
tttreg = <0xf8006000 0x1000>;
tttcompatible = "xlnx,ps7-ddrc-1.00.a", "xlnx,ps7-ddrc";
tt};
t};
tmemory@0 {
ttreg = <0x0 0x40000000>;
ttdevice_type = "memory";
t};
tpmu {
ttreg-names = "cpu0", "cpu1";
ttreg = <0xf8891000 0x1000 0xf8893000 0x1000>;
ttinterrupts = <0x0 0x5 0x4 0x0 0x6 0x4>;
ttinterrupt-parent = <0x2>;
ttcompatible = "arm,cortex-a9-pmu";
t};
tcpus {
tt#size-cells = <0x0>;
tt#address-cells = <0x1>;
ttcpu@1 {
tttreg = <0x1>;
tttinterrupt-handle = <0x2>;
ttti-cache-size = <0x8000>;
ttti-cache-line-size = <0x20>;
tttdevice_type = "cpu";
tttd-cache-size = <0x8000>;
tttd-cache-line-size = <0x20>;
tttcompatible = "arm,cortex-a9";
tttbus-handle = <0x1>;
tt};
ttcpu@0 {
tttreg = <0x0>;
tttinterrupt-handle = <0x2>;
ttti-cache-size = <0x8000>;
ttti-cache-line-size = <0x20>;
tttdevice_type = "cpu";
tttd-cache-size = <0x8000>;
tttd-cache-line-size = <0x20>;
tttcompatible = "arm,cortex-a9";
tttbus-handle = <0x1>;
tt};
t};
txillinux {
ttboard = "microzed";
t};
tchosen {
ttlinux,stdout-path = "/amba@0/serial@e0001000";
ttbootargs = "console=ttyPS0,115200n8 consoleblank=0 root=/dev/mmcblk0p2 rw rootwait earlyprintk";
t};
taliases {
ttspi0 = "/amba@0/ps7-qspi@e000d000";
ttserial3 = "/amba@0/uartlite_1@42C10000";
ttserial2 = "/amba@0/uartlite_0@42C00000";
ttserial1 = "/amba@0/serial@e0000000";
ttserial0 = "/amba@0/serial@e0001000";
ttethernet0 = "/amba@0/ps7-ethernet@e000b000";
t};
};