1. 19 9月, 2012 1 次提交
  2. 13 9月, 2012 1 次提交
    • M
      ARM: SoC: add per-platform SMP operations · abcee5fb
      Marc Zyngier 提交于
      This adds a 'struct smp_operations' to abstract the CPU initialization
      and hot plugging functions on SMP systems, which otherwise conflict
      in a multiplatform kernel. This also helps shmobile and potentially
      others that have more than one method to do these.
      
      To allow the kernel to continue building, the platform hooks are
      defined as weak symbols which are overrided by the platform code.
      Once all platforms are converted, the "weak" attribute will be
      removed and the function made static.
      
      Unlike the original version from Marc, this new version from Arnd
      does not use a generalized abstraction for per-soc data structures
      but only tries to solve the problem for the SMP operations. This
      way, we can collapse the previous four data structures into a
      single struct, which is less systematic but also easier to follow
      as a causal reader.
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Acked-by: NNicolas Pitre <nico@fluxnic.net>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      abcee5fb
  3. 04 9月, 2012 1 次提交
  4. 30 7月, 2012 1 次提交
  5. 21 5月, 2012 1 次提交
  6. 03 5月, 2012 1 次提交
  7. 16 4月, 2012 1 次提交
  8. 29 3月, 2012 2 次提交
  9. 24 3月, 2012 1 次提交
  10. 23 1月, 2012 2 次提交
  11. 20 1月, 2012 2 次提交
  12. 12 12月, 2011 1 次提交
  13. 09 12月, 2011 1 次提交
    • T
      memblock: Fix include breakages caused by 24aa0788 · 1c16d242
      Tejun Heo 提交于
      24aa0788 (memblock, x86: Replace memblock_x86_reserve/free_range()
      with generic ones) removed arch/x86/include/asm/memblock.h and dropped
      its inclusion from include/linux/memblock.h which breaks other
      architectures which depended on the generic memblock.h pulling in the
      arch specific one.
      
      However, the proper fix isn't adding back the asm inclusion.  memblock
      doesn't have any arch dependent part and doesn't need arch specific
      header file and asm/memblock.h files are either practically empty or
      contain mostly unrelated arch specific stuff.
      
      * In microblaze, sh, powerpc, sparc and openrisc, asm/memblock.h is
        either empty or just contains unused MEMBLOCK_DBG() macro.  Remove
        them.
      
      * In arm and unicore32, asm/memblock.h contains arch specific stuff.
        Include it directly from its users.  It might be a good idea to
        rename the header file to avoid confusion.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: N"H. Peter Anvin" <hpa@zytor.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
      1c16d242
  14. 06 12月, 2011 1 次提交
    • U
      ARM: 7187/1: fix unwinding for XIP kernels · de66a979
      Uwe Kleine-König 提交于
      The linker places the unwind tables in readonly sections. So when using
      an XIP kernel these are located in ROM and cannot be modified.
      For that reason the current approach to convert the relative offsets in
      the unwind index to absolute addresses early in the boot process doesn't
      work with XIP.
      
      The offsets in the unwind index section are signed 31 bit numbers and
      the structs are sorted by this offset. So it first has offsets between
      0x40000000 and 0x7fffffff (i.e. the negative offsets) and then offsets
      between 0x00000000 and 0x3fffffff. When seperating these two blocks the
      numbers are sorted even when interpreting the offsets as unsigned longs.
      
      So determine the first non-negative entry once and track that using the
      new origin pointer. The actual bisection can then use a plain unsigned
      long comparison. The only thing that makes the new bisection more
      complicated is that the offsets are relative to their position in the
      index section, so the key to search needs to be adapted accordingly in
      each step.
      
      Moreover several consts are added to catch future writes and rename the
      member "addr" of struct unwind_idx to "addr_offset" to better match the
      new semantic. (This has the additional benefit of breaking eventual
      users at compile time to make them aware of the change.)
      
      In my tests the new algorithm was a tad faster than the original and has
      the additional upside of not needing the initial conversion and so saves
      some boot time and it's possible to unwind even earlier.
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: NNicolas Pitre <nico@fluxnic.net>
      Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      de66a979
  15. 19 11月, 2011 1 次提交
    • N
      ARM: sort the meminfo array earlier · 27a3f0e9
      Nicolas Pitre 提交于
      The meminfo array has to be sorted before sanity_check_meminfo() in
      arch/arm/mm/mmu.c is called for it to work properly.  This also allows
      for a simpler find_limits() in arch/arm/mm/init.c.
      
      The sort is moved to arch/arm/kernel/setup.c because that's where the
      meminfo array is populated.  Eventually this should be improved upon
      to make the memory bank parser a bit more robust against problems
      such as overlapping memory ranges.
      Signed-off-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      27a3f0e9
  16. 12 11月, 2011 1 次提交
  17. 11 11月, 2011 2 次提交
  18. 01 11月, 2011 1 次提交
    • P
      arm: convert core files from module.h to export.h · ecea4ab6
      Paul Gortmaker 提交于
      Many of the core ARM kernel files are not modules, but just
      including module.h for exporting symbols.  Now these files can
      use the lighter footprint export.h for this role.
      
      There are probably lots more, but ARM files of mach-* and plat-*
      don't get coverage via a simple yesconfig build.  They will have
      to be cleaned up and tested via using their respective configs.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      ecea4ab6
  19. 17 10月, 2011 3 次提交
  20. 22 8月, 2011 2 次提交
  21. 12 8月, 2011 1 次提交
  22. 19 7月, 2011 1 次提交
  23. 08 7月, 2011 1 次提交
    • W
      ARM: hwcaps: add new HWCAP defines for ARMv7-A · 254cdf8e
      Will Deacon 提交于
      Modern ARMv7-A cores can optionally implement these new hardware
      features:
      
      - VFPv4:
          The latest version of the ARMv7 vector floating-point extensions,
          including hardware support for fused multiple accumulate. D16 or D32
          variants may be implemented.
      
      - Integer divide:
          The SDIV and UDIV instructions provide signed and unsigned integer
          division in hardware. When implemented, these instructions may be
          available in either both Thumb and ARM, or Thumb only.
      
      This patch adds new HWCAP defines to describe these new features. The
      integer divide capabilities are split into two bits for ARM and Thumb
      respectively. Whilst HWCAP_IDIVA should never be set if HWCAP_IDIVT is
      clear, separating the bits makes it easier to interpret from userspace.
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      254cdf8e
  24. 06 7月, 2011 1 次提交
  25. 24 6月, 2011 1 次提交
  26. 23 5月, 2011 2 次提交
    • G
      arm/dt: probe for platforms via the device tree · 93c02ab4
      Grant Likely 提交于
      If a dtb is passed to the kernel then the kernel needs to iterate
      through compiled-in mdescs looking for one that matches and move the
      dtb data to a safe location before it gets accidentally overwritten by
      the kernel.
      
      This patch creates a new function, setup_machine_fdt() which is
      analogous to the setup_machine_atags() created in the previous patch.
      It does all the early setup needed to use a device tree machine
      description.
      
      v5: - Print warning with neither dtb nor atags are passed to the kernel
          - Fix bug in setting of __machine_arch_type to the selected machine,
            not just the last machine in the list.
      Reported-by: NTixy <tixy@yxit.co.uk>
          - Copy command line directly into boot_command_line instead of cmd_line
      v4: - Dump some output when a matching machine_desc cannot be found
      v3: - Added processing of reserved list.
          - Backed out the v2 change that copied instead of reserved the
            dtb.  dtb is reserved again and the real problem was fixed by
            using alloc_bootmem_align() for early allocation of RAM for
            unflattening the tree.
          - Moved cmd_line and initrd changes to earlier patch to make series
            bisectable.
      v2: Changed to save the dtb by copying into an allocated buffer.
          - Since the dtb will very likely be passed in the first 16k of ram
            where the interrupt vectors live, memblock_reserve() is
            insufficient to protect the dtb data.
      
      [based on work originally written by Jeremy Kerr <jeremy.kerr@canonical.com>]
      Tested-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Acked-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      93c02ab4
    • G
      arm/dt: consolidate atags setup into setup_machine_atags · 6291319d
      Grant Likely 提交于
      In preparation for adding device tree support, this patch consolidates
      all of the atag-specific setup into a single function.
      
      v5: - drop double printk("Machine; %s\n", ...); call.
          - leave copying boot_command_line in setup_arch() since it isn't
            atags specific.
      v4: - adapt to the removal of lookup_machine_type()
          - break out dump of machine_desc table into dump_machine_table()
            because the device tree probe code will use it.
          - Add for_each_machine_desc() macro
      Tested-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Acked-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      6291319d
  27. 12 5月, 2011 1 次提交
  28. 11 5月, 2011 1 次提交
  29. 24 3月, 2011 1 次提交
    • O
      crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr,... · 93a72052
      Olaf Hering 提交于
      crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn
      
      The Xen PV drivers in a crashed HVM guest can not connect to the dom0
      backend drivers because both frontend and backend drivers are still in
      connected state.  To run the connection reset function only in case of a
      crashdump, the is_kdump_kernel() function needs to be available for the PV
      driver modules.
      
      Consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn into
      kernel/crash_dump.c Also export elfcorehdr_addr to make is_kdump_kernel()
      usable for modules.
      
      Leave 'elfcorehdr' as early_param().  This changes powerpc from __setup()
      to early_param().  It adds an address range check from x86 also on ia64
      and powerpc.
      
      [akpm@linux-foundation.org: additional #includes]
      [akpm@linux-foundation.org: remove elfcorehdr_addr export]
      [akpm@linux-foundation.org: fix for Tejun's mm/nobootmem.c changes]
      Signed-off-by: NOlaf Hering <olaf@aepfle.de>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      93a72052
  30. 24 2月, 2011 2 次提交
    • N
      ARM: 6748/1: ignore mdesc->boot_params if out of range · 3572bea8
      Nicolas Pitre 提交于
      The initial MMU table created in head.S contains a 1 MB mapping at the
      start of memory to let the early kernel boot code access the boot params
      specified by mdesc->boot_params.
      
      When using CONFIG_ARM_PATCH_PHYS_VIRT it is possible for the kernel to
      have a different idea of where the start of memory is at run time, making
      the compile-time determined mdesc->boot_params pointing to a memory area
      which is not mapped.  Any access to the boot params in that case will
      fault and silently hang the kernel at that point.  It is therefore a
      better idea to simply ignore mdesc->boot_params in that case and give
      the kernel a chance to print some diagnostic on the console later.
      
      If the bootloader provides a valid pointer in r2 to the kernel then this
      is used instead of mdesc->boot_params, and an explicit mapping is already
      created in the initial MMU table for it.  It is therefore a good idea to
      use that facility when using a relocated kernel.
      Signed-off-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3572bea8
    • N
      ARM: 6749/1: fold lookup_machine_type() into setup_machine() · dce72dd0
      Nicolas Pitre 提交于
      Since commit 6fc31d54 there is no callers for lookup_machine_type()
      other than setup_machine(). And if the former fails it won't return,
      therefore the error path in the later is dead code.  Let's clean
      things up by merging them together.
      Signed-off-by: NNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      dce72dd0
  31. 22 2月, 2011 1 次提交