From bf97d78b43282a589e38857b52aba189df89b458 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 24 Jun 2024 16:50:51 +0200 Subject: [PATCH] 6.9-stable patches added patches: acpi-ec-evaluate-orphan-_reg-under-ec-device.patch --- ...evaluate-orphan-_reg-under-ec-device.patch | 152 ++++++++++++++++++ ...-sof_cs42l42-rename-bt-offload-quirk.patch | 56 ------- queue-6.9/series | 2 +- 3 files changed, 153 insertions(+), 57 deletions(-) create mode 100644 queue-6.9/acpi-ec-evaluate-orphan-_reg-under-ec-device.patch delete mode 100644 queue-6.9/asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch 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 index 00000000000..7d93e4a1818 --- /dev/null +++ b/queue-6.9/acpi-ec-evaluate-orphan-_reg-under-ec-device.patch @@ -0,0 +1,152 @@ +From 0e6b6dedf16800df0ff73ffe2bb5066514db29c2 Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" +Date: Wed, 12 Jun 2024 16:15:55 +0200 +Subject: ACPI: EC: Evaluate orphan _REG under EC device + +From: Rafael J. Wysocki + +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 +Tested-by: VitaliiT +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + 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 index 47ef0ee7238..00000000000 --- a/queue-6.9/asoc-intel-sof_cs42l42-rename-bt-offload-quirk.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 25de722027644cf7cbb33d6e7566bc924103718c Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 25 Mar 2024 17:10:44 -0500 -Subject: ASoC: Intel: sof_cs42l42: rename BT offload quirk - -From: Brent Lu - -[ 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 -Signed-off-by: Brent Lu -Signed-off-by: Pierre-Louis Bossart -Link: https://msgid.link/r/20240325221059.206042-7-pierre-louis.bossart@linux.intel.com -Signed-off-by: Mark Brown -Signed-off-by: Sasha Levin ---- - 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 - diff --git a/queue-6.9/series b/queue-6.9/series index 42175a598c0..828d796560d 100644 --- a/queue-6.9/series +++ b/queue-6.9/series @@ -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 -- 2.47.3