From patchwork Tue Nov 15 07:53:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1703914 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NBJNZ5kyXz23mj for ; Tue, 15 Nov 2022 18:54:21 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1ouqlm-00023U-6h; Tue, 15 Nov 2022 07:54:10 +0000 Received: from mail-pl1-f174.google.com ([209.85.214.174]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ouqlh-00021A-34 for kernel-team@lists.ubuntu.com; Tue, 15 Nov 2022 07:54:05 +0000 Received: by mail-pl1-f174.google.com with SMTP id 4so12482094pli.0 for ; Mon, 14 Nov 2022 23:54:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w/F2nvwlk0UIVf8jXaj367oUNQn39yLf6TrrgE/e8R0=; b=Co1FD7cjxOpXfjU/KPcQuoi9rYyf/1GPC1u2XzNpTPBEL7c8d0LkUGuhvBE2itZZA+ zferxh+aKAkbuvwdqK+m3LGmAwEENGDKsCVqvjDLxyw1fLtfKls8WdtW41MzGXmg28Mv qHbyV60Of4vk2uTcNnvvSwMC/bAfefN454ykNR2oV4iIMZXPD9SL2SqiuSZYw9q7/2kt pUAe18jwsbp3fK6dkr5JHEuSl0dKWA8J5H7FnnIuUDELw5lGxNOqmQHF9LR2ZAURdSE7 gJYJ4BDc8Ul4Z0hKce65KcFgC/YYdV0Jtz5OCBlVXyIbt2QrHcymEYNALH+NncUR9SnW THtA== X-Gm-Message-State: ANoB5plf+aiIqNl70KLzTcG7tnAToig5ac1haQ28Vdkm90GOrVfLOfMd s7WAo86kEU+WeTM3Mb3v9mNf0Z1mVEdm3g== X-Google-Smtp-Source: AA0mqf5R70A6A0rvVntRWqHQ/mIT7kXFSaMhaPHmgySn5qfUamcE/uRk7CYy+oc8LCJzrY1UdD7GSQ== X-Received: by 2002:a17:903:2642:b0:178:b4b7:d74d with SMTP id je2-20020a170903264200b00178b4b7d74dmr2865020plb.83.1668498842556; Mon, 14 Nov 2022 23:54:02 -0800 (PST) Received: from localhost.localdomain (61-227-116-232.dynamic-ip.hinet.net. [61.227.116.232]) by smtp.gmail.com with ESMTPSA id 8-20020a630b08000000b004393f60db36sm7133012pgl.32.2022.11.14.23.54.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Nov 2022 23:54:01 -0800 (PST) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/3][SRU][OEM-6.0] platform/x86/amd/pmf: Fix undefined reference to platform_profile Date: Tue, 15 Nov 2022 15:53:15 +0800 Message-Id: <20221115075317.66028-2-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221115075317.66028-1-vicamo.yang@canonical.com> References: <20221115075317.66028-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.214.174; envelope-from=vicamo@gmail.com; helo=mail-pl1-f174.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Shyam Sundar S K BugLink: https://bugs.launchpad.net/bugs/1993242 Its reported that amd-pmf driver when built with config which does not have ACPI_PLATFORM_PROFILE set/enabled throws a undefined references to symbols used. ld: vmlinux.o: in function `amd_pmf_init_sps': drivers/platform/x86/amd/pmf/sps.c:132: undefined reference to `platform_profile_register' ld: vmlinux.o: in function `amd_pmf_deinit_sps': drivers/platform/x86/amd/pmf/sps.c:142: undefined reference to `platform_profile_remove' Fix it by adding a "select" to the Kconfig. Fixes: da5ce22df5fe ("platform/x86/amd/pmf: Add support for PMF core layer") Reported-by: Randy Dunlap Signed-off-by: Shyam Sundar S K Acked-by: Randy Dunlap # build-tested Link: https://lore.kernel.org/r/20220819083858.3987590-1-Shyam-sundar.S-k@amd.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede (cherry picked from commit c2f7edf81a82db20d91974ba2cf50a4c90c2dbe3) Signed-off-by: You-Sheng Yang (vicamo) --- drivers/platform/x86/amd/pmf/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/platform/x86/amd/pmf/Kconfig b/drivers/platform/x86/amd/pmf/Kconfig index e65ffa52229b..c375498c4071 100644 --- a/drivers/platform/x86/amd/pmf/Kconfig +++ b/drivers/platform/x86/amd/pmf/Kconfig @@ -6,6 +6,7 @@ config AMD_PMF tristate "AMD Platform Management Framework" depends on ACPI && PCI + select ACPI_PLATFORM_PROFILE help This driver provides support for the AMD Platform Management Framework. The goal is to enhance end user experience by making AMD PCs smarter, From patchwork Tue Nov 15 07:53:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1703913 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NBJNZ5T6lz23mh for ; Tue, 15 Nov 2022 18:54:21 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1ouqlk-00021l-2J; Tue, 15 Nov 2022 07:54:08 +0000 Received: from mail-pj1-f44.google.com ([209.85.216.44]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ouqli-00021Q-El for kernel-team@lists.ubuntu.com; Tue, 15 Nov 2022 07:54:06 +0000 Received: by mail-pj1-f44.google.com with SMTP id r61-20020a17090a43c300b00212f4e9cccdso16142320pjg.5 for ; Mon, 14 Nov 2022 23:54:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mHNRMcJF8VajKN/UX6SD7V0a9/Z3cP3E2i3wUxJgPwM=; b=isZm2sIjZbomVqVo4WONw3ESsu/pMvUWsSC5Df6Lpsx2/Eg8IN2fRJg9Xc7Cko8Gz0 1hxR/+50oikVU1ELE8envKsE/+8zBzjN1yjBxnyGqWKNnBK3+VHQHKO3EPu8gf0AoVsP Wlad33uxo3cChVW8woBgBDIVmFaQR7BBGxC8441hMX7PdM9TJJJk5M7GH459sMWhFBsj gWdO09taaTYxS+2QAdRlJMqcTpRtajRwig1MzCoSrIMsI6cjUrOPu00nCBRJ8lr9DWEw U+iVbs5bL5SJpGClw0KgthTuA+jxOikX5bjq3NBVjVz74qcSXZe9L1xpU6HroLddSB2+ 1XAw== X-Gm-Message-State: ANoB5pmF7KAsh1dBSocjkLkiN4OGHIVlwaWtqnR2lQfACLu9bcGMWiLE N1AD94miJDBCxSLIe4eIPJp8vz7eueBFCw== X-Google-Smtp-Source: AA0mqf6jJkHCsdB/pbgwNFp3Q7KsnQekaRPBcefLyt3z8sXJlZE5vMkNUn8DWmjw+vj+mlkNA+rdfA== X-Received: by 2002:a17:902:a586:b0:188:4c74:e1f1 with SMTP id az6-20020a170902a58600b001884c74e1f1mr2851459plb.98.1668498844195; Mon, 14 Nov 2022 23:54:04 -0800 (PST) Received: from localhost.localdomain (61-227-116-232.dynamic-ip.hinet.net. [61.227.116.232]) by smtp.gmail.com with ESMTPSA id 8-20020a630b08000000b004393f60db36sm7133012pgl.32.2022.11.14.23.54.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Nov 2022 23:54:03 -0800 (PST) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/3][SRU][OEM-6.0] platform/x86/amd/pmf: Fix clang unused variable warning Date: Tue, 15 Nov 2022 15:53:16 +0800 Message-Id: <20221115075317.66028-3-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221115075317.66028-1-vicamo.yang@canonical.com> References: <20221115075317.66028-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.216.44; envelope-from=vicamo@gmail.com; helo=mail-pj1-f44.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Shyam Sundar S K BugLink: https://bugs.launchpad.net/bugs/1993242 variable 'mode' is used uninitialized whenever switch default is taken in sps.c which leads to the following clang warning. drivers/platform/x86/amd/pmf/sps.c:96:2: error: variable 'mode' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] default: ^~~~~~~ drivers/platform/x86/amd/pmf/sps.c:101:9: note: uninitialized use occurs here return mode; ^~~~ drivers/platform/x86/amd/pmf/sps.c:84:9: note: initialize the variable 'mode' to silence this warning u8 mode; ^ = '\0' 1 error generated. Fix it by returning -EOPNOTSUPP in default case and also change the return type of the function amd_pmf_get_pprof_modes() to keep it similar like other drivers which implement platform_profile. Fixes: 4c71ae414474 ("platform/x86/amd/pmf: Add support SPS PMF feature") Reported-by: Nathan Chancellor Reviewed-by: Nathan Chancellor Signed-off-by: Shyam Sundar S K Link: https://lore.kernel.org/r/20220822062917.4061503-1-Shyam-sundar.S-k@amd.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede (cherry picked from commit ea522b806162ca947427f8305310d3c8a3d42d7a) Signed-off-by: You-Sheng Yang (vicamo) --- drivers/platform/x86/amd/pmf/auto-mode.c | 8 ++++++-- drivers/platform/x86/amd/pmf/core.c | 3 +++ drivers/platform/x86/amd/pmf/pmf.h | 4 ++-- drivers/platform/x86/amd/pmf/sps.c | 11 +++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/amd/pmf/auto-mode.c b/drivers/platform/x86/amd/pmf/auto-mode.c index 368964d885a2..644af42e07cf 100644 --- a/drivers/platform/x86/amd/pmf/auto-mode.c +++ b/drivers/platform/x86/amd/pmf/auto-mode.c @@ -264,7 +264,7 @@ static void amd_pmf_load_defaults_auto_mode(struct amd_pmf_dev *dev) dev->socket_power_history_idx = -1; } -void amd_pmf_reset_amt(struct amd_pmf_dev *dev) +int amd_pmf_reset_amt(struct amd_pmf_dev *dev) { /* * OEM BIOS implementation guide says that if the auto mode is enabled @@ -275,11 +275,15 @@ void amd_pmf_reset_amt(struct amd_pmf_dev *dev) */ if (is_apmf_func_supported(dev, APMF_FUNC_STATIC_SLIDER_GRANULAR)) { - u8 mode = amd_pmf_get_pprof_modes(dev); + int mode = amd_pmf_get_pprof_modes(dev); + + if (mode < 0) + return mode; dev_dbg(dev->dev, "resetting AMT thermals\n"); amd_pmf_update_slider(dev, SLIDER_OP_SET, mode, NULL); } + return 0; } void amd_pmf_handle_amt(struct amd_pmf_dev *dev) diff --git a/drivers/platform/x86/amd/pmf/core.c b/drivers/platform/x86/amd/pmf/core.c index 6646e2490707..44fe30726b62 100644 --- a/drivers/platform/x86/amd/pmf/core.c +++ b/drivers/platform/x86/amd/pmf/core.c @@ -65,6 +65,9 @@ static int current_power_limits_show(struct seq_file *seq, void *unused) int mode, src = 0; mode = amd_pmf_get_pprof_modes(dev); + if (mode < 0) + return mode; + src = amd_pmf_get_power_source(); amd_pmf_update_slider(dev, SLIDER_OP_GET, mode, &table); seq_printf(seq, "spl:%u fppt:%u sppt:%u sppt_apu_only:%u stt_min:%u stt[APU]:%u stt[HS2]: %u\n", diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h index 3983f1315e75..097f3f5d33a3 100644 --- a/drivers/platform/x86/amd/pmf/pmf.h +++ b/drivers/platform/x86/amd/pmf/pmf.h @@ -394,7 +394,7 @@ int amd_pmf_init_metrics_table(struct amd_pmf_dev *dev); int amd_pmf_get_power_source(void); /* SPS Layer */ -u8 amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf); +int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf); void amd_pmf_update_slider(struct amd_pmf_dev *dev, bool op, int idx, struct amd_pmf_static_slider_granular *table); int amd_pmf_init_sps(struct amd_pmf_dev *dev); @@ -413,7 +413,7 @@ void amd_pmf_trans_automode(struct amd_pmf_dev *dev, int socket_power, ktime_t t int apmf_get_sbios_requests(struct amd_pmf_dev *pdev, struct apmf_sbios_req *req); void amd_pmf_update_2_cql(struct amd_pmf_dev *dev, bool is_cql_event); -void amd_pmf_reset_amt(struct amd_pmf_dev *dev); +int amd_pmf_reset_amt(struct amd_pmf_dev *dev); void amd_pmf_handle_amt(struct amd_pmf_dev *dev); /* CnQF Layer */ diff --git a/drivers/platform/x86/amd/pmf/sps.c b/drivers/platform/x86/amd/pmf/sps.c index 8923e29cc6ca..dba7e36962dc 100644 --- a/drivers/platform/x86/amd/pmf/sps.c +++ b/drivers/platform/x86/amd/pmf/sps.c @@ -79,9 +79,9 @@ static int amd_pmf_profile_get(struct platform_profile_handler *pprof, return 0; } -u8 amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf) +int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf) { - u8 mode; + int mode; switch (pmf->current_profile) { case PLATFORM_PROFILE_PERFORMANCE: @@ -95,7 +95,7 @@ u8 amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf) break; default: dev_err(pmf->dev, "Unknown Platform Profile.\n"); - break; + return -EOPNOTSUPP; } return mode; @@ -105,10 +105,13 @@ static int amd_pmf_profile_set(struct platform_profile_handler *pprof, enum platform_profile_option profile) { struct amd_pmf_dev *pmf = container_of(pprof, struct amd_pmf_dev, pprof); - u8 mode; + int mode; pmf->current_profile = profile; mode = amd_pmf_get_pprof_modes(pmf); + if (mode < 0) + return mode; + amd_pmf_update_slider(pmf, SLIDER_OP_SET, mode, NULL); return 0; } From patchwork Tue Nov 15 07:53:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1703912 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NBJNZ5Qtsz23mY for ; Tue, 15 Nov 2022 18:54:21 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1ouqln-00023w-C3; Tue, 15 Nov 2022 07:54:11 +0000 Received: from mail-pl1-f172.google.com ([209.85.214.172]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ouqlj-00021f-VS for kernel-team@lists.ubuntu.com; Tue, 15 Nov 2022 07:54:08 +0000 Received: by mail-pl1-f172.google.com with SMTP id j12so12437808plj.5 for ; Mon, 14 Nov 2022 23:54:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e4Tvo80RMZLDd+ItdkYoNaQyLgl0cz31W6CoqFPm1l0=; b=katoOBv820HDBSRGa9ijrmwxk5oDTO8r8QzKegbiDHuvTo6poQlI7G1SjCGUR6Jnfi 8zahb00fLSxJCyoTGfJHMdvQpIUTZSEj1x3/8t9xiwUkisvFyQYq6yaq7fLBDNB6pizx JqHYFjTaRyq53qVQ7eCBKXU0kITRsDHW6NxOSIH5M4naUKIDuOgJXjY/8veQFMZi64aQ JxNs//rjYz9DM62hwL0SoEnw+baQ0yGGLhoYWDpkQ+cmoAJNcK9iWshRY0SAdZE1biZn StazZOqj4+6ZxOX/yNG2hiQonw/lLzpBt8ohn3lpLmlBwr4GWkUAEw/ocoxJHhPy82MA cYdA== X-Gm-Message-State: ANoB5pn66X+q+FWqnVirm0tksbWr1vi0/lr2BaZTz8ly9z0Cy9uQk7K2 RXTUU6+tr3WoivmsPk43Bcf1gCNkVOfWiQ== X-Google-Smtp-Source: AA0mqf784Luhqwp4lb1HHm9+4KzYTO2Ut1Rfym8jUwXiGph6wXIR4MEtUOFSCIR5woJXRYNEdG8gcA== X-Received: by 2002:a17:90a:e7c3:b0:212:fbab:446b with SMTP id kb3-20020a17090ae7c300b00212fbab446bmr981829pjb.146.1668498845801; Mon, 14 Nov 2022 23:54:05 -0800 (PST) Received: from localhost.localdomain (61-227-116-232.dynamic-ip.hinet.net. [61.227.116.232]) by smtp.gmail.com with ESMTPSA id 8-20020a630b08000000b004393f60db36sm7133012pgl.32.2022.11.14.23.54.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Nov 2022 23:54:05 -0800 (PST) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 3/3][SRU][OEM-6.0] platform/x86/amd/pmf: install notify handler after acpi init Date: Tue, 15 Nov 2022 15:53:17 +0800 Message-Id: <20221115075317.66028-4-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221115075317.66028-1-vicamo.yang@canonical.com> References: <20221115075317.66028-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.214.172; envelope-from=vicamo@gmail.com; helo=mail-pl1-f172.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Shyam Sundar S K BugLink: https://bugs.launchpad.net/bugs/1993242 It is observed that when thinkpad_acpi driver loads before amd-pmf driver, thinkpad_acpi driver sends the AMT "on" event and the request immediately will be part of the PMF BIOS "pending requests". With the current amd-pmf code, as soon as the amd-pmf driver gets probed, it calls apmf_acpi_init() where the notify handler will be installed. Handler callback would call amd_pmf_handle_amt() where the amd_pmf_set_automode() shall update the auto-mode thermals. In this case, the auto-mode config_store shall have "zeros", as the auto mode init gets called during the later stage. To fix this, change the order of the acpi notifer install and call it after the auto mode initialization is done. Fixes: 7d77dcc83ada ("platform/x86/amd/pmf: Handle AMT and CQL events for Auto mode") Cc: Mario Limonciello Cc: Mark Pearson Cc: Patil Rajesh Reddy Signed-off-by: Shyam Sundar S K Reviewed-by: Mario Limonciello Link: https://lore.kernel.org/r/20220923131724.1812685-1-Shyam-sundar.S-k@amd.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede (cherry picked from commit 22ee98cb696e95b05a188756d479d382d93559ef) Signed-off-by: You-Sheng Yang (vicamo) --- drivers/platform/x86/amd/pmf/acpi.c | 38 +++++++++++++++++------------ drivers/platform/x86/amd/pmf/core.c | 1 + drivers/platform/x86/amd/pmf/pmf.h | 1 + 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/drivers/platform/x86/amd/pmf/acpi.c b/drivers/platform/x86/amd/pmf/acpi.c index 05a2b8a056fc..081e84e116e7 100644 --- a/drivers/platform/x86/amd/pmf/acpi.c +++ b/drivers/platform/x86/amd/pmf/acpi.c @@ -243,6 +243,28 @@ int apmf_get_dyn_slider_def_dc(struct amd_pmf_dev *pdev, struct apmf_dyn_slider_ return apmf_if_call_store_buffer(pdev, APMF_FUNC_DYN_SLIDER_DC, data, sizeof(*data)); } +int apmf_install_handler(struct amd_pmf_dev *pmf_dev) +{ + acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); + acpi_status status; + + /* Install the APMF Notify handler */ + if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && + is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { + status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY, + apmf_event_handler, pmf_dev); + if (ACPI_FAILURE(status)) { + dev_err(pmf_dev->dev, "failed to install notify handler\n"); + return -ENODEV; + } + + /* Call the handler once manually to catch up with possibly missed notifies. */ + apmf_event_handler(ahandle, 0, pmf_dev); + } + + return 0; +} + void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); @@ -257,8 +279,6 @@ void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) { - acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); - acpi_status status; int ret; ret = apmf_if_verify_interface(pmf_dev); @@ -279,20 +299,6 @@ int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) schedule_delayed_work(&pmf_dev->heart_beat, 0); } - /* Install the APMF Notify handler */ - if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && - is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { - status = acpi_install_notify_handler(ahandle, - ACPI_ALL_NOTIFY, - apmf_event_handler, pmf_dev); - if (ACPI_FAILURE(status)) { - dev_err(pmf_dev->dev, "failed to install notify handler\n"); - return -ENODEV; - } - /* Call the handler once manually to catch up with possibly missed notifies. */ - apmf_event_handler(ahandle, 0, pmf_dev); - } - out: return ret; } diff --git a/drivers/platform/x86/amd/pmf/core.c b/drivers/platform/x86/amd/pmf/core.c index 44fe30726b62..a5f5a4bcff6d 100644 --- a/drivers/platform/x86/amd/pmf/core.c +++ b/drivers/platform/x86/amd/pmf/core.c @@ -369,6 +369,7 @@ static int amd_pmf_probe(struct platform_device *pdev) apmf_acpi_init(dev); platform_set_drvdata(pdev, dev); amd_pmf_init_features(dev); + apmf_install_handler(dev); amd_pmf_dbgfs_register(dev); mutex_init(&dev->lock); diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h index 097f3f5d33a3..ee76d20ad6ca 100644 --- a/drivers/platform/x86/amd/pmf/pmf.h +++ b/drivers/platform/x86/amd/pmf/pmf.h @@ -392,6 +392,7 @@ int is_apmf_func_supported(struct amd_pmf_dev *pdev, unsigned long index); int amd_pmf_send_cmd(struct amd_pmf_dev *dev, u8 message, bool get, u32 arg, u32 *data); int amd_pmf_init_metrics_table(struct amd_pmf_dev *dev); int amd_pmf_get_power_source(void); +int apmf_install_handler(struct amd_pmf_dev *pmf_dev); /* SPS Layer */ int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf);