Messages in this thread | | | From | Anup Patel <> | Date | Fri, 18 Oct 2019 08:23:59 +0530 | Subject | Re: [PATCH 06/15] riscv: cleanup the default power off implementation |
| |
On Thu, Oct 17, 2019 at 11:08 PM Christoph Hellwig <hch@lst.de> 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: Atish Patra <atish.patra@wdc.com> > --- > arch/riscv/kernel/Makefile | 1 + > arch/riscv/kernel/reset.c | 5 ++--- > arch/riscv/kernel/sbi.c | 17 +++++++++++++++++ > 3 files changed, 20 insertions(+), 3 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 d0fe623bfb8f..5e4e69859af1 100644 > --- a/arch/riscv/kernel/reset.c > +++ b/arch/riscv/kernel/reset.c > @@ -4,12 +4,11 @@ > */ > > #include <linux/reboot.h> > -#include <asm/sbi.h> > > static void default_power_off(void) > { > - sbi_shutdown(); > - while (1); > + while (1) > + wait_for_interrupt(); > } > > void (*pm_power_off)(void) = default_power_off; > 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.20.1 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
LGTM.
Reviewed-by: Anup Patel <anup@brainfault.org>
Regards, Anup
| |