Ok, one more try -- I disabled the abort suspend code in the suspend
handler in neo1973_pm_gsm.c, leaving only the late suspend abort code --
I figured that should let all the drivers do whatever they need before
the suspend gets aborted.
Didn't work. But the trace is interesting. It did the white-screen
thing, and I had to ssh in again. "apm -s" reported busy. Apparently
the user-space apm stuff hadn't run its resume scripts in
/etc/apm/resume.d, because the GSM was still flowcontrolled. No
problem, that shouldn't affect anything... so I did the "echo 0" thing
to release the flow-control on the GSM manually...
...and the device immediately began to print suspend messages (I think
this is Andy's debug code) with the final messages ending rather badly
with an oops in glamo_resume.
So it seems that holding the GSM flowcontrolled may have some
side-effects on the S3C2440 (although I think it more likely that
releasing flowcontrol may have just triggered an interrupt to service
the UARTs, or done something in the drivers). I'll investigate that
further.
Hopefully this will offer some clues for someone?
Mike (mwester)
modem wakeup interrupt
Syncing filesystems ... done.
PM: Preparing system for mem sleep
Freezing user space processes ... (elapsed 0.06 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
PM: Entering mem sleep
Suspending console(s)
sdio_wlan 00:01: suspend
WM8753 I2C Codec 0-001a: suspend
soc-audio soc-audio: suspend
sdio_s3c24xx_hcd 00:00: suspend
mmcblk mmc0:0007: suspend
neo1973-pm-gps neo1973-pm-gps.0: suspend
neo1973-pm-bt neo1973-pm-bt.0: suspend
rtc rtc0: class suspend
pcf50633 0-0073: suspend
pcf50633 0-0073: pcf50633_suspend
modem wakeup interrupt
hub 1-0:1.0: PM: suspend 2-->2
hub 1-0:1.0: suspend
usb usb1: PM: suspend 2-->2
usb usb1: suspend, may wakeup
lis302dl spi0.1: suspend
lis302dl spi0.0: suspend
jbt6k74 spi2.0: suspend
glamo-mci glamo-mci.0: suspend
glamo-mci glamo-mci.0: faking cmd 7 during suspend
mmc_set_power(power_mode=0, vdd=0
glamo-mci glamo-mci.0: glamo_mci_set_ios: power down.
glamo-spi-gpio glamo-spi-gpio.0: suspend
glamo-fb glamo-fb.0: suspend
platform glamo-mpeg.0: suspend
platform glamo-jpeg.0: suspend
platform glamo-3d.0: suspend
platform glamo-2d.0: suspend
platform bluetooth: suspend
s3c2440-uart s3c2440-uart.2: suspend
s3c2440-uart s3c2440-uart.1: suspend
s3c2440-uart s3c2440-uart.0: suspend
bq27000-battery bq27000-battery.0: suspend
gta02-hdq gta02-hdq.0: suspend
s3c24xx_pwm s3c24xx_pwm.0: suspend
neo1973-resume neo1973-resume.0: suspend
neo1973-memconfig neo1973-memconfig.0: suspend
neo1973-version neo1973-version.0: suspend
sc32440_fiq sc32440_fiq.0: suspend
physmap-flash physmap-flash.0: suspend
s3c2440-ts s3c2440-ts: suspend
s3c2440-nand s3c2440-nand: suspend
s3c2440-usbgadget s3c2440-usbgadget: suspend
gta02_udc_command(2)
platform s3c2410-iis: suspend
s3c2440-i2c s3c2440-i2c: suspend
platform s3c2410-wdt: suspend
s3c2410-ohci s3c2410-ohci: suspend
s3c24xx-sdio s3c24xx-sdio: suspend
gta02-led gta02-led.0: suspend
neo1973-vibrator neo1973-vibrator.0: suspend
pcf50633 pcf50633.0: suspend
neo1973-pm-host neo1973-pm-host.0: suspend
neo1973-pm-gsm neo1973-pm-gsm.0: suspend
neo1973-button neo1973-button.0: suspend
spi_s3c24xx_gpio spi_s3c24xx_gpio.1: suspend
glamo3362 glamo3362.0: suspend
soc-audio soc-audio: LATE suspend
neo1973-pm-gps neo1973-pm-gps.0: LATE suspend
neo1973-pm-bt neo1973-pm-bt.0: LATE suspend
glamo-mci glamo-mci.0: LATE suspend
glamo-spi-gpio glamo-spi-gpio.0: LATE suspend
glamo-fb glamo-fb.0: LATE suspend
platform glamo-mpeg.0: LATE suspend
platform glamo-jpeg.0: LATE suspend
platform glamo-3d.0: LATE suspend
platform glamo-2d.0: LATE suspend
platform bluetooth: LATE suspend
s3c2440-uart s3c2440-uart.2: LATE suspend
s3c2440-uart s3c2440-uart.1: LATE suspend
s3c2440-uart s3c2440-uart.0: LATE suspend
bq27000-battery bq27000-battery.0: LATE suspend
gta02-hdq gta02-hdq.0: LATE suspend
s3c24xx_pwm s3c24xx_pwm.0: LATE suspend
neo1973-resume neo1973-resume.0: LATE suspend
neo1973-memconfig neo1973-memconfig.0: LATE suspend
neo1973-version neo1973-version.0: LATE suspend
sc32440_fiq sc32440_fiq.0: LATE suspend
physmap-flash physmap-flash.0: LATE suspend
s3c2440-ts s3c2440-ts: LATE suspend
s3c2440-nand s3c2440-nand: LATE suspend
s3c2440-usbgadget s3c2440-usbgadget: LATE suspend
platform s3c2410-iis: LATE suspend
s3c2440-i2c s3c2440-i2c: LATE suspend
platform s3c2410-wdt: LATE suspend
s3c2410-ohci s3c2410-ohci: LATE suspend
s3c24xx-sdio s3c24xx-sdio: LATE suspend
gta02-led gta02-led.0: LATE suspend
neo1973-vibrator neo1973-vibrator.0: LATE suspend
pcf50633 pcf50633.0: LATE suspend
neo1973-pm-host neo1973-pm-host.0: LATE suspend
neo1973-pm-gsm neo1973-pm-gsm.0: LATE suspend
suspend_device_late(): platform_suspend_late+0x0/0x40() returns -16
Could not power down device neo1973-pm-gsm.0: error -16
neo1973-pm-host neo1973-pm-host.0: EARLY resume
pcf50633 pcf50633.0: EARLY resume
neo1973-vibrator neo1973-vibrator.0: EARLY resume
gta02-led gta02-led.0: EARLY resume
s3c24xx-sdio s3c24xx-sdio: EARLY resume
s3c2410-ohci s3c2410-ohci: EARLY resume
platform s3c2410-wdt: EARLY resume
s3c2440-i2c s3c2440-i2c: EARLY resume
platform s3c2410-iis: EARLY resume
s3c2440-usbgadget s3c2440-usbgadget: EARLY resume
s3c2440-nand s3c2440-nand: EARLY resume
s3c2440-ts s3c2440-ts: EARLY resume
physmap-flash physmap-flash.0: EARLY resume
sc32440_fiq sc32440_fiq.0: EARLY resume
neo1973-version neo1973-version.0: EARLY resume
neo1973-memconfig neo1973-memconfig.0: EARLY resume
neo1973-resume neo1973-resume.0: EARLY resume
s3c24xx_pwm s3c24xx_pwm.0: EARLY resume
gta02-hdq gta02-hdq.0: EARLY resume
bq27000-battery bq27000-battery.0: EARLY resume
s3c2440-uart s3c2440-uart.0: EARLY resume
s3c2440-uart s3c2440-uart.1: EARLY resume
s3c2440-uart s3c2440-uart.2: EARLY resume
platform bluetooth: EARLY resume
platform glamo-2d.0: EARLY resume
platform glamo-3d.0: EARLY resume
platform glamo-jpeg.0: EARLY resume
platform glamo-mpeg.0: EARLY resume
glamo-fb glamo-fb.0: EARLY resume
glamo-spi-gpio glamo-spi-gpio.0: EARLY resume
glamo-mci glamo-mci.0: EARLY resume
neo1973-pm-bt neo1973-pm-bt.0: EARLY resume
neo1973-pm-gps neo1973-pm-gps.0: EARLY resume
soc-audio soc-audio: EARLY resume
Some devices failed to power down
glamo3362 glamo3362.0: resuming
spi_s3c24xx_gpio spi_s3c24xx_gpio.1: resuming
neo1973-button neo1973-button.0: resuming
neo1973-pm-gsm neo1973-pm-gsm.0: resuming
neo1973-pm-host neo1973-pm-host.0: resuming
pcf50633 pcf50633.0: resuming
neo1973-vibrator neo1973-vibrator.0: resuming
gta02-led gta02-led.0: resuming
s3c24xx-sdio s3c24xx-sdio: resuming
s3c2410-ohci s3c2410-ohci: resuming
platform s3c2410-wdt: resuming
s3c2440-i2c s3c2440-i2c: resuming
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 390 KHz
platform s3c2410-iis: resuming
s3c2440-usbgadget s3c2440-usbgadget: resuming
gta02_udc_command(1)
s3c2440-nand s3c2440-nand: resuming
s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns
s3c2440-ts s3c2440-ts: resuming
physmap-flash physmap-flash.0: resuming
sc32440_fiq sc32440_fiq.0: resuming
not changing prescaler of PWM 3, since it's shared with timer4 (clock tick)
neo1973-version neo1973-version.0: resuming
neo1973-memconfig neo1973-memconfig.0: resuming
neo1973-resume neo1973-resume.0: resuming
s3c24xx_pwm s3c24xx_pwm.0: resuming
gta02-hdq gta02-hdq.0: resuming
bq27000-battery bq27000-battery.0: resuming
s3c2440-uart s3c2440-uart.0: resuming
s3c2440-uart s3c2440-uart.1: resuming
s3c2440-uart s3c2440-uart.2: resuming
platform bluetooth: resuming
platform glamo-2d.0: resuming
platform glamo-3d.0: resuming
platform glamo-jpeg.0: resuming
platform glamo-mpeg.0: resuming
glamo-fb glamo-fb.0: resuming
glamo-spi-gpio glamo-spi-gpio.0: resuming
glamo-mci glamo-mci.0: resuming
jbt6k74 spi2.0: resuming
lis302dl spi0.0: resuming
lis302dl spi0.1: resuming
usb usb1: resuming
hub 1-0:1.0: resuming
pcf50633 0-0073: resuming
pcf50633 0-0073: pcf irq work already queued
mmc_set_power(power_mode=1, vdd=20
SD power -> 3200mV
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 0kHz div=255 (req: 0kHz). Bus
width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz).
Bus width=0
glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz).
Bus width=2
rtc rtc0: class resume
neo1973-pm-bt neo1973-pm-bt.0: resuming
neo1973-pm-gps neo1973-pm-gps.0: resuming
mmcblk mmc0:0007: resuming
sdio_s3c24xx_hcd 00:00: resuming
soc-audio soc-audio: resuming
soc-audio soc-audio: scheduling resume work
WM8753 I2C Codec 0-001a: resuming
sdio_wlan 00:01: resuming
PM: Finishing wakeup.
Restarting tasks ... done.
usb0: full speed config #1: 500 mA, Ethernet Gadget, using CDC Ethernet
soc-audio soc-audio: starting resume work
soc-audio soc-audio: resume work completed
power_supply bat: driver failed to report `capacity' property
modem wakeup interrupt
Syncing filesystems ... done.
PM: Preparing system for mem sleep
Freezing user space processes ... (elapsed 0.08 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
PM: Entering mem sleep
Suspending console(s)
<7>sdio_wlan 00:01: suspend
<7>WM8753 I2C Codec 0-001a: suspend
<7>soc-audio
soc-audio: suspend
<7>sdio_s3c24xx_hcd 00:00: suspend
<7>mmcblk mmc0:0007: suspend
<7>neo1973-pm-gps
neo1973-pm-gps.0: suspend
<7>neo1973-pm-bt neo1973-pm-bt.0: suspend
<7>rtc rtc0: class suspend
<7>pcf50633 0-0073: suspend
<3>pcf50633 0-0073: pcf50633_suspend
<7>hub 1-0:1.0: PM: suspend 2-->2
<7>hub 1-0:1.0: suspend
<7>usb usb1: PM:
suspend 2-->2
<7>usb usb1: suspend, may wakeup
<7>lis302dl spi0.1: suspend
<7>lis302dl spi0.0: suspend
<7>jbt6k74 spi2.0: suspend
<7>glamo-mci glamo-mci.0: suspend
<3>glamo-mci glamo-mci.0: faking cmd 7 during suspend
<7>mmc_set_power(power_mode=0, vdd=0
<6>glamo-mci glamo-mci.0: glamo_mci_set_ios: power down.
<7>glamo-spi-gpio
glamo-spi-gpio.0: suspend
<7>glamo-fb glamo-fb.0: suspend
<7>platform glamo-mpeg.0: suspend
<7>platform
glamo-jpeg.0: suspend
<7>platform glamo-3d.0: suspend
<7>platform glamo-2d.0: suspend
<7>platform bluetooth: suspend
<7>s3c2440-uart s3c2440-uart.2: suspend
<7>s3c2440-uart s3c2440-uart.1: suspend
<7>s3c2440-uart
s3c2440-uart.0: suspend
<7>bq27000-battery bq27000-battery.0: suspend
<7>gta02-hdq gta02-hdq.0: suspend
<7>s3c24xx_pwm
s3c24xx_pwm.0: suspend
<7>neo1973-resume neo1973-resume.0: suspend
<7>neo1973-memconfig neo1973-memconfig.0:
suspend
<7>neo1973-version neo1973-version.0: suspend
<7>sc32440_fiq sc32440_fiq.0: suspend
<7>physmap-flash
physmap-flash.0: suspend
<7>s3c2440-ts s3c2440-ts: suspend
<7>s3c2440-nand s3c2440-nand: suspend
<7>s3c2440-usbgadget s3c2440-usbgadget: suspend
<7>gta02_udc_command(2)
<7>platform s3c2410-iis: suspend
<7>s3c2440-i2c
s3c2440-i2c: suspend
<7>platform s3c2410-wdt: suspend
<7>s3c2410-ohci s3c2410-ohci: suspend
<7>s3c24xx-sdio
s3c24xx-sdio: suspend
<7>gta02-led gta02-led.0: suspend
<7>neo1973-vibrator neo1973-vibrator.0: suspend
<7>pcf50633
pcf50633.0: suspend
<7>neo1973-pm-host neo1973-pm-host.0: suspend
<7>neo1973-pm-gsm neo1973-pm-gsm.0: suspend
<7>neo1973-button neo1973-button.0: suspend
<7>spi_s3c24xx_gpio spi_s3c24xx_gpio.1: suspend
<7>glamo3362
glamo3362.0: suspend
<7>soc-audio soc-audio: LATE suspend
<7>neo1973-pm-gps neo1973-pm-gps.0: LATE suspend
<7>neo1973-pm-bt neo1973-pm-bt.0: LATE suspend
<7>glamo-mci glamo-mci.0: LATE suspend
<7>glamo-spi-gpio
glamo-spi-gpio.0: LATE suspend
<7>glamo-fb glamo-fb.0: LATE suspend
<7>platform glamo-mpeg.0: LATE suspend
<7>platform
glamo-jpeg.0: LATE suspend
<7>platform glamo-3d.0: LATE suspend
<7>platform glamo-2d.0: LATE suspend
<7>platform
bluetooth: LATE suspend
<7>s3c2440-uart s3c2440-uart.2: LATE suspend
<7>s3c2440-uart s3c2440-uart.1: LATE suspend
<7>s3c2440-uart s3c2440-uart.0: LATE suspend
<7>bq27000-battery bq27000-battery.0: LATE suspend
<7>gta02-hdq
gta02-hdq.0: LATE suspend
<7>s3c24xx_pwm s3c24xx_pwm.0: LATE suspend
<7>neo1973-resume neo1973-resume.0:
LATE suspend
<7>neo1973-memconfig neo1973-memconfig.0: LATE suspend
<7>neo1973-version neo1973-version.0: LATE
suspend
<7>sc32440_fiq sc32440_fiq.0: LATE suspend
<7>physmap-flash physmap-flash.0: LATE suspend
<7>s3c2440-ts
s3c2440-ts: LATE suspend
<7>s3c2440-nand s3c2440-nand: LATE suspend
<7>s3c2440-usbgadget s3c2440-usbgadget:
LATE suspend
<7>platform s3c2410-iis: LATE suspend
<7>s3c2440-i2c s3c2440-i2c: LATE suspend
<7>platform
s3c2410-wdt: LATE suspend
<7>s3c2410-ohci s3c2410-ohci: LATE suspend
<7>s3c24xx-sdio s3c24xx-sdio: LATE suspend
<7>gta02-led gta02-led.0: LATE suspend
<7>neo1973-vibrator neo1973-vibrator.0: LATE suspend
<7>pcf50633
pcf50633.0: LATE suspend
<7>neo1973-pm-host neo1973-pm-host.0: LATE suspend
<7>neo1973-pm-gsm neo1973-pm-gsm.0: LATE
suspend
<7>neo1973-button neo1973-button.0: LATE suspend
<7>spi_s3c24xx_gpio spi_s3c24xx_gpio.1: LATE suspend
<7>glamo3362 glamo3362.0: LATE suspend
<7>suspending dma channel 0
<7>suspending dma channel 1
<7>suspending
dma channel 2
<7>suspending dma channel 3
<7>GSTATUS3 0x303d770c
<7>GSTATUS4 0x00000000
<7>glamo3362 glamo3362.0:
EARLY resume
<1>Unable to handle kernel paging request at virtual address
1afffff8
<1>pgd = c7798000
<1>[1afffff8] *pgd=00000000
Internal error: Oops: 0 [#1] PREEMPT
Modules linked in:
CPU: 0 Not tainted (2.6.24 #11)
PC is at 0x1afffff8
LR is at glamo_resume+0x40/0x90
pc : [<1afffff8>] lr : [<c01c1614>] psr: 000000d3
sp : c6667e40 ip : c6667e28 fp : c6667e54
r10: 00000000 r9 : c6666000 r8 : c002a0e8
r7 : 00000003 r6 :
00000003 r5 : e20130ff r4 : 00100100
r3 : 00000001 r2 : 00100100 r1 : 00200200 r0 : e590e000
Flags: nzcv
IRQs off FIQs off Mode SVC_32 ISA ARM Segment user
Control: c000717f Table: 37798000 DAC: 00000015
Process qpe (pid: 1461, stack limit = 0xc6666268)
Stack: (0xc6667e40 to 0xc6668000)
7e40: c03d42dc c03d4210
c6667e64 c6667e58 c01bd688 c01c15e4 c6667e7c c6667e68
7e60: c01bf988 c01bd664 00000000 c0420c24 c6667e8c
c6667e80 c01bfce4 c01bf924
7e80: c6667eac c6667e90 c006cda8 c01bfce0 c6667ecc 00002927
c0422eac c0385b9c
7ea0:
c6667ecc c6667eb0 c006cf48 c006ccd0 00000000 00000000 c6551220 00000036
7ec0: c6667edc c6667ed0 c006d0cc
c006ce2c c6667ef4 c6667ee0 c01b2cac c006d0bc
7ee0: c6667f3c 00000000 c6667f2c c6667ef8 c01b3408 c01b2ca4
00000000 0000135f
7f00: 00000000 00000000 c6667f2c c6667f18 c0312860 c76b6320 00000000
00004102
7f20: c6667f4c
c6667f30 c00a4270 c01b33a0 c6667f64 c76b6320 c75bf3b4 00000000
7f40: c6667f7c c6667f50 c00a4540 c00a4200
c6667f7c c6667f60 c0098398 c76b6320
7f60: fffffff7 00004102 00000036 c002a0e8 c6667fa4 c6667f80 c00a45b0 c00a429c
7f80: 001989f0 00000001 c6667fa4 00159ec8 004260a8 42e0aa10 00000000 c6667fa8
7fa0: c0029f40 c00a4580
00159ec8 004260a8 00000029 00004102 00000000 00000001
7fc0: 00159ec8 004260a8 42e0aa10 00000036 004260b0
bef88d5c 00000000 bef88f60
7fe0: 0015a249 bef88d50 0012b41c 418fed4c 00000010
00000029 30002031 30002431
Backtrace:
[<c01c15d4>] (glamo_resume+0x0/0x90) from [<c01bd688>]
(platform_resume_early+0x34/0x40)
r5:c03d4210
r4:c03d42dc
[<c01bd654>] (platform_resume_early+0x0/0x40) from [<c01bf988>]
(dpm_power_up+0x74/0x98)
[<c01bf914>] (dpm_power_up+0x0/0x98) from [<c01bfce4>]
(device_power_up+0x14/0x18)
r5:c0420c24 r4:00000000
[<c01bfcd0>] (device_power_up+0x0/0x18) from [<c006cda8>]
(suspend_devices_and_enter+0xe8/0x15c)
[<c006ccc0>]
(suspend_devices_and_enter+0x0/0x15c) from [<c006cf48>]
(enter_state+0x12c/0x1d4)
r6:c0385b9c r5:c0422eac r4:00002927
[<c006ce1c>] (enter_state+0x0/0x1d4) from [<c006d0cc>] (pm_suspend+0x20/0x2c)
r7:00000036 r6:c6551220
r5:00000000 r4:00000000
[<c006d0ac>] (pm_suspend+0x0/0x2c) from [<c01b2cac>]
(apm_suspend+0x18/0xa0)
[<c01b2c94>]
(apm_suspend+0x0/0xa0) from [<c01b3408>] (apm_ioctl+0x78/0x2a0)
r4:00000000
[<c01b3390>]
(apm_ioctl+0x0/0x2a0) from [<c00a4270>] (do_ioctl+0x80/0x9c)
r6:00004102 r5:00000000 r4:c76b6320
[<c00a41f0>]
(do_ioctl+0x0/0x9c) from [<c00a4540>] (vfs_ioctl+0x2b4/0x2e4)
r6:00000000 r5:c75bf3b4 r4:c76b6320
[<c00a428c>]
(vfs_ioctl+0x0/0x2e4) from [<c00a45b0>] (sys_ioctl+0x40/0x60)
r8:c002a0e8 r7:00000036 r6:00004102 r5:fffffff7 r4:c76b6320
[<c00a4570>] (sys_ioctl+0x0/0x60) from [<c0029f40>] (ret_fast_syscall+0x0/0x2c)
r6:42e0aa10 r5:004260a8
r4:00159ec8
Code: bad PC value.
<4>---[ end trace 29a5d7ca2acbb438 ]---
timer_usec_ticks = 7864
timer
tcon=00000000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8