- 27 Oct, 2015 1 commit
-
-
Linus Walleij authored
commit c00def71 upstream. This removes a lot of ancient cruft from the Ux500 SMP boot. Instead of the pen grab/release, just point the ROM to secondary_boot() and start the second CPU there, then send the IPI. Use our own SMP enable method. This enables us to remove the last static mapping and get both CPUs booting properly. Tested this and it just works. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Olof Johansson <olof@lixom.net> Signed-off-by:
Kevin Hilman <khilman@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 18 May, 2015 2 commits
-
-
Linus Walleij authored
The SMP startup/shutdown code relied on a static SCU base address, let's get this from the device tree instead. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Linus Walleij authored
This removes the reliance on static maps for SCU and backupram for the SMP startup of the Ux500 SoC. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 12 Dec, 2013 1 commit
-
-
Nicolas Pitre authored
We have a handy macro to replace open coded __cpuc_flush_dcache_area(() and outer_clean_range() sequences. Let's use it. No functional change. Signed-off-by:
Nicolas Pitre <nico@linaro.org> Signed-off-by:
Olof Johansson <olof@lixom.net>
-
- 14 Jul, 2013 1 commit
-
-
Paul Gortmaker authored
The __cpuinit type of throwaway sections might have made sense some time ago when RAM was more constrained, but now the savings do not offset the cost and complications. For example, the fix in commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time") is a good example of the nasty type of bugs that can be created with improper use of the various __init prefixes. After a discussion on LKML[1] it was decided that cpuinit should go the way of devinit and be phased out. Once all the users are gone, we can then finally remove the macros themselves from linux/init.h. Note that some harmless section mismatch warnings may result, since notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c) and are flagged as __cpuinit -- so if we remove the __cpuinit from the arch specific callers, we will also get section mismatch warnings. As an intermediate step, we intend to turn the linux/init.h cpuinit related content into no-ops as early as possible, since that will get rid of these warnings. In any case, they are temporary and harmless. This removes all the ARM uses of the __cpuinit macros from C code, and all __CPUINIT from assembly code. It also had two ".previous" section statements that were paired off against __CPUINIT (aka .section ".cpuinit.text") that also get removed here. [1] https://lkml.org/lkml/2013/5/20/589 Cc: Russell King <linux@arm.linux.org.uk> Cc: Will Deacon <will.deacon@arm.com> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by:
Paul Gortmaker <paul.gortmaker@windriver.com>
-
- 08 Apr, 2013 2 commits
-
-
Arnd Bergmann authored
mach/setup.h and mach/devices.h are only needed from inside of mach-ux500 now, so we can simply move them out of the include/mach directory. Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Linus Walleij authored
This removes <mach/hardware.h> and <mach/db8500-regs.h> from the Ux500, merging them into the local include "db8500-regs.h" in mach-ux500. There is some impact outside the ux500 machine, but most of it is dealt with in earlier patches. Contains portions of a clean-up patch from Arnd Bergmann. Cc: Samuel Ortiz <sameo@linux.intel.com> Cc: Ulf Hansson <ulf.hansson@linaro.org> Acked-by:
Mike Turquette <mturquette@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 26 Mar, 2013 1 commit
-
-
Catalin Marinas authored
All the calls to gic_secondary_init() pass 0 as the first argument. Since this function is called on each CPU when starting, it can be done in a platform-independent way via a CPU notifier registered by the GIC code. Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com> Acked-by:
Stephen Warren <swarren@nvidia.com> Acked-by:
Viresh Kumar <viresh.kumar@linaro.org> Acked-by:
Santosh Shilimkar <santosh.shilimkar@ti.com> Acked-by:
Rob Herring <rob.herring@calxeda.com> Acked-by:
Simon Horman <horms+renesas@verge.net.au> Tested-by:
Simon Horman <horms+renesas@verge.net.au> Acked-by:
Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Tested-by:
Dinh Nguyen <dinguyen@altera.com> Acked-by:
Nicolas Pitre <nico@linaro.org> Tested-by:
Marc Zyngier <marc.zyngier@arm.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: Sascha Hauer <kernel@pengutronix.de> Cc: David Brown <davidb@codeaurora.org> Cc: Bryan Huntsman <bryanh@codeaurora.org> Cc: Tony Lindgren <tony@atomide.com> Cc: Magnus Damm <magnus.damm@gmail.com> Cc: Shiraz Hashim <shiraz.hashim@st.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Will Deacon <will.deacon@arm.com> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: Barry Song <baohua.song@csr.com>
-
- 29 Jan, 2013 1 commit
-
-
Linus Walleij authored
This removes the file <mach/id.h> from the global kernel include scope, making it a pure mach-ux500 detail. All ASIC specifics needed by drivers shall henceforth be passed from either platform data or the device tree. Cc: Rafael J. Wysocki <rjw@sisk.pl> Acked-by:
Samuel Ortiz <sameo@linux.intel.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 12 Jan, 2013 1 commit
-
-
Rob Herring authored
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:
Rob 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>
-
- 10 Jan, 2013 2 commits
-
-
Rob Herring authored
In preparation of moving gic code to drivers/irqchip, remove the direct platform dependencies on gic_raise_softirq. Move the setup of smp_cross_call into the gic code and use arch_send_wakeup_ipi_mask function to trigger wake-up IPIs. Signed-off-by:
Rob Herring <rob.herring@calxeda.com> Cc: Russell King <linux@arm.linux.org.uk> 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> Acked-by:
Tony Lindgren <tony@atomide.com> Acked-by:
Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Magnus Damm <magnus.damm@gmail.com> Acked-by:
Viresh Kumar <viresh.kumar@linaro.org> Cc: Shiraz Hashim <shiraz.hashim@st.com> Acked-by:
Stephen Warren <swarren@nvidia.com> Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Linus Walleij <linus.walleij@linaro.org> Acked-by:
Olof Johansson <olof@lixom.net>
-
Srinidhi Kasagar authored
The commit 7d28e3ea ("ARM: ux500: wake secondary cpu via resched") makes use of schedule IPI to wake up the secondary core which seems incorrect. Rather use SGI0. Signed-off-by:
srinidhi kasagar <srinidhi.kasagar@stericsson.com> Signed-off-by:
Rob Herring <rob.herring@calxeda.com> Acked-by:
Olof Johansson <olof@lixom.net>
-
- 14 Sep, 2012 2 commits
-
-
Marc Zyngier authored
Almost each SMP platform defines pen_release to manage booting secondary CPUs. This of course clashes with the single zImage effort. Add the pen_release definition to the ARM SMP code, and remove all others. This should only be used by platforms which lack any kind of CPU power management... Reported-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Marc Zyngier <marc.zyngier@arm.com> Acked-by:
Nicolas Pitre <nico@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
Marc Zyngier authored
Convert ux500 platforms to use struct smp_operations to provide their SMP and CPU hotplug operations. Cc: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by:
Marc Zyngier <marc.zyngier@arm.com> Acked-by:
srinidhi kasagar <srinidhi.kasagar@stericsson.com> Acked-by:
Nicolas Pitre <nico@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
- 05 Sep, 2012 1 commit
-
-
Loic PALLARDY authored
Update users with cpu_is_ux540_family() to keep x540 family functional. Signed-off-by:
Loic Pallardy <loic.pallardy@stericsson.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Olof Johansson <olof@lixom.net>
-
- 09 Aug, 2012 1 commit
-
-
Linus Walleij authored
Counting the U9540 and the new U8540 as a U8500 family member does not work. Instead, split the function in two: cpu_is_u8500_family() covering U8500 and U8520 cpu_is_ux540_family() covering U9540 and U8540 This works much better in practice. Update users to keep the same behaviour. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 01 May, 2012 2 commits
-
-
Linus Walleij authored
This platform has been obsoleted and was only available inside of ST-Ericsson, no users of this code are left in the world. This deletes the core U5500 support entirely in the same manner as the obsoleted U8500 silicon was previously deleted. The cpu_is_u5500() macros that can read out the CPU ID is left until the next kernel cycle, this makes it possible to merge deletion of dependent drivers without breakage. This also has the upside of removing the mailbox driver which was our only driver that was outside the drivers/* hiearchy, now the machine directory only handles machines and nothing else. Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Rabin Vincent <rabin.vincent@stericsson.com> Cc: Jonas Aberg <jonas.aberg@stericsson.com> Cc: Per Forlin <per.forlin@stericsson.com> Cc: Ulf Hansson <ulf.hansson@stericsson.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Linus Walleij authored
This adds support for the U9540 variant of the U8500 series. This is an application processor without internal modem. This is the most basic part with ASIC ID, CPU-related fixes, IRQ list, register ranges, timer, UART, and L2 cache setup. This is based on a patch by Michel Jaouen which was rewritten to fit with the latest 3.3 kernel. ChangeLog v1->v2: deleted the irqs-db9540.h file since we expect to migrate to using Device Tree for getting the IRQs to devices. ChangeLog v2->v3: introduced a fixed virtual offset for the ROM as suggested by Arnd Bergmann. Acked-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Sebastien Pasdeloup <sebastien.pasdeloup-nonst@stericsson.com> Signed-off-by:
Michel Jaouen <michel.jaouen@stericsson.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 11 Apr, 2012 1 commit
-
-
Jonas Aaberg authored
Wake secondary cpu via resched instead of "Unknown IPI message 0x1" Signed-off-by:
Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by:
Rickard Andersson <rickard.andersson@stericsson.com> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- 23 Jan, 2012 1 commit
-
-
Will Deacon authored
It turns out that the logical CPU mapping is useful even when !CONFIG_SMP for manipulation of devices like interrupt and power controllers when running a UP kernel on a CPU other than 0. This can happen when kexecing a UP image from an SMP kernel. In the future, multi-cluster systems running AMP configurations will require something similar for mapping cluster IDs, so it makes sense to decouple this logic in preparation for this support. Acked-by:
Yang Bai <hamo.by@gmail.com> Acked-by:
Marc Zyngier <marc.zyngier@arm.com> Reported-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Will Deacon <will.deacon@arm.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 20 Oct, 2011 1 commit
-
-
Russell King authored
Rather than clipping the number of CPUs using the compile-time NR_CPUS constant, use the runtime nr_cpu_ids value instead. This allows the nr_cpus command line option to work as expected. Cc: <stable@kernel.org> Reported-by:
Mark Salter <msalter@redhat.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 17 Oct, 2011 1 commit
-
-
Will Deacon authored
This patch uses the new cpu_logical_map() macro for converting logical CPU numbers into physical numbers when dealing with the pen_release variable in the SMP boot and CPU hotplug paths. Acked-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Will Deacon <will.deacon@arm.com>
-
- 07 Jul, 2011 1 commit
-
-
Stephen Boyd authored
If an ARM system has multiple cpus in the same socket and the kernel is booted with maxcpus=1, secondary cpus are possible but not present due to how platform_smp_prepare_cpus() is called. Since most typical ARM processors don't actually support physical hotplug, initialize the present map to be equal to the possible map in generic ARM SMP code. Also, always call platform_smp_prepare_cpus() as long as max_cpus is non-zero (0 means no SMP) to allow platform code to do any SMP setup. After applying this patch it's possible to boot an ARM system with maxcpus=1 on the command line and then hotplug in secondary cpus via sysfs. This is more in line with how x86 does things. Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: David Brown <davidb@codeaurora.org> Cc: Tony Lindgren <tony@atomide.com> Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 23 May, 2011 2 commits
-
-
Linus Walleij authored
Commit e2a083dc0da9aa6437e14811198379b18cdfa7f8 "ARM: consolidate SMP cross call implementation" broke the ux500 compilation since the smp.h header declared a function called from headsmp.S. This fixes it up by declaring it locally instead. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
Rather than having each platform class provide a mach/smp.h header for smp_cross_call(), arrange for them to register the function with the core ARM SMP code instead. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 10 Jan, 2011 1 commit
-
-
Rabin Vincent authored
To allow the possiblity of building U8500 and U5500 support in the same image. Signed-off-by:
Rabin Vincent <rabin.vincent@stericsson.com> [Rebased to latest changes in Russells tree] Signed-off-by:
Linus Walleij <linus.walleij@stericsson.com>
-
- 20 Dec, 2010 6 commits
-
-
Russell King authored
There is a subtle race in the CPU hotplug code, where a CPU which has been offlined can online itself before being requested, which results in things going astray on the next online/offline cycle. What happens in the normal online/offline/online cycle is: CPU0 CPU3 requests boot of CPU3 pen_release = 3 flush cache line checks pen_release, reads 3 starts boot pen_release = -1 ... requests CPU3 offline ... ... dies ... checks pen_release, reads -1 requests boot of CPU3 pen_release = 3 flush cache line checks pen_release, reads 3 starts boot pen_release = -1 However, as the write of -1 of pen_release is not fully flushed back to memory, and the checking of pen_release is done with caches disabled, this allows CPU3 the opportunity to read the old value of pen_release: CPU0 CPU3 requests boot of CPU3 pen_release = 3 flush cache line checks pen_release, reads 3 starts boot pen_release = -1 ... requests CPU3 offline ... ... dies ... checks pen_release, reads 3 starts boot pen_release = -1 requests boot of CPU3 pen_release = 3 flush cache line Fix this by grouping the write of pen_release along with its cache line flushing code to ensure that any update to pen_release is always pushed out to physical memory. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
All platforms call trace_hardirqs_off() in their secondary startup code, so move this into the core SMP code - it doesn't need to be in the per-platform code. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
There is a certain amount of smp_prepare_cpus() which doesn't belong in the platform support code - that is, code which is invariant to the SMP implementation. Move this code into arch/arm/kernel/smp.c, and add a platform_ prefix to the original function. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
We don't need this small function as well as scu_get_core_count() Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
scu_get_core_count() never returns zero cores, so we don't need to check and correct if ncores is zero. Tegra was missing the check against NR_CPUS, leading to a potential bitfield overflow if this becomes the case. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
Russell King authored
Ensure that the number of CPUs is sanity checked before setting the number of possible CPUs. This avoids any chance of overflowing the cpu_possible bitmap. Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 19 Dec, 2010 1 commit
-
-
Jonas Aaberg authored
Signed-off-by:
Jonas Aaberg <jonas.aberg@stericsson.com> Signed-off-by:
Linus Walleij <linus.walleij@stericsson.com>
-
- 14 Dec, 2010 1 commit
-
-
Russell King authored
We don't need to re-pass the base address for the CPU interfaces to the GIC for secondary CPUs, as it will never be different from the boot CPU - and even if it was, we'd overwrite the boot CPU's base address. Get rid of this argument, and rename to gic_secondary_init(). Reviewed-by:
Catalin Marinas <catalin.marinas@arm.com> Tested-by:
Abhijeet Dharmapurikar <adharmap@codeaurora.org> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 03 Dec, 2010 1 commit
-
-
Russell King authored
This allows us to use smp_cross_call() to trigger a number of different software generated interrupts, rather than combining them all on one SGI. Recover the SGI number via do_IPI. Reviewed-by:
Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 19 Sep, 2010 1 commit
-
-
Sundar Iyer authored
Acked-by:
Linus Walleij <linus.walleij@stericsson.com> Signed-off-by:
Sundar Iyer <sundar.iyer@stericsson.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 04 May, 2010 1 commit
-
-
Rabin Vincent authored
So that the correct addresses get used on U5500. Acked-by:
Linus Walleij <linus.walleij@stericsson.com> Acked-by:
Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Signed-off-by:
Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 14 Apr, 2010 1 commit
-
-
Srinidhi Kasagar authored
This enables the l2x0 support and ensures that the secondary CPU can see the page table and secondary data at this point. Signed-off-by:
srinidhi kasagar <srinidhi.kasagar@stericsson.com> Acked-by:
Linus Walleij <linus.walleij@stericsson.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 28 Nov, 2009 1 commit
-
-
Srinidhi Kasagar authored
Adds core support for the ST-Ericsson U8500 platform. It supports memory mappings, binds to the existing modules like GIC, SCU, TWD and local timers and sets up the infrastructure for the secondary core. Reviewed-by:
Alessandro Rubini <rubini@unipv.it> Reviewed-by:
Linus Walleij <linus.walleij@stericsson.com> Signed-off-by:
srinidhi kasagar <srinidhi.kasagar@stericsson.com> Acked-by:
Andrea Gallo <andrea.gallo@stericsson.com> Signed-off-by:
Russell King <rmk+kernel@arm.linux.org.uk>
-
- 05 Nov, 2009 1 commit
-
-
Colin Tuckley authored
The platsmp.c file defines the REALVIEW_SYS_FLAGS* macros which are already present in platform.h. Just use the latter. Signed-off-by:
Colin Tuckley <colin.tuckley@arm.com> Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com>
-