linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 7987/10296] drivers/platform/x86/intel/pmc/core.c:1501:17: error: implicit declaration of function 'acpi_pmtmr_register_suspend_resume_callback'
@ 2024-09-08 18:59 kernel test robot
  2024-09-08 20:01 ` [PATCH] platform/x86:intel/pmc: Encapsulate callbacks registration in CONFIG_X86_PM_TIMER check Marek Maslanka
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2024-09-08 18:59 UTC (permalink / raw)
  To: Marek Maslanka
  Cc: oe-kbuild-all, Linux Memory Management List, Daniel Lezcano,
	Hans de Goede

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   9aaeb87ce1e966169a57f53a02ba05b30880ffb8
commit: e774696b1f95cc758fa7fdf2b700733cfc7b6fb9 [7987/10296] platform/x86:intel/pmc: Enable the ACPI PM Timer to be turned off when suspended
config: x86_64-buildonly-randconfig-002-20240514 (https://download.01.org/0day-ci/archive/20240909/202409090259.6vsS5Bni-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240909/202409090259.6vsS5Bni-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409090259.6vsS5Bni-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/platform/x86/intel/pmc/core.c: In function 'pmc_core_probe':
>> drivers/platform/x86/intel/pmc/core.c:1501:17: error: implicit declaration of function 'acpi_pmtmr_register_suspend_resume_callback' [-Werror=implicit-function-declaration]
    1501 |                 acpi_pmtmr_register_suspend_resume_callback(pmc_core_acpi_pm_timer_suspend_resume,
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/platform/x86/intel/pmc/core.c: In function 'pmc_core_remove':
>> drivers/platform/x86/intel/pmc/core.c:1517:17: error: implicit declaration of function 'acpi_pmtmr_unregister_suspend_resume_callback' [-Werror=implicit-function-declaration]
    1517 |                 acpi_pmtmr_unregister_suspend_resume_callback();
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/acpi_pmtmr_register_suspend_resume_callback +1501 drivers/platform/x86/intel/pmc/core.c

  1433	
  1434	static int pmc_core_probe(struct platform_device *pdev)
  1435	{
  1436		static bool device_initialized;
  1437		struct pmc_dev *pmcdev;
  1438		const struct x86_cpu_id *cpu_id;
  1439		int (*core_init)(struct pmc_dev *pmcdev);
  1440		const struct pmc_reg_map *map;
  1441		struct pmc *primary_pmc;
  1442		int ret;
  1443	
  1444		if (device_initialized)
  1445			return -ENODEV;
  1446	
  1447		pmcdev = devm_kzalloc(&pdev->dev, sizeof(*pmcdev), GFP_KERNEL);
  1448		if (!pmcdev)
  1449			return -ENOMEM;
  1450	
  1451		pmcdev->crystal_freq = pmc_core_get_crystal_freq();
  1452	
  1453		platform_set_drvdata(pdev, pmcdev);
  1454		pmcdev->pdev = pdev;
  1455	
  1456		cpu_id = x86_match_cpu(intel_pmc_core_ids);
  1457		if (!cpu_id)
  1458			return -ENODEV;
  1459	
  1460		core_init = (int (*)(struct pmc_dev *))cpu_id->driver_data;
  1461	
  1462		/* Primary PMC */
  1463		primary_pmc = devm_kzalloc(&pdev->dev, sizeof(*primary_pmc), GFP_KERNEL);
  1464		if (!primary_pmc)
  1465			return -ENOMEM;
  1466		pmcdev->pmcs[PMC_IDX_MAIN] = primary_pmc;
  1467	
  1468		/* The last element in msr_map is empty */
  1469		pmcdev->num_of_pkgc = ARRAY_SIZE(msr_map) - 1;
  1470		pmcdev->pkgc_res_cnt = devm_kcalloc(&pdev->dev,
  1471						    pmcdev->num_of_pkgc,
  1472						    sizeof(*pmcdev->pkgc_res_cnt),
  1473						    GFP_KERNEL);
  1474		if (!pmcdev->pkgc_res_cnt)
  1475			return -ENOMEM;
  1476	
  1477		/*
  1478		 * Coffee Lake has CPU ID of Kaby Lake and Cannon Lake PCH. So here
  1479		 * Sunrisepoint PCH regmap can't be used. Use Cannon Lake PCH regmap
  1480		 * in this case.
  1481		 */
  1482		if (core_init == spt_core_init && !pci_dev_present(pmc_pci_ids))
  1483			core_init = cnp_core_init;
  1484	
  1485		mutex_init(&pmcdev->lock);
  1486		ret = core_init(pmcdev);
  1487		if (ret) {
  1488			pmc_core_clean_structure(pdev);
  1489			return ret;
  1490		}
  1491	
  1492		pmcdev->pmc_xram_read_bit = pmc_core_check_read_lock_bit(primary_pmc);
  1493		pmc_core_do_dmi_quirks(primary_pmc);
  1494	
  1495		pmc_core_dbgfs_register(pmcdev);
  1496		pm_report_max_hw_sleep(FIELD_MAX(SLP_S0_RES_COUNTER_MASK) *
  1497				       pmc_core_adjust_slp_s0_step(primary_pmc, 1));
  1498	
  1499		map = primary_pmc->map;
  1500		if (map->acpi_pm_tmr_ctl_offset)
> 1501			acpi_pmtmr_register_suspend_resume_callback(pmc_core_acpi_pm_timer_suspend_resume,
  1502								 pmcdev);
  1503	
  1504		device_initialized = true;
  1505		dev_info(&pdev->dev, " initialized\n");
  1506	
  1507		return 0;
  1508	}
  1509	
  1510	static void pmc_core_remove(struct platform_device *pdev)
  1511	{
  1512		struct pmc_dev *pmcdev = platform_get_drvdata(pdev);
  1513		const struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
  1514		const struct pmc_reg_map *map = pmc->map;
  1515	
  1516		if (map->acpi_pm_tmr_ctl_offset)
> 1517			acpi_pmtmr_unregister_suspend_resume_callback();
  1518	
  1519		pmc_core_dbgfs_unregister(pmcdev);
  1520		pmc_core_clean_structure(pdev);
  1521	}
  1522	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] platform/x86:intel/pmc: Encapsulate callbacks registration in CONFIG_X86_PM_TIMER check
  2024-09-08 18:59 [linux-next:master 7987/10296] drivers/platform/x86/intel/pmc/core.c:1501:17: error: implicit declaration of function 'acpi_pmtmr_register_suspend_resume_callback' kernel test robot
@ 2024-09-08 20:01 ` Marek Maslanka
  2024-09-09 11:40   ` Hans de Goede
  0 siblings, 1 reply; 3+ messages in thread
From: Marek Maslanka @ 2024-09-08 20:01 UTC (permalink / raw)
  To: lkp; +Cc: daniel.lezcano, hdegoede, linux-mm, mmaslanka, oe-kbuild-all

Encapsulate the code that registers and unregisters the ACPI PM Timer
suspend/resume callback to checks that CONFIG_X86_PM_TIMER is enabled.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202409090259.6vsS5Bni-lkp@intel.com/
Signed-off-by: Marek Maslanka <mmaslanka@google.com>
---
 drivers/platform/x86/intel/pmc/core.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c
index 695804ca8de4..0c6392eeacee 100644
--- a/drivers/platform/x86/intel/pmc/core.c
+++ b/drivers/platform/x86/intel/pmc/core.c
@@ -1215,6 +1215,7 @@ static bool pmc_core_is_pson_residency_enabled(struct pmc_dev *pmcdev)
 	return val == 1;
 }
 
+#ifdef CONFIG_X86_PM_TIMER
 /*
  * Enable or disable ACPI PM Timer
  *
@@ -1247,6 +1248,7 @@ static void pmc_core_acpi_pm_timer_suspend_resume(void *data, bool suspend)
 
 	pmcdev->enable_acpi_pm_timer_on_resume = suspend && enabled;
 }
+#endif
 
 static void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev)
 {
@@ -1443,9 +1445,11 @@ static int pmc_core_probe(struct platform_device *pdev)
 	struct pmc_dev *pmcdev;
 	const struct x86_cpu_id *cpu_id;
 	int (*core_init)(struct pmc_dev *pmcdev);
-	const struct pmc_reg_map *map;
 	struct pmc *primary_pmc;
 	int ret;
+#ifdef CONFIG_X86_PM_TIMER
+	const struct pmc_reg_map *map;
+#endif
 
 	if (device_initialized)
 		return -ENODEV;
@@ -1502,10 +1506,12 @@ static int pmc_core_probe(struct platform_device *pdev)
 	pm_report_max_hw_sleep(FIELD_MAX(SLP_S0_RES_COUNTER_MASK) *
 			       pmc_core_adjust_slp_s0_step(primary_pmc, 1));
 
+#ifdef CONFIG_X86_PM_TIMER
 	map = primary_pmc->map;
 	if (map->acpi_pm_tmr_ctl_offset)
 		acpi_pmtmr_register_suspend_resume_callback(pmc_core_acpi_pm_timer_suspend_resume,
-							 pmcdev);
+							    pmcdev);
+#endif
 
 	device_initialized = true;
 	dev_info(&pdev->dev, " initialized\n");
@@ -1516,11 +1522,13 @@ static int pmc_core_probe(struct platform_device *pdev)
 static void pmc_core_remove(struct platform_device *pdev)
 {
 	struct pmc_dev *pmcdev = platform_get_drvdata(pdev);
+#ifdef CONFIG_X86_PM_TIMER
 	const struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
 	const struct pmc_reg_map *map = pmc->map;
 
 	if (map->acpi_pm_tmr_ctl_offset)
 		acpi_pmtmr_unregister_suspend_resume_callback();
+#endif
 
 	pmc_core_dbgfs_unregister(pmcdev);
 	pmc_core_clean_structure(pdev);
-- 
2.46.0.469.g59c65b2a67-goog



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86:intel/pmc: Encapsulate callbacks registration in CONFIG_X86_PM_TIMER check
  2024-09-08 20:01 ` [PATCH] platform/x86:intel/pmc: Encapsulate callbacks registration in CONFIG_X86_PM_TIMER check Marek Maslanka
@ 2024-09-09 11:40   ` Hans de Goede
  0 siblings, 0 replies; 3+ messages in thread
From: Hans de Goede @ 2024-09-09 11:40 UTC (permalink / raw)
  To: Marek Maslanka, lkp, Arnd Bergmann
  Cc: daniel.lezcano, linux-mm, oe-kbuild-all

Hi Marek,

On 9/8/24 10:01 PM, Marek Maslanka wrote:
> Encapsulate the code that registers and unregisters the ACPI PM Timer
> suspend/resume callback to checks that CONFIG_X86_PM_TIMER is enabled.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202409090259.6vsS5Bni-lkp@intel.com/
> Signed-off-by: Marek Maslanka <mmaslanka@google.com>

Thank you for the quick fix.

Arnd has submitted a cleaner fix for this, which looks better so
I think we should go with Arnd's fix:

https://lore.kernel.org/platform-driver-x86/20240909111644.248756-1-arnd@kernel.org/

Regards,

Hans




> ---
>  drivers/platform/x86/intel/pmc/core.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c
> index 695804ca8de4..0c6392eeacee 100644
> --- a/drivers/platform/x86/intel/pmc/core.c
> +++ b/drivers/platform/x86/intel/pmc/core.c
> @@ -1215,6 +1215,7 @@ static bool pmc_core_is_pson_residency_enabled(struct pmc_dev *pmcdev)
>  	return val == 1;
>  }
>  
> +#ifdef CONFIG_X86_PM_TIMER
>  /*
>   * Enable or disable ACPI PM Timer
>   *
> @@ -1247,6 +1248,7 @@ static void pmc_core_acpi_pm_timer_suspend_resume(void *data, bool suspend)
>  
>  	pmcdev->enable_acpi_pm_timer_on_resume = suspend && enabled;
>  }
> +#endif
>  
>  static void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev)
>  {
> @@ -1443,9 +1445,11 @@ static int pmc_core_probe(struct platform_device *pdev)
>  	struct pmc_dev *pmcdev;
>  	const struct x86_cpu_id *cpu_id;
>  	int (*core_init)(struct pmc_dev *pmcdev);
> -	const struct pmc_reg_map *map;
>  	struct pmc *primary_pmc;
>  	int ret;
> +#ifdef CONFIG_X86_PM_TIMER
> +	const struct pmc_reg_map *map;
> +#endif
>  
>  	if (device_initialized)
>  		return -ENODEV;
> @@ -1502,10 +1506,12 @@ static int pmc_core_probe(struct platform_device *pdev)
>  	pm_report_max_hw_sleep(FIELD_MAX(SLP_S0_RES_COUNTER_MASK) *
>  			       pmc_core_adjust_slp_s0_step(primary_pmc, 1));
>  
> +#ifdef CONFIG_X86_PM_TIMER
>  	map = primary_pmc->map;
>  	if (map->acpi_pm_tmr_ctl_offset)
>  		acpi_pmtmr_register_suspend_resume_callback(pmc_core_acpi_pm_timer_suspend_resume,
> -							 pmcdev);
> +							    pmcdev);
> +#endif
>  
>  	device_initialized = true;
>  	dev_info(&pdev->dev, " initialized\n");
> @@ -1516,11 +1522,13 @@ static int pmc_core_probe(struct platform_device *pdev)
>  static void pmc_core_remove(struct platform_device *pdev)
>  {
>  	struct pmc_dev *pmcdev = platform_get_drvdata(pdev);
> +#ifdef CONFIG_X86_PM_TIMER
>  	const struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
>  	const struct pmc_reg_map *map = pmc->map;
>  
>  	if (map->acpi_pm_tmr_ctl_offset)
>  		acpi_pmtmr_unregister_suspend_resume_callback();
> +#endif
>  
>  	pmc_core_dbgfs_unregister(pmcdev);
>  	pmc_core_clean_structure(pdev);



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-12-05 15:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-08 18:59 [linux-next:master 7987/10296] drivers/platform/x86/intel/pmc/core.c:1501:17: error: implicit declaration of function 'acpi_pmtmr_register_suspend_resume_callback' kernel test robot
2024-09-08 20:01 ` [PATCH] platform/x86:intel/pmc: Encapsulate callbacks registration in CONFIG_X86_PM_TIMER check Marek Maslanka
2024-09-09 11:40   ` Hans de Goede

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox