Messages in this thread Patch in this message | | | Date | Thu, 31 Oct 2019 16:56:31 -0700 (PDT) | From | Paul Walmsley <> | Subject | Re: [PATCH 04/12] riscv: cleanup the default power off implementation |
| |
On Mon, 28 Oct 2019, Christoph Hellwig wrote:
> Move the sbi poweroff to a separate function and file that is only > compiled if CONFIG_SBI is set. Provide a new default fallback > power off that just sits in a wfi loop to save some power. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > Reviewed-by: Anup Patel <anup@brainfault.org> > Reviewed-by: Atish Patra <atish.patra@wdc.com>
And here's the other part of this patch, queued for v5.5-rc1.
- Paul
From: Christoph Hellwig <hch@lst.de> Date: Mon, 28 Oct 2019 13:10:35 +0100 Subject: [PATCH] riscv: cleanup the default power off implementation
Move the sbi poweroff to a separate function and file that is only compiled if CONFIG_SBI is set.
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Atish Patra <atish.patra@wdc.com> [paul.walmsley@sifive.com: split the WFI fix into a separate patch] Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> --- arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/reset.c | 2 -- arch/riscv/kernel/sbi.c | 17 +++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 arch/riscv/kernel/sbi.c
diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile index 696020ff72db..d8c35fa93cc6 100644 --- a/arch/riscv/kernel/Makefile +++ b/arch/riscv/kernel/Makefile @@ -41,5 +41,6 @@ obj-$(CONFIG_DYNAMIC_FTRACE) += mcount-dyn.o obj-$(CONFIG_PERF_EVENTS) += perf_event.o obj-$(CONFIG_PERF_EVENTS) += perf_callchain.o obj-$(CONFIG_HAVE_PERF_REGS) += perf_regs.o +obj-$(CONFIG_RISCV_SBI) += sbi.o clean: diff --git a/arch/riscv/kernel/reset.c b/arch/riscv/kernel/reset.c index 485be426d9b1..ee5878d968cc 100644 --- a/arch/riscv/kernel/reset.c +++ b/arch/riscv/kernel/reset.c @@ -5,11 +5,9 @@ #include <linux/reboot.h> #include <linux/pm.h> -#include <asm/sbi.h> static void default_power_off(void) { - sbi_shutdown(); while (1) wait_for_interrupt(); } diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c new file mode 100644 index 000000000000..f6c7c3e82d28 --- /dev/null +++ b/arch/riscv/kernel/sbi.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <linux/init.h> +#include <linux/pm.h> +#include <asm/sbi.h> + +static void sbi_power_off(void) +{ + sbi_shutdown(); +} + +static int __init sbi_init(void) +{ + pm_power_off = sbi_power_off; + return 0; +} +early_initcall(sbi_init); -- 2.24.0.rc0
| |