1. 17 4月, 2013 2 次提交
  2. 11 4月, 2013 2 次提交
    • G
      arm: mvebu: Fix the irq map function in SMP mode · 600468d0
      Gregory CLEMENT 提交于
      This patch fix the regression introduced by the commit 3202bf01
      "arm: mvebu: Improve the SMP support of the interrupt controller":
      GPIO IRQ were no longer delivered to the CPUs.
      
      To be delivered to a CPU an interrupt must be enabled at CPU level and
      at interrupt source level. Before the offending patch, all the
      interrupts were enabled at source level during map() function. Mask()
      and unmask() was done by handling the per-CPU part. It was fine when
      running in UP with only one CPU.
      
      The offending patch added support for SMP, in this case mask() and
      unmask() was done by handling the interrupt source level part. The
      per-CPU level part was handled by the affinity API to select the CPU
      which will receive the interrupt. (Due to some hardware limitation
      only one CPU at a time can received a given interrupt).
      
      For "normal" interrupt __setup_irq() was called when an irq was
      registered. irq_set_affinity() is called from this function, which
      enabled the interrupt on one of the CPUs. Whereas for GPIO IRQ which
      were chained interrupts, the irq_set_affinity() was never called and
      none of the CPUs was selected to receive the interrupt.
      
      With this patch all the interrupt are enable on the current CPU during
      map() function. Enabling the interrupts on a CPU doesn't depend
      anymore on irq_set_affinity() and then the chained irq are not anymore
      a special case. However the CPU which will receive the irq can still
      be modify later using irq_set_affinity().
      
      Tested with Mirabox (A370) and Openblocks AX3 (AXP), rootfs mounted
      over NFS, compiled with CONFIG_SMP=y/N.
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Reported-by: NRyan Press <ryan@presslab.us>
      Investigated-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Tested-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Tested-by: NRyan Press <ryan@presslab.us>
      Signed-off-by: NJason Cooper <jason@lakedaemon.net>
      600468d0
    • N
      Fix GE0/GE1 init on ix2-200 as GE0 has no PHY · aaaf165b
      Nigel Roberts 提交于
      Signed-off-by: NJason Cooper <jason@lakedaemon.net>
      aaaf165b
  3. 09 4月, 2013 6 次提交
  4. 08 4月, 2013 1 次提交
  5. 03 4月, 2013 7 次提交
  6. 01 4月, 2013 1 次提交
  7. 31 3月, 2013 1 次提交
  8. 29 3月, 2013 6 次提交
  9. 28 3月, 2013 3 次提交
  10. 27 3月, 2013 1 次提交
    • R
      ARM: OMAP: clocks: Delay clk inits atleast until slab is initialized · ff931c82
      Rajendra Nayak 提交于
      clk inits on OMAP happen quite early, even before slab is available.
      The dependency comes from the fact that the timer init code starts to
      use clocks and hwmod and we need clocks to be initialized by then.
      
      There are various problems doing clk inits this early, one is,
      not being able to do dynamic clk registrations and hence the
      dependency on clk-private.h. The other is, inability to debug
      early kernel crashes without enabling DEBUG_LL and earlyprintk.
      
      Doing early clk init also exposed another instance of a kernel
      panic due to a BUG() when CONFIG_DEBUG_SLAB is enabled.
      
      [    0.000000] Kernel BUG at c01174f8 [verbose debug info unavailable]
      [    0.000000] Internal error: Oops - BUG: 0 [#1] SMP ARM
      [    0.000000] Modules linked in:
      [    0.000000] CPU: 0    Not tainted  (3.9.0-rc1-12179-g72d48f9 #6)
      [    0.000000] PC is at __kmalloc+0x1d4/0x248
      [    0.000000] LR is at __clk_init+0x2e0/0x364
      [    0.000000] pc : [<c01174f8>]    lr : [<c0441f54>]    psr: 600001d3
      [    0.000000] sp : c076ff28  ip : c065cefc  fp : c0441f54
      [    0.000000] r10: 0000001c  r9 : 000080d0  r8 : c076ffd4
      [    0.000000] r7 : c074b578  r6 : c0794d88  r5 : 00000040  r4 : 00000000
      [    0.000000] r3 : 00000000  r2 : c07cac70  r1 : 000080d0  r0 : 0000001c
      [    0.000000] Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
      [    0.000000] Control: 10c53c7d  Table: 8000404a  DAC: 00000017
      [    0.000000] Process swapper (pid: 0, stack limit = 0xc076e240)
      [    0.000000] Stack: (0xc076ff28 to 0xc0770000)
      [    0.000000] ff20:                   22222222 c0794ec8 c06546e8 00000000 00000040 c0794d88
      [    0.000000] ff40: c074b578 c076ffd4 c07951c8 c076e000 00000000 c0441f54 c074b578 c076ffd4
      [    0.000000] ff60: c0793828 00000040 c0794d88 c074b578 c076ffd4 c0776900 c076e000 c07272ac
      [    0.000000] ff80: 2f800000 c074c968 c07f93d0 c0719780 c076ffa0 c076ff98 00000000 00000000
      [    0.000000] ffa0: 00000000 00000000 00000000 00000001 c074cd6c c077b1ec 8000406a c0715724
      [    0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c074c968 10c53c7d c0776974
      [    0.000000] ffe0: c074cd6c c077b1ec 8000406a 411fc092 00000000 80008074 00000000 00000000
      [    0.000000] [<c01174f8>] (__kmalloc+0x1d4/0x248) from [<c0441f54>] (__clk_init+0x2e0/0x364)
      [    0.000000] [<c0441f54>] (__clk_init+0x2e0/0x364) from [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140)
      [    0.000000] [<c07272ac>] (omap4xxx_clk_init+0xbc/0x140) from [<c0719780>] (setup_arch+0x15c/0x284)
      [    0.000000] [<c0719780>] (setup_arch+0x15c/0x284) from [<c0715724>] (start_kernel+0x7c/0x334)
      [    0.000000] [<c0715724>] (start_kernel+0x7c/0x334) from [<80008074>] (0x80008074)
      [    0.000000] Code: e5883004 e1a00006 e28dd00c e8bd8ff0 (e7f001f2)
      [    0.000000] ---[ end trace 1b75b31a2719ed1c ]---
      [    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
      
      It was a know issue, that slab allocations would fail when common
      clock core tries to cache parent pointers for mux clocks on OMAP,
      and hence a patch 'clk: Allow late cache allocation for clk->parents,
      commit 7975059d' was added to work this problem around.
      A BUG() within kmalloc() with CONFIG_DEBUG_SLAB enabled was completely
      overlooked causing this regression.
      
      More details on the issue reported can be found here,
      http://www.mail-archive.com/linux-omap@vger.kernel.org/msg85932.html
      
      With all these issues around clk inits happening way too early, it
      makes sense to at least move them to a point where dynamic memory
      allocations are possible. So move them to a point just before the
      timer code starts using clocks and hwmod.
      
      This should at least pave way for clk inits on OMAP moving to dynamic
      clock registrations instead of using the static macros defined in
      clk-private.h.
      
      The issue with kernel panic while CONFIG_DEBUG_SLAB is enabled
      was reported by Piotr Haber and Tony Lindgren and this patch
      fixes the reported issue as well.
      Reported-by: NPiotr Haber <phaber@broadcom.com>
      Reported-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NRajendra Nayak <rnayak@ti.com>
      Acked-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Reviewed-by: NMike Turquette <mturquette@linaro.org>
      Acked-by: NPaul Walmsley <paul@pwsan.com>
      Cc: stable@vger.kernel.org  # v3.8
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      ff931c82
  11. 26 3月, 2013 1 次提交
    • S
      ARM: imx: fix sync issue between imx_cpu_die and imx_cpu_kill · 2f3edfd7
      Shawn Guo 提交于
      There is a sync issue with hotplug operation.  It's possible that when
      imx_cpu_kill gets running on primary core, the imx_cpu_die execution
      on the core which is to be killed hasn't been finished yet.  The problem
      will very likely be hit when running suspend without no_console_suspend
      setting on kernel cmdline.
      
      It uses cpu jumping argument register to sync imx_cpu_die and
      imx_cpu_kill.  The register will be set in imx_cpu_die and imx_cpu_kill
      will wait for the register being cleared to actually kill the cpu.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Cc: <stable@vger.kernel.org>
      2f3edfd7
  12. 23 3月, 2013 7 次提交
  13. 19 3月, 2013 2 次提交
    • S
      ARM: imx: add dependency check for DEBUG_IMX_UART_PORT · 287939a3
      Shawn Guo 提交于
      While adding i.MX DEBUG_LL selection, commit f8c95fe6 (ARM: imx: support
      DEBUG_LL uart port selection for all i.MX SoCs) leaves Kconfig symbol
      DEBUG_IMX_UART_PORT there without any dependency check.  This results in
      that everyone gets the symbol in their config, which is someting
      undesirable.  Add "depends on ARCH_MXC" for the symbol to prevent that.
      Reported-by: NKarl Beldan <karl.beldan@gmail.com>
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      287939a3
    • M
      ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0 · 6a15075e
      Marek Vasut 提交于
      The issue fixed by this patch manifests only then using X11
      with mxsfb driver. The X11 will display either shifted image
      or otherwise distorted image on the LCD.
      
      The problem is that the X11 tries to reconfigure the framebuffer
      and along the way calls fb_ops.fb_set_par() with X11's desired
      configuration values. The field of particular interest is
      fb_info->var.sync which contains non-standard values if
      configured by kernel. These are either FB_SYNC_DATA_ENABLE_HIGH_ACT,
      FB_SYNC_DOTCLK_FAILING_ACT or both, depending on the platform
      configuration. Both of these values are defined in the
      include/linux/mxsfb.h file.
      
      The driver interprets these values and configures the LCD controller
      accordingly. Yet X11 only has access to the standard values for this
      field defined in include/uapi/linux/fb.h and thus, unlike kernel,
      omits these special values. This results in distorted image on the
      LCD.
      
      This patch moves these non-standard values into new field of the
      mxsfb_platform_data structure so the driver can in turn check this
      field instead of the video mode field for these specific portions.
      
      Moreover, this patch prefixes these values with MXSFB_SYNC_ prefix
      instead of FB_SYNC_ prefix to prevent confusion of subsequent users.
      Signed-off-by: NMarek Vasut <marex@denx.de>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Linux ARM <linux-arm-kernel@lists.infradead.org>
      Cc: Linux FBDEV <linux-fbdev@vger.kernel.org>
      Cc: Lothar Waßmann <LW@karo-electronics.de>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Tested-by: NFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      6a15075e