Neat.  This problem has been observed by some; I've seen a few times.
However, the 2008.8 image seems to trigger it a lot more often -- and if
you add in the latest kernel and enable the flow-control of the GSM at
suspend, and if you have SIM installed, and you have left your suspend
timeout set to the very short default in that image, then you'll
probably trigger it within the first couple of minutes after boot.

Attached are two logs for fun reading; I'll work more on this in the
morning and any input would be appreciated.

You'll note that the two logs show that we never actually suspended --
GSM activity is going on right after boot, and when the image attempts
to suspend, the suspend handler in neo1973_pm_gsm.c catches the fact
that we had a GSM interrupt and aborts the suspend.  The first log has
no suspend debug, the second has the suspend debug messages enabled.

Reports earlier indicated that this problem was associated with GSM
activity as well; could it be that we have some race conditions or such
that require a certain amount of time to pass from suspend to resume?

Of particular note in the second log is the final stuff:

  soc-audio soc-audio: resume work completed
  JFFS2 notice: (1127) check_node_data: wrong data CRC in data node at
0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797.
  modem wakeup interrupt

At this point, the display is blank, no buttons are responsive.  But one
can ssh into the device and poke about; it appears to be somewhat
running.  Attempting to suspend again by using the "apm -s" command
result in a "Device busy" error.  In the midst of this poking about, the
following message appears:

power_supply bat: driver failed to report `time_to_full_now' property

Shortly after that, I issues the "poweroff" command from the ssh
session.  Note that apm (or something) decided to suspend instead.  I've
seen that happen before as well; at that point one needs to pull the
battery to get it back.

Sooo...  if anyone wants to poke at this a bit, I rather suspect we'll
get some valuable hints if we try to deliberately abort any suspend
operation.  Edit the suspend handler in
/arc/arm/plat-sc324xx/neo1973_pm_gsm.c so that the suspend handler
always returns -EBUSY and see if the device properly resumes.

Mike (mwester)
Syncing filesystems ... done.
PM: Preparing system for mem sleep
Freezing user space processes ... (elapsed 0.30 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.04 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
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
suspend_device(): platform_suspend+0x0/0x3c() returns -16
Could not suspend device neo1973-pm-gsm.0: error -16
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
Some devices failed to suspend
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
JFFS2 notice: (1127) check_node_data: wrong data CRC in data node at 
0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797.
modem wakeup interrupt
power_supply bat: driver failed to report `time_to_full_now' property
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s)
modem wakeup interrupt
usb0: full speed config #1: 500 mA, Ethernet Gadget, using CDC Ethernet
JFFS2 notice: (1129) check_node_data: wrong data CRC in data node at 
0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797.
Syncing filesystems ... done.
PM: Preparing system for mem sleep
Freezing user space processes ... <7>modem wakeup interrupt
(elapsed 0.30 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.22 seconds) done.
PM: Entering mem sleep
Suspending console(s)
pcf50633 0-0073: pcf50633_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.
gta02_udc_command(2)
suspend_device(): platform_suspend+0x0/0x3c() returns -16
Could not suspend device neo1973-pm-gsm.0: error -16
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 390 KHz
gta02_udc_command(1)
s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns
not changing prescaler of PWM 3, since it's shared with timer4 (clock tick)
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
soc-audio soc-audio: scheduling resume work
Some devices failed to suspend
PM: Finishing wakeup.
Restarting tasks ... <6>soc-audio soc-audio: starting resume work
done.
soc-audio soc-audio: resume work completed
modem wakeup interrupt

Reply via email to