aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-05-30Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidlsk-android-14.05.1Mark Brown
2014-05-30Merge remote-tracking branch 'lsk/v3.10/topic/configs' into linux-linaro-lsklsk-14.05.1Mark Brown
2014-05-30configs: Enable function tracingMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-30Merge remote-tracking branch 'lsk/v3.10/topic/arm64-ftrace' into ↵Mark Brown
linux-linaro-lsk Conflicts: arch/arm64/Kconfig arch/arm64/kernel/Makefile arch/arm64/kernel/hw_breakpoint.c arch/arm64/kernel/ptrace.c
2014-05-30arm64: ftrace: (bugfix) synced with ftcace interface changeAKASHI Takahiro
ftrace_init() failed since ftrace_dyn_arch_init() doesn't initialize the argument to null. This bug comes in only if arm64 ftrace is back-ported as ftrace_dyn_arch_init() interface has been changed in the merge window of 3.15. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: Add __ASSEMBLY__ guards to insn.hMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: ftrace: Add system call tracepointAKASHI Takahiro
This patch allows system call entry or exit to be traced as ftrace events, ie. sys_enter_*/sys_exit_*, if CONFIG_FTRACE_SYSCALLS is enabled. Those events appear and can be controlled under ${sysfs}/tracing/events/syscalls/ Please note that we can't trace compat system calls here because AArch32 mode does not share the same syscall table with AArch64. Just define ARCH_TRACE_IGNORE_COMPAT_SYSCALLS in order to avoid unexpected results (bogus syscalls reported or even hang-up). Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: ftrace: Add CALLER_ADDRx macrosAKASHI Takahiro
CALLER_ADDRx returns caller's address at specified level in call stacks. They are used for several tracers like irqsoff and preemptoff. Strange to say, however, they are refered even without FTRACE. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: ftrace: Add dynamic ftrace supportAKASHI Takahiro
This patch allows "dynamic ftrace" if CONFIG_DYNAMIC_FTRACE is enabled. Here we can turn on and off tracing dynamically per-function base. On arm64, this is done by patching single branch instruction to _mcount() inserted by gcc -pg option. The branch is replaced to NOP initially at kernel start up, and later on, NOP to branch to ftrace_caller() when enabled or branch to NOP when disabled. Please note that ftrace_caller() is a counterpart of _mcount() in case of 'static' ftrace. More details on architecture specific requirements are described in Documentation/trace/ftrace-design.txt. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: Add ftrace supportAKASHI Takahiro
This patch implements arm64 specific part to support function tracers, such as function (CONFIG_FUNCTION_TRACER), function_graph (CONFIG_FUNCTION_GRAPH_TRACER) and function profiler (CONFIG_FUNCTION_PROFILER). With 'function' tracer, all the functions in the kernel are traced with timestamps in ${sysfs}/tracing/trace. If function_graph tracer is specified, call graph is generated. The kernel must be compiled with -pg option so that _mcount() is inserted at the beginning of functions. This function is called on every function's entry as long as tracing is enabled. In addition, function_graph tracer also needs to be able to probe function's exit. ftrace_graph_caller() & return_to_handler do this by faking link register's value to intercept function's return path. More details on architecture specific requirements are described in Documentation/trace/ftrace-design.txt. Reviewed-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30ftrace: Add arm64 support to recordmcountAKASHI Takahiro
Recordmcount utility under scripts is run, after compiling each object, to find out all the locations of calling _mcount() and put them into specific seciton named __mcount_loc. Then linker collects all such information into a table in the kernel image (between __start_mcount_loc and __stop_mcount_loc) for later use by ftrace. This patch adds arm64 specific definitions to identify such locations. There are two types of implementation, C and Perl. On arm64, only C version is used to build the kernel now that CONFIG_HAVE_C_RECORDMCOUNT is on. But Perl version is also maintained. This patch also contains a workaround just in case where a header file, elf.h, on host machine doesn't have definitions of EM_AARCH64 nor R_AARCH64_ABS64. Without them, compiling C version of recordmcount will fail. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: Add 'notrace' attribute to unwind_frame() for ftraceAKASHI Takahiro
walk_stackframe() calls unwind_frame(), and if walk_stackframe() is "notrace", unwind_frame() should be also "notrace". Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30ftrace: make CALLER_ADDRx macros more genericAKASHI Takahiro
Most archs with HAVE_ARCH_CALLER_ADDR have the almost same definitions of CALLER_ADDRx(n), and so put them into linux/ftrace.h. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: is_compat_task is defined both in asm/compat.h and linux/compat.hAKASHI Takahiro
Some kernel files may include both linux/compat.h and asm/compat.h directly or indirectly. Since both header files contain is_compat_task() under !CONFIG_COMPAT, compiling them with !CONFIG_COMPAT will eventually fail. Such files include kernel/auditsc.c, kernel/seccomp.c and init/do_mountfs.c (do_mountfs.c may read asm/compat.h via asm/ftrace.h once ftrace is implemented). So this patch proactively 1) removes is_compat_task() under !CONFIG_COMPAT from asm/compat.h 2) replaces asm/compat.h to linux/compat.h in kernel/*.c, but asm/compat.h is still necessary in ptrace.c and process.c because they use is_compat_thread(). Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit fd92d4a54a069953b4679958121317f2a25389cd) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: arch/arm64/kernel/hw_breakpoint.c
2014-05-30arm64: Add regs_return_value() in syscall.hAKASHI Takahiro
This macro, regs_return_value, is used mainly for audit to record system call's results, but may also be used in test_kprobes.c. Acked-by: Will Deacon <will.deacon@arm.com> Acked-by: Richard Guy Briggs <rgb@redhat.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit d34a3ebd8d25cf691a94fae66a957a480cf46430) Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30arm64: split syscall_trace() into separate functions for enter/exitAKASHI Takahiro
As done in arm, this change makes it easy to confirm we invoke syscall related hooks, including syscall tracepoint, audit and seccomp which would be implemented later, in correct order. That is, undoing operations in the opposite order on exit that they were done on entry. Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 3157858feff89196635b01495d5ec9ebe206639e) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: arch/arm64/kernel/ptrace.c
2014-05-30arm64: make a single hook to syscall_trace() for all syscall featuresAKASHI Takahiro
Currently syscall_trace() is called only for ptrace. With additional TIF_xx flags defined, it is now called in all the cases of audit, ftrace and seccomp in addition to ptrace. Acked-by: Richard Guy Briggs <rgb@redhat.com> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 449f81a4da4d99980064943d504bb19d07e86aec) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: arch/arm64/kernel/entry.S
2014-05-30Merge remote-tracking branch 'lsk/v3.10/topic/arm64-hugepages' into ↵Mark Brown
linux-linaro-lsk
2014-05-30arm64: mm: fix pmd_write CoW brokennessWill Deacon
Commit 9c7e535fcc17 ("arm64: mm: Route pmd thp functions through pte equivalents") changed the pmd manipulator and accessor functions to convert the target pmd to a pte, process it with the pte functions, then convert it back. Along the way, we gained support for PTE_WRITE, however this is completely ignored by set_pmd_at, and so we fail to set the PMD_SECT_RDONLY for PMDs, resulting in all sorts of lovely failures (like CoW not working). Partially reverting the offending commit (by making use of PMD_SECT_RDONLY explicitly for pmd_{write,wrprotect,mkwrite} functions) leads to further issues because pmd_write can then return potentially incorrect values for page table entries marked as RDONLY, leading to BUG_ON(pmd_write(entry)) tripping under some THP workloads. This patch fixes the issue by routing set_pmd_at through set_pte_at, which correctly takes the PTE_WRITE flag into account. Given that THP mappings are always anonymous, the additional cache-flushing code in __sync_icache_dcache won't impose any significant overhead as the flush will be skipped. Cc: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Steve Capper <steve.capper@arm.com> Tested-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> (cherry picked from commit ceb218359de22e70980801d4fa04fffbfc44adb8) Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-30Merge remote-tracking branch 'lsk/v3.10/topic/configs' into linux-linaro-lskMark Brown
2014-05-30configs: Enable ARMv8 PSCI based cpuidleMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-30Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-30Merge remote-tracking branch 'lsk/v3.10/topic/arm64-cpuidle' into ↵Mark Brown
linux-linaro-lsk Conflicts: drivers/cpuidle/Makefile
2014-05-29cpuidle: Add cpumask to ease backportingMark Brown
To make backporting a little easier provide a cpumask variable in the driver struct - the core won't do anything with it but it's less code to maintain. Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-29arm64: boot: dts: update rtsm aemv8 dts with PSCI and idle statesLorenzo Pieralisi
This patch updates the RTSM dts file with PSCI bindings and nodes describing the AEMv8 model idle states parameters. PSCI function IDs compliancy with PSCI v0.2 is still under development so this patch provides PSCI function IDs for demonstration purposes only. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-29drivers: cpuidle: CPU idle ARM64 driverLorenzo Pieralisi
This patch implements a generic CPU idle driver for ARM64 machines. It relies on the DT idle states infrastructure to initialize idle states count and respective parameters. Current code assumes the driver is managing idle states on all possible CPUs but can be easily generalized to support heterogenous systems and build cpumasks at runtime using MIDRs or DT cpu nodes compatible properties. Suspend back-ends (eg PSCI) must register a suspend initializer with the CPU idle driver so that the suspend backend call can be detected, and the driver code can call the back-end infrastructure to complete the suspend backend initialization. Idle state index 0 is always initialized as a simple wfi state, ie always considered present and functional on all ARM64 platforms. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: drivers/cpuidle/Kconfig drivers/cpuidle/Makefile
2014-05-29arm64: add PSCI CPU_SUSPEND based cpu_suspend supportLorenzo Pieralisi
This patch implements the cpu_suspend cpu operations method through the PSCI CPU_SUSPEND API. The PSCI implementation translates the idle state index passed by the cpu_suspend core call into a valid PSCI state according to the PSCI states initialized at boot by the PSCI suspend backend. Entry point is set to cpu_resume physical address, that represents the default kernel execution address following a CPU reset. Idle state indices missing a DT node description are initialized to power state standby WFI so that if called by the idle driver they provide the default behaviour. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-29drivers: cpuidle: implement OF based idle states infrastructureLorenzo Pieralisi
On most common ARM systems, the low-power states a CPU can be put into are not discoverable in HW and require device tree bindings to describe the respective power domains, power down protocol and idle states parameters. In order to enable DT based idle states and configure idle drivers, this patch implements the bulk infrastructure required to parse the device tree idle states bindings and initialize the corresponding CPUidle driver states data. Code that initializes idle states checks the CPU idle driver cpumask so that multiple CPU idle drivers can be initialized through it in the kernel. The CPU idle driver cpumask defines which idle states should be considered valid for the driver, ie idle states that are valid on a set of cpus the idle driver manages. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: drivers/cpuidle/Kconfig
2014-05-28Merge remote-tracking branch 'lsk/v3.10/topic/arm64-ptrace' into HEADMark Brown
2014-05-27Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-27Merge remote-tracking branch 'lsk/v3.10/topic/configs' into linux-linaro-lskMark Brown
2014-05-27config: Enable cpufreq for vexpress64Mark Brown
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-27Merge remote-tracking branch 'lsk/v3.10/topic/arm64-bl-cpufreq' into ↵Mark Brown
linux-linaro-lsk Conflicts: arch/arm64/Kconfig drivers/cpufreq/Kconfig.arm
2014-05-27cpufreq: Enable big.LITTLE cpufreq driver on arm64v3.10/topic/arm64-bl-cpufreqMark Brown
There are arm64 big.LITTLE systems so enable the big.LITTLE cpufreq driver. While IKS is not available for these systems the driver is still useful since it manages clusters with shared frequencies which is the common case for these systems. Long term combining the cpufreq-cpu0 and big.LITTLE drivers may be a more sensible option but that is substantially more complex especially in the case of IKS. Signed-off-by: Mark Brown <broonie@linaro.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> (cherry picked from commit 4920ab84979d8cd2eb7e3c4fefcc924efabf1cb2) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: drivers/cpufreq/Kconfig.arm
2014-05-27arm64: Add big.LITTLE switcher stubMark Brown
The big.LITTLE cpufreq driver is useful on arm64 big.LITTLE systems even without IKS support since it implements support for clusters with shared clocks (a common big.LITTLE configuration). In order to allow it to be built provide the non-IKS stubs for arm64, enabling cpufreq with all the cores available. It may make sense to make an asm-generic version of these stubs instead but given that there's only likely to be these two architectures using the code and asm-generic stubs also need per architecture updates it's probably more trouble than it's worth. Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-27arm64: Enable OPPMark Brown
Upstream OPP has been converted into a selectable symbol by commit 049d595a4db3b (PM / OPP: Make OPP invisible to users in Kconfig) however for v3.10 it is less invasive to follow the practice in v3.10. Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-26Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidlsk-android-14.05Alex Shi
2014-05-26Merge branch 'v3.10/topic/arm64-misc' into linux-linaro-lsklsk-14.05Alex Shi
For armv8 clock getting failure bug.
2014-05-26Revert "arm64: init: Move of_clk_init to time_init"Alex Shi
This reverts commit 638b6642b041f83802ea5d7ca68b45ce508bbc5c. Since time is close to 14.05 release, we revert this commit for a quick fix to clock missing bug on armv8: [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:64 nr_irqs:64 0 [ 0.000000] vexpress-osc: Failed to obtain config func for node '/smb/motherboard/mcc/osc@1'! Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-05-24Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-24Merge remote-tracking branch 'lsk/v3.10/topic/arm64-misc' into linux-linaro-lskMark Brown
Conflicts: arch/arm64/Kconfig
2014-05-24arm64: Clean up the default pgprot settingCatalin Marinas
The primary aim of this patchset is to remove the pgprot_default and prot_sect_default global variables and rely strictly on predefined values. The original goal was to be able to run SMP kernels on UP hardware by not setting the Shareability bit. However, it is unlikely to see UP ARMv8 hardware and even if we do, the Shareability bit is no longer assumed to disable cacheable accesses. A side effect is that the device mappings now have the Shareability attribute set. The hardware, however, should ignore it since Device accesses are always Outer Shareable. Following the removal of the two global variables, there is some PROT_* macro reshuffling and cleanup, including the __PAGE_* macros (replaced by PAGE_*). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Will Deacon <will.deacon@arm.com> (cherry picked from commit a501e32430d4232012ab708b8f0ce841f29e0f02) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: arch/arm64/include/asm/io.h arch/arm64/include/asm/pgtable.h
2014-05-24Merge remote-tracking branch 'lsk/v3.10/topic/arm64-dma' into ↵Mark Brown
lsk-v3.10-arm64-misc Conflicts: arch/arm64/Kconfig arch/arm64/mm/dma-mapping.c mm/Kconfig
2014-05-23arm64: add early_ioremap supportMark Salter
Add support for early IO or memory mappings which are needed before the normal ioremap() is usable. This also adds fixmap support for permanent fixed mappings such as that used by the earlyprintk device register region. Signed-off-by: Mark Salter <msalter@redhat.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Borislav Petkov <borislav.petkov@amd.com> Cc: Dave Young <dyoung@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit bf4b558eba920a38f91beb5ee62a8ce2628c92f7) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: arch/arm64/Kconfig arch/arm64/mm/ioremap.c
2014-05-23mm: create generic early_ioremap() supportMark Salter
This patch creates a generic implementation of early_ioremap() support based on the existing x86 implementation. early_ioremp() is useful for early boot code which needs to temporarily map I/O or memory regions before normal mapping functions such as ioremap() are available. Some architectures have optional MMU. In the no-MMU case, the remap functions simply return the passed in physical address and the unmap functions do nothing. Signed-off-by: Mark Salter <msalter@redhat.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: H. Peter Anvin <hpa@zytor.com> Cc: Borislav Petkov <borislav.petkov@amd.com> Cc: Dave Young <dyoung@redhat.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 9e5c33d7aeeef62e5fa7e74f94432685bd03026b) Signed-off-by: Mark Brown <broonie@linaro.org> Conflicts: mm/Kconfig mm/Makefile
2014-05-23add generic fixmap.hMark Salter
Many architectures provide an asm/fixmap.h which defines support for compile-time 'special' virtual mappings which need to be made before paging_init() has run. This support is also used for early ioremap on x86. Much of this support is identical across the architectures. This patch consolidates all of the common bits into asm-generic/fixmap.h which is intended to be included from arch/*/include/asm/fixmap.h. Signed-off-by: Mark Salter <msalter@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Ralf Baechle <ralf@linux-mips.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Richard Kuo <rkuo@codeaurora.org> Cc: James Hogan <james.hogan@imgtec.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jeff Dike <jdike@addtoit.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Richard Weinberger <richard@nod.at> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jonas Bonn <jonas.bonn@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit d57c33c5daa4efa9e4d303bd0faf868080b532be) Signed-off-by: Mark Brown <broonie@linaro.org>
2014-05-23Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidMark Brown
2014-05-23Merge remote-tracking branch 'lsk/v3.10/topic/arm64-hugepages' into ↵Mark Brown
linux-linaro-lsk