diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-20 18:40:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-20 18:40:44 -0500 |
commit | 82b51734b4f228c76b6064b6e899d9d3d4c17c1a (patch) | |
tree | 0f8735944ab146713dba402261b4c7cc5629d02f /arch/arm | |
parent | 15c81026204da897a05424c79263aea861a782cc (diff) | |
parent | 883c057367014d20a14b5054e4eb0d81ce3bea5c (diff) |
Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull ARM64 updates from Catalin Marinas:
- CPU suspend support on top of PSCI (firmware Power State Coordination
Interface)
- jump label support
- CMA can now be enabled on arm64
- HWCAP bits for crypto and CRC32 extensions
- optimised percpu using tpidr_el1 register
- code cleanup
* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (42 commits)
arm64: fix typo in entry.S
arm64: kernel: restore HW breakpoint registers in cpu_suspend
jump_label: use defined macros instead of hard-coding for better readability
arm64, jump label: optimize jump label implementation
arm64, jump label: detect %c support for ARM64
arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions
arm64: move encode_insn_immediate() from module.c to insn.c
arm64: introduce interfaces to hotpatch kernel and module code
arm64: introduce basic aarch64 instruction decoding helpers
arm64: dts: Reduce size of virtio block device for foundation model
arm64: Remove unused __data_loc variable
arm64: Enable CMA
arm64: Warn on NULL device structure for dma APIs
arm64: Add hwcaps for crypto and CRC32 extensions.
arm64: drop redundant macros from read_cpuid()
arm64: Remove outdated comment
arm64: cmpxchg: update macros to prevent warnings
arm64: support single-step and breakpoint handler hooks
ARM64: fix framepointer check in unwind_frame
ARM64: check stack pointer in get_wchan
...
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/kvm/arm.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 2a700e00528d..b18165ca1d38 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/cpu.h> | 19 | #include <linux/cpu.h> |
20 | #include <linux/cpu_pm.h> | ||
20 | #include <linux/errno.h> | 21 | #include <linux/errno.h> |
21 | #include <linux/err.h> | 22 | #include <linux/err.h> |
22 | #include <linux/kvm_host.h> | 23 | #include <linux/kvm_host.h> |
@@ -853,6 +854,33 @@ static struct notifier_block hyp_init_cpu_nb = { | |||
853 | .notifier_call = hyp_init_cpu_notify, | 854 | .notifier_call = hyp_init_cpu_notify, |
854 | }; | 855 | }; |
855 | 856 | ||
857 | #ifdef CONFIG_CPU_PM | ||
858 | static int hyp_init_cpu_pm_notifier(struct notifier_block *self, | ||
859 | unsigned long cmd, | ||
860 | void *v) | ||
861 | { | ||
862 | if (cmd == CPU_PM_EXIT) { | ||
863 | cpu_init_hyp_mode(NULL); | ||
864 | return NOTIFY_OK; | ||
865 | } | ||
866 | |||
867 | return NOTIFY_DONE; | ||
868 | } | ||
869 | |||
870 | static struct notifier_block hyp_init_cpu_pm_nb = { | ||
871 | .notifier_call = hyp_init_cpu_pm_notifier, | ||
872 | }; | ||
873 | |||
874 | static void __init hyp_cpu_pm_init(void) | ||
875 | { | ||
876 | cpu_pm_register_notifier(&hyp_init_cpu_pm_nb); | ||
877 | } | ||
878 | #else | ||
879 | static inline void hyp_cpu_pm_init(void) | ||
880 | { | ||
881 | } | ||
882 | #endif | ||
883 | |||
856 | /** | 884 | /** |
857 | * Inits Hyp-mode on all online CPUs | 885 | * Inits Hyp-mode on all online CPUs |
858 | */ | 886 | */ |
@@ -1013,6 +1041,8 @@ int kvm_arch_init(void *opaque) | |||
1013 | goto out_err; | 1041 | goto out_err; |
1014 | } | 1042 | } |
1015 | 1043 | ||
1044 | hyp_cpu_pm_init(); | ||
1045 | |||
1016 | kvm_coproc_table_init(); | 1046 | kvm_coproc_table_init(); |
1017 | return 0; | 1047 | return 0; |
1018 | out_err: | 1048 | out_err: |