1. 02 4月, 2016 1 次提交
    • R
      ARM: SMP enable of cache maintanence broadcast · 0fc03d4c
      Russell King 提交于
      Masahiro Yamada reports that we can fail to set the FW bit in the
      auxiliary control register, which enables broadcasting the cache
      maintanence operations.  This occurs because we only check that the
      SMP/nAMP bit is set, rather than checking whether all the bits we
      want to be set are set.
      
      Rearrange the code to ensure that all desired bits are set, and only
      update the register if we discover some required bits are not set.
      Tested-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      0fc03d4c
  2. 17 2月, 2016 2 次提交
  3. 17 12月, 2015 1 次提交
  4. 15 12月, 2015 1 次提交
  5. 17 7月, 2015 1 次提交
  6. 02 6月, 2015 4 次提交
    • R
      ARM: proc-v7: sanitise and document registers around errata · c76f238e
      Russell King 提交于
      Document that r13 is not a stack in the initialisation function, in
      case anyone gets other ideas.
      
      Document the registers available for the errata workarounds, and
      specifically which registers contain parts of the MIDR register, as
      well as which registers must be preserved.
      
      Lastly, use the lowest numbered available register (r0) rather than
      r10 for temporary storage.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c76f238e
    • R
      ARM: proc-v7: clean up MIDR access · 44194968
      Russell King 提交于
      We already have the main ID register available in r9, there's no need
      to refetch it.  Use the saved value.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      44194968
    • R
      ARM: proc-v7: move CPU errata out of line · 17e7bf86
      Russell King 提交于
      Rather than having a long sprawling __v7_setup function, which is hard
      to maintain properly, move the CPU errata out of line.
      
      While doing this, it was discovered that the Cortex-A15 errata had been
      incorrectly added:
      
      	ldr	r10, =0x00000c08	@ Cortex-A8 primary part number
      	teq	r0, r10
      	bne	2f
      /* Cortex-A8 errata */
      	b	3f
      2:	ldr	r10, =0x00000c09	@ Cortex-A9 primary part number
      	teq	r0, r10
      	bne	3f
      /* Cortex-A9 errata */
      3:	ldr	r10, =0x00000c0f	@ Cortex-A15 primary part number
      	teq	r0, r10
      	bne	4f
      /* Cortex-A15 errata */
      4:
      
      This results in the Cortex-A15 test always being executed after the
      Cortex-A8 and Cortex-A9 errata, which is obviously not what is intended.
      The 'b 3f' labels should have been updated to 'b 4f'.  The new structure
      of:
      
      	/* Cortex-A8 Errata */
      	ldr	r10, =0x00000c08	@ Cortex-A8 primary part number
      	teq	r0, r10
      	beq	__ca8_errata
      
      	/* Cortex-A9 Errata */
      	ldr	r10, =0x00000c09	@ Cortex-A9 primary part number
      	teq	r0, r10
      	beq	__ca9_errata
      
      	/* Cortex-A15 Errata */
      	ldr	r10, =0x00000c0f	@ Cortex-A15 primary part number
      	teq	r0, r10
      	beq	__ca15_errata
      
      __errata_finish:
      
      is much cleaner and easier to see that this kind of thing doesn't
      happen.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      17e7bf86
    • R
      ARM: redo TTBR setup code for LPAE · b2c3e38a
      Russell King 提交于
      Re-engineer the LPAE TTBR setup code.  Rather than passing some shifted
      address in order to fit in a CPU register, pass either a full physical
      address (in the case of r4, r5 for TTBR0) or a PFN (for TTBR1).
      
      This removes the ARCH_PGD_SHIFT hack, and the last dangerous user of
      cpu_set_ttbr() in the secondary CPU startup code path (which was there
      to re-set TTBR1 to the appropriate high physical address space on
      Keystone2.)
      Tested-by: NMurali Karicheri <m-karicheri2@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b2c3e38a
  7. 01 6月, 2015 1 次提交
  8. 15 4月, 2015 1 次提交
  9. 28 3月, 2015 1 次提交
  10. 27 11月, 2014 1 次提交
  11. 21 11月, 2014 1 次提交
  12. 13 9月, 2014 1 次提交
    • B
      ARM: 8138/1: drop ISAR0 workaround for B15 · fbf10641
      Brian Norris 提交于
      The Brahma-B15's ISAR0 correcty advertises UDIV/SDIV support in both ARM
      and Thumb2 modes (CPUID_EXT_ISAR0=02101110), so we don't need to
      manually apply this hwcap.
      
      The code in question actually predates the following commit, which made
      our hwcaps unnecessary:
      
          commit 8164f7af
          Author: Stephen Boyd <sboyd@codeaurora.org>
          Date:   Mon Mar 18 19:44:15 2013 +0100
      
              ARM: 7680/1: Detect support for SDIV/UDIV from ISAR0 register
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      fbf10641
  13. 24 7月, 2014 1 次提交
  14. 18 7月, 2014 3 次提交
    • S
      ARM: 8103/1: save/restore Cortex-A9 CP15 registers on suspend/resume · ddd0c530
      Shawn Guo 提交于
      The CP15 diagnostic register holds ARM errata bits on Cortex-A9, so it
      needs to be saved/restored on suspend/resume.  Otherwise, the
      effectiveness of errata workaround gets lost together with diagnostic
      register bit across suspend/resume cycle.  And the CP15 power control
      register of Cortex-A9 shares the same problem.
      
      The patch adds a couple of Cortex-A9 specific suspend/resume functions
      to save/restore these two Cortex-A9 CP15 registers across the
      suspend/resume cycle.
      Signed-off-by: NShawn Guo <shawn.guo@freescale.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ddd0c530
    • S
      ARM: 8089/1: cpu_pj4b_suspend_size should base on cpu_v7_suspend_size · 7ca791c5
      Shawn Guo 提交于
      Since pj4b suspend/resume routines are implemented based on generic
      ARMv7 ones, instead of hard-coding cpu_pj4b_suspend_size, we should have
      it be cpu_v7_suspend_size plus pj4b specific bytes.  Otherwise, if
      cpu_v7_suspend_size gets updated alone, the pj4b suspend/resume will
      likely be broken.
      
      While at it, fix the comments in cpu_pj4b_do_resume, as we're restoring
      CP15 registers rather than saving in there.
      Signed-off-by: NShawn Guo <shawn.guo@freescale.com>
      Acked-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      7ca791c5
    • R
      ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ · 6ebbf2ce
      Russell King 提交于
      ARMv6 and greater introduced a new instruction ("bx") which can be used
      to return from function calls.  Recent CPUs perform better when the
      "bx lr" instruction is used rather than the "mov pc, lr" instruction,
      and this sequence is strongly recommended to be used by the ARM
      architecture manual (section A.4.1.1).
      
      We provide a new macro "ret" with all its variants for the condition
      code which will resolve to the appropriate instruction.
      
      Rather than doing this piecemeal, and miss some instances, change all
      the "mov pc" instances to use the new macro, with the exception of
      the "movs" instruction and the kprobes code.  This allows us to detect
      the "mov pc, lr" case and fix it up - and also gives us the possibility
      of deploying this for other registers depending on the CPU selection.
      Reported-by: NWill Deacon <will.deacon@arm.com>
      Tested-by: Stephen Warren <swarren@nvidia.com> # Tegra Jetson TK1
      Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> # mioa701_bootresume.S
      Tested-by: Andrew Lunn <andrew@lunn.ch> # Kirkwood
      Tested-by: NShawn Guo <shawn.guo@freescale.com>
      Tested-by: Tony Lindgren <tony@atomide.com> # OMAPs
      Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> # Armada XP, 375, 385
      Acked-by: Sekhar Nori <nsekhar@ti.com> # DaVinci
      Acked-by: Christoffer Dall <christoffer.dall@linaro.org> # kvm/hyp
      Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com> # PXA3xx
      Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> # Xen
      Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> # ARMv7M
      Tested-by: Simon Horman <horms+renesas@verge.net.au> # Shmobile
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6ebbf2ce
  15. 26 5月, 2014 1 次提交
  16. 23 4月, 2014 1 次提交
  17. 10 2月, 2014 2 次提交
  18. 14 11月, 2013 1 次提交
  19. 20 10月, 2013 1 次提交
  20. 02 9月, 2013 1 次提交
  21. 12 8月, 2013 1 次提交
  22. 22 7月, 2013 1 次提交
  23. 15 7月, 2013 1 次提交
    • P
      arm: delete __cpuinit/__CPUINIT usage from all ARM users · 8bd26e3a
      Paul Gortmaker 提交于
      The __cpuinit type of throwaway sections might have made sense
      some time ago when RAM was more constrained, but now the savings
      do not offset the cost and complications.  For example, the fix in
      commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time")
      is a good example of the nasty type of bugs that can be created
      with improper use of the various __init prefixes.
      
      After a discussion on LKML[1] it was decided that cpuinit should go
      the way of devinit and be phased out.  Once all the users are gone,
      we can then finally remove the macros themselves from linux/init.h.
      
      Note that some harmless section mismatch warnings may result, since
      notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
      and are flagged as __cpuinit  -- so if we remove the __cpuinit from
      the arch specific callers, we will also get section mismatch warnings.
      As an intermediate step, we intend to turn the linux/init.h cpuinit
      related content into no-ops as early as possible, since that will get
      rid of these warnings.  In any case, they are temporary and harmless.
      
      This removes all the ARM uses of the __cpuinit macros from C code,
      and all __CPUINIT from assembly code.  It also had two ".previous"
      section statements that were paired off against __CPUINIT
      (aka .section ".cpuinit.text") that also get removed here.
      
      [1] https://lkml.org/lkml/2013/5/20/589
      
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      8bd26e3a
  24. 24 6月, 2013 1 次提交
    • G
      ARM: 7773/1: PJ4B: Add support for errata 4742 · 3e0a07f8
      Gregory CLEMENT 提交于
      This commit fixes the regression on Armada 370 (the kernal hang during
      boot) introduced by the commit: "ARM: 7691/1: mm: kill unused
      TLB_CAN_READ_FROM_L1_CACHE and use ALT_SMP instead".
      
      When coming out of either a Wait for Interrupt (WFI) or a Wait for
      Event (WFE) IDLE states, a specific timing sensitivity exists between
      the retiring WFI/WFE instructions and the newly issued subsequent
      instructions. This sensitivity can result in a CPU hang scenario.  The
      workaround is to insert either a Data Synchronization Barrier (DSB) or
      Data Memory Barrier (DMB) command immediately after the WFI/WFE
      instruction.
      
      This commit was based on the work of Lior Amsalem, but heavily
      modified to apply the errata fix dynamically according to the
      processor type thanks to the suggestions of Russell King and Nicolas
      Pitre.
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Reviewed-by: NWill Deacon <will.deacon@arm.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Tested-by: NWilly Tarreau <w@1wt.eu>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3e0a07f8
  25. 17 6月, 2013 1 次提交
  26. 08 6月, 2013 2 次提交
    • J
      ARM: add Cortex-R7 Processor Info · c90ad5c9
      Jonathan Austin 提交于
      This patch adds processor info for ARM Ltd. Cortex-R7.
      
      The R7 has many similarities to the A9 and though the ACTLR layout is not
      identical, the bits associated with cache operations broadcasting and SMP
      modes are the same for A9, A5 and R7 (Though in the A-class processors the
      same bits toggle TLB-ops broadcasting as well as cache-ops)
      Signed-off-by: NJonathan Austin <jonathan.austin@arm.com>
      Reviewed-by: NWill Deacon <will.deacon@arm.com>
      CC: Catalin Marinas <catalin.marinas@arm.com>
      CC: Stephen Boyd <sboyd@codeaurora.org>
      c90ad5c9
    • W
      ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations · aa1aadc3
      Will Deacon 提交于
      The ARM CPU suspend code can be selected even for a !CONFIG_MMU
      configuration. The resulting kernel will not compile and, even if it did,
      would access undefined co-processor registers when executing.
      
      This patch fixes the v6 and v7 CPU suspend code for the nommu case.
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Tested-by: NJonathan Austin <jonathan.austin@arm.com>
      CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> (commit_signer:1/3=33%)
      CC: Santosh Shilimkar <santosh.shilimkar@ti.com> (commit_signer:1/3=33%)
      CC: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
      aa1aadc3
  27. 17 4月, 2013 1 次提交
  28. 04 4月, 2013 1 次提交
  29. 23 3月, 2013 2 次提交
  30. 07 1月, 2013 1 次提交
  31. 02 1月, 2013 1 次提交