On Fri, 23 May 2025, Luke Jones wrote: > On Fri, 23 May 2025, at 3:25 PM, Ilpo Järvinen wrote: > > On Fri, 23 May 2025, Luke Jones wrote: > > > >> The patch "Refactor Ally suspend/resume" introduced an > > > > The commit feea7bd6b02d ("...") > > > >> acpi_s2idle_dev_ops for use with ROG Ally which caused a build error > >> if CONFIG_SUSPEND was not defined. > >> > >> Signed-off-by: Luke Jones > >> Reported-by: kernel test robot > >> Closes: https://lore.kernel.org/oe-kbuild-all/202505090418.DaeaXe4i-lkp@intel.com/ > >> Fixes: feea7bd6b02d ("platform/x86: asus-wmi: Refactor Ally suspend/resume") > >> --- > >> drivers/platform/x86/asus-wmi.c | 9 +++++++++ > >> 1 file changed, 9 insertions(+) > >> > >> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c > >> index 27f11643a00d..087318e0d595 100644 > >> --- a/drivers/platform/x86/asus-wmi.c > >> +++ b/drivers/platform/x86/asus-wmi.c > >> @@ -5005,6 +5005,7 @@ static int asus_hotk_restore(struct device *device) > >> return 0; > >> } > >> > >> +#if defined(CONFIG_SUSPEND) > >> static void asus_ally_s2idle_restore(void) > >> { > >> if (use_ally_mcu_hack == ASUS_WMI_ALLY_MCU_HACK_ENABLED) { > >> @@ -5013,6 +5014,7 @@ static void asus_ally_s2idle_restore(void) > >> msleep(ASUS_USB0_PWR_EC0_CSEE_WAIT); > >> } > >> } > >> +#endif /* CONFIG_SUSPEND */ > > > > Move this function below asus_hotk_prepare() next to ops, so that only one > > #if block is needed for them. > > > > Done > > >> > >> static int asus_hotk_prepare(struct device *device) > >> { > >> @@ -5025,9 +5027,11 @@ static int asus_hotk_prepare(struct device *device) > >> } > >> > >> /* Use only for Ally devices due to the wake_on_ac */ > >> +#if defined(CONFIG_SUSPEND) > >> static struct acpi_s2idle_dev_ops asus_ally_s2idle_dev_ops = { > >> .restore = asus_ally_s2idle_restore, > >> }; > >> +#endif /* CONFIG_SUSPEND */ > >> > >> static const struct dev_pm_ops asus_pm_ops = { > >> .thaw = asus_hotk_thaw, > >> @@ -5060,9 +5064,11 @@ static int asus_wmi_probe(struct platform_device *pdev) > >> return ret; > >> } > >> > >> + #if defined(CONFIG_SUSPEND) > >> ret = acpi_register_lps0_dev(&asus_ally_s2idle_dev_ops); > >> if (ret) > >> pr_warn("failed to register LPS0 sleep handler in asus-wmi\n"); > >> + #endif /* CONFIG_SUSPEND */ > >> > >> return asus_wmi_add(pdev); > >> } > >> @@ -5096,7 +5102,10 @@ EXPORT_SYMBOL_GPL(asus_wmi_register_driver); > >> > >> void asus_wmi_unregister_driver(struct asus_wmi_driver *driver) > >> { > >> + #if defined(CONFIG_SUSPEND) > >> acpi_unregister_lps0_dev(&asus_ally_s2idle_dev_ops); > >> + #endif /* CONFIG_SUSPEND */ > > > > I'd have preferred these reg/unreg be solved with wrappers (see > > pmc_atom.c). > > Can do, but I don't really understand the difference it makes in this context. Should I log that CONFIG_SUSPEND was not enabled? Otherwise it's just as good as not there, right? I just want to limit the use of ifdeffery to minimum and prefer using #else + a stub over sprinkling ifdefs all over the place. And it's orthogonal whether the CONFIG_SUSPEND=n should print a warning or not. I'll take the v3. -- i.