diff options
| author | Evan Wilson <evan@oliodevices.com> | 2016-04-20 11:54:30 -0700 |
|---|---|---|
| committer | Evan Wilson <evan@oliodevices.com> | 2016-04-20 11:54:30 -0700 |
| commit | 96bc9e68d7c5a767e8867bbca690e3ef5b0ad69f (patch) | |
| tree | 2ea99e35b54ab23f6db5d0672477ca598813c082 | |
| parent | 3ac52dc5b41a29ca68713ff15655836299152f5a (diff) | |
| download | olio-linux-3.10-evan-suspend-again.tar.xz olio-linux-3.10-evan-suspend-again.zip | |
Changes to debug suspend_again crashesevan-suspend-again
Change-Id: I2df8d17791bba5205ca1e50d37dd44a8a3b92bd9
| -rw-r--r-- | arch/arm/configs/omap3_h1_defconfig | 7 | ||||
| -rw-r--r-- | drivers/base/power/main.c | 1 | ||||
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c | 10 | ||||
| -rw-r--r-- | kernel/printk.c | 9 | ||||
| -rw-r--r-- | kernel/time/timekeeping.c | 5 |
5 files changed, 23 insertions, 9 deletions
diff --git a/arch/arm/configs/omap3_h1_defconfig b/arch/arm/configs/omap3_h1_defconfig index 3a29d2c74d3..13f6c674f17 100644 --- a/arch/arm/configs/omap3_h1_defconfig +++ b/arch/arm/configs/omap3_h1_defconfig @@ -92,7 +92,7 @@ CONFIG_PREEMPT_RCU=y # CONFIG_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_BUF_SHIFT=20 # CONFIG_CGROUPS is not set # CONFIG_CHECKPOINT_RESTORE is not set # CONFIG_NAMESPACES is not set @@ -548,6 +548,7 @@ CONFIG_PM_CLK=y CONFIG_CPU_PM=y CONFIG_SUSPEND_TIME=y # CONFIG_HAS_AMBIENTMODE is not set +CONFIG_PM_SUSPEND_AGAIN_OPS=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARM_CPU_SUSPEND=y CONFIG_NET=y @@ -1851,11 +1852,9 @@ CONFIG_SND_SOC_DMAENGINE_PCM=y # CONFIG_SND_DESIGNWARE_I2S is not set CONFIG_SND_OMAP_SOC=y # CONFIG_SND_OMAP_SOC_C55 is not set -CONFIG_SND_OMAP_SOC_MCBSP=y -CONFIG_SND_OMAP_SOC_OMAP3_H1=y +# CONFIG_SND_OMAP_SOC_OMAP3_H1 is not set CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_DMIC=y # CONFIG_SND_SIMPLE_CARD is not set # CONFIG_SOUND_PRIME is not set diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index bf6d932d996..8dec3728b25 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -343,6 +343,7 @@ static char *pm_verb(int event) static void pm_dev_dbg(struct device *dev, pm_message_t state, char *info) { + return; dev_dbg(dev, "%s%s%s\n", info, pm_verb(state.event), ((state.event & PM_EVENT_SLEEP) && device_may_wakeup(dev)) ? ", may wakeup" : ""); diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c index 08038b4821e..d54279219e6 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c @@ -59,10 +59,10 @@ irqreturn_t st_lsm6ds3_save_timestamp(int irq, void *private) cdata->irq_timestamp = ts.tv_sec; if(cdata->first_irq_from_resume && cdata->last_wakeup_source == LSM6DS3_WAKEUP_OTHER) { - dev_info(cdata->dev, "No valid wakeup. Ignoring IRQ."); + //dev_info(cdata->dev, "No valid wakeup. Ignoring IRQ."); cdata->first_irq_from_resume = 0; } else { - dev_info(cdata->dev, "IRQ handled. Scheduling work."); + //dev_info(cdata->dev, "IRQ handled. Scheduling work."); queue_work(st_lsm6ds3_wq, &cdata->data_work); disable_irq_nosync(irq); } @@ -206,9 +206,9 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) cdata->tf->read(cdata, ST_LSM6DS3_FIFO_DATA_AVL_ADDR, 1, &src_fifo, true); - dev_info(cdata->dev, "IRQ scheduled work running."); - dev_info(cdata->dev, "ST irq start: src_value: 0x%x, 6d: 0x%x, tap: 0x%x, wakeup: 0x%x", - src_value, d6d_src_reg, tap_src_reg, wake_up_src_reg); + //dev_info(cdata->dev, "IRQ scheduled work running."); + //dev_info(cdata->dev, "ST irq start: src_value: 0x%x, 6d: 0x%x, tap: 0x%x, wakeup: 0x%x", +// src_value, d6d_src_reg, tap_src_reg, wake_up_src_reg); if(d6d_src_reg & ST_LSM6DS3_6D_SRC_DETECTED_MASK){ #ifdef WAKE_STATS_DEBUG_INFO diff --git a/kernel/printk.c b/kernel/printk.c index 1b76b38986b..e97b94be00d 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -259,6 +259,11 @@ static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN); static char *log_buf = __log_buf; static u32 log_buf_len = __LOG_BUF_LEN; + +static char __olio_log_buf[__LOG_BUF_LEN*4] __aligned(LOG_ALIGN); +static char *olio_log_buf = __olio_log_buf; +static u32 olio_log_buf_len = __LOG_BUF_LEN*4; + /* cpu currently holding logbuf_lock */ static volatile unsigned int logbuf_cpu = UINT_MAX; @@ -1585,6 +1590,10 @@ asmlinkage int vprintk_emit(int facility, int level, #ifdef CONFIG_EARLY_PRINTK_DIRECT printascii(text); #endif + if(olio_log_buf + text_len - __olio_log_buf < __LOG_BUF_LEN){ + memcpy(olio_log_buf, text, text_len); + olio_log_buf += text_len; + } if (level == -1) level = default_message_loglevel; diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index baeeb5c87cf..3644ba5c7d9 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -904,6 +904,7 @@ static void timekeeping_resume(void) raw_spin_lock_irqsave(&timekeeper_lock, flags); write_seqcount_begin(&timekeeper_seq); + printk(KERN_DEBUG "TIME: calc suspend time."); /* * After system resumes, we need to calculate the suspended time and @@ -920,6 +921,7 @@ static void timekeeping_resume(void) cycle_now = clock->read(clock); if ((clock->flags & CLOCK_SOURCE_SUSPEND_NONSTOP) && cycle_now > clock->cycle_last) { + printk(KERN_DEBUG "TIME: Use nonstop clk source."); u64 num, max = ULLONG_MAX; u32 mult = clock->mult; u32 shift = clock->shift; @@ -943,6 +945,7 @@ static void timekeeping_resume(void) ts_delta = ns_to_timespec(nsec); suspendtime_found = true; } else if (timespec_compare(&ts_new, &timekeeping_suspend_time) > 0) { + printk(KERN_DEBUG "TIME: Using other time source."); ts_delta = timespec_sub(ts_new, timekeeping_suspend_time); suspendtime_found = true; } @@ -950,6 +953,7 @@ static void timekeeping_resume(void) if (suspendtime_found) __timekeeping_inject_sleeptime(tk, &ts_delta); + printk(KERN_DEBUG "TIME: Rebase the last cycle value"); /* Re-base the last cycle value */ tk->cycle_last = clock->cycle_last = cycle_now; tk->ntp_error = 0; @@ -958,6 +962,7 @@ static void timekeeping_resume(void) write_seqcount_end(&timekeeper_seq); raw_spin_unlock_irqrestore(&timekeeper_lock, flags); + printk(KERN_DEBUG "TIME: Touch softlockup watchdog"); touch_softlockup_watchdog(); clockevents_notify(CLOCK_EVT_NOTIFY_RESUME, NULL); |