From: james.morse@arm.com (James Morse)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 00/14] arm64: kernel: Add support for hibernate/suspend-to-disk
Date: Wed, 27 Apr 2016 17:46:59 +0100 [thread overview]
Message-ID: <1461775633-29715-1-git-send-email-james.morse@arm.com> (raw)
Hi all,
This is the today's version of hibernate for arm64, based on arm64's
for-next/core with latest commit 6a1f54711447 ("arm64: acpi: add acpi=on
cmdline option to prefer ACPI boot over DT").
Patch 6 will conflict with Sudeep's cpu notifier fix that landed in rc4:
> 06a71a24bae5 ("arm64: KVM: unregister notifiers in hyp mode teardown path").
"arm64: kvm: allows kvm cpu hotplug" in this series removes the cpu hotplug
notifiers, instead depending on the notifier in core kvm code to use the
provided hardware enable/disable functions.
The resolution is to remove the cpu-hotplug notifier register and unregister
code, but leave the low power 'cpu_pm' notifier as it is after Sudeep's patch.
This series can be retrieved from:
git://linux-arm.org/linux-jm.git -b hibernate/v9
Changes since v8:
* Moved hyp-gone code out from 'arm64: kvm: allows kvm cpu hotplug'
* Added break before make to the two ttbr1 switches in hibernate-asm.S
* Added comments to hibernate-asm.S about where this executes from, and where
* its data is
* Removed comments referring to el2_setup() (missed from previous version)
* Replaced set_p?d() for p?d_populate() equivalents
* Added isb to create_safe_exec_page() switch
* Replaced more p?d_val()s with p?d_none()
* Added comment about masking out RDONLY bit
* Wrapped get_safe_page() calls with p?d_none() to avoid leaking memory if
these levels are merged.
Changes since v7:
* Squashed 'Prevent resume from a different kernel version' into the main patch
* Removed el2_setup() address details from the arch-header, added the physical
address of __hyp_stub_vectors.
* Removed patch "el2_setup() to accept sctlr_el1 as an argument"
* Removed el2_setup cleaning from hibernate-asm.S
* Removed code checking hyp support is the same
* Moved the kvm-torn-down guest entry handling into handle_exit(),
* Added an exception type for hyp-stub to return to any kvm_call_hyp() caller
* Removed the patch moving do_el2_call, as now kexec_reset can't use
kvm_call_hyp() against the hyp-stub.
* Removed comments describing 'special' x0 values for hvc in terms of PAGE_SIZE
* Added copyright header to hibernate-asm.S
* Split shared dsb around hibernate-asm.S PoU cleaning and icache-invalidate
* Reworked page table copying code to use p?d_offset()
* Removed PTRS_PER_P?D checks, using p?d_none() instead
* Added !is_kernel_in_hyp_mode() checks to prevent el2 re-configure with VHE
* Changed create_safe_exec_page() prototype to receive the dst_addr, instead
of passing it back,
* Changed the allocator prototype passed to create_safe_exec_page() to reduce
the amount of casting.
* Removed use of push/pop in sleep.S
* Fixed mis-use of ENDPROC() in sleep.S
* Removed misleading comment from suspend.c about struct mm_context being
saved on the stack and restored after suspend. cpu_uninstall_idmap() does
this based on current->active_mm.
* Added kconfig depends on CPU_PM.
* Used Lorenzo's commit message for 'Refuse to hibernate if the boot cpu...'
[v8] http://www.spinics.net/lists/arm-kernel/msg499992.html
[v7] https://lwn.net/Articles/682293/
[v6] http://www.spinics.net/lists/arm-kernel/msg487467.html
[v5] http://www.spinics.net/lists/arm-kernel/msg483595.html
[v4] http://www.spinics.net/lists/arm-kernel/msg477769.html
[v3] http://www.spinics.net/lists/arm-kernel/msg463590.html
[v2] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/376450.html
[v1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/376450.html
AKASHI Takahiro (1):
arm64: kvm: allows kvm cpu hotplug
Geoff Levand (4):
arm64: Fold proc-macros.S into assembler.h
arm64: Cleanup SCTLR flags
arm64: hyp/kvm: Make hyp-stub extensible
arm64: Add new asm macro copy_page
James Morse (9):
arm64: kvm: Move lr save/restore from do_el2_call into EL1
arm64: hyp/kvm: Make hyp-stub reject kvm_call_hyp()
arm64: kernel: Rework finisher callback out of __cpu_suspend_enter()
arm64: Change cpu_resume() to enable mmu early then access sleep_sp by
va
arm64: kernel: Include _AC definition in page.h
arm64: Promote KERNEL_START/KERNEL_END definitions to a header file
PM / Hibernate: Call flush_icache_range() on pages restored in-place
arm64: kernel: Add support for hibernate/suspend-to-disk
arm64: hibernate: Refuse to hibernate if the boot cpu is offline
arch/arm/include/asm/kvm_host.h | 10 +-
arch/arm/include/asm/kvm_mmu.h | 1 +
arch/arm/kvm/arm.c | 119 +++++----
arch/arm/kvm/mmu.c | 5 +
arch/arm64/Kconfig | 8 +
arch/arm64/include/asm/assembler.h | 101 +++++++-
arch/arm64/include/asm/kvm_arm.h | 11 -
arch/arm64/include/asm/kvm_asm.h | 3 +
arch/arm64/include/asm/kvm_host.h | 13 +-
arch/arm64/include/asm/kvm_mmu.h | 1 +
arch/arm64/include/asm/memory.h | 3 +
arch/arm64/include/asm/page.h | 2 +
arch/arm64/include/asm/suspend.h | 32 ++-
arch/arm64/include/asm/sysreg.h | 19 +-
arch/arm64/include/asm/virt.h | 16 ++
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/asm-offsets.c | 10 +-
arch/arm64/kernel/head.S | 5 +-
arch/arm64/kernel/hibernate-asm.S | 176 ++++++++++++++
arch/arm64/kernel/hibernate.c | 487 +++++++++++++++++++++++++++++++++++++
arch/arm64/kernel/hyp-stub.S | 45 +++-
arch/arm64/kernel/setup.c | 1 -
arch/arm64/kernel/sleep.S | 157 +++++-------
arch/arm64/kernel/suspend.c | 102 ++++----
arch/arm64/kernel/vmlinux.lds.S | 15 ++
arch/arm64/kvm/handle_exit.c | 7 +
arch/arm64/kvm/hyp-init.S | 43 +++-
arch/arm64/kvm/hyp.S | 11 +-
arch/arm64/kvm/hyp/hyp-entry.S | 10 +-
arch/arm64/kvm/reset.c | 14 ++
arch/arm64/mm/cache.S | 2 -
arch/arm64/mm/proc-macros.S | 98 --------
arch/arm64/mm/proc.S | 56 ++---
kernel/power/swap.c | 18 ++
34 files changed, 1209 insertions(+), 393 deletions(-)
create mode 100644 arch/arm64/kernel/hibernate-asm.S
create mode 100644 arch/arm64/kernel/hibernate.c
delete mode 100644 arch/arm64/mm/proc-macros.S
--
2.8.0.rc3
next reply other threads:[~2016-04-27 16:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-27 16:46 James Morse [this message]
2016-04-27 16:47 ` [PATCH v9 01/14] arm64: Fold proc-macros.S into assembler.h James Morse
2016-04-27 16:47 ` [PATCH v9 02/14] arm64: Cleanup SCTLR flags James Morse
2016-04-27 16:47 ` [PATCH v9 03/14] arm64: kvm: Move lr save/restore from do_el2_call into EL1 James Morse
2016-04-27 16:47 ` [PATCH v9 04/14] arm64: hyp/kvm: Make hyp-stub extensible James Morse
2016-04-27 16:47 ` [PATCH v9 05/14] arm64: hyp/kvm: Make hyp-stub reject kvm_call_hyp() James Morse
2016-04-27 16:47 ` [PATCH v9 06/14] arm64: kvm: allows kvm cpu hotplug James Morse
2016-04-27 16:47 ` [PATCH v9 07/14] arm64: kernel: Rework finisher callback out of __cpu_suspend_enter() James Morse
2016-04-27 16:47 ` [PATCH v9 08/14] arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va James Morse
2016-04-27 16:47 ` [PATCH v9 09/14] arm64: kernel: Include _AC definition in page.h James Morse
2016-04-27 16:47 ` [PATCH v9 10/14] arm64: Promote KERNEL_START/KERNEL_END definitions to a header file James Morse
2016-04-27 16:47 ` [PATCH v9 11/14] arm64: Add new asm macro copy_page James Morse
2016-04-27 16:47 ` [PATCH v9 12/14] PM / Hibernate: Call flush_icache_range() on pages restored in-place James Morse
2016-04-28 12:15 ` Will Deacon
2016-04-28 12:23 ` James Morse
2016-04-28 12:27 ` Will Deacon
2016-04-27 16:47 ` [PATCH v9 13/14] arm64: kernel: Add support for hibernate/suspend-to-disk James Morse
2016-04-28 9:26 ` Catalin Marinas
2016-04-27 16:47 ` [PATCH v9 14/14] arm64: hibernate: Refuse to hibernate if the boot cpu is offline James Morse
2016-04-28 12:40 ` [PATCH v9 00/14] arm64: kernel: Add support for hibernate/suspend-to-disk Will Deacon
2016-04-28 17:31 ` James Morse
2016-04-28 18:37 ` Will Deacon
2016-04-29 17:27 ` [PATCH] arm64: kvm: Fix kvm teardown for systems using the extended idmap James Morse
2016-05-02 12:05 ` Marc Zyngier
2016-05-03 8:36 ` Christoffer Dall
2016-05-03 8:41 ` Marc Zyngier
2016-05-03 8:57 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461775633-29715-1-git-send-email-james.morse@arm.com \
--to=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).