1. 12 8月, 2013 1 次提交
  2. 03 8月, 2013 2 次提交
  3. 01 8月, 2013 10 次提交
  4. 31 7月, 2013 2 次提交
  5. 27 7月, 2013 1 次提交
  6. 26 7月, 2013 4 次提交
    • W
      ARM: 7791/1: a.out: remove partial a.out support · acfdd4b1
      Will Deacon 提交于
      a.out support on ARM requires that argc, argv and envp are passed in
      r0-r2 respectively, which requires hacking load_aout_binary to
      prevent argc being clobbered by the return code. Whilst mainline kernels
      do set the registers up in start_thread, the aout loader has never
      carried the hack in mainline.
      
      Initialising the registers in this way actually goes against the libc
      expectations for ELF binaries, where argc, argv and envp are passed on
      the stack, with r0 being used to hold a pointer to an exit function for
      cleaning up after the dynamic linker if required. If the pointer is
      NULL, then it is ignored. When execing an ELF binary, Linux currently
      zeroes r0, then sets it to argc and then finally clobbers it with the
      return value of the execve syscall, so we actually end up with:
      
      	r0 = 0
      	stack[0] = argc
      	r1 = stack[1] = argv
      	r2 = stack[2] = envp
      
      libc treats r1 and r2 as undefined. The clobbering of r0 by sys_execve
      works for user-spawned threads, but when executing an ELF binary from a
      kernel thread (via call_usermodehelper), the execve is performed on the
      ret_from_fork path, which restores r0 from the saved pt_regs, resulting
      in argc being presented to the C library. This has horrible consequences
      when the application exits, since we have an exit function registered
      using argc, resulting in a jump to hyperspace.
      
      This patch solves the problem by removing the partial a.out support from
      arch/arm/ altogether.
      
      Cc: <stable@vger.kernel.org>
      Cc: Ashish Sangwan <ashishsangwan2@gmail.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      acfdd4b1
    • C
      ARM: 7790/1: Fix deferred mm switch on VIVT processors · bdae73cd
      Catalin Marinas 提交于
      As of commit b9d4d42a (ARM: Remove __ARCH_WANT_INTERRUPTS_ON_CTXSW on
      pre-ARMv6 CPUs), the mm switching on VIVT processors is done in the
      finish_arch_post_lock_switch() function to avoid whole cache flushing
      with interrupts disabled. The need for deferred mm switch is stored as a
      thread flag (TIF_SWITCH_MM). However, with preemption enabled, we can
      have another thread switch before finish_arch_post_lock_switch(). If the
      new thread has the same mm as the previous 'next' thread, the scheduler
      will not call switch_mm() and the TIF_SWITCH_MM flag won't be set for
      the new thread.
      
      This patch moves the switch pending flag to the mm_context_t structure
      since this is specific to the mm rather than thread.
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Reported-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      Tested-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      Cc: <stable@vger.kernel.org> # 3.5+
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      bdae73cd
    • F
      ARM: 7789/1: Do not run dummy_flush_tlb_a15_erratum() on non-Cortex-A15 · 1f49856b
      Fabio Estevam 提交于
      Commit 93dc6887 (ARM: 7684/1: errata: Workaround for Cortex-A15 erratum 798181 (TLBI/DSB operations)) causes the following undefined instruction error on a mx53 (Cortex-A8):
      
      Internal error: Oops - undefined instruction: 0 [#1] SMP ARM
      CPU: 0 PID: 275 Comm: modprobe Not tainted 3.11.0-rc2-next-20130722-00009-g9b0f371 #881
      task: df46cc00 ti: df48e000 task.ti: df48e000
      PC is at check_and_switch_context+0x17c/0x4d0
      LR is at check_and_switch_context+0xdc/0x4d0
      
      This problem happens because check_and_switch_context() calls dummy_flush_tlb_a15_erratum() without checking if we are really running on a Cortex-A15 or not.
      
      To avoid this issue, only call dummy_flush_tlb_a15_erratum() inside
      check_and_switch_context() if erratum_a15_798181() returns true, which means that we are really running on a Cortex-A15.
      Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Reviewed-by: NRoger Quadros <rogerq@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      1f49856b
    • M
      ARM: 7787/1: virt: ensure visibility of __boot_cpu_mode · 8fbac214
      Mark Rutland 提交于
      Secondary CPUs write to __boot_cpu_mode with caches disabled, and thus a
      cached value of __boot_cpu_mode may be incoherent with that in memory.
      This could lead to a failure to detect mismatched boot modes.
      
      This patch adds flushing to ensure that writes by secondaries to
      __boot_cpu_mode are made visible before we test against it.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Acked-by: NDave Martin <Dave.Martin@arm.com>
      Acked-by: NMarc Zyngier <marc.zyngier@arm.com>
      Cc: Christoffer Dall <cdall@cs.columbia.edu>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8fbac214
  7. 25 7月, 2013 1 次提交
  8. 24 7月, 2013 9 次提交
    • S
      ARM: EXYNOS: Update CONFIG_ARCH_NR_GPIO for Exynos · 53302bf6
      Sachin Kamat 提交于
      With the recent cleanup in Exynos platform code notably commits
      17859bec ("ARM: EXYNOS: Do not select legacy Kconfig symbols any
      more") and b9222210 ("ARM: EXYNOS: Remove mach/gpio.h"), the definition
      of ARCH_NR_GPIOS got removed. This started causing problems on SoCs like
      Exynos4412 which have more than the default number of GPIOs. Thus define
      this number in KConfig file which takes care of current SoC requirements
      and provides scope for GPIO expanders. Without this patch we get the
      following errors during boot:
      
      gpiochip_add: gpios 251..258 (gpv0) failed to register
      samsung-pinctrl 106e0000.pinctrl: failed to register gpio_chip gpv0, error code: -22
      samsung-pinctrl: probe of 106e0000.pinctrl failed with error -22
      Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org>
      Cc: Tomasz Figa <t.figa@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      53302bf6
    • Y
      ARM: EXYNOS: Fix low level debug support · 7ed76e08
      Yadwinder Singh Brar 提交于
      Presently, using exynos_defconfig with CONFIG_DEBUG_LL and CONFIG_EARLY_PRIN
      on, kernel is not booting, we are getting following:
      
      [    0.000000] ------------[ cut here ]------------
      [    0.000000] kernel BUG at mm/vmalloc.c:1134!
      [    0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
      [    0.000000] Modules linked in:
      [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.11.0-rc1 #633
      [    0.000000] task: c052ec48 ti: c0524000 task.ti: c0524000
      [    0.000000] PC is at vm_area_add_early+0x54/0x94
      [    0.000000] LR is at add_static_vm_early+0xc/0x60
      
      Its because exynos[4/5]_map_io() function ioremaps a single 512KB memory
      size for all the four uart ports which envelopes the mapping created by
      debug_ll_io_init(), called earlier in exynos_init_io().
      
      This patch removes iodesc entries for UART controller for all Samsung SoC's,
      since now the Samsung uart driver does a ioremap during probe and any needed
      iomapping for earlyprintk will be handled by debug_ll_io_init().
      
      Tested on smdk4412 and smdk5250.
      Signed-off-by: NYadwinder Singh Brar <yadi.brar@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      7ed76e08
    • Y
      ARM: SAMSUNG: Save/restore only selected uart's registers · 7bdc84fb
      Yadwinder Singh Brar 提交于
      Basically this code gets executed only during debugging i.e when
      DEBUG_LL & SAMSUNG_PM_DEBUG is on, so required only for UART used
      for debugging. Since we are removing static iodesc entries for UARTs,
      so now only the selected (CONFIG_DEBUG_S3C_UART) UART will be
      ioremapped by the debug_ll_io_init() for DEBUG_LL, so save/restore
      uart registers only for selected uart.
      Signed-off-by: NYadwinder Singh Brar <yadi.brar@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      7bdc84fb
    • A
      ARM: SAMSUNG: Add SAMSUNG_PM config option to select pm · 89693016
      Amit Daniel Kachhap 提交于
      This patch enables the selection of samsung pm related stuffs
      when SAMSUNG_PM config is enabled and not just when generic PM
      config is enabled. Power management for s3c64XX and s3c24XX
      is enabled by default and for other platform depends on S5P_PM.
      This patch also fixes the following compilation error's when compiling
      a platform like exynos5440 which does not select pm stuffs.
      
      arch/arm/mach-exynos/built-in.o: In function '__virt_to_phys':
      linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
      linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
      linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
      linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
      arch/arm/mach-exynos/built-in.o: In function 'exynos5_init_irq':
      linux/arch/arm/mach-exynos/common.c:492: undefined reference to 's3c_irq_wake'
      linux/arch/arm/mach-exynos/common.c:492: undefined reference to 's3c_irq_wake'
      arch/arm/mach-exynos/built-in.o: In function 'exynos4_init_irq':
      linux/arch/arm/mach-exynos/common.c:476: undefined reference to 's3c_irq_wake'
      linux/arch/arm/mach-exynos/common.c:476: undefined reference to 's3c_irq_wake'
      arch/arm/plat-samsung/built-in.o: In function 's3c_irqext_wake':
      linux/arch/arm/plat-samsung/pm.c:144: undefined reference to 's3c_irqwake_eintallow'
      linux/arch/arm/plat-samsung/pm.c:144: undefined reference to 's3c_irqwake_eintallow'
      arch/arm/plat-samsung/built-in.o: In function 's3c_pm_enter':
      linux/arch/arm/plat-samsung/pm.c:263: undefined reference to 's3c_irqwake_intallow'
      linux/arch/arm/plat-samsung/pm.c:263: undefined reference to 's3c_irqwake_intallow'
      linux/arch/arm/plat-samsung/pm.c:264: undefined reference to 's3c_irqwake_eintallow'
      linux/arch/arm/plat-samsung/pm.c:264: undefined reference to 's3c_irqwake_eintallow'
      linux/arch/arm/plat-samsung/pm.c:275: undefined reference to 's3c_pm_save_core'
      linux/arch/arm/plat-samsung/pm.c:279: undefined reference to 's3c_pm_configure_extint'
      linux/arch/arm/plat-samsung/pm.c:310: undefined reference to 's3c_pm_restore_core'
      make: *** [vmlinux] Error 1
      Signed-off-by: NAmit Daniel Kachhap <amit.daniel@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      89693016
    • S
      ARM: S3C24XX: Add missing clkdev entries for s3c2440 UART · d817468c
      Sylwester Nawrocki 提交于
      This patch restores serial port operation which has been broken since
      commit 60e93575 ("serial: samsung: enable clock before clearing
      pending interrupts during init")
      
      That commit only uncovered the real issue which was missing clkdev
      entries for the "uart" clocks on S3C2440. It went unnoticed so far
      because return value of clk API calls were not being checked at all
      in the samsung serial port driver.
      
      This patch should be backported to at least 3.10 stable kernel, since
      the serial port has not been working on s3c2440 since 3.10-rc5.
      
      Cc: Chander Kashyap <chander.kashyap@linaro.org>
      Signed-off-by: NSylwester Nawrocki <sylvester.nawrocki@gmail.com>
      [on S3C2440 SoC based Mini2440 board]
      Tested-by: NSylwester Nawrocki <sylvester.nawrocki@gmail.com>
      Reviewed-by: NTomasz Figa <t.figa@samsung.com>
      Tested-by: NJuergen Beisert <jbe@pengutronix.de>
      Cc: <stable@vger.kernel.org>	[3.10]
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      d817468c
    • F
      ARM: multi_v7_defconfig: Select USB chipidea driver · a520a9b7
      Fabio Estevam 提交于
      CONFIG_USB_EHCI_MXC selects the old i.mx USB driver, which does not support
      device tree.
      
      Select the USB chipidea driver instead, so that USB can be functional on i.mx.
      Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      a520a9b7
    • A
      ARM: pxa: propagate errors from regulator_enable() to pxamci · a829abf8
      Arnd Bergmann 提交于
      The em_x270_mci_setpower() and em_x270_usb_hub_init() functions
      call regulator_enable(), which may return an error that must
      be checked.
      
      This changes the em_x270_usb_hub_init() function to bail out
      if it fails, and changes the pxamci_platform_data->setpower
      callback so that the a failed em_x270_mci_setpower call
      can be propagated by the pxamci driver into the mmc core.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Mike Rapoport <mike@compulab.co.il>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
      Acked-by: NChris Ball <cjb@laptop.org>
      [olof: fixed order of regulator_enable() and test in em_x270_usb_hub_init]
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      a829abf8
    • V
      ARM: zynq: fix compilation warning · fe08bf9f
      Vincent Stehlé 提交于
      Fix the following compilation warning:
      
        arch/arm/mach-zynq/common.c:110:2: warning: initialization from incompatible pointer type [enabled by default]
        arch/arm/mach-zynq/common.c:110:2: warning: (near initialization for ‘__mach_desc_XILINX_EP107.restart’) [enabled by default]
      Signed-off-by: NVincent Stehlé <vincent.stehle@freescale.com>
      Cc: Robin Holt <holt@sgi.com>
      Cc: Michal Simek <michal.simek@xilinx.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: trivial@kernel.org
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      fe08bf9f
    • V
      ARM: keystone: fix compilation warning · ed882c3e
      Vincent Stehlé 提交于
      Fix the following compilation warning:
      
        arch/arm/mach-keystone/keystone.c:74:2: warning: initialization from incompatible pointer type [enabled by default]
        arch/arm/mach-keystone/keystone.c:74:2: warning: (near initialization for ‘__mach_desc_KEYSTONE.restart’) [enabled by default]
      Signed-off-by: NVincent Stehlé <vincent.stehle@freescale.com>
      Cc: Robin Holt <holt@sgi.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: trivial@kernel.org
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      ed882c3e
  9. 23 7月, 2013 5 次提交
  10. 22 7月, 2013 5 次提交
    • T
      ARM: 7788/1: elf: fix lpae hwcap feature reporting in proc/cpuinfo · ab8d46c0
      Tetsuyuki Kobayashi 提交于
      Commit a469abd0 ("ARM: elf: add new hwcap for identifying atomic
      ldrd/strd instructions") added a new hwcap to identify LPAE on CPUs
      which support it. Whilst the hwcap data is correct, the string reported
      in /proc/cpuinfo actually matches on HWCAP_VFPD32, which was missing
      an entry in the string table.
      
      This patch fixes this problem by adding a "vfpd32" string at the correct
      offset, preventing us from falsely advertising LPAE on CPUs which do not
      support it.
      
      [will: added commit message]
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Tested-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NTetsuyuki Kobayashi <koba@kmckk.co.jp>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ab8d46c0
    • M
      ARM: 7786/1: hyp: fix macro parameterisation · b60d5db6
      Mark Rutland 提交于
      Currently, compare_cpu_mode_with_primary uses a mixture of macro
      arguments and hardcoded registers, and does so incorrectly, as it
      stores (__boot_cpu_mode_offset | BOOT_CPU_MODE_MISMATCH) to
      (__boot_cpu_mode + &__boot_cpu_mode_offset), which could corrupt an
      arbitrary portion of memory.
      
      This patch fixes up compare_cpu_mode_with_primary to use the macro
      arguments, correctly updating __boot_cpu_mode.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Acked-by: NDave Martin <Dave.Martin@arm.com>
      Acked-by: NMarc Zyngier <marc.zyngier@arm.com>
      Cc: Christoffer Dall <cdall@cs.columbia.edu>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b60d5db6
    • R
      ARM: 7785/1: mm: restrict early_alloc to section-aligned memory · c65b7e98
      Russell King 提交于
      When map_lowmem() runs, and processes a memory bank whose start or end
      is not section-aligned, memory must be allocated to store the 2nd-level
      page tables. Those allocations are made by calling memblock_alloc().
      
      At this point, the only memory that is free *and* mapped is memory which
      has already been mapped by map_lowmem() itself. For this reason, we must
      calculate the first point at which map_lowmem() will need to allocate
      memory, and set the memblock allocation limit to a lower address, so that
      memblock_alloc() is guaranteed to return memory that is already mapped.
      
      This patch enhances sanity_check_meminfo() to calculate that memory
      address, and pass it to memblock_set_current_limit(), rather than just
      assuming the limit is arm_lowmem_limit.
      
      The algorithm applied is:
      
      * Default memblock_limit to arm_lowmem_limit in the absence of any other
        limit; arm_lowmem_limit is the highest memory that is mapped by
        map_lowmem().
      
      * While walking the list of memblocks, if the start of a block is not
        aligned, 2nd-level page tables will need to be allocated to map the
        first few pages of the block. Hence, the memblock_limit must be before
        the start of the block.
      
      * Similarly, if the end of any block is not aligned, 2nd-level page
        tables will need to be allocated to map the last few pages of the
        block. Hence, the memblock_limit must point at the end of the block,
        rounded down to section-alignment.
      
      * The memory blocks are assumed to be sorted in address order, so the
        first unaligned block start or end is used to set the limit.
      
      With this algorithm, the start or end of almost any bank can be non-
      section-aligned. The only exception is that the start of bank 0 must
      be section-aligned, since otherwise memory would need to be allocated
      when mapping the start of bank 0, which occurs before any free memory
      is mapped.
      
      [swarren, wrote commit description, rewrote calculation of memblock_limit]
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      c65b7e98
    • W
      ARM: 7784/1: mm: ensure SMP alternates assemble to exactly 4 bytes with Thumb-2 · bf3f0f33
      Will Deacon 提交于
      Commit ae8a8b95 ("ARM: 7691/1: mm: kill unused TLB_CAN_READ_FROM_L1_CACHE
      and use ALT_SMP instead") added early function returns for page table
      cache flushing operations on ARMv7 SMP CPUs.
      
      Unfortunately, when targetting Thumb-2, these `mov pc, lr' sequences
      assemble to 2 bytes which can lead to corruption of the instruction
      stream after code patching.
      
      This patch fixes the alternates to use wide (32-bit) instructions for
      Thumb-2, therefore ensuring that the patching code works correctly.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      bf3f0f33
    • R
      ARM: document DEBUG_UNCOMPRESS Kconfig option · b6992fa9
      Russell King 提交于
      This non-user visible option lacked any kind of documentation.  This
      is quite common for non-user visible options; certian people can't
      understand the point of documenting such options with help text.
      
      However, here we have a case in point: developers don't understand the
      option either, as they were thinking that when the option is not set,
      the decompressor should produce no output what so ever.  This is
      incorrect, as the purpose of this option is to control whether a
      multiplatform kernel uses the kernel debugging macros to produce
      output or not.
      
      So let's document this via help rather than commentry to prevent others
      falling into this misunderstanding.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      b6992fa9