This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

System crash when operating at 1.5 GHz

Other Parts Discussed in Thread: 4460

Hello All,

I am working with a custom OMAP4460 platform with the Linux and Android port based on the L27.IS.2.P2 ICS Release (http://omappedia.org/wiki/L27.IS.2.P2_OMAP4_Icecream_Sandwich_Release_Notes)

The OMAP4 device being used on the platform is capable of operating at 1.5 GHz

I am having issues while running the system at 1.5 GHz - there is a random crash freezing the system or causing a reboot.

However, the system works fine when I force it to run at 1.2 GHz.  To perform this, the following changes have been made in the kernel sources:

--- a/arch/arm/mach-omap2/opp4xxx_data.c

+++ b/arch/arm/mach-omap2/opp4xxx_data.c
@@ -337,7 +337,7 @@ int __init omap4_opp_init(void)
   omap4_mpu_opp_enable(1200000000);
   if (!trimmed)
      pr_info("This is DPLL un-trimmed SOM. OPP is limited at 1.2 GHz\n");

   +#if 0
   if (omap4_has_mpu_1_5ghz() && trimmed)
      omap4_mpu_opp_enable(1500000000);
   +#endif

The system crash is random

  • it occurs sometimes as soon as boot has completed, launching Android
  • it can also occur 30 minutes after the system has booted
  • it will also occur when the system is idle (no load on the system).  
  • When it crashes, the debug messages show two types of kernel backtraces (please see attachments 2772.kernel-dump-1.txt 2626.kernel-dump-2.txt )

Some information on the settings:

  • Display time out has been disabled and hence LCD,backlight are always active
  • The system never goes to sleep (always on power and hence, power management is not a priority)
  • CPU governor has been set to performance (both when operating at 1.2 GHz and 1.5 GHz)

Any pointers on what could be causing the issue or how it can be debugged would be very helpful.

Thank you for your time.

Warm regards,

Kanagesh

 

  • Hello Kanagesh,

    Running statically at 1.5GHz is not recommended as you may run into thermal issues.  Have you tried running interactive governor?  It keeps the system at reasonable frequencies, yet can quickly ramp up to the highest opp if needed.

    There's a chance the custom board layout could cause a voltage drop, impacting the stability of the cpus' frequency.  You could try raising the voltage offset slightly in opp4xxx_data.c in omap446x_vdd_mpu_volt_data for 1.5GHz (OPPNITROSB).  You can increase the voltage offset by modifying the second parameter (in uV) in the VOLTAGE_DATA_DEFINE macros.

    Regards,

    Alex

  • Hello Alex,

    Thank you for the response and the suggestions.

    I ran some tests on the platform with CPU Governor set to interactive.  The system seems to work fine initially (primarily because the load is not high and the CPU Frequency is of the order of 350 MHz or 700 MHz).  Monitoring the CPU frequency shows that it changes between 350 MHz to 1.5 GHz.  Eventually it does exhibit the same crash/freeze issue.

    I have also brought in the change that would raise the voltage offset which you have suggested in opp4xxx_data.c

    We are continuing to run some more tests - I will provide you updates.  Do let me know if there is anything you would like to suggest.

    Thank you for your time.

    Regards,

    Kanagesh

  • Hi Kanagesh,

    One more point to be noted is that the Speed Bin devices of OMAP4460 only support 1.5 GHz. Are you using Speed Bin samples of OMAP4460?

    Thanks & Best Regards,

    Venkat

  • Hello Venkat,

    Thank you for your comment and the lead.  I will check on this and provide you an update.

    Regards,

    Kanagesh

  • Hello All,

    I have made changes in X-Loader related to power and it shows significant improvement.  

    X-Loader sets vdd_mpu (provided by the external TPS62361 device) to 1.3V by default.  

    The change we have made is to increase this to 1.39 V in cpu/omap4/cpu.c:

    diff --git a/cpu/omap4/cpu.c b/cpu/omap4/cpu.c
    --- a/cpu/omap4/cpu.c
    +++ b/cpu/omap4/cpu.c
    @@ -272,7 +272,8 @@ static void scale_vcores(void)

    /* Enable 1.3V from TPS for vdd_mpu on 4460 */
    if (rev >= OMAP4460_ES1_0 && rev <= OMAP4460_MAX_REVISION) {
         - volt = 1300;
         + volt = 1390;
         volt -= TPS62361_BASE_VOLT_MV;
         volt /= 10;
         do_scale_tps62361(TPS62361_REG_ADDR_SET1, volt);

    We have been running tests over the last couple of days and the system is yet to show the crash that was originally reported.  

    Thank you for the inputs and suggestions that were provided.

    Regards,

    Kanagesh