Messages in this thread Patch in this message | | | Subject | Re: loongarch wakeup build error | From | Tiezhu Yang <> | Date | Thu, 30 Mar 2023 11:33:38 +0800 |
| |
On 03/30/2023 06:55 AM, Randy Dunlap wrote: > Hi, > > I don't know if this has been reported previously, so here goes. > > When CONFIG_SUSPEND is not set: > > loongarch64-linux-ld: drivers/acpi/sleep.o: in function `acpi_pm_prepare': > sleep.c:(.text+0x278): undefined reference to `loongarch_wakeup_start' > loongarch64-linux-ld: sleep.c:(.text+0x27c): undefined reference to `loongarch_wakeup_start' > loongarch64-linux-ld: sleep.c:(.text+0x27c): undefined reference to `loongarch_wakeup_start' > > A complete randconfig file is attached. >
I can reproduce this build error on LoongArch.
Here is the call trace:
acpi_pm_prepare() __acpi_pm_prepare() acpi_sleep_prepare() acpi_get_wakeup_address() loongarch_wakeup_start()
loongarch_wakeup_start() is defined in arch/loongarch/power/suspend_asm.S which is built under CONFIG_SUSPEND. In order to fix the build error, just define a empty loongarch_wakeup_start() if CONFIG_SUSPEND is not set.
diff --git a/arch/loongarch/include/asm/acpi.h b/arch/loongarch/include/asm/acpi.h index 4198753aa1d0..7b812a836a5a 100644 --- a/arch/loongarch/include/asm/acpi.h +++ b/arch/loongarch/include/asm/acpi.h @@ -39,9 +39,14 @@ extern int loongarch_acpi_suspend(void); extern int (*acpi_suspend_lowlevel)(void); extern void loongarch_suspend_enter(void);
+#ifdef CONFIG_SUSPEND +extern void loongarch_wakeup_start(void); +#else +static inline void loongarch_wakeup_start(void) {} +#endif + static inline unsigned long acpi_get_wakeup_address(void) { - extern void loongarch_wakeup_start(void); return (unsigned long)loongarch_wakeup_start; }
If the above change makes sense, I will send a formal patch later. Thanks, Tiezhu
| |