1. 21 9月, 2011 2 次提交
  2. 22 7月, 2011 1 次提交
  3. 07 7月, 2011 1 次提交
  4. 28 4月, 2011 1 次提交
  5. 02 4月, 2011 1 次提交
  6. 23 2月, 2011 1 次提交
  7. 22 12月, 2010 1 次提交
  8. 28 10月, 2010 1 次提交
    • M
      ARM: 6466/1: implement flush_icache_all for the rest of the CPUs · c8c90860
      Mika Westerberg 提交于
      Commit 81d11955 ("ARM: 6405/1: Handle __flush_icache_all for
      CONFIG_SMP_ON_UP") added a new function to struct cpu_cache_fns:
      flush_icache_all(). It also implemented this for v6 and v7 but not
      for v5 and backwards. Without the function pointer in place, we
      will be calling wrong cache functions.
      
      For example with ep93xx we get following:
      
          Unable to handle kernel paging request at virtual address ee070f38
          pgd = c0004000
          [ee070f38] *pgd=00000000
          Internal error: Oops: 80000005 [#1] PREEMPT
          last sysfs file:
          Modules linked in:
          CPU: 0    Not tainted  (2.6.36+ #1)
          PC is at 0xee070f38
          LR is at __dma_alloc+0x11c/0x2d0
          pc : [<ee070f38>]    lr : [<c0032c8c>]    psr: 60000013
          sp : c581bde0  ip : 00000000  fp : c0472000
          r10: c0472000  r9 : 000000d0  r8 : 00020000
          r7 : 0001ffff  r6 : 00000000  r5 : c0472400  r4 : c5980000
          r3 : c03ab7e0  r2 : 00000000  r1 : c59a0000  r0 : c5980000
          Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
          Control: c000717f  Table: c0004000  DAC: 00000017
          Process swapper (pid: 1, stack limit = 0xc581a270)
          [<c0032c8c>] (__dma_alloc+0x11c/0x2d0)
          [<c0032e5c>] (dma_alloc_writecombine+0x1c/0x24)
          [<c0204148>] (ep93xx_pcm_preallocate_dma_buffer+0x44/0x60)
          [<c02041c0>] (ep93xx_pcm_new+0x5c/0x88)
          [<c01ff188>] (snd_soc_instantiate_cards+0x8a8/0xbc0)
          [<c01ff59c>] (soc_probe+0xfc/0x134)
          [<c01adafc>] (platform_drv_probe+0x18/0x1c)
          [<c01acca4>] (driver_probe_device+0xb0/0x16c)
          [<c01ac284>] (bus_for_each_drv+0x48/0x84)
          [<c01ace90>] (device_attach+0x50/0x68)
          [<c01ac0f8>] (bus_probe_device+0x24/0x44)
          [<c01aad7c>] (device_add+0x2fc/0x44c)
          [<c01adfa8>] (platform_device_add+0x104/0x15c)
          [<c0015eb8>] (simone_init+0x60/0x94)
          [<c0021410>] (do_one_initcall+0xd0/0x1a4)
      
      __dma_alloc() calls (inlined) __dma_alloc_buffer() which ends up
      calling dmac_flush_range(). Now since the entries in the
      arm920_cache_fns are shifted by one, we jump into address 0xee070f38
      which is actually next instruction after the arm920_cache_fns
      structure.
      
      So implement flush_icache_all() for the rest of the supported CPUs
      using a generic 'invalidate I cache' instruction.
      Signed-off-by: NMika Westerberg <mika.westerberg@iki.fi>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c8c90860
  9. 08 10月, 2010 1 次提交
  10. 27 7月, 2010 1 次提交
    • R
      ARM: Factor out common code from cpu_proc_fin() · 9ca03a21
      Russell King 提交于
      All implementations of cpu_proc_fin() start by disabling interrupts
      and then flush caches.  Rather than have every processors proc_fin()
      implementation do this, move it out into generic code - and move the
      cache flush past setup_mm_for_reboot() (so it can benefit from having
      caches still enabled.)
      
      This allows cpu_proc_fin() to become independent of the L1/L2 cache
      types, and eventually move the L2 cache flushing into the L2 support
      code.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      9ca03a21
  11. 15 2月, 2010 2 次提交
  12. 14 12月, 2009 1 次提交
  13. 03 10月, 2009 1 次提交
  14. 16 9月, 2009 1 次提交
  15. 01 10月, 2008 6 次提交
  16. 24 4月, 2008 1 次提交
  17. 19 4月, 2008 1 次提交
  18. 20 3月, 2008 1 次提交
  19. 22 4月, 2007 1 次提交
  20. 24 1月, 2007 1 次提交
  21. 13 12月, 2006 1 次提交
    • R
      [ARM] Unuse another Linux PTE bit · ad1ae2fe
      Russell King 提交于
      L_PTE_ASID is not really required to be stored in every PTE, since we
      can identify it via the address passed to set_pte_at().  So, create
      set_pte_ext() which takes the address of the PTE to set, the Linux
      PTE value, and the additional CPU PTE bits which aren't encoded in
      the Linux PTE value.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ad1ae2fe
  22. 04 12月, 2006 1 次提交
    • L
      [ARM] 3881/4: xscale: clean up cp0/cp1 handling · afe4b25e
      Lennert Buytenhek 提交于
      XScale cores either have a DSP coprocessor (which contains a single
      40 bit accumulator register), or an iWMMXt coprocessor (which contains
      eight 64 bit registers.)
      
      Because of the small amount of state in the DSP coprocessor, access to
      the DSP coprocessor (CP0) is always enabled, and DSP context switching
      is done unconditionally on every task switch.  Access to the iWMMXt
      coprocessor (CP0/CP1) is enabled only when an iWMMXt instruction is
      first issued, and iWMMXt context switching is done lazily.
      
      CONFIG_IWMMXT is supposed to mean 'the cpu we will be running on will
      have iWMMXt support', but boards are supposed to select this config
      symbol by hand, and at least one pxa27x board doesn't get this right,
      so on that board, proc-xscale.S will incorrectly assume that we have a
      DSP coprocessor, enable CP0 on boot, and we will then only save the
      first iWMMXt register (wR0) on context switches, which is Bad.
      
      This patch redefines CONFIG_IWMMXT as 'the cpu we will be running on
      might have iWMMXt support, and we will enable iWMMXt context switching
      if it does.'  This means that with this patch, running a CONFIG_IWMMXT=n
      kernel on an iWMMXt-capable CPU will no longer potentially corrupt iWMMXt
      state over context switches, and running a CONFIG_IWMMXT=y kernel on a
      non-iWMMXt capable CPU will still do DSP context save/restore.
      
      These changes should make iWMMXt work on PXA3xx, and as a side effect,
      enable proper acc0 save/restore on non-iWMMXt capable xsc3 cores such
      as IOP13xx and IXP23xx (which will not have CONFIG_CPU_XSCALE defined),
      as well as setting and using HWCAP_IWMMXT properly.
      Signed-off-by: NLennert Buytenhek <buytenh@wantstofly.org>
      Acked-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      afe4b25e
  23. 30 11月, 2006 1 次提交
  24. 03 11月, 2006 1 次提交
  25. 25 9月, 2006 1 次提交
  26. 15 9月, 2006 1 次提交
  27. 29 7月, 2006 1 次提交
  28. 02 7月, 2006 1 次提交
  29. 30 6月, 2006 1 次提交
    • R
      [ARM] Set bit 4 on section mappings correctly depending on CPU · 8799ee9f
      Russell King 提交于
      On some CPUs, bit 4 of section mappings means "update the
      cache when written to".  On others, this bit is required to
      be one, and others it's required to be zero.  Finally, on
      ARMv6 and above, setting it turns on "no execute" and prevents
      speculative prefetches.
      
      With all these combinations, no one value fits all CPUs, so we
      have to pick a value depending on the CPU type, and the area
      we're mapping.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8799ee9f
  30. 29 6月, 2006 1 次提交
    • R
      [ARM] nommu: provide a way for correct control register value selection · 22b19086
      Russell King 提交于
      Most MMU-based CPUs have a restriction on the setting of the data cache
      enable and mmu enable bits in the control register, whereby if the data
      cache is enabled, the MMU must also be enabled.  Enabling the data
      cache without the MMU is an invalid combination.
      
      However, there are CPUs where the data cache can be enabled without the
      MMU.
      
      In order to allow these CPUs to take advantage of that, provide a
      method whereby each proc-*.S file defines the control regsiter value
      for use with nommu (with the MMU disabled.)  Later on, when we add
      support for enabling the MMU on these devices, we can adjust the
      "crval" macro to also enable the data cache for nommu.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      22b19086
  31. 22 3月, 2006 2 次提交
  32. 02 2月, 2006 1 次提交