public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core
@ 2025-11-03 16:25 Slawomir Rosek
  2025-11-03 16:25 ` [PATCH v4 1/2] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Slawomir Rosek @ 2025-11-03 16:25 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The Intel Dynamic Platform and Thermal Framework (DPTF) relies on
the INT340X ACPI device objects. The temperature information and
cooling ability are exposed to the userspace via those objects.

Since kernel v3.17 the ACPI bus scan handler is introduced to prevent
enumeration of INT340X ACPI device objects on the platform bus unless
related thermal drivers are enabled. However, using the IS_ENABLED()
macro in the ACPI scan handler forces the kernel to be recompiled
when thermal drivers are enabled or disabled, which is a significant
limitation of its modularity. The IS_ENABLED() macro is particularly
problematic for the Android Generic Kernel Image (GKI) project which
uses unified core kernel while SoC/board support is moved to loadable
vendor modules.

The DPTF requires thermal drivers to be loaded at runtime, thus
ACPI bus scan handler is not needed and acpi_default_enumeration()
may create all platform devices, regardless of the actual setting
of CONFIG_INT340X_THERMAL.

Link to v1: https://lore.kernel.org/all/20250830053404.763995-1-srosek@google.com/
Link to v2: https://lore.kernel.org/all/20250917120719.2390847-1-srosek@google.com/
Link to v3: https://lore.kernel.org/all/20251002113404.3117429-1-srosek@google.com/

In v4 the SoC DTS thermal explicitly depends on the X86_64 and NET,
so the INT340X driver may safely be selected by the SoC DTS thermal
driver. In addition most of previously submitted patches are dropped
as they are not necessary, instead the ACPI bus scan handler is simply
removed from the kernel, thus all platform devices are enumerated by
the acpi_default_enumeration().

Slawomir Rosek (2):
  ACPI: DPTF: Ignore SoC DTS thermal while scanning
  ACPI: DPTF: Remove int340x thermal scan handler

 drivers/acpi/dptf/Makefile          |  1 -
 drivers/acpi/dptf/int340x_thermal.c | 94 -----------------------------
 drivers/acpi/internal.h             |  1 -
 drivers/acpi/scan.c                 |  1 -
 drivers/thermal/intel/Kconfig       |  3 +-
 5 files changed, 2 insertions(+), 98 deletions(-)
 delete mode 100644 drivers/acpi/dptf/int340x_thermal.c

-- 
2.51.1.930.gacf6e81ea2-goog


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

* [PATCH v4 1/2] ACPI: DPTF: Ignore SoC DTS thermal while scanning
  2025-11-03 16:25 [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Slawomir Rosek
@ 2025-11-03 16:25 ` Slawomir Rosek
  2025-11-03 16:25 ` [PATCH v4 2/2] ACPI: DPTF: Remove int340x thermal scan handler Slawomir Rosek
  2025-11-07 19:48 ` [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Rosek @ 2025-11-03 16:25 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The IRQ used by the Intel SoC DTS thermal device for critical
overheating notification is listed in _CRS of device INT3401 which
therefore needs to be enumerated for Intel SoC DTS thermal to work.

The enumeration happens by binding the int3401_thermal driver to the
INT3401 platform device. Thus CONFIG_INT340X_THERMAL is in fact
necessary for enumerating it, so checking CONFIG_INTEL_SOC_DTS_THERMAL
in int340x_thermal_handler_attach() is pointless and INT340X_THERMAL
may as well be selected by INTEL_SOC_DTS_THERMAL.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c | 7 +------
 drivers/thermal/intel/Kconfig       | 3 ++-
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index a222df059a16..947fe50c2ef6 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -11,10 +11,9 @@
 
 #include "../internal.h"
 
-#define INT3401_DEVICE 0X01
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INT3400"},
-	{"INT3401", INT3401_DEVICE},
+	{"INT3401"},
 	{"INT3402"},
 	{"INT3403"},
 	{"INT3404"},
@@ -76,10 +75,6 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev,
 {
 	if (IS_ENABLED(CONFIG_INT340X_THERMAL))
 		acpi_create_platform_device(adev, NULL);
-	/* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
-	else if (IS_ENABLED(CONFIG_INTEL_SOC_DTS_THERMAL) &&
-		 id->driver_data == INT3401_DEVICE)
-		acpi_create_platform_device(adev, NULL);
 	return 1;
 }
 
diff --git a/drivers/thermal/intel/Kconfig b/drivers/thermal/intel/Kconfig
index e0268fac7093..347c59bc87d6 100644
--- a/drivers/thermal/intel/Kconfig
+++ b/drivers/thermal/intel/Kconfig
@@ -44,7 +44,8 @@ config INTEL_SOC_DTS_IOSF_CORE
 
 config INTEL_SOC_DTS_THERMAL
 	tristate "Intel SoCs DTS thermal driver"
-	depends on X86 && PCI && ACPI
+	depends on X86_64 && PCI && ACPI && NET
+	select INT340X_THERMAL
 	select INTEL_SOC_DTS_IOSF_CORE
 	help
 	  Enable this to register Intel SoCs (e.g. Bay Trail) platform digital
-- 
2.51.1.930.gacf6e81ea2-goog


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

* [PATCH v4 2/2] ACPI: DPTF: Remove int340x thermal scan handler
  2025-11-03 16:25 [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Slawomir Rosek
  2025-11-03 16:25 ` [PATCH v4 1/2] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
@ 2025-11-03 16:25 ` Slawomir Rosek
  2025-11-07 19:48 ` [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Rosek @ 2025-11-03 16:25 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

Using the IS_ENABLED() macro in the int340x_thermal_handler_attach()
forces the kernel to be recompiled when thermal drivers are enabled
or disabled, which is a significant limitation of its modularity.
The IS_ENABLED() macro is particularly problematic for the Android
Generic Kernel Image (GKI) project which uses unified core kernel
while SoC/board support is moved to loadable vendor modules.

The Intel Dynamic Platform and Thermal Framework (DPTF) requires
thermal drivers to be loaded at runtime, thus ACPI bus scan handler
is not needed and acpi_default_enumeration() may create all platform
devices, regardless of the actual setting of CONFIG_INT340X_THERMAL.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/Makefile          |  1 -
 drivers/acpi/dptf/int340x_thermal.c | 89 -----------------------------
 drivers/acpi/internal.h             |  1 -
 drivers/acpi/scan.c                 |  1 -
 4 files changed, 92 deletions(-)
 delete mode 100644 drivers/acpi/dptf/int340x_thermal.c

diff --git a/drivers/acpi/dptf/Makefile b/drivers/acpi/dptf/Makefile
index 297340682f66..e912a3be1d28 100644
--- a/drivers/acpi/dptf/Makefile
+++ b/drivers/acpi/dptf/Makefile
@@ -1,4 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_ACPI)             += int340x_thermal.o
 obj-$(CONFIG_DPTF_POWER)	+= dptf_power.o
 obj-$(CONFIG_DPTF_PCH_FIVR)	+= dptf_pch_fivr.o
diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
deleted file mode 100644
index 947fe50c2ef6..000000000000
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ /dev/null
@@ -1,89 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * ACPI support for int340x thermal drivers
- *
- * Copyright (C) 2014, Intel Corporation
- * Authors: Zhang Rui <rui.zhang@intel.com>
- */
-
-#include <linux/acpi.h>
-#include <linux/module.h>
-
-#include "../internal.h"
-
-static const struct acpi_device_id int340x_thermal_device_ids[] = {
-	{"INT3400"},
-	{"INT3401"},
-	{"INT3402"},
-	{"INT3403"},
-	{"INT3404"},
-	{"INT3406"},
-	{"INT3407"},
-	{"INT3408"},
-	{"INT3409"},
-	{"INT340A"},
-	{"INT340B"},
-	{"INT3532"},
-	{"INTC1040"},
-	{"INTC1041"},
-	{"INTC1042"},
-	{"INTC1043"},
-	{"INTC1044"},
-	{"INTC1045"},
-	{"INTC1046"},
-	{"INTC1047"},
-	{"INTC1048"},
-	{"INTC1049"},
-	{"INTC1050"},
-	{"INTC1060"},
-	{"INTC1061"},
-	{"INTC1062"},
-	{"INTC1063"},
-	{"INTC1064"},
-	{"INTC1065"},
-	{"INTC1066"},
-	{"INTC1068"},
-	{"INTC1069"},
-	{"INTC106A"},
-	{"INTC106B"},
-	{"INTC106C"},
-	{"INTC106D"},
-	{"INTC10A0"},
-	{"INTC10A1"},
-	{"INTC10A2"},
-	{"INTC10A3"},
-	{"INTC10A4"},
-	{"INTC10A5"},
-	{"INTC10D4"},
-	{"INTC10D5"},
-	{"INTC10D6"},
-	{"INTC10D7"},
-	{"INTC10D8"},
-	{"INTC10D9"},
-	{"INTC10FC"},
-	{"INTC10FD"},
-	{"INTC10FE"},
-	{"INTC10FF"},
-	{"INTC1100"},
-	{"INTC1101"},
-	{"INTC1102"},
-	{""},
-};
-
-static int int340x_thermal_handler_attach(struct acpi_device *adev,
-					const struct acpi_device_id *id)
-{
-	if (IS_ENABLED(CONFIG_INT340X_THERMAL))
-		acpi_create_platform_device(adev, NULL);
-	return 1;
-}
-
-static struct acpi_scan_handler int340x_thermal_handler = {
-	.ids = int340x_thermal_device_ids,
-	.attach = int340x_thermal_handler_attach,
-};
-
-void __init acpi_int340x_thermal_init(void)
-{
-	acpi_scan_add_handler(&int340x_thermal_handler);
-}
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 63354972ab0b..40f875b265a9 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -27,7 +27,6 @@ static inline void acpi_pci_link_init(void) {}
 void acpi_processor_init(void);
 void acpi_platform_init(void);
 void acpi_pnp_init(void);
-void acpi_int340x_thermal_init(void);
 int acpi_sysfs_init(void);
 void acpi_gpe_apply_masked_gpes(void);
 void acpi_container_init(void);
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index ef16d58b2949..b74cb80ff587 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -2711,7 +2711,6 @@ void __init acpi_scan_init(void)
 	acpi_watchdog_init();
 	acpi_pnp_init();
 	acpi_power_resources_init();
-	acpi_int340x_thermal_init();
 	acpi_init_lpit();
 
 	acpi_scan_add_handler(&generic_device_handler);
-- 
2.51.1.930.gacf6e81ea2-goog


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

* Re: [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core
  2025-11-03 16:25 [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Slawomir Rosek
  2025-11-03 16:25 ` [PATCH v4 1/2] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
  2025-11-03 16:25 ` [PATCH v4 2/2] ACPI: DPTF: Remove int340x thermal scan handler Slawomir Rosek
@ 2025-11-07 19:48 ` Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Rafael J. Wysocki @ 2025-11-07 19:48 UTC (permalink / raw)
  To: Slawomir Rosek
  Cc: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano, Greg Kroah-Hartman, Zhang Rui,
	Srinivas Pandruvada, Tomasz Nowicki, Stanislaw Kardach,
	Michal Krawczyk, linux-kernel, linux-acpi, platform-driver-x86,
	linux-pm

On Mon, Nov 3, 2025 at 5:25 PM Slawomir Rosek <srosek@google.com> wrote:
>
> The Intel Dynamic Platform and Thermal Framework (DPTF) relies on
> the INT340X ACPI device objects. The temperature information and
> cooling ability are exposed to the userspace via those objects.
>
> Since kernel v3.17 the ACPI bus scan handler is introduced to prevent
> enumeration of INT340X ACPI device objects on the platform bus unless
> related thermal drivers are enabled. However, using the IS_ENABLED()
> macro in the ACPI scan handler forces the kernel to be recompiled
> when thermal drivers are enabled or disabled, which is a significant
> limitation of its modularity. The IS_ENABLED() macro is particularly
> problematic for the Android Generic Kernel Image (GKI) project which
> uses unified core kernel while SoC/board support is moved to loadable
> vendor modules.
>
> The DPTF requires thermal drivers to be loaded at runtime, thus
> ACPI bus scan handler is not needed and acpi_default_enumeration()
> may create all platform devices, regardless of the actual setting
> of CONFIG_INT340X_THERMAL.
>
> Link to v1: https://lore.kernel.org/all/20250830053404.763995-1-srosek@google.com/
> Link to v2: https://lore.kernel.org/all/20250917120719.2390847-1-srosek@google.com/
> Link to v3: https://lore.kernel.org/all/20251002113404.3117429-1-srosek@google.com/
>
> In v4 the SoC DTS thermal explicitly depends on the X86_64 and NET,
> so the INT340X driver may safely be selected by the SoC DTS thermal
> driver. In addition most of previously submitted patches are dropped
> as they are not necessary, instead the ACPI bus scan handler is simply
> removed from the kernel, thus all platform devices are enumerated by
> the acpi_default_enumeration().
>
> Slawomir Rosek (2):
>   ACPI: DPTF: Ignore SoC DTS thermal while scanning
>   ACPI: DPTF: Remove int340x thermal scan handler

Both patches applied as 6.19 material, but the subject of the first
patch has been changed to "thermal: intel: Select INT340X_THERMAL from
INTEL_SOC_DTS_THERMAL".

Thanks!

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

end of thread, other threads:[~2025-11-07 19:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-03 16:25 [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Slawomir Rosek
2025-11-03 16:25 ` [PATCH v4 1/2] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
2025-11-03 16:25 ` [PATCH v4 2/2] ACPI: DPTF: Remove int340x thermal scan handler Slawomir Rosek
2025-11-07 19:48 ` [PATCH v4 0/2] ACPI: DPTF: Move INT340X enumeration from DPTF scan handler to ACPI core Rafael J. Wysocki

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