1. 09 4月, 2013 2 次提交
  2. 27 3月, 2013 1 次提交
    • R
      ARM: OMAP: clocks: Delay clk inits atleast until slab is initialized · ff931c82
      Rajendra Nayak 提交于
      clk inits on OMAP happen quite early, even before slab is available.
      The dependency comes from the fact that the timer init code starts to
      use clocks and hwmod and we need clocks to be initialized by then.
      
      There are various problems doing clk inits this early, one is,
      not being able to do dynamic clk registrations and hence the
      dependency on clk-private.h. The other is, inability to debug
      early kernel crashes without enabling DEBUG_LL and earlyprintk.
      
      Doing early clk init also exposed another instance of a kernel
      panic due to a BUG() when CONFIG_DEBUG_SLAB is enabled.
      
      [    0.000000] Kernel BUG at c01174f8 [verbose debug info unavailable]
      [    0.000000] Internal error: Oops - BUG: 0 [#1] SMP ARM
      [    0.000000] Modules linked in:
      [    0.000000] CPU: 0    Not tainted  (3.9.0-rc1-12179-g72d48f9 #6)
      [    0.000000] PC is at __kmalloc+0x1d4/0x248
      [    0.000000] LR is at __clk_init+0x2e0/0x364
      [    0.000000] pc : [<c01174f8>]    lr : [<c0441f54>]    psr: 600001d3
      [    0.000000] sp : c076ff28  ip : c065cefc  fp : c0441f54
      [    0.000000] r10: 0000001c  r9 : 000080d0  r8 : c076ffd4
      [    0.000000] r7 : c074b578  r6 : c0794d88  r5 : 00000040  r4 : 00000000
      [    0.000000] r3 : 00000000  r2 : c07cac70  r1 : 000080d0  r0 : 0000001c
      [    0.000000] Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
      [    0.000000] Control: 10c53c7d  Table: 8000404a  DAC: 00000017
      [    0.000000] Process swapper (pid: 0, stack limit = 0xc076e240)
      [    0.000000] Stack: (0xc076ff28 to 0xc0770000)
      [    0.000000] ff20:                   22222222 c0794ec8 c06546e8 00000000 00000040 c0794d88
      [    0.000000] ff40: c074b578 c076ffd4 c07951c8 c076e000 00000000 c0441f54 c074b578 c076ffd4
      [    0.000000] ff60: c0793828 00000040 c0794d88 c074b578 c076ffd4 c0776900 c076e000 c07272ac
      [    0.000000] ff80: 2f800000 c074c968 c07f93d0 c0719780 c076ffa0 c076ff98 00000000 00000000
      [    0.000000] ffa0: 00000000 00000000 00000000 00000001 c074cd6c c077b1ec 8000406a c0715724
      [    0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c074c968 10c53c7d c0776974
      [    0.000000] ffe0: c074cd6c c077b1ec 8000406a 411fc092 00000000 80008074 00000000 00000000
      [    0.000000] [<c01174f8>] (__kmalloc+0x1d4/0x248) from [<c0441f54>] (__clk_init+0x2e0/0x364)
      [    0.000000] [<c0441f54>] (__clk_init+0x2e0/0x364) from [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140)
      [    0.000000] [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140) from [<c0719780>] (setup_arch+0x15c/0x284)
      [    0.000000] [<c0719780>] (setup_arch+0x15c/0x284) from [<c0715724>] (start_kernel+0x7c/0x334)
      [    0.000000] [<c0715724>] (start_kernel+0x7c/0x334) from [<80008074>] (0x80008074)
      [    0.000000] Code: e5883004 e1a00006 e28dd00c e8bd8ff0 (e7f001f2)
      [    0.000000] ---[ end trace 1b75b31a2719ed1c ]---
      [    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
      
      It was a know issue, that slab allocations would fail when common
      clock core tries to cache parent pointers for mux clocks on OMAP,
      and hence a patch 'clk: Allow late cache allocation for clk->parents,
      commit 7975059d' was added to work this problem around.
      A BUG() within kmalloc() with CONFIG_DEBUG_SLAB enabled was completely
      overlooked causing this regression.
      
      More details on the issue reported can be found here,
      http://www.mail-archive.com/linux-omap@vger.kernel.org/msg85932.html
      
      With all these issues around clk inits happening way too early, it
      makes sense to at least move them to a point where dynamic memory
      allocations are possible. So move them to a point just before the
      timer code starts using clocks and hwmod.
      
      This should at least pave way for clk inits on OMAP moving to dynamic
      clock registrations instead of using the static macros defined in
      clk-private.h.
      
      The issue with kernel panic while CONFIG_DEBUG_SLAB is enabled
      was reported by Piotr Haber and Tony Lindgren and this patch
      fixes the reported issue as well.
      Reported-by: NPiotr Haber <phaber@broadcom.com>
      Reported-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NRajendra Nayak <rnayak@ti.com>
      Acked-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Reviewed-by: NMike Turquette <mturquette@linaro.org>
      Acked-by: NPaul Walmsley <paul@pwsan.com>
      Cc: stable@vger.kernel.org  # v3.8
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      ff931c82
  3. 13 3月, 2013 3 次提交
    • P
      ARM: OMAP4: PM: fix PM regression introduced by recent clock cleanup · 92702df3
      Paul Walmsley 提交于
      Commit 17b7e7d3 ("ARM: OMAP4:
      clock/hwmod data: start to remove some IP block control "clocks"")
      introduced a regression preventing the L3INIT clockdomain of OMAP4
      systems from entering idle.  This in turn prevented these systems from
      entering full chip clock-stop.
      
      The regression was caused by the incorrect removal of a so-called
      "optional functional clock" from the OMAP4 clock data.  This wasn't
      caught for two reasons.  First, I missed the retention entry failure
      in the branch test logs:
      
      http://www.pwsan.com/omap/testlogs/cleanup_a_3.9/20130126014242/pm/4460pandaes/4460pandaes_log.txt
      
      Second, the integration data for the OCP2SCP PHY IP block, added by
      commit 0c668875 ("ARM: OMAP4: hwmod
      data: add remaining USB-related IP blocks"), should have associated this
      clock with the IP block, but did not.
      
      Fix by adding back the so-called "optional" functional clock to the
      clock data, and by linking that clock to the OCP2SCP PHY IP block
      integration hwmod data.
      
      The problem patch was discovered by J, Keerthy <j-keerthy@ti.com>.
      
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Benoît Cousson <b-cousson@ti.com>
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      92702df3
    • G
      ARM: OMAP3: hwmod data: keep MIDLEMODE in force-standby for musb · 092bc089
      Grazvydas Ignotas 提交于
      For some unknown reason, allowing hwmod to control MIDLEMODE causes
      core_pwrdm to not hit idle states for musb in DM3730 at least.
      I've verified that setting any MIDLEMODE value other than "force
      standby" before enabling the device causes subsequent suspend
      attempts to fail with core_pwrdm not entering idle states, even
      if the driver is unloaded and "force standby" is restored before
      suspend attempt. To recover from this, soft reset can be used, but
      that's not suitable solution for suspend.
      
      Keeping the register set at force standby (reset value) makes it work
      and device still functions properly, as musb has driver-controlled
      OTG_FORCESTDBY register that controls MSTANDBY signal.
      Note that TI PSP kernels also have similar workarounds.
      
      This patch also fixes HWMOD_SWSUP_MSTANDBY documentation to match the
      actual flag name.
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      092bc089
    • J
      ARM: OMAP4: clock data: lock USB DPLL on boot · 71b37071
      Jon Hunter 提交于
      Some versions of the u-boot bootloader do not lock the USB DPLL and
      when the USB DPLL is not locked, then it is observed that the L3INIT
      power domain does not transition to retention state during kernel
      suspend on OMAP4 devices. Fix this by locking the USB DPLL at 960 MHz
      on kernel boot.
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      71b37071
  4. 06 3月, 2013 1 次提交
  5. 05 3月, 2013 6 次提交
  6. 15 2月, 2013 1 次提交
    • A
      ARM: omap2: include linux/errno.h in hwmod_reset · 55ccb1a8
      Arnd Bergmann 提交于
      The newly created omap_hwmod_reset.c is missing an
      include of linux/errno.h in commit c02060d8 "ARM:
      OMAP4+: AESS: enable internal auto-gating during
      initial setup". It still works in omap2_defconfig,
      but not in all other combinations.
      
      Without this patch, building allmodconfig results in:
      
      arch/arm/mach-omap2/omap_hwmod_reset.c: In function 'omap_hwmod_aess_preprogram':
      arch/arm/mach-omap2/omap_hwmod_reset.c:47:11: error: 'EINVAL' undeclared (first use in this function)
      arch/arm/mach-omap2/omap_hwmod_reset.c:47:11: note: each undeclared identifier is reported only once for each function it appears in
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Cc: Paul Walmsley <paul@pwsan.com>
      Cc: Sebastien Guiriec <s-guiriec@ti.com>
      55ccb1a8
  7. 14 2月, 2013 2 次提交
  8. 13 2月, 2013 1 次提交
    • P
      ARM: OMAP2+: fix some omap_device_build() calls that aren't compiled by default · 6efc3fe0
      Paul Walmsley 提交于
      Commit c1d1cd59 ("ARM: OMAP2+:
      omap_device: remove obsolete pm_lats and early_device code") missed a
      few omap_device_build() calls that aren't included as part of the default
      OMAP2+ Kconfig, omap2plus_defconfig.
      
      Ideally, all devices that are present on the SoC should be created by
      default, and only the corresponding device driver should be configured
      or deconfigured in Kconfig.  This allows drivers to be built as
      modules and loaded later, even if they weren't part of the original
      kernel build.  Unfortunately, we're not quite there yet.
      
      Thanks to Tony Lindgren for reporting this, found during his
      randconfig tests.
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      6efc3fe0
  9. 11 2月, 2013 4 次提交
  10. 10 2月, 2013 2 次提交
  11. 09 2月, 2013 2 次提交
  12. 08 2月, 2013 12 次提交
  13. 07 2月, 2013 3 次提交