]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Jun 2024 14:50:51 +0000 (16:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Jun 2024 14:50:51 +0000 (16:50 +0200)
added patches:
acpi-ec-evaluate-orphan-_reg-under-ec-device.patch

queue-6.9/acpi-ec-evaluate-orphan-_reg-under-ec-device.patch [new file with mode: 0644]
queue-6.9/asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch [deleted file]
queue-6.9/series

diff --git a/queue-6.9/acpi-ec-evaluate-orphan-_reg-under-ec-device.patch b/queue-6.9/acpi-ec-evaluate-orphan-_reg-under-ec-device.patch
new file mode 100644 (file)
index 0000000..7d93e4a
--- /dev/null
@@ -0,0 +1,152 @@
+From 0e6b6dedf16800df0ff73ffe2bb5066514db29c2 Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Wed, 12 Jun 2024 16:15:55 +0200
+Subject: ACPI: EC: Evaluate orphan _REG under EC device
+
+From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+
+commit 0e6b6dedf16800df0ff73ffe2bb5066514db29c2 upstream.
+
+After starting to install the EC address space handler at the ACPI
+namespace root, if there is an "orphan" _REG method in the EC device's
+scope, it will not be evaluated any more.  This breaks EC operation
+regions on some systems, like Asus gu605.
+
+To address this, use a wrapper around an existing ACPICA function to
+look for an "orphan" _REG method in the EC device scope and evaluate
+it if present.
+
+Fixes: 60fa6ae6e6d0 ("ACPI: EC: Install address space handler at the namespace root")
+Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218945
+Reported-by: VitaliiT <vitaly.torshyn@gmail.com>
+Tested-by: VitaliiT <vitaly.torshyn@gmail.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/acpi/acpica/acevents.h |    4 +++
+ drivers/acpi/acpica/evregion.c |    6 ----
+ drivers/acpi/acpica/evxfregn.c |   54 +++++++++++++++++++++++++++++++++++++++++
+ drivers/acpi/ec.c              |    3 ++
+ include/acpi/acpixf.h          |    4 +++
+ 5 files changed, 66 insertions(+), 5 deletions(-)
+
+--- a/drivers/acpi/acpica/acevents.h
++++ b/drivers/acpi/acpica/acevents.h
+@@ -191,6 +191,10 @@ void
+ acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
+                           acpi_adr_space_type space_id, u32 function);
++void
++acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *node,
++                                acpi_adr_space_type space_id);
++
+ acpi_status
+ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function);
+--- a/drivers/acpi/acpica/evregion.c
++++ b/drivers/acpi/acpica/evregion.c
+@@ -20,10 +20,6 @@ extern u8 acpi_gbl_default_address_space
+ /* Local prototypes */
+-static void
+-acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
+-                                acpi_adr_space_type space_id);
+-
+ static acpi_status
+ acpi_ev_reg_run(acpi_handle obj_handle,
+               u32 level, void *context, void **return_value);
+@@ -818,7 +814,7 @@ acpi_ev_reg_run(acpi_handle obj_handle,
+  *
+  ******************************************************************************/
+-static void
++void
+ acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
+                                 acpi_adr_space_type space_id)
+ {
+--- a/drivers/acpi/acpica/evxfregn.c
++++ b/drivers/acpi/acpica/evxfregn.c
+@@ -306,3 +306,57 @@ acpi_execute_reg_methods(acpi_handle dev
+ }
+ ACPI_EXPORT_SYMBOL(acpi_execute_reg_methods)
++
++/*******************************************************************************
++ *
++ * FUNCTION:    acpi_execute_orphan_reg_method
++ *
++ * PARAMETERS:  device          - Handle for the device
++ *              space_id        - The address space ID
++ *
++ * RETURN:      Status
++ *
++ * DESCRIPTION: Execute an "orphan" _REG method that appears under an ACPI
++ *              device. This is a _REG method that has no corresponding region
++ *              within the device's scope.
++ *
++ ******************************************************************************/
++acpi_status
++acpi_execute_orphan_reg_method(acpi_handle device, acpi_adr_space_type space_id)
++{
++      struct acpi_namespace_node *node;
++      acpi_status status;
++
++      ACPI_FUNCTION_TRACE(acpi_execute_orphan_reg_method);
++
++      /* Parameter validation */
++
++      if (!device) {
++              return_ACPI_STATUS(AE_BAD_PARAMETER);
++      }
++
++      status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
++      if (ACPI_FAILURE(status)) {
++              return_ACPI_STATUS(status);
++      }
++
++      /* Convert and validate the device handle */
++
++      node = acpi_ns_validate_handle(device);
++      if (node) {
++
++              /*
++               * If an "orphan" _REG method is present in the device's scope
++               * for the given address space ID, run it.
++               */
++
++              acpi_ev_execute_orphan_reg_method(node, space_id);
++      } else {
++              status = AE_BAD_PARAMETER;
++      }
++
++      (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
++      return_ACPI_STATUS(status);
++}
++
++ACPI_EXPORT_SYMBOL(acpi_execute_orphan_reg_method)
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -1502,6 +1502,9 @@ static int ec_install_handlers(struct ac
+       if (call_reg && !test_bit(EC_FLAGS_EC_REG_CALLED, &ec->flags)) {
+               acpi_execute_reg_methods(scope_handle, ACPI_ADR_SPACE_EC);
++              if (scope_handle != ec->handle)
++                      acpi_execute_orphan_reg_method(ec->handle, ACPI_ADR_SPACE_EC);
++
+               set_bit(EC_FLAGS_EC_REG_CALLED, &ec->flags);
+       }
+--- a/include/acpi/acpixf.h
++++ b/include/acpi/acpixf.h
+@@ -663,6 +663,10 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
+                                                    acpi_adr_space_type
+                                                    space_id))
+ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
++                          acpi_execute_orphan_reg_method(acpi_handle device,
++                                                         acpi_adr_space_type
++                                                         space_id))
++ACPI_EXTERNAL_RETURN_STATUS(acpi_status
+                           acpi_remove_address_space_handler(acpi_handle
+                                                             device,
+                                                             acpi_adr_space_type
diff --git a/queue-6.9/asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch b/queue-6.9/asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch
deleted file mode 100644 (file)
index 47ef0ee..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From 25de722027644cf7cbb33d6e7566bc924103718c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 25 Mar 2024 17:10:44 -0500
-Subject: ASoC: Intel: sof_cs42l42: rename BT offload quirk
-
-From: Brent Lu <brent.lu@intel.com>
-
-[ Upstream commit 109896246a5311aa05692ecf38c0d71e1837fe23 ]
-
-Rename the quirk in preparation for future changes: common quriks will
-be defined and handled in board helper module.
-
-Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
-Signed-off-by: Brent Lu <brent.lu@intel.com>
-Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
-Link: https://msgid.link/r/20240325221059.206042-7-pierre-louis.bossart@linux.intel.com
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- sound/soc/intel/boards/sof_cs42l42.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/intel/boards/sof_cs42l42.c b/sound/soc/intel/boards/sof_cs42l42.c
-index 323b86c42ef95..330d596b2eb6d 100644
---- a/sound/soc/intel/boards/sof_cs42l42.c
-+++ b/sound/soc/intel/boards/sof_cs42l42.c
-@@ -34,7 +34,7 @@
- #define SOF_CS42L42_NUM_HDMIDEV_MASK          (GENMASK(9, 7))
- #define SOF_CS42L42_NUM_HDMIDEV(quirk)        \
-       (((quirk) << SOF_CS42L42_NUM_HDMIDEV_SHIFT) & SOF_CS42L42_NUM_HDMIDEV_MASK)
--#define SOF_BT_OFFLOAD_PRESENT                        BIT(25)
-+#define SOF_CS42L42_BT_OFFLOAD_PRESENT                BIT(25)
- #define SOF_CS42L42_SSP_BT_SHIFT              26
- #define SOF_CS42L42_SSP_BT_MASK                       (GENMASK(28, 26))
- #define SOF_CS42L42_SSP_BT(quirk)     \
-@@ -268,7 +268,7 @@ static int sof_audio_probe(struct platform_device *pdev)
-       ctx->ssp_codec = sof_cs42l42_quirk & SOF_CS42L42_SSP_CODEC_MASK;
--      if (sof_cs42l42_quirk & SOF_BT_OFFLOAD_PRESENT)
-+      if (sof_cs42l42_quirk & SOF_CS42L42_BT_OFFLOAD_PRESENT)
-               ctx->bt_offload_present = true;
-       /* update dai_link */
-@@ -306,7 +306,7 @@ static const struct platform_device_id board_ids[] = {
-               .driver_data = (kernel_ulong_t)(SOF_CS42L42_SSP_CODEC(0) |
-                               SOF_CS42L42_SSP_AMP(1) |
-                               SOF_CS42L42_NUM_HDMIDEV(4) |
--                              SOF_BT_OFFLOAD_PRESENT |
-+                              SOF_CS42L42_BT_OFFLOAD_PRESENT |
-                               SOF_CS42L42_SSP_BT(2)),
-       },
-       { }
--- 
-2.43.0
-
index 42175a598c05ac996a9128000a629efc1131b956..828d796560d8f9b77715ffec4496e80442ac3b96 100644 (file)
@@ -46,7 +46,6 @@ net-ena-add-validation-for-completion-descriptors-co.patch
 bluetooth-ath3k-fix-multiple-issues-reported-by-chec.patch
 drm-amd-display-exit-idle-optimizations-before-hdcp-.patch
 drm-amd-display-workaround-register-access-in-idle-r.patch
-asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch
 platform-x86-toshiba_acpi-add-quirk-for-buttons-on-z.patch
 cgroup-cpuset-make-cpuset-hotplug-processing-synchro.patch
 asoc-intel-sof_sdw-add-jd2-quirk-for-hp-omen-14.patch
@@ -178,3 +177,4 @@ loongarch-only-allow-objtool-orc-unwinder-if-toolcha.patch
 rdma-mlx5-fix-unwind-flow-as-part-of-mlx5_ib_stage_i.patch
 rdma-mlx5-add-check-for-srq-max_sge-attribute.patch
 rdma-mana_ib-ignore-optional-access-flags-for-mrs.patch
+acpi-ec-evaluate-orphan-_reg-under-ec-device.patch