Skip to content

Commit

Permalink
riscv: set default pm_power_off to NULL
Browse files Browse the repository at this point in the history
commit f2928e2 upstream.

Set pm_power_off to NULL like on all other architectures, check if it
is set in machine_halt() and machine_power_off() and fallback to
default_power_off if no other power driver got registered.

This brings riscv architecture inline with all other architectures,
and allows to reuse exiting power drivers unmodified.

Kernels without legacy SBI v0.1 extensions (CONFIG_RISCV_SBI_V01 is
not set), do not set pm_power_off to sbi_shutdown(). There is no
support for SBI v0.3 system reset extension either. This prevents
using gpio_poweroff on SiFive HiFive Unmatched.

Tested on SiFive HiFive unmatched, with a dtb specifying gpio-poweroff
node and kernel complied without CONFIG_RISCV_SBI_V01.

BugLink: https://bugs.launchpad.net/bugs/1942806
Signed-off-by: Dimitri John Ledkov <dimitri.ledkov@canonical.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Tested-by: Ron Economos <w6rz@comcast.net>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
xnox authored and gregkh committed Aug 17, 2022
1 parent abedd69 commit c840d62
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions arch/riscv/kernel/reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ static void default_power_off(void)
wait_for_interrupt();
}

void (*pm_power_off)(void) = default_power_off;
void (*pm_power_off)(void) = NULL;
EXPORT_SYMBOL(pm_power_off);

void machine_restart(char *cmd)
Expand All @@ -23,10 +23,16 @@ void machine_restart(char *cmd)

void machine_halt(void)
{
pm_power_off();
if (pm_power_off != NULL)
pm_power_off();
else
default_power_off();
}

void machine_power_off(void)
{
pm_power_off();
if (pm_power_off != NULL)
pm_power_off();
else
default_power_off();
}

0 comments on commit c840d62

Please sign in to comment.