2020-04-17 12:12:27

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH 3/3] riscv: sbi: Fix undefined reference to sbi_shutdown

There is no shutdown call in SBI v0.2, only set pm_power_off
when RISCV_SBI_V01 enabled to fix following build error,

riscv64-linux-ld: arch/riscv/kernel/sbi.o: in function `sbi_power_off':
sbi.c:(.text+0xe): undefined reference to `sbi_shutdown

Fixes: efca13989250 ("RISC-V: Introduce a new config for SBI v0.1")
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/riscv/kernel/sbi.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
index 62b10a16c8d7..f383ef5672b2 100644
--- a/arch/riscv/kernel/sbi.c
+++ b/arch/riscv/kernel/sbi.c
@@ -167,6 +167,11 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,

return result;
}
+
+static void sbi_set_power_off(void)
+{
+ pm_power_off = sbi_shutdown;
+}
#else
static void __sbi_set_timer_v01(uint64_t stime_value)
{
@@ -191,6 +196,8 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,

return 0;
}
+
+static void sbi_set_power_off(void) {}
#endif /* CONFIG_RISCV_SBI_V01 */

static void __sbi_set_timer_v02(uint64_t stime_value)
@@ -540,16 +547,12 @@ static inline long sbi_get_firmware_version(void)
return __sbi_base_ecall(SBI_EXT_BASE_GET_IMP_VERSION);
}

-static void sbi_power_off(void)
-{
- sbi_shutdown();
-}

int __init sbi_init(void)
{
int ret;

- pm_power_off = sbi_power_off;
+ sbi_set_power_off();
ret = sbi_get_spec_version();
if (ret > 0)
sbi_spec_version = ret;
--
2.20.1


2020-04-17 12:44:43

by Anup Patel

[permalink] [raw]
Subject: Re: [PATCH 3/3] riscv: sbi: Fix undefined reference to sbi_shutdown

On Fri, Apr 17, 2020 at 5:40 PM Kefeng Wang <[email protected]> wrote:
>
> There is no shutdown call in SBI v0.2, only set pm_power_off
> when RISCV_SBI_V01 enabled to fix following build error,
>
> riscv64-linux-ld: arch/riscv/kernel/sbi.o: in function `sbi_power_off':
> sbi.c:(.text+0xe): undefined reference to `sbi_shutdown
>
> Fixes: efca13989250 ("RISC-V: Introduce a new config for SBI v0.1")
> Signed-off-by: Kefeng Wang <[email protected]>
> ---
> arch/riscv/kernel/sbi.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> index 62b10a16c8d7..f383ef5672b2 100644
> --- a/arch/riscv/kernel/sbi.c
> +++ b/arch/riscv/kernel/sbi.c
> @@ -167,6 +167,11 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,
>
> return result;
> }
> +
> +static void sbi_set_power_off(void)
> +{
> + pm_power_off = sbi_shutdown;
> +}
> #else
> static void __sbi_set_timer_v01(uint64_t stime_value)
> {
> @@ -191,6 +196,8 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,
>
> return 0;
> }
> +
> +static void sbi_set_power_off(void) {}
> #endif /* CONFIG_RISCV_SBI_V01 */
>
> static void __sbi_set_timer_v02(uint64_t stime_value)
> @@ -540,16 +547,12 @@ static inline long sbi_get_firmware_version(void)
> return __sbi_base_ecall(SBI_EXT_BASE_GET_IMP_VERSION);
> }
>
> -static void sbi_power_off(void)
> -{
> - sbi_shutdown();
> -}
>
> int __init sbi_init(void)
> {
> int ret;
>
> - pm_power_off = sbi_power_off;
> + sbi_set_power_off();
> ret = sbi_get_spec_version();
> if (ret > 0)
> sbi_spec_version = ret;
> --
> 2.20.1
>

Looks good to me.

Reviewed-by: Anup Patel <[email protected]>

Regards,
Anup