aboutsummaryrefslogtreecommitdiff
path: root/arch/arm64
AgeCommit message (Collapse)Author
2014-06-18arm64: fix pud_huge() for 2-level pagetablesMark Salter
commit 4797ec2dc83a43be35bad56037d1b53db9e2b5d5 upstream. The following happens when trying to run a kvm guest on a kernel configured for 64k pages. This doesn't happen with 4k pages: BUG: failure at include/linux/mm.h:297/put_page_testzero()! Kernel panic - not syncing: BUG! CPU: 2 PID: 4228 Comm: qemu-system-aar Tainted: GF 3.13.0-0.rc7.31.sa2.k32v1.aarch64.debug #1 Call trace: [<fffffe0000096034>] dump_backtrace+0x0/0x16c [<fffffe00000961b4>] show_stack+0x14/0x1c [<fffffe000066e648>] dump_stack+0x84/0xb0 [<fffffe0000668678>] panic+0xf4/0x220 [<fffffe000018ec78>] free_reserved_area+0x0/0x110 [<fffffe000018edd8>] free_pages+0x50/0x88 [<fffffe00000a759c>] kvm_free_stage2_pgd+0x30/0x40 [<fffffe00000a5354>] kvm_arch_destroy_vm+0x18/0x44 [<fffffe00000a1854>] kvm_put_kvm+0xf0/0x184 [<fffffe00000a1938>] kvm_vm_release+0x10/0x1c [<fffffe00001edc1c>] __fput+0xb0/0x288 [<fffffe00001ede4c>] ____fput+0xc/0x14 [<fffffe00000d5a2c>] task_work_run+0xa8/0x11c [<fffffe0000095c14>] do_notify_resume+0x54/0x58 In arch/arm/kvm/mmu.c:unmap_range(), we end up doing an extra put_page() on the stage2 pgd which leads to the BUG in put_page_testzero(). This happens because a pud_huge() test in unmap_range() returns true when it should always be false with 2-level pages tables used by 64k pages. This patch removes support for huge puds if 2-level pagetables are being used. Signed-off-by: Mark Salter <msalter@redhat.com> [catalin.marinas@arm.com: removed #ifndef around PUD_SIZE check] Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-18arm64: 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> (cherry picked from commit LSK 1eb3e5188edfffca2e5ed9e28e77e4ea4036ea45) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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> (cherry picked from LSK commit 4c9563dfc768f176de0c9cdf398ec8a108f374d0) Signed-off-by: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/Kconfig
2014-06-18arm64: Enable HMP for ARMv8Mark Hambleton
Signed-off-by: Mark Hambleton <mahamble@broadcom.com> Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit 8ecd48091c61213762407f5ce02d3fa4ede66402) Signed-off-by: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/kernel/topology.c
2014-06-18arm64: Add scheduler multicore and SMT Kconfig optionsMark Brown
Enable additional use of additional scheduler features with the topology information. Reported-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit d474d10a1a827e0b3402943a62a97d95c0eabf8d) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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> (cherry picked from LSK commit 0cc5286fc3ca12ec0d388e4d8c08a66b40d52233) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: Add __ASSEMBLY__ guards to insn.hMark Brown
Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from LSK commit d10fbc12d0c4c6e872de2a342b88b896e430cea3) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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> (cherry picked from LSK commit ea76465b82b819230ab16ab8ab1b460c09ed5b3b) Signed-off-by: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/kernel/Makefile
2014-06-18arm64: 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> (cherry picked from LSK commit 95d7e5533398803e3ced340771cb3461c9443407) Signed-off-by: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/Kconfig
2014-06-18arm64: 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> (cherry picked from LSK commit fc0c93936ae80bdffac7499a820d7e5105ef44d5) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18ftrace: 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> (cherry picked from LSK commit 6470430d6d73aa46e00cc28ee732b292538419c9) Signed-off-by: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/Kconfig
2014-06-18arm64: 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> (cherry picked from LSK commit 8370369c5c33b9d573575249f080a905323d7eb4) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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: Alex Shi <alex.shi@linaro.org> Conflicts: arch/arm64/kernel/entry.S
2014-06-18arm64: topology: Provide relative power numbers for coresMark Brown
Provide performance numbers to the scheduler to help it fill the cores in the system on big.LITTLE systems. With the current scheduler this may perform poorly for applications that try to do OpenMP style work over all cores but should help for more common workloads. The current 32 bit ARM implementation provides a similar estimate so this helps ensure that work to improve big.LITTLE systems on ARMv7 systems performs similarly on ARMv8 systems. The power numbers are the same as for ARMv7 since it seems that the expected differential between the big and little cores is very similar on both ARMv7 and ARMv8. In both ARMv7 and ARMv8 cases the numbers were based on the published DMIPS numbers. These numbers are just an initial and basic approximation for use with the current scheduler, it is likely that both experience with silicon and ongoing work on improving the scheduler will lead to further tuning or will tune automatically at runtime and so make the specific choice of numbers here less critical. Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from LSK commit a84034fddb11f30849dd7ce050689d615995c0d2) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: topology: Tell the scheduler about the relative power of coresMark Brown
In heterogeneous systems like big.LITTLE systems the scheduler will be able to make better use of the available cores if we provide power numbers to it indicating their relative performance. Do this by parsing the CPU nodes in the DT. This code currently has no effect as no information on the relative performance of the cores is provided. Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from LSK commit 474bddad45eeb9457f5fae2a0cc133372a61a64c) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: 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: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: topology: Add support for topology DT bindingsMark Brown
Add support for parsing the explicit topology bindings to discover the topology of the system. Since it is not currently clear how to map multi-level clusters for the scheduler all leaf clusters are presented to the scheduler at the same level. This should be enough to provide good support for current systems. Signed-off-by: Mark Brown <broonie@linaro.org> Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> (cherry picked from commit 3252efc39608be2aac69c184559b9ae168003284) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: topology: Initialise default topology state immediatelyMark Brown
As a legacy of the way 32 bit ARM did things the topology code uses a null topology map by default and then overwrites it by mapping cores with no information to a cluster by themselves later. In order to make it simpler to reset things as part of recovering from parse failures in firmware information directly set this configuration on init. A core will always be its own sibling so there should be no risk of confusion with firmware provided information. Signed-off-by: Mark Brown <broonie@linaro.org> Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> (cherry picked from commit 8759b2d0f8067d726c269602ffe310221437ce5e) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: debug: remove noisy, pointless warningWill Deacon
Sending a SIGTRAP to a user task after execution of a BRK instruction at EL0 is fundamental to the way in which software breakpoints work and doesn't deserve a warning to be logged in dmesg. Whilst the warning can be justified from EL1, do_debug_exception will already do the right thing, so simply remove the code altogether. Cc: Sandeepa Prabhu <sandeepa.prabhu@linaro.org> Reported-by: Kyrylo Tkachov <kyrylo.tkachov@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 43683afbcb32f7b7318ac1badd6469d91fe22711) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: Use bus notifiers to set per-device coherent DMA opsCatalin Marinas
Recently, the default DMA ops have been changed to non-coherent for alignment with 32-bit ARM platforms (and DT files). This patch adds bus notifiers to be able to set the coherent DMA ops (with no cache maintenance) for devices explicitly marked as coherent via the "dma-coherent" DT property. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 6ecba8eb51b7d23fda66388a5420be7d8688b186) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: dtbs: add VGA panel descriptionRyan Harkin
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit 4cb9670f141f980afa9e68d1f44023976a166f0b) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: dts: Add panel for ARMv8 4xA53 4xA57 FVPMark Brown
This is not in mainline since the panel bindings have not yet been merged into mainline. Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit 94eb302681ca87d0078ffb88dfc6d0e4a9b1141d) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: dts: Add CPU topology properties for ARMv8 4xA53 4xA57 FVPMark Brown
This provides for discovery of the clusters using the CPU topology bindings, it is added as a separate commit to aid testing of the code for systems without explicit topology bindings. Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit d09f1f75c5e8f3b930cc3803af50c694eb903849) Signed-off-by: Alex Shi <alex.shi@linaro.org>
2014-06-18arm64: __NR_compat_syscalls fixMiklos Szeredi
commit 838977f0178334bf3d7f3e974ea3154b68979be0 upstream. This fixes commit 6290b53de025 (arm64: compat: Wire up new AArch32 syscalls) which did not update __NR_compat_syscalls accordingly. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-16Merge branch 'tracking-cortex-strings-arm64' into merge-linux-linaroAndrey Konovalov
2014-04-15Merge branch 'tracking-armlt-juno' into integration-linaro-vexpressJon Medhurst
Conflicts: arch/arm64/kernel/debug-monitors.c
2014-04-15Merge branch 'tracking-armlt-arm64' into integration-linaro-vexpressJon Medhurst
2014-04-09arm64: Switch DMA operations to non-coherent version.Liviu Dudau
Juno dev board needs non-coherent DMA ops for on-chip USB. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
2014-04-09arm64: Add Juno platform supportLiviu Dudau
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
2014-04-09arm64: Create link to include/dt-bindings to enable C preprocessor use.Liviu Dudau
DT files used in the compilation phase can be preprocessed by the C preprocessor. This requires an include/dt-bindings directory to be present in the arch/arm64/boot/dts directory. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
2014-04-09Merge tag 'arm64-upstream' of ↵Jon Medhurst
git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux into test - Documentation clarification on CPU topology and booting requirements - Additional cache flushing during boot (needed in the presence of external caches or under virtualisation) - DMA range invalidation fix for non cache line aligned buffers - Build failure fix with !COMPAT - Kconfig update for STRICT_DEVMEM
2014-04-08arm64: Fix DMA range invalidation for cache line unaligned buffersCatalin Marinas
If the buffer needing cache invalidation for inbound DMA does start or end on a cache line aligned address, we need to use the non-destructive clean&invalidate operation. This issue was introduced by commit 7363590d2c46 (arm64: Implement coherent DMA API based on swiotlb). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reported-by: Jon Medhurst (Tixy) <tixy@linaro.org>
2014-04-07arm64: Add missing Kconfig for CONFIG_STRICT_DEVMEMLaura Abbott
The Kconfig for CONFIG_STRICT_DEVMEM is missing despite being used in mmap.c. Add it. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-04-06arm64: fix !CONFIG_COMPAT build failuresMark Salter
Recent arm64 builds using CONFIG_ARM64_64K_PAGES are failing with: arch/arm64/kernel/perf_regs.c: In function ‘perf_reg_abi’: arch/arm64/kernel/perf_regs.c:41:2: error: implicit declaration of function ‘is_compat_thread’ arch/arm64/kernel/perf_event.c:1398:2: error: unknown type name ‘compat_uptr_t’ This is due to some recent arm64 perf commits with compat support: commit 23c7d70d55c6d9: ARM64: perf: add support for frame pointer unwinding in compat mode commit 2ee0d7fd36a3f8: ARM64: perf: add support for perf registers API Those patches make the arm64 kernel unbuildable if CONFIG_COMPAT is not defined and CONFIG_ARM64_64K_PAGES depends on !CONFIG_COMPAT. This patch allows the arm64 kernel to build with and without CONFIG_COMPAT. Signed-off-by: Mark Salter <msalter@redhat.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-04-05Revert "arm64: virt: ensure visibility of __boot_cpu_mode"Catalin Marinas
This reverts commit 82b2f495fba338d1e3098dde1df54944a9c19751. The __boot_cpu_mode variable is flushed in head.S after being written, therefore the additional cache flushing is no longer required. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-04-05arm64: Relax the kernel cache requirements for bootCatalin Marinas
With system caches for the host OS or architected caches for guest OS we cannot easily guarantee that there are no dirty or stale cache lines for the areas of memory written by the kernel during boot with the MMU off (therefore non-cacheable accesses). This patch adds the necessary cache maintenance during boot and relaxes the booting requirements. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-04-04Merge tag 'arm64-upstream' of ↵Jon Medhurst
git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux into HEAD - KGDB support for arm64 - PCI I/O space extended to 16M (in preparation of PCIe support patches) - Dropping ZONE_DMA32 in favour of ZONE_DMA (we only need one for the time being), together with swiotlb late initialisation to correctly setup the bounce buffer - DMA API cache maintenance support (not all ARMv8 platforms have hardware cache coherency) - Crypto extensions advertising via ELF_HWCAP2 for compat user space - Perf support for dwarf unwinding in compat mode - asm/tlb.h converted to the generic mmu_gather code - asm-generic rwsem implementation - Code clean-up
2014-04-03arm64: Update the TCR_EL1 translation granule definitions for 16K pagesCatalin Marinas
The current TCR register setting in arch/arm64/mm/proc.S assumes that TCR_EL1.TG* fields are one bit wide and bit 31 is RES1 (reserved, set to 1). With the addition of 16K pages (currently unsupported in the kernel), the TCR_EL1.TG* fields have been extended to two bits. This patch updates the corresponding Linux definitions and drops the bit 31 setting in proc.S in favour of the new macros. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reported-by: Joe Sylve <joe.sylve@gmail.com>
2014-03-31arm64: dtbs: add VGA panel descriptionRyan Harkin
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
2014-03-31arm64: dtbs: update FVP Base model filesRyan Harkin
Update the DTS files for the FVP Base models after ARM pushed updated files to their GitHub repository: https://github.com/ARM-software/arm-trusted-firmware.git Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-31arm64: dtbs: add support for FVP Foundation modelsRyan Harkin
Added support for the new FVP Foundation models. DTB files taken from ARM's GitHub repository: https://github.com/ARM-software/arm-trusted-firmware.git Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
2014-03-31arm64: dtbs: Add device trees for FVP base modelsJon Medhurst
Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-03-31arm64: Add CLCD support to the ARMv8 model platformCatalin Marinas
This patch enables CLCD support for the VE platform emulated by the ARMv8 software model. It requires DT support in the amba-clcd.c driver. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-03-31arm64: LLVMLinux: Add missing abort() for AARCH64Mark Charlebois
Add missing abort for arch aarch64. Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2014-03-31arm64: LLVMLinux: Check for NULL in futext_atomic_cmpxchg_inatomic()Mark Charlebois
futex_init passes in uaddr = 0. The LLVM optimizer will see that *uaddr is 0, set the register to xzr and compilation will fail. Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2014-03-31arm64: LLVMLinux: Remove cmpxchg warning about uninitialized return variableMark Charlebois
Make sure the return value in AARCH64 __xchg() and __cmpxchg() is initialized in the default case of the switch so that we never return an uninitialized value. Signed-off-by: Mark Charlebois <charlebm@gmail.com> Signed-off-by: Behan Webster <behanw@converseincode.com>
2014-03-31arm64: LLVMLinux: Fix inline arm64 assembly for use with clangMark Charlebois
Fix variable types for 64-bit inline assembly. Signed-off-by: Mark Charlebois <charlebm@gmail.com>