1. 30 10月, 2013 1 次提交
  2. 01 10月, 2013 1 次提交
    • L
      ARM: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down · 64270d82
      Lorenzo Pieralisi 提交于
      On the TC2 testchip, when all CPUs in a cluster enter standbywfi
      and commit a power down request, the power controller will wait
      for standbywfil2 coming from L2 cache controller to shut the
      cluster down.
      By the time all CPUs in a cluster commit a power down request
      and enter wfi, the power controller cannot backtrack, or put it
      another way, a CPU must not be allowed to complete execution
      independently of the power controller, the only way for it to
      resume properly must be upon wake-up IRQ pending and subsequent
      reset triggered from the power controller.
      
      Current MCPM back-end for TC2 disables the GIC CPU IF only when
      power down is committed through the tc2_pm_suspend() method, that
      makes sense since a suspended CPU is still online and can receive
      interrupts whereas a hotplugged CPU, since it is offline,
      migrated all IRQs and shutdown the per-CPU peripherals, hence
      their PPIs.
      
      The flaw with this reasoning is the following. If all CPUs in
      a clusters are entering a power down state either through CPU
      idle or CPU hotplug, when the last man successfully completes
      the MCPM power down sequence (and executes wfi), power controller
      waits for L2 wfi signal to quiesce the cluster and shut it down.
      If, when all CPUs are sitting in wfi, an online CPU hotplugs back
      in one of the CPUs in the cluster being shutdown, that CPU
      receives an IPI that causes wfi to complete (since tc2_pm_down()
      method does not disable the GIC CPU IF in that case - CPU being
      hotplugged out, not idle) and the power controller will never see
      the stanbywfil2 signal coming from L2 that is required for
      shutdown to happen and the system deadlocks.
      
      Further to this issue, kexec hotplugs secondary CPUs out during
      kernel reload/restart.
      Because kexec may (deliberately) trash the old kernel text, it is
      not OK for CPUs to follow the MCPM soft reboot path, since
      instructions after the WFI may have been replaced by kexec.
      
      If tc2_pm_down() does not disable the GIC cpu interface, there is a
      race between CPU powerdown in the old kernel and the IPI from the
      new kernel that triggers secondary boot, particularly if the
      powerdown is slow (due to L2 cache cleaning for example).  If the
      new kernel wins the race, the affected CPU(s) will not really be
      reset and may execute garbage after the WFI.
      
      The only solution to this problem consists in disabling the GIC
      CPU IF on a CPU committed to power down regardless of the power
      down entry method (CPU hotplug or CPU idle). This way, CPU wake-up
      is under power controller control, which prevents unexpected wfi
      exit caused by a pending IRQ.
      
      This patch moves the GIC CPU IF disable call in the TC2 MCPM
      implementation from the tc2_pm_suspend() method to the
      tc2_pm_down() method to fix the mentioned race condition(s).
      Reviewed-by: NDave Martin <Dave.Martin@arm.com>
      Tested-by: Dave Martin <Dave.Martin@arm.com> (for kexec)
      Signed-off-by: NSudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      64270d82
  3. 10 9月, 2013 1 次提交
  4. 29 8月, 2013 1 次提交
    • L
      ARM: vexpress: tc2: disable GIC CPU IF in tc2_pm_suspend · 9ee2ee0f
      Lorenzo Pieralisi 提交于
      To prevent cores from exiting wfi when they are about to be shut down
      the GIC CPU IF must be disabled so that the GIC CPU IF IRQ output line
      is not asserted to the cores. wfi completion must be prevented since,
      in absence of coordinating HW logic, if the power controller receives
      a standbywfi signal but in the meantime the processor restarts executing
      owing to a pending IRQ, the core might be reset when running in a
      non-quiescent state (eg with pending load/store transactions)
      
      Raw GIC distributor IRQ signals are routed to the power controller, that
      is capable of taking core out of reset on pending IRQs even if their GIC
      CPU IF is disabled, thus keeping the normal wfi behaviour.
      
      GIC CPU IF is restored upon CPU wake-up by the respective MCPM API
      consumers (ie CPU idle driver and suspend to RAM thread).
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      9ee2ee0f
  5. 15 8月, 2013 1 次提交
  6. 07 8月, 2013 3 次提交
  7. 23 7月, 2013 1 次提交
  8. 25 6月, 2013 1 次提交
  9. 30 5月, 2013 5 次提交
  10. 24 5月, 2013 1 次提交
  11. 26 4月, 2013 1 次提交
  12. 19 4月, 2013 2 次提交
  13. 12 4月, 2013 3 次提交
  14. 10 4月, 2013 1 次提交
  15. 21 3月, 2013 2 次提交
  16. 11 3月, 2013 1 次提交
  17. 13 1月, 2013 3 次提交
    • R
      irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h · 520f7bd7
      Rob Herring 提交于
      Now that we have GIC moved to drivers/irqchip and all GIC DT init for
      platforms using irqchip_init, move gic.h and update the remaining
      includes.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Anton Vorontsov <avorontsov@mvista.com>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Daniel Walker <dwalker@fifo99.com>
      Cc: Bryan Huntsman <bryanh@codeaurora.org>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Viresh Kumar <viresh.linux@gmail.com>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      520f7bd7
    • R
      ARM: use common irqchip_init for GIC init · 0529e315
      Rob Herring 提交于
      Convert all GIC DT initialization over to use common irqchip_init
      function.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Daniel Walker <dwalker@fifo99.com>
      Cc: Bryan Huntsman <bryanh@codeaurora.org>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Dinh Nguyen <dinguyen@altera.com>
      Cc: Viresh Kumar <viresh.linux@gmail.com>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      0529e315
    • R
      ARM: remove mach .handle_irq for GIC users · 1d5cc604
      Rob Herring 提交于
      Now that the GIC initialization sets up the handle_arch_irq pointer, we
      can remove it for all machines and make it static.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Anton Vorontsov <avorontsov@mvista.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Daniel Walker <dwalker@fifo99.com>
      Cc: Bryan Huntsman <bryanh@codeaurora.org>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Dinh Nguyen <dinguyen@altera.com>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Acked-by: NStephen Warren <swarren@nvidia.com>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Acked-by: NKukjin Kim <kgene.kim@samsung.com>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Acked-by: NOlof Johansson <olof@lixom.net>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      1d5cc604
  18. 11 1月, 2013 1 次提交
  19. 02 1月, 2013 1 次提交
  20. 25 12月, 2012 1 次提交
  21. 30 11月, 2012 1 次提交
  22. 06 11月, 2012 2 次提交
    • P
      ARM: vexpress: Remove motherboard dependencies in the DTS files · 433683a6
      Pawel Moll 提交于
      The way the VE motherboard Device Trees were constructed
      enforced naming and structure of daughterboard files. This
      patch makes it possible to simply include the motherboard
      description anywhere in the main Device Tree and retires
      the "arm,v2m-timer" alias - any of the motherboard SP804
      timers will be used instead.
      Signed-off-by: NPawel Moll <pawel.moll@arm.com>
      433683a6
    • P
      ARM: vexpress: Start using new Versatile Express infrastructure · 38669e04
      Pawel Moll 提交于
      This patch starts using all the configuration infrastructure.
      
      - generic GPIO library is forced now
      
      - sysreg GPIOs are used as MMC CD and WP information sources;
        thanks to this MMCI auxiliary data is not longer necessary
      
      - DVI muxer and mode control is removed from non-DT V2P-CA9 code
        as this is now handled by the vexpress-dvi driver
      
      - clock generators control is removed as is being handled by the
        common clock driver now
      
      - the sysreg and sysctl control is now delegated to the
        appropriate drivers and all related code was removed
      
      - NOR Flash set_vpp function has been removed as the control
        bit used does _not_ control its VPP line, but the #WP signal
        instead (which is de facto unusable in case of Linux MTD
        drivers); this also allowed the remove its DT auxiliary
        data
      
      The non-DT code defines only minimal required number of
      the config devices. Device Trees are updated to make use
      of all new features.
      Signed-off-by: NPawel Moll <pawel.moll@arm.com>
      38669e04
  23. 19 10月, 2012 1 次提交
    • P
      ARM: vexpress: Reset driver · 790440bc
      Pawel Moll 提交于
      This is a simple driver providing platform restart and power off
      functions using VE config infrastructure.
      
      By writing to the "active" attribute of the reboot or reset device,
      user can decide what if the platform is supposed to execute full power
      cycle (reboot, default) or simply assert system level reset signal.
      Signed-off-by: NPawel Moll <pawel.moll@arm.com>
      
      Conflicts:
      
      	include/linux/vexpress.h
      790440bc
  24. 25 9月, 2012 1 次提交
    • S
      arm: introduce a DTS for Xen unprivileged virtual machines · bbd6eb29
      Stefano Stabellini 提交于
      Given that the xenvm machine is based on vexpress but with an extremely
      limited selection of peripherals (the guest is supposed to use virtual
      devices instead), add "xen,xenvm" to the list of compatible machines in
      mach-vexpress.
      
      
      Changes in v3:
      
      - add comments to mark fields that are likely to be changed by the
      hypervisor.
      
      
      Changes in v2:
      
      - remove include skeleton;
      - use #address-cells = <2> and #size-cells = <2>;
      - remove the debug bootargs;
      - use memory@80000000 instead of memory;
      - remove the ranges and interrupt-map from the motherboard node;
      - set the machine compatible to "xen,xenvm-4.2", "xen,xenvm";
      - rename the dts file to xenvm-4.2.dts;
      - add "xen,xenvm" to the list of compatible DT strings to mach-vexpress.
      Signed-off-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: Pawel Moll <pawel.moll@arm.com> (v2m changes)
      bbd6eb29
  25. 15 9月, 2012 1 次提交
  26. 14 9月, 2012 2 次提交
    • A
      ARM: vexpress: remove dependency on mach/* headers · db6b672f
      Arnd Bergmann 提交于
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Pawel Moll <pawel.moll@arm.com>
      db6b672f
    • R
      ARM: move all dtb targets out of Makefile.boot · 360a0cab
      Rob Herring 提交于
      In preparation to support multi-platform kernels, move all the dtb targets
      out of the mach Makefile.boot and into the arch/arm/boot/dts/Makefile
      which is closer to the sources.
      
      DTBs are only built when CONFIG_OF is enabled and now use top level
      CONFIG_ARCH_xxx instead of chip or board specific config options.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Andrew Victor <linux@maxim.org.za>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Gregory Clement <gregory.clement@free-electrons.com>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Cc: Viresh Kumar <viresh.linux@gmail.com>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Cc: Rajeev Kumar <rajeev-dlh.kumar@st.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      360a0cab