1. 06 6月, 2015 1 次提交
  2. 14 5月, 2015 1 次提交
    • K
      ARM: EXYNOS: Fix failed second suspend on Exynos4 · 6f024978
      Krzysztof Kozlowski 提交于
      On Exynos4412 boards (Trats2, Odroid U3) after enabling L2 cache in
      56b60b8b ("ARM: 8265/1: dts: exynos4: Add nodes for L2 cache
      controller") the second suspend to RAM failed. First suspend worked fine
      but the next one hang just after powering down of secondary CPUs (system
      consumed energy as it would be running but was not responsive).
      
      The issue was caused by enabling delayed reset assertion for CPU0 just
      after issuing power down of cores. This was introduced for Exynos4 in
      13cfa6c4 ("ARM: EXYNOS: Fix CPU idle clock down after CPU off").
      
      The whole behavior is not well documented but after checking with vendor
      code this should be done like this (on Exynos4):
      1. Enable delayed reset assertion when system is running (for all CPUs).
      2. Disable delayed reset assertion before suspending the system.
         This can be done after powering off secondary CPUs.
      3. Re-enable the delayed reset assertion when system is resumed.
      
      Fixes: 13cfa6c4 ("ARM: EXYNOS: Fix CPU idle clock down after CPU off")
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Tested-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Tested-by: NChanwoo Choi <cw00.choi@samsung.com>
      Signed-off-by: NKukjin Kim <kgene@kernel.org>
      6f024978
  3. 13 5月, 2015 1 次提交
    • J
      ARM: EXYNOS: Don't try to initialize suspend on old DT · e5cbec61
      Julien Grall 提交于
      Since commit 8b283c02 ("ARM: exynos4/5: convert pmu wakeup to
      stacked domains"), a suspend/resume is not supported on old DT.
      
      Although, rather than printing a warning and continue to boot, the
      kernel will segfault just after:
      
      ------------[ cut here ]------------
      
      WARNING: CPU: 1 PID: 1 at arch/arm/mach-exynos/suspend.c:726 exynos_pm_init+0x4c/0xc8()
      Modules linked in:
      CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc3 #1
      Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [<c02181c4>] (unwind_backtrace) from [<c0213b2c>] (show_stack+0x10/0x14)
      [<c0213b2c>] (show_stack) from [<c0949890>] (dump_stack+0x70/0x8c)
      [<c0949890>] (dump_stack) from [<c024f0b0>] (warn_slowpath_common+0x74/0xac)
      [<c024f0b0>] (warn_slowpath_common) from [<c024f104>] (warn_slowpath_null+0x1c/0x24)
      [<c024f104>] (warn_slowpath_null) from [<c0cf1d28>] (exynos_pm_init+0x4c/0xc8)
      [<c0cf1d28>] (exynos_pm_init) from [<c0ceaae8>] (init_machine_late+0x1c/0x28)
      [<c0ceaae8>] (init_machine_late) from [<c020aa64>] (do_one_initcall+0x80/0x1d0)
      [<c020aa64>] (do_one_initcall) from [<c0ce8d4c>] (kernel_init_freeable+0x10c/0x1d8)
      [<c0ce8d4c>] (kernel_init_freeable) from [<c0944a2c>] (kernel_init+0x8/0xe4)
      [<c0944a2c>] (kernel_init) from [<c0210e60>] (ret_from_fork+0x14/0x34)
      ---[ end trace 335bd937d409f3c7 ]---
      Outdated DT detected, suspend/resume will NOT work
      Unable to handle kernel NULL pointer dereference at virtual address 00000608
      pgd = c0204000
      [00000608] *pgd=00000000
      Internal error: Oops: 5 [#1] SMP ARM
      Modules linked in:
      CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W       4.1.0-rc3 #1
      Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      task: db06c000 ti: db05a000 task.ti: db05a000
      PC is at exynos_pm_init+0x6c/0xc8
      LR is at exynos_pm_init+0x54/0xc8
      pc : [<c0cf1d48>]    lr : [<c0cf1d30>]    psr: 60000113
      sp : db05bee8  ip : 00000000  fp : 00000000
      r10: 00000116  r9 : c0dab2d4  r8 : d8d5f440
      r7 : c0db7ad8  r6 : c0db7ad8  r5 : 00000000  r4 : c0ceaacc
      r3 : c0eb2aec  r2 : c0951e40  r1 : 00000000  r0 : c0eb2acc
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5387d  Table: 6020406a  DAC: 00000015
      Process swapper/0 (pid: 1, stack limit = 0xdb05a220)
      Stack: (0xdb05bee8 to 0xdb05c000)
      bee0:                   c0db7ad8 c0d8fe34 c0cf17c8 c0ceaae8 00000000 c020aa64
      bf00: 00000033 c09580b8 db04fd00 c0ed79a4 c0eb1000 c0ce8588 c0ca2bc4 c0353fcc
      bf20: 00000000 c0df358c 60000113 00000000 dbfffba4 00000000 c0ca2bc4 c026654c
      bf40: c0b80134 c0ca1a64 00000007 00000007 c0df3554 c0d6c2f4 00000007 c0d6c2d4
      bf60: c0eb1000 c0ce8588 c0dab2d4 00000116 00000000 c0ce8d4c 00000007 00000007
      bf80: c0ce8588 c0944a24 00000000 c0944a24 00000000 00000000 00000000 00000000
      bfa0: 00000000 c0944a2c 00000000 c0210e60 00000000 00000000 00000000 00000000
      bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
      [<c0cf1d48>] (exynos_pm_init) from [<c0ceaae8>] (init_machine_late+0x1c/0x28)
      [<c0ceaae8>] (init_machine_late) from [<c020aa64>] (do_one_initcall+0x80/0x1d0)
      [<c020aa64>] (do_one_initcall) from [<c0ce8d4c>] (kernel_init_freeable+0x10c/0x1d8)
      [<c0ce8d4c>] (kernel_init_freeable) from [<c0944a2c>] (kernel_init+0x8/0xe4)
      [<c0944a2c>] (kernel_init) from [<c0210e60>] (ret_from_fork+0x14/0x34)
      Code: e59f005c e59220c0 e5901000 e5832000 (e591e608)
      ---[ end trace 335bd937d409f3c8 ]---
      
      This is happening because pmu_base_addr is only initialized when the
      PMU is an interrupt controller. It's not the case on old DT.
      Signed-off-by: NJulien Grall <julien.grall@citrix.com>
      Signed-off-by: NKukjin Kim <kgene@kernel.org>
      e5cbec61
  4. 19 3月, 2015 1 次提交
  5. 18 3月, 2015 3 次提交
  6. 27 2月, 2015 1 次提交
  7. 19 2月, 2015 1 次提交
  8. 30 1月, 2015 1 次提交
  9. 14 1月, 2015 1 次提交
  10. 09 1月, 2015 1 次提交
  11. 21 11月, 2014 4 次提交
  12. 20 10月, 2014 7 次提交
  13. 09 8月, 2014 1 次提交
    • T
      ARM: EXYNOS: Fix suspend/resume sequences · 01601b34
      Tomasz Figa 提交于
      Due to recent consolidation of Exynos suspend and cpuidle code, some
      parts of suspend and resume sequences are executed two times, once from
      exynos_pm_syscore_ops and then from exynos_cpu_pm_notifier() and thus it
      breaks suspend, at least on Exynos4-based boards. In addition, simple
      core power down from a cpuidle driver could, in case of CPU 0 could
      result in calling functions that are specific to suspend and deeper idle
      states.
      
      This patch fixes the issue by moving those operations outside the CPU PM
      notifier into suspend and AFTR code paths. This leads to a bit of code
      duplication, but allows additional code simplification, so in the end
      more code is removed than added.
      
      Fixes: 85f9f908 ("ARM: EXYNOS: Use the cpu_pm notifier for pm")
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: arm@kernel.org
      Signed-off-by: NTomasz Figa <t.figa@samsung.com>
      [b.zolnierkie: ported patch over current changes]
      [b.zolnierkie: fixed exynos_aftr_finisher() return value]
      Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      01601b34
  14. 23 7月, 2014 1 次提交
    • P
      ARM: EXYNOS: Refactored code for using PMU address via DT · 2e94ac42
      Pankaj Dubey 提交于
      Under "arm/mach-exynos" many files are using PMU register offsets.
      Since we have added support for accessing PMU base address via DT,
      now we can remove PMU mapping from exynosX_iodesc. Let's convert
      all these access using iomapped address.
      This will help us in removing static mapping of PMU base address
      as well as help in reducing dependency over machine header files.
      Thus helping for migration of PMU implementation from machine to
      driver folder which can be reused for ARM64 based SoC.
      
      Also as we have removed static mappings from "regs-pmu.h" it does
      not need map.h anymore. But "platsmp.c" needed this and till now it
      got included indirectly. So lets move header inclusion of
      "mach/map.h" from "regs-pmu.h" to "platsmp.c".
      Signed-off-by: NPankaj Dubey <pankaj.dubey@samsung.com>
      Reviewed-by: NTomasz Figa <t.figa@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      2e94ac42
  15. 20 7月, 2014 1 次提交
    • K
      ARM: EXYNOS: Fix build breakge with PM_SLEEP=n · 7310d99f
      Krzysztof Kozlowski 提交于
      Fix building of exynos_defconfig with disabled PM_SLEEP:
      CONFIG_PM_SLEEP=n
      CONFIG_PM_SLEEP_SMP=n
      CONFIG_SUSPEND=n
      by moving functions for power up/down of CPU and cluster to platsmp.c
      
      The build error messages:
      arch/arm/mach-exynos/built-in.o: In function `exynos_boot_secondary':
      arch/arm/mach-exynos/platsmp.c:111: undefined reference to `exynos_cpu_power_state'
      arch/arm/mach-exynos/platsmp.c:112: undefined reference to `exynos_cpu_power_up'
      arch/arm/mach-exynos/platsmp.c:116: undefined reference to `exynos_cpu_power_state'
      make: *** [vmlinux] Error 1
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Reviewed-by: Tomasz Figa <t.figa@samsung.com>,
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      7310d99f
  16. 19 7月, 2014 1 次提交
  17. 18 7月, 2014 1 次提交
    • R
      ARM: make it easier to check the CPU part number correctly · af040ffc
      Russell King 提交于
      Ensure that platform maintainers check the CPU part number in the right
      manner: the CPU part number is meaningless without also checking the
      CPU implement(e|o)r (choose your preferred spelling!)  Provide an
      interface which returns both the implementer and part number together,
      and update the definitions to include the implementer.
      
      Mark the old function as being deprecated... indeed, using the old
      function with the definitions will now always evaluate as false, so
      people must update their un-merged code to the new function.  While
      this could be avoided by adding new definitions, we'd also have to
      create new names for them which would be awkward.
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      af040ffc
  18. 15 7月, 2014 1 次提交
  19. 18 6月, 2014 1 次提交
    • A
      ARM: EXYNOS: fix pm code to check for cortex A9 rather than the SoC · c0c3c359
      Abhilash Kesavan 提交于
      We have an soc check to ensure that the scu and certain A9 specific
      registers are not accessed on Exynos5250 (which is A15 based).
      Rather than adding another soc specific check for 5420 let us test
      for the Cortex A9 primary part number.
      
      This resolves the below crash seen on exynos5420 during core switching
      after the CPUIdle consolidation series was merged.
      
      [  155.975589] [<c0013174>] (scu_enable) from [<c001b0dc>] (exynos_cpu_pm_notifier+0x80/0xc4)
      [  155.983833] [<c001b0dc>] (exynos_cpu_pm_notifier) from [<c003c1b0>] (notifier_call_chain+0x44/0x84)
      [  155.992851] [<c003c1b0>] (notifier_call_chain) from [<c007a49c>] (cpu_pm_notify+0x20/0x3c)
      [  156.001089] [<c007a49c>] (cpu_pm_notify) from [<c007a564>] (cpu_pm_exit+0x20/0x38)
      [  156.008635] [<c007a564>] (cpu_pm_exit) from [<c0019e98>] (bL_switcher_thread+0x298/0x40c)
      [  156.016788] [<c0019e98>] (bL_switcher_thread) from [<c003842c>] (kthread+0xcc/0xe8)
      [  156.024426] [<c003842c>] (kthread) from [<c000e438>] (ret_from_fork+0x14/0x3c)
      [  156.031621] Code: ea017fec c0530a00 c052e3f8 c0012dcc (e5903000
      Signed-off-by: NAbhilash Kesavan <a.kesavan@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      c0c3c359
  20. 26 5月, 2014 9 次提交
  21. 16 5月, 2014 1 次提交