Hi all, Now I'm developing Freescale PCIe power management feature. The following is my PCIe suspend/resume code. when I test system wake up from sleep(STANDBY), I got below calltrace. Looks like e1000e cannot transfer data, maybe watchdog has some issue. Or maybe some of the other causes. I think this is not root cause. Because If changed mdelay(10) to 20ms. E1000 will work normal. Maybe e1000e need more time to recover? Or ? Here are my test results: E1000e plug in PCIe slot 1, we need to delay 10ms. E1000e plug in PCIe slot 2, we need to delay 20ms. E1000e plug in PCIe slot 3, we need to delay 60ms. Anyone have any idea about this? *Suspend flow*: if (fsl_pcie_check_link(hose)) return; /* Send PME_Turn_Off Message Request */ setbits32(&pci->pex_pmcr, PEX_PMCR_PTOMR); /* Wait trun off done */ /* RC will get this detect quickly */ for (i = 0; i < 50; i++) { dr = in_be32(&pci->pex_pme_mes_dr); if (dr & ENL23_DETECT_BIT) { out_be32(&pci->pex_pme_mes_dr, dr); break; } udelay(1000); } /* * "PCI Bus Power Management Interface Specification" define * Minimum System Software Guaranteed Delays * * D0, D1 or D2 --> D3, need delay 10ms. * But we need to delay more time when EP plug in p1022 slot2. */ mdelay(10); *Resume flow*: if (fsl_pcie_check_link(hose)) return; /* Send Exit L2 State Message */ setbits32(&pci->pex_pmcr, PEX_PMCR_EXL2S); /* Wait exit done */ /* RC will get this detect quickly */ for (i = 0; i < 50; i++) { dr = in_be32(&pci->pex_pme_mes_dr); if (dr & EXL23_DETECT_BIT) { out_be32(&pci->pex_pme_mes_dr, dr); break; } udelay(1000); } /* * "PCI Bus Power Management Interface Specification" define * Minimum System Software Guaranteed Delays * * D3 hot --> D0, need delay 10ms. * But we need to delay more time when EP plug in p1022 slot2. */ mdelay(10); ================================================================================ CALL TRACE ================================================================================ [root@p1022 /root]# udhcpc -i eth0 udhcpc (v1.11.2) started IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready Sending discover... e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Sending discover... Sending discover... NETDEV WATCHDOG: eth0 (e1000e): transmit queue 0 timed out ------------[ cut here ]------------ WARNING: at net/sched/sch_generic.c:264 Modules linked in: CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.0-173871-g9964256-dirty #42 task: ee0534e0 ti: ee070000 task.ti: ee070000 NIP: c036267c LR: c036267c CTR: c028b834 REGS: ee071d00 TRAP: 0700 Not tainted (3.14.0-173871-g9964256-dirty) MSR: 00029000 <CE,EE,ME> CR: 42000022 XER: 20000000 GPR00: c036267c ee071db0 ee0534e0 0000003a c16393b0 c16398e8 01079000 c05c03a8 GPR08: 00000001 00000001 01079000 00000132 00000132 00000000 00000004 c05ed040 GPR16: 00000001 00000100 00000004 fffef539 00000000 c05c10c0 00000038 ffffffff GPR24: 00000000 00000001 ee070000 00000004 c05e0000 c05f0000 ee3c0000 00000000 NIP [c036267c] dev_watchdog+0x2c8/0x2d8 LR [c036267c] dev_watchdog+0x2c8/0x2d8 Call Trace: [ee071db0] [c036267c] dev_watchdog+0x2c8/0x2d8 (unreliable) [ee071de0] [c004778c] call_timer_fn.isra.24+0x28/0x84 [ee071e00] [c00479b8] run_timer_softirq+0x1d0/0x248 [ee071e40] [c004090c] __do_softirq+0x104/0x20c [ee071ea0] [c0040cd8] irq_exit+0xa4/0xc8 [ee071eb0] [c0009ef4] timer_interrupt+0xb8/0xdc [ee071ed0] [c000f57c] ret_from_except+0x0/0x18 --- Exception: 901 at arch_cpu_idle+0x24/0x5c LR = arch_cpu_idle+0x24/0x5c [ee071f90] [c0089534] rcu_idle_enter+0xa4/0xd0 (unreliable) [ee071fa0] [c0076010] cpu_startup_entry+0x120/0x17c [ee071fd0] [c0010bbc] start_secondary+0x214/0x224 [ee071ff0] [c0002154] __secondary_start+0x7c/0xc8 Instruction dump: 4e800421 80fe0224 4bffff4c 7fc3f378 4bfe5401 7fc4f378 7c651b78 3c60c055 7fe6fb78 3863e0f4 4cc63182 480e9a05 <0fe00000> 39200001 993c6f38 4bffffb4 ---[ end trace 2d4f2cedfa86e32f ]--- e1000e 0002:05:00.0: Net device Info e1000e: Device Name state trans_start last_rx e1000e: eth0 0000000000000003 00000000FFFEF040 0000000000000000 e1000e 0002:05:00.0: Register Dump e1000e: Register Name Value e1000e: CTRL 58100248 e1000e: STATUS 00080783 e1000e: CTRL_EXT 18580000 e1000e: ICR 00000000 e1000e: RCTL 04008002 e1000e: RDLEN 00001000 e1000e: RDH 0000001d e1000e: RDT 000000f0 e1000e: RDTR 00000020 e1000e: RXDCTL[0-1] 01040420 01040420 e1000e: ERT 00000000 e1000e: RDBAL 2d390000 e1000e: RDBAH 00000000 e1000e: RDFH 0000020a e1000e: RDFT 0000020a e1000e: RDFHS 0000020a e1000e: RDFTS 0000020a e1000e: RDFPC 00000000 e1000e: TCTL 3103f0fa e1000e: TDBAL 2e158000 e1000e: TDBAH 00000000 e1000e: TDLEN 00001000 e1000e: TDH 00000001 e1000e: TDT 00000001 e1000e: TIDV 00000008 e1000e: TXDCTL[0-1] 0141011f 0141011f e1000e: TADV 00000020 e1000e: TARC[0-1] 04000403 00000403 e1000e: TDFH 00001000 e1000e: TDFT 00001012 e1000e: TDFHS 00001000 e1000e: TDFTS 00001000 e1000e: TDFPC 00000000 e1000e 0002:05:00.0: Tx Ring Summary e1000e: Queue [NTU] [NTC] [bi(ntc)->dma ] leng ntw timestamp e1000e: 0 1 0 000000002C809802 005A 0 00000000FFFEF044 e1000e 0002:05:00.0: Rx Ring Summary e1000e: Queue [NTU] [NTC] e1000e: 0 FF 0 e1000e 0002:05:00.0 eth0: Reset adapter unexpectedly -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html