<p class="MsoNormal">Hi,</p><p class="MsoNormal"><br></p>

<p class="MsoNormal">I have a modem with a Freescale MPC8313E processor. I am trying
to enable power savings in the processor by placing it in Standby mode and
resume normal operation with a Wake-On-LAN magic packet. </p>

<p class="MsoNormal"><br></p><p class="MsoNormal">Following the directions in the Freescale Power Management
app note, I enabled Power Management Support in the Linux kernel and device
tree configurations.  </p>

<p class="MsoNormal"><br></p><p class="MsoNormal">I ran the following command on the board:</p>

<p class="MsoNormal">echo standby > /sys/power/state</p>

<p class="MsoNormal"><br></p><p class="MsoNormal">This caused the console to hang and there was no further response
to keyboard inputs. I enabled ‘no_console_suspend’ in the kernel and when I
loaded the new build and enabled standby mode, I observed an Oops trace:</p>

<p class="MsoNormal"><br></p><p class="MsoNormal"><br></p><p class="MsoNormal">RASCOM_QCU.7.0.0013 $ echo standby > /sys/power/state</p>

<p class="MsoNormal"><6>PM: Syncing fFreezing user space processes ...
ilesystems ... <7>PM: Entering standby sleep</p>

<p class="MsoNormal">Unable to handle kernel paging request for instruction fetch</p>

<p class="MsoNormal">Faulting instruction address: 0x616d6570</p>

<p class="MsoNormal">Oops: Kernel access of bad area, sig: 11 [#1]</p>

<p class="MsoNormal">MPC831x RDB</p>

<p class="MsoNormal">Modules linked in: dsp rcspi modem i2c_mpc thermal_sys lm92
hwmon [last unloaded: modem]</p>

<p class="MsoNormal">NIP: 616d6570 LR: c0165224 CTR: 616d6573</p>

<p class="MsoNormal">REGS: cd087d30 TRAP: 0400  
Not tainted  (2.6.27)</p>

<p class="MsoNormal">MSR: 20001032 <ME,IR,DR>  CR: 28002024 
XER: 20000000</p>

<p class="MsoNormal">TASK = cc312400[1196] 'echo' THREAD: cd086000</p>

<p class="MsoNormal">GPR00: 00000002 cd087de0 cc312400 cf821800 cd087de8 00000002
c06e0000 c06da4a0</p>

<p class="MsoNormal">GPR08: c06da948 616d6573 00003fff c06c6308 28002022 10091248
0fffc000 100050b8</p>

<p class="MsoNormal">GPR16: 1008a270 10068810 100687c8 10068814 00000000 1008c284
1008c294 c0246180</p>

<p class="MsoNormal">GPR24: c02ab9e4 c02ab9dc c06cc4f4 00000006 cd087e08 00000002
c06c595c cf821808</p>

<p class="MsoNormal">NIP [616d6570] 0x616d6570</p>

<p class="MsoNormal">LR [c0165224] platform_pm_suspend_noirq+0x84/0x88</p>

<p class="MsoNormal">Call Trace:</p>

<p class="MsoNormal">[cd087de0] [c0167e6c] pm_dev_dbg+0x70/0x18c (unreliable)</p>

<p class="MsoNormal">[cd087df0] [c0167cb4] pm_noirq_op+0x58/0xc8</p>

<p class="MsoNormal">[cd087e00] [c0168e08] device_power_down+0x78/0x1c4</p>

<p class="MsoNormal">[cd087e40] [c00471bc] suspend_devices_and_enter+0x1ec/0x258</p>

<p class="MsoNormal">[cd087e70] [c00473ac] enter_state+0x13c/0x198</p>

<p class="MsoNormal">[cd087e90] [c00474bc] state_store+0xb4/0xf8</p>

<p class="MsoNormal">[cd087eb0] [c013af68] kobj_attr_store+0x24/0x3c</p>

<p class="MsoNormal">[cd087ec0] [c00bf734] sysfs_write_file+0xe8/0x1e8</p>

<p class="MsoNormal">[cd087ef0] [c0078bbc] vfs_write+0xb4/0x16c</p>

<p class="MsoNormal">[cd087f10] [c0078d7c] sys_write+0x4c/0xa4</p>

<p class="MsoNormal">[cd087f40] [c000fa88] ret_from_syscall+0x0/0x38</p>

<p class="MsoNormal">--- Exception: c01 at 0x4802679c</p>

<p class="MsoNormal">    LR = 0x4803f0e8</p>

<p class="MsoNormal">Instruction dump:</p>

<p class="MsoNormal">XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
XXXXXXXX XXXXXXXX</p>

<p class="MsoNormal">XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
XXXXXXXX XXXXXXXX</p>

<p class="MsoNormal">---[ end trace b6a2457eea68b760 ]---</p>

<p class="MsoNormal">done.</p>

<p class="MsoNormal"><7>PM: Preparing system for standby sleep</p>

<p class="MsoNormal"><1>Freezing user space processes ... <7>PM:
Entering standby sleep</p>

<p class="MsoNormal"><7>platform mpc83xx_wdt.0: preparing suspend</p>

<p class="MsoNormal"><7>fsl-gianfar fsl-gianfar.0: preparing suspend</p>

<p class="MsoNormal"><7>fsl-gianfar fsl-gianfar.1: preparing suspend</p>

<p class="MsoNormal"><7>fsl-gianfar_mdio fsl-gianfar_mdio.14: preparing
suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250.0: preparing suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250: preparing suspend</p>

<p class="MsoNormal"><7>platform Fixed MDIO bus.0: preparing suspend</p>

<p class="MsoNormal"><7>lm92 0-0049: legacy suspend</p>

<p class="MsoNormal"><7>lm92 0-0048: legacy suspend</p>

<p class="MsoNormal"><7>platform Fixed MDIO bus.0: suspend</p>

<p class="MsoNormal"><7>mdio_bus 24520:1f: legacy suspend</p>

<p class="MsoNormal"><7>Generic PHY 24520:01: legacy suspend</p>

<p class="MsoNormal"><7>Generic PHY 24520:00: legacy suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250: suspend</p>

<p class="MsoNormal"><7>of_platform ee000600.timer: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee000500.timer: legacy suspend</p>

<p class="MsoNormal"><7>mpc83xx-pmc ee000b00.power: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee000700.pic: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee030000.crypto: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee004600.serial: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee004500.serial: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee025000.ethernet: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee024000.ethernet: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee024520.mdio: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee024e00.ptimer: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee0082a8.dma: legacy suspend</p>

<p class="MsoNormal"><7>mpc-i2c ee003100.i2c: legacy suspend</p>

<p class="MsoNormal"><7>mpc-i2c ee003000.i2c: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee000200.wdt: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee000000.soc8313: legacy suspend</p>

<p class="MsoNormal"><7>of-flash fc000000.flash: legacy suspend</p>

<p class="MsoNormal"><7>of_platform ee005000.localbus: legacy suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250.0: suspend</p>

<p class="MsoNormal"><7>fsl-gianfar_mdio fsl-gianfar_mdio.14: suspend</p>

<p class="MsoNormal"><7>fsl-gianfar fsl-gianfar.1: suspend</p>

<p class="MsoNormal"><7>fsl-gianfar fsl-gianfar.0: suspend</p>

<p class="MsoNormal"><7>platform mpc83xx_wdt.0: suspend</p>

<p class="MsoNormal"><6>PM: suspend devices took 0.000 seconds</p>

<p class="MsoNormal"><7>platform Fixed MDIO bus.0: LATE suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250: LATE suspend</p>

<p class="MsoNormal"><7>serial8250 serial8250.0: LATE suspend</p>

<p class="MsoNormal"><7>fsl-gianfar_mdio fsl-gianfar_mdio.14: LATE suspend</p>

<p class="MsoNormal"><1>Unable to handle kernel paging request for
instruction fetch</p>

<p class="MsoNormal"><1>Faulting instruction address: 0x616d6570</p>

<p class="MsoNormal"><1>Oops: Kernel access of bad area, sig: 11 [#1]</p>

<p class="MsoNormal"><1>MPC831x RDB</p>

<p class="MsoNormal"><1>Modules linked in: dsp rcspi modem i2c_mpc
thermal_sys lm92 hwmon [last unloaded: modem]</p>

<p class="MsoNormal"><1>NIP: 616d6570 LR: c0165224 CTR: 616d6573</p>

<p class="MsoNormal"><1>REGS: cd087d30 TRAP: 0400   Not tainted 
(2.6.27)</p>

<p class="MsoNormal"><1>MSR: 20001032 <ME,IR,DR>  CR: 28002024 
XER: 20000000</p>

<p class="MsoNormal"><1>TASK = cc312400[1196] 'echo' THREAD: cd086000</p>

<p class="MsoNormal"><6>GPR00: 00000002 cd087de0 cc312400 cf821800 cd087de8
00000002 c06e0000 c06da4a0</p>

<p class="MsoNormal"><6>GPR08: c06da948 616d6573 00003fff c06c6308 28002022
10091248 0fffc000 100050b8</p>

<p class="MsoNormal"><6>GPR16: 1008a270 10068810 100687c8 10068814 00000000
1008c284 1008c294 c0246180</p>

<p class="MsoNormal"><6>GPR24: c02ab9e4 c02ab9dc c06cc4f4 00000006 cd087e08
00000002 c06c595c cf821808</p>

<p class="MsoNormal"><1>NIP [616d6570] 0x616d6570</p>

<p class="MsoNormal"><1>LR [c0165224] platform_pm_suspend_noirq+0x84/0x88</p>

<p class="MsoNormal"><1>Call Trace:</p>

<p class="MsoNormal"><1>[cd087de0] [c0167e6c] pm_dev_dbg+0x70/0x18c
(unreliable)</p>

<p class="MsoNormal"><1>[cd087df0] [c0167cb4] pm_noirq_op+0x58/0xc8</p>

<p class="MsoNormal"><1>[cd087e00] [c0168e08] device_power_down+0x78/0x1c4</p>

<p class="MsoNormal"><1>[cd087e40] [c00471bc] suspend_devices_and_enter+0x1ec/0x258</p>

<p class="MsoNormal"><1>[cd087e70] [c00473ac] enter_state+0x13c/0x198</p>

<p class="MsoNormal"><1>[cd087e90] [c00474bc] state_store+0xb4/0xf8</p>

<p class="MsoNormal"><1>[cd087eb0] [c013af68] kobj_attr_store+0x24/0x3c</p>

<p class="MsoNormal"><1>[cd087ec0] [c00bf734] sysfs_write_file+0xe8/0x1e8</p>

<p class="MsoNormal"><1>[cd087ef0] [c0078bbc] vfs_write+0xb4/0x16c</p>

<p class="MsoNormal"><1>[cd087f10] [c0078d7c] sys_write+0x4c/0xa4</p>

<p class="MsoNormal"><1>[cd087f40] [c000fa88] ret_from_syscall+0x0/0x38</p>

<p class="MsoNormal"><1>--- Exception: c01 at 0x4802679c</p>

<p class="MsoNormal"><1>    LR =
0x4803f0e8</p>

<p class="MsoNormal"><1>Instruction dump:</p>

<p class="MsoNormal"><1>XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
XXXXXXXX XXXXXXXX XXXXXXXX</p>

<p class="MsoNormal"><1>XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
XXXXXXXX XXXXXXXX XXXXXXXX</p>

<p class="MsoNormal"><4>---[ end trace b6a2457eea68b760 ]---</p>

<p class="MsoNormal">Segmentation fault</p>

<p class="MsoNormal"> </p><p class="MsoNormal"><br></p>

<p class="MsoNormal">I tried commenting out the kernel code in drivers/base/platform.c
-> platform_legacy_suspend_late() function:</p>

<p class="MsoNormal">/*     if
(dev->driver && drv->suspend_late)</p>

<p class="MsoNormal">       { } */</p>

<p class="MsoNormal"><br></p><p class="MsoNormal">This prevents the segmentation fault but it causes the resume
functions for all the peripherals to be called as soon as the suspend
operations are complete i.e. the processor goes into standby and then immediately
goes back to normal operation.</p>

<p class="MsoNormal"><br></p><p class="MsoNormal">I found another thread that dealt with Power Management
issues on the Freescale MPC8313 processor:</p>

<p class="MsoNormal"><a href="https://lists.ozlabs.org/pipermail/linuxppc-dev/2012-January/095240.html">https://lists.ozlabs.org/pipermail/linuxppc-dev/2012-January/095240.html</a>
</p>

<p class="MsoNormal">The resolution of this issue seems to be related to the JTAG
TRST pin being disabled. This is not relevant in my case as the TRST on my
board is already inactive.</p>

<p class="MsoNormal"><br></p><p class="MsoNormal">Any advice or suggestions are most welcome.</p>

<p class="MsoNormal"><br></p><p class="MsoNormal">Thanks,</p>

<p class="MsoNormal">Srivatsan</p>