From patchwork Tue Jun 13 16:10:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wilczynski, Michal" X-Patchwork-Id: 107456 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp670755vqr; Tue, 13 Jun 2023 09:23:27 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4wxHlpeF7AdR+x8iS7ulnKI/lImb1j+jLxxJto9o0dQ16XgEg5A337vxAl2GsmKByNI6Zp X-Received: by 2002:a05:6a21:99aa:b0:114:6f3c:4332 with SMTP id ve42-20020a056a2199aa00b001146f3c4332mr14668889pzb.24.1686673407379; Tue, 13 Jun 2023 09:23:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686673407; cv=none; d=google.com; s=arc-20160816; b=EoY/fOTCGajvfkN6MaTQ/CBngnthXPPPJMI6QYsWo+YwYjRRxLBRrKyCzoO4Nek0/J qstAT82W2XMwQ/hZoyhmJvzWAqTkhBNHWEt0fMNGbMGh0d7rJmn1AM/cLRUG1KcBKK06 nuJClaO3jKmDfgisfXBaDwo3/wyXFW5Z0YDgNkJnI4EByc9DMpbUHyOxnv+l+Ko0ezFb tKpFqAxbYhAR/hh/ZzhjePBRdsODJ3eI01bnZ2+xv+Ujg++UJmQ4iWzZqpv3nUcrcTpz vUPNd8tvFQDSAuGqw4aKiywMWuSInNfwSByFVz7MRVq274Z6QFRiDtjxNKSR+FhCdRsi IqMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ASoOgwFme82mdOFCziSrDx90eYG0/CZP4p6pm1PKiJw=; b=G9g4GnLSyOFnvphfpJI+rb3FIhX4RFh9LuF8d+3qqFeuZGPT+YZP94I+m/35TzzMKf spnUwutYT5TdFX9dWwx/sPQ/XuRVtRsNjU6m4vCWRsoGpgKLVb/ou7eh+Zr30voEgtSX cNNPjHqRi+NGq4xGJUrweDOZVCowkoewhhqqFyit8bntgE4IwSFvV2EUrXReoW+KQiEN E1hiyYfcny9JCVJNZ7zVz1lshzuqj2NTThu1/olXd82KspBXY7/S71NUYp6L47cEfkn/ mrpuxLHTNJesnjCGvzEYwb2fDm2/SetrkhErVFxJLmc6aYJvntfjY284RvsrCd8lh6N1 G0Qg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Yb0I8R82; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v123-20020a626181000000b006627ba17a6bsi8833324pfb.360.2023.06.13.09.22.54; Tue, 13 Jun 2023 09:23:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Yb0I8R82; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242667AbjFMQMp (ORCPT + 99 others); Tue, 13 Jun 2023 12:12:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241227AbjFMQMm (ORCPT ); Tue, 13 Jun 2023 12:12:42 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEAE0A1; Tue, 13 Jun 2023 09:12:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686672761; x=1718208761; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TmLYSmJr3kuyIrE1YnGbwOsu8dcWq+znY7V5gJ2mPRc=; b=Yb0I8R82YnbRgErsNiBFp1TRUaU2FOal1bzUglN2rdHePAXTuiZTX9ch LM4yzUAhJKJDZ7CwkPxtaeZ4m0XNPb8msZk7mk5b2ZPQKEAIDwBsAer4v kVndn+e+aJG1nLXEXvSJdFroFFBuFa8Px1N2ydy5jPjIxyDCcGFkxJPem tTdDPzwljcqQiv/K7XJEZZmQ4DArEzpt52A1C8O+JGylHWHS8p4b0uxAt JqNm2bUI6crm5L6VGMrFS8rYLW5HJc9Gg/ryjR5BnhQRLdpQ+u9Fwglv6 S2r6vQ+bru+Zpd4kNpWsVEpEMnPVs17W7sNV2MlvIwZKC9aenM3I06Ori Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="348038787" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="348038787" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2023 09:10:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="714863474" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="714863474" Received: from powerlab.fi.intel.com ([10.237.71.25]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2023 09:10:52 -0700 From: Michal Wilczynski To: linux-acpi@vger.kernel.org Cc: rafael@kernel.org, andriy.shevchenko@intel.com, artem.bityutskiy@linux.intel.com, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, lenb@kernel.org, jgross@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH v3 1/5] acpi: Move logic responsible for conveying processor OSPM capabilities Date: Tue, 13 Jun 2023 19:10:30 +0300 Message-Id: <20230613161034.3496047-2-michal.wilczynski@intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230613161034.3496047-1-michal.wilczynski@intel.com> References: <20230613161034.3496047-1-michal.wilczynski@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768605254446616312?= X-GMAIL-MSGID: =?utf-8?q?1768605254446616312?= Since _PDC method is deprecated and a preferred method of communicating OSPM processor power management capabilities is _OSC, there is a need to move functions checking whether processor is present and workarounds for specific hardware to acpi_processor.c as this logic is not _PDC specific. It also applies to the _OSC objects. Move processor_dmi_check(), processor_idle_dmi_table, set_no_mwait() and processor_physically_present() to acpi_processor.c. Introduce IDLE_NOMWAIT workaround and processor_dmi_table workarounds to work with _OSC objects. Mark acpi_early_processor_set_pdc() and acpi_processor_set_pdc() as deprecated. Suggested-by: Rafael J. Wysocki Signed-off-by: Michal Wilczynski Reviewed-by: Andy Shevchenko --- drivers/acpi/acpi_processor.c | 84 ++++++++++++++++++++++++++++++++++- drivers/acpi/internal.h | 3 ++ drivers/acpi/processor_pdc.c | 80 +-------------------------------- include/acpi/processor.h | 2 +- 4 files changed, 89 insertions(+), 80 deletions(-) diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index f9aa02cac6d1..8c5d0295a042 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -21,6 +22,8 @@ #include +#include + #include "internal.h" DEFINE_PER_CPU(struct acpi_processor *, processors); @@ -508,7 +511,86 @@ static void acpi_processor_remove(struct acpi_device *device) } #endif /* CONFIG_ACPI_HOTPLUG_CPU */ -#ifdef CONFIG_X86 +#ifdef CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC +bool __init processor_physically_present(acpi_handle handle) +{ + int cpuid, type; + u32 acpi_id; + acpi_status status; + acpi_object_type acpi_type; + unsigned long long tmp; + union acpi_object object = {}; + struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; + + status = acpi_get_type(handle, &acpi_type); + if (ACPI_FAILURE(status)) + return false; + + switch (acpi_type) { + case ACPI_TYPE_PROCESSOR: + status = acpi_evaluate_object(handle, NULL, NULL, &buffer); + if (ACPI_FAILURE(status)) + return false; + acpi_id = object.processor.proc_id; + break; + case ACPI_TYPE_DEVICE: + status = acpi_evaluate_integer(handle, METHOD_NAME__UID, + NULL, &tmp); + if (ACPI_FAILURE(status)) + return false; + acpi_id = tmp; + break; + default: + return false; + } + + if (xen_initial_domain()) + /* + * When running as a Xen dom0 the number of processors Linux + * sees can be different from the real number of processors on + * the system, and we still need to execute _PDC or _OSC for + * all of them. + */ + return xen_processor_present(acpi_id); + + type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0; + cpuid = acpi_get_cpuid(handle, type, acpi_id); + + return !invalid_logical_cpuid(cpuid); +} + +static int __init set_no_mwait(const struct dmi_system_id *id) +{ + pr_notice("%s detected - disabling mwait for CPU C-states\n", + id->ident); + boot_option_idle_override = IDLE_NOMWAIT; + return 0; +} + +static const struct dmi_system_id processor_idle_dmi_table[] __initconst = { + { + .callback = set_no_mwait, + .ident = "Extensa 5220", + .matches = { + DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), + DMI_MATCH(DMI_BOARD_NAME, "Columbia"), + }, + .driver_data = NULL, + }, + {} +}; + +void __init processor_dmi_check(void) +{ + /* + * Check whether the system is DMI table. If yes, OSPM + * should not use mwait for CPU-states. + */ + dmi_check_system(processor_idle_dmi_table); +} + static bool acpi_hwp_native_thermal_lvt_set; static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, u32 lvl, diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 06ad497067ac..f979a2f7077c 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -151,6 +151,9 @@ int acpi_wakeup_device_init(void); -------------------------------------------------------------------------- */ #ifdef CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC void acpi_early_processor_set_pdc(void); + +void processor_dmi_check(void); +bool processor_physically_present(acpi_handle handle); #else static inline void acpi_early_processor_set_pdc(void) {} #endif diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c index 18fb04523f93..5596862e6fea 100644 --- a/drivers/acpi/processor_pdc.c +++ b/drivers/acpi/processor_pdc.c @@ -9,61 +9,12 @@ #define pr_fmt(fmt) "ACPI: " fmt -#include #include #include #include -#include - #include "internal.h" -static bool __init processor_physically_present(acpi_handle handle) -{ - int cpuid, type; - u32 acpi_id; - acpi_status status; - acpi_object_type acpi_type; - unsigned long long tmp; - union acpi_object object = { 0 }; - struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; - - status = acpi_get_type(handle, &acpi_type); - if (ACPI_FAILURE(status)) - return false; - - switch (acpi_type) { - case ACPI_TYPE_PROCESSOR: - status = acpi_evaluate_object(handle, NULL, NULL, &buffer); - if (ACPI_FAILURE(status)) - return false; - acpi_id = object.processor.proc_id; - break; - case ACPI_TYPE_DEVICE: - status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp); - if (ACPI_FAILURE(status)) - return false; - acpi_id = tmp; - break; - default: - return false; - } - - if (xen_initial_domain()) - /* - * When running as a Xen dom0 the number of processors Linux - * sees can be different from the real number of processors on - * the system, and we still need to execute _PDC for all of - * them. - */ - return xen_processor_present(acpi_id); - - type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0; - cpuid = acpi_get_cpuid(handle, type, acpi_id); - - return !invalid_logical_cpuid(cpuid); -} - static void acpi_set_pdc_bits(u32 *buf) { buf[0] = ACPI_PDC_REVISION_ID; @@ -146,7 +97,7 @@ acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in) return status; } -void acpi_processor_set_pdc(acpi_handle handle) +void __deprecated acpi_processor_set_pdc(acpi_handle handle) { struct acpi_object_list *obj_list; @@ -174,34 +125,7 @@ early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) return AE_OK; } -static int __init set_no_mwait(const struct dmi_system_id *id) -{ - pr_notice("%s detected - disabling mwait for CPU C-states\n", - id->ident); - boot_option_idle_override = IDLE_NOMWAIT; - return 0; -} - -static const struct dmi_system_id processor_idle_dmi_table[] __initconst = { - { - set_no_mwait, "Extensa 5220", { - DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), - DMI_MATCH(DMI_SYS_VENDOR, "Acer"), - DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), - DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL}, - {}, -}; - -static void __init processor_dmi_check(void) -{ - /* - * Check whether the system is DMI table. If yes, OSPM - * should not use mwait for CPU-states. - */ - dmi_check_system(processor_idle_dmi_table); -} - -void __init acpi_early_processor_set_pdc(void) +void __init __deprecated acpi_early_processor_set_pdc(void) { processor_dmi_check(); diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 94181fe9780a..83ed42254567 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -372,7 +372,7 @@ static inline void acpi_cppc_processor_exit(struct acpi_processor *pr) #endif /* CONFIG_ACPI_CPPC_LIB */ /* in processor_pdc.c */ -void acpi_processor_set_pdc(acpi_handle handle); +void __deprecated acpi_processor_set_pdc(acpi_handle handle); /* in processor_throttling.c */ #ifdef CONFIG_ACPI_CPU_FREQ_PSS From patchwork Tue Jun 13 16:10:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wilczynski, Michal" X-Patchwork-Id: 107465 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp689065vqr; Tue, 13 Jun 2023 09:51:11 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6zT3MlTYWjQuB+1Ti1zDkjAsikcklJGiMat6rlAI9g9O/Ly/hkiGYa8u8riMeqxem3sy+z X-Received: by 2002:a17:907:2da4:b0:981:a949:27f3 with SMTP id gt36-20020a1709072da400b00981a94927f3mr6871594ejc.55.1686675071284; Tue, 13 Jun 2023 09:51:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686675071; cv=none; d=google.com; s=arc-20160816; b=XcaFK77YCYp8QJYuuitDW4Qnal/zA6e7eqeWqWXpJImqcuMwk5Agv21wcoXhkcNnh9 ojMbeClXkPzGCrQStAGxruuEWB3C1tuPeU2z1aIgSjY+dg/oTE+MsKHR4wwVO2qQ5yeM aSx2JDnrUhqSdap+QrcYVmTWjfDGkoZXzek4OV+liuS51vP0D9XB7xQ/ByDXtnwVrzTr pm33pi73fw4P4Yq4XaIxxjRuTIRnkxLDx0hlndekks9IetXPbCkqIzfVUseeP21RYd+a XBDBRs1cCY4L7Vc3eDgmDcecF5/aokqAZKZHIBtI1pAYyYItc3hPrjzToK4R8m6x81cH R50Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fnDj2ylMar6o04g4la87wy7y4maeD8zFtgqTUjcQM2c=; b=Fh5YHi3ygaQE5ILxaHpeirxVqhVHKr4hDEbmauijimuP3C05CfkIXlYhAg9Wg/s9cI bCKckGStNVQA4/GKVkVFDoVPtTVVdiMwUH4bU+V0o6zkLKy4sihz1nU40+BOEZCE1jKf +bQRv/I8L2vntMUvbYkILPnTmYvAhw6pS4Wu4DbnEoy7e4MehQkbomuWKmaGag0Hg2af ax1DViAd2LOIg7d6nptFsPPkWh6JV+Qhnu44fe7m/T3wwmuHEZQFe242mJG1sbxunJqk mxMNPi8V7b8GMlF87lw4s5ssVIf78oMz/64MhVNY7UwrJgWC80q7sy0Ge0Ta7HvvmpIb o3Fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NX3NEwOb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v8-20020a1709060b4800b009823dd376a8si1087734ejg.749.2023.06.13.09.50.46; Tue, 13 Jun 2023 09:51:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NX3NEwOb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242780AbjFMQMt (ORCPT + 99 others); Tue, 13 Jun 2023 12:12:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242649AbjFMQMp (ORCPT ); Tue, 13 Jun 2023 12:12:45 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BA9192; Tue, 13 Jun 2023 09:12:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686672763; x=1718208763; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nTecCM+k9j5k4i5fadJJCcv3OfhWVg6cMETfD49tMUg=; b=NX3NEwOb/4+LeuIDecrMHHDggW1BHm63satLgoNMExKWLT48Mfyn/me2 K6K29jw+YPxqU+V81E2AUbvc3YSCFiNuZya2Ss1GtaZqhlJl/qAanzCHp PtY5LSDXUOjnlujg44nwLGXqFMNqn3FBfABP6XR3mMA7X2cvksCDY6YFp zxa5pr/v3BKVuQcTmdmSlz+vv2cvStbuLVAlmBqEaAxL+gPftPDEklVDW QdaDxyqFMUfygMV6OM+++YqBle5+RHkRRi9tazB050/0j1tnN2Sx+KhT5 s+pxLIpIcvN/mfro3ou0tB3ogeay4kSz58QBxP53dSmwJzZr81ZdywEI5 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="348038818" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="348038818" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2023 09:11:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="714863531" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="714863531" Received: from powerlab.fi.intel.com ([10.237.71.25]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2023 09:10:57 -0700 From: Michal Wilczynski To: linux-acpi@vger.kernel.org Cc: rafael@kernel.org, andriy.shevchenko@intel.com, artem.bityutskiy@linux.intel.com, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, lenb@kernel.org, jgross@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH v3 2/5] acpi: Refactor arch_acpi_set_pdc_bits() Date: Tue, 13 Jun 2023 19:10:31 +0300 Message-Id: <20230613161034.3496047-3-michal.wilczynski@intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230613161034.3496047-1-michal.wilczynski@intel.com> References: <20230613161034.3496047-1-michal.wilczynski@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768606999528468656?= X-GMAIL-MSGID: =?utf-8?q?1768606999528468656?= Capabilities buffer modified by the arch_acpi_set_pdc_bits() is not _PDC specific, as it is used by _OSC method as well. Change function name to better reflect it's independence from PDC. Change function expected argument to pass capability buffer directly without any offset, as the offset differ among _OSC and _PDC methods. Suggested-by: Rafael J. Wysocki Signed-off-by: Michal Wilczynski Reviewed-by: Andy Shevchenko --- arch/ia64/include/asm/acpi.h | 4 ++-- arch/x86/include/asm/acpi.h | 10 +++++----- drivers/acpi/processor_pdc.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index 87927eb824cc..43797cb44383 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h @@ -69,9 +69,9 @@ extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; #endif static inline bool arch_has_acpi_pdc(void) { return true; } -static inline void arch_acpi_set_pdc_bits(u32 *buf) +static inline void arch_acpi_set_proc_cap_bits(u32 *cap) { - buf[2] |= ACPI_PDC_EST_CAPABILITY_SMP; + *cap |= ACPI_PDC_EST_CAPABILITY_SMP; } #ifdef CONFIG_ACPI_NUMA diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 8eb74cf386db..6a498d1781e7 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h @@ -100,23 +100,23 @@ static inline bool arch_has_acpi_pdc(void) c->x86_vendor == X86_VENDOR_CENTAUR); } -static inline void arch_acpi_set_pdc_bits(u32 *buf) +static inline void arch_acpi_set_proc_cap_bits(u32 *cap) { struct cpuinfo_x86 *c = &cpu_data(0); - buf[2] |= ACPI_PDC_C_CAPABILITY_SMP; + *cap |= ACPI_PDC_C_CAPABILITY_SMP; if (cpu_has(c, X86_FEATURE_EST)) - buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP; + *cap |= ACPI_PDC_EST_CAPABILITY_SWSMP; if (cpu_has(c, X86_FEATURE_ACPI)) - buf[2] |= ACPI_PDC_T_FFH; + *cap |= ACPI_PDC_T_FFH; /* * If mwait/monitor is unsupported, C2/C3_FFH will be disabled */ if (!cpu_has(c, X86_FEATURE_MWAIT)) - buf[2] &= ~(ACPI_PDC_C_C2C3_FFH); + *cap &= ~(ACPI_PDC_C_C2C3_FFH); } static inline bool acpi_has_cpu_in_madt(void) diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c index 5596862e6fea..ce3acd86dd12 100644 --- a/drivers/acpi/processor_pdc.c +++ b/drivers/acpi/processor_pdc.c @@ -24,7 +24,7 @@ static void acpi_set_pdc_bits(u32 *buf) buf[2] = ACPI_PDC_SMP_T_SWCOORD; /* Twiddle arch-specific bits needed for _PDC */ - arch_acpi_set_pdc_bits(buf); + arch_acpi_set_proc_cap_bits(&buf[2]); } static struct acpi_object_list *acpi_processor_alloc_pdc(void) From patchwork Tue Jun 13 16:10:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wilczynski, Michal" X-Patchwork-Id: 107453 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp669223vqr; Tue, 13 Jun 2023 09:21:09 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6i0GkqnSkTIzODVXoZ1cYNL4VdJBg2sY3O6JC5CWSAPXqxZFgFoM7GTxffbKgOCheO8jNl X-Received: by 2002:a05:6a00:399f:b0:662:c4ca:65c2 with SMTP id fi31-20020a056a00399f00b00662c4ca65c2mr15330842pfb.0.1686673269158; Tue, 13 Jun 2023 09:21:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686673269; cv=none; d=google.com; s=arc-20160816; b=H6MrcWnyCXDyJi5PVmC7Uy6bjjq6Gv9Fx85MpXSbOlh4V74w/ShqvQMfArOy8vHahY vfT0B4WBkbTXjp0EkJ4IfboTuRvzdAf9DTJwVKc/vcVkr2MUpqZUzJMYT0+LV3YBIATb Iu9KNZKhull8j6qt5dxJEZ7T/4y6sYh9BB4IGT+fs/Nw+jnNzedt2Pys7ZLP9dol80d3 wxR24h9VNlu6BpzKvd6jjg2YDOIlElIR7Gj/rcitw/P6iy4XXimBCRiSahiqkf6kxH6c BqbDeaGmhPjXdR2nUSjzkUjGlXkPwS8UOfd/vKuS0sfsigXYLIlQIu9q3qE3U4NU4hiB E+TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0H8Eo7UY9a6GCL76qp+qGKDRc5BFDl5S9ZiNtuIv5OU=; b=C3u96lrl6JY97a20erx6gHPUzPuUZYG4l3l1WcnoKnqA8sHiZKH2ymD7scezDLM4fY 0mBfOxXY1P016shZ7zk/rmWeyXL2Q+0DxQPjIvvS9n8nf5CXd9cxKuIKfeUjuecGp+7D EolWqN7UEyBQSTPkjRTeibdo/DNVMJzHSqrA+IMPV24cKBVhlOELWlwFX0lGGo/lNgfJ ZQPrBIQ9r4iYRw3xWtAQMQ43oJFXtCWbI5cvfz4mCi9lllAaSydVlea5Ssa0V0/818WG xAu7yINDFBzfotVtYgjNpSgUQWVQ4iFkUAKXaEAL03I+6B1FHBDID/846vWZMCrRpbRP kApw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AID3wy79; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z3-20020aa79583000000b0063b77381764si8959736pfj.49.2023.06.13.09.20.57; Tue, 13 Jun 2023 09:21:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AID3wy79; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243037AbjFMQM6 (ORCPT + 99 others); Tue, 13 Jun 2023 12:12:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243007AbjFMQMw (ORCPT ); Tue, 13 Jun 2023 12:12:52 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABCA6199C; Tue, 13 Jun 2023 09:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686672769; x=1718208769; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=q6hZmWD+34oqCL6/IAdani4632AKiZB8VpAcTJgImVQ=; b=AID3wy79ynN2oNRwLEKtK8jbPZhqhcdLO61F9vCV00Kxi1aFtRSi2wP3 uMi9zsxW/1NRajUUwXtB2Nv2B++x0o0UwIaQCViVVVsszVtWCQvmjoUEI tWp4ci0c1BDYdth03SNYUlDTbj7aC1+lm8H53BZl6WPydsuTGGwpaK7Ov 1tVSS1915Io2cerqNGFef7PhtMFkjgmwCOCxeNhFn3l4U7I/eYUIJj9Vn ScKHp8/5ls5Tpc8gYTGZ7HeA3rv6Sphc8R4grl+76a8NVxUQjy7tG/NEC qjseYnQnOayLWA7qxnyf4KfMWqC/YQoQBIrR9aV8Oh3Fa7NtYDq2bxvl0 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="348038856" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="348038856" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2023 09:11:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="714863563" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="714863563" Received: from powerlab.fi.intel.com ([10.237.71.25]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2023 09:11:01 -0700 From: Michal Wilczynski To: linux-acpi@vger.kernel.org Cc: rafael@kernel.org, andriy.shevchenko@intel.com, artem.bityutskiy@linux.intel.com, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, lenb@kernel.org, jgross@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH v3 3/5] acpi: Introduce new function callback for _OSC Date: Tue, 13 Jun 2023 19:10:32 +0300 Message-Id: <20230613161034.3496047-4-michal.wilczynski@intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230613161034.3496047-1-michal.wilczynski@intel.com> References: <20230613161034.3496047-1-michal.wilczynski@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768605109729317059?= X-GMAIL-MSGID: =?utf-8?q?1768605109729317059?= Currently in ACPI code _OSC method is already used for workaround introduced in commit a21211672c9a ("ACPI / processor: Request native thermal interrupt handling via _OSC"). Create new function, similar to already existing acpi_hwp_native_thermal_lvt_osc(). Call new function acpi_processor_osc(). Make this function fulfill the purpose previously fulfilled by the workaround plus convey OSPM processor capabilities with it by setting correct processor capability bits. Suggested-by: Rafael J. Wysocki Signed-off-by: Michal Wilczynski Reviewed-by: Andy Shevchenko --- arch/x86/include/asm/acpi.h | 3 +++ drivers/acpi/acpi_processor.c | 43 ++++++++++++++++++++++++++++++++++- include/acpi/pdc_intel.h | 1 + 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 6a498d1781e7..6c25ce2dad18 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h @@ -112,6 +112,9 @@ static inline void arch_acpi_set_proc_cap_bits(u32 *cap) if (cpu_has(c, X86_FEATURE_ACPI)) *cap |= ACPI_PDC_T_FFH; + if (cpu_has(c, X86_FEATURE_HWP)) + *cap |= ACPI_PDC_COLLAB_PROC_PERF; + /* * If mwait/monitor is unsupported, C2/C3_FFH will be disabled */ diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index 8c5d0295a042..0de0b05b6f53 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -591,13 +591,54 @@ void __init processor_dmi_check(void) dmi_check_system(processor_idle_dmi_table); } +/* vendor specific UUID indicating an Intel platform */ +static u8 sb_uuid_str[] = "4077A616-290C-47BE-9EBD-D87058713953"; static bool acpi_hwp_native_thermal_lvt_set; +static acpi_status __init acpi_processor_osc(acpi_handle handle, u32 lvl, + void *context, void **rv) +{ + u32 capbuf[2] = {}; + acpi_status status; + struct acpi_osc_context osc_context = { + .uuid_str = sb_uuid_str, + .rev = 1, + .cap.length = 8, + .cap.pointer = capbuf, + }; + + if (processor_physically_present(handle) == false) + return AE_OK; + + arch_acpi_set_proc_cap_bits(&capbuf[OSC_SUPPORT_DWORD]); + + if (boot_option_idle_override == IDLE_NOMWAIT) + capbuf[OSC_SUPPORT_DWORD] &= + ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH); + + status = acpi_run_osc(handle, &osc_context); + if (ACPI_FAILURE(status)) + return status; + + if (osc_context.ret.pointer && osc_context.ret.length > 1) { + u32 *capbuf_ret = osc_context.ret.pointer; + + if (!acpi_hwp_native_thermal_lvt_set && + capbuf_ret[1] & ACPI_PDC_COLLAB_PROC_PERF) { + acpi_handle_info(handle, + "_OSC native thermal LVT Acked\n"); + acpi_hwp_native_thermal_lvt_set = true; + } + } + kfree(osc_context.ret.pointer); + + return AE_OK; +} + static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, u32 lvl, void *context, void **rv) { - u8 sb_uuid_str[] = "4077A616-290C-47BE-9EBD-D87058713953"; u32 capbuf[2]; struct acpi_osc_context osc_context = { .uuid_str = sb_uuid_str, diff --git a/include/acpi/pdc_intel.h b/include/acpi/pdc_intel.h index 967c552d1cd3..9427f639287f 100644 --- a/include/acpi/pdc_intel.h +++ b/include/acpi/pdc_intel.h @@ -16,6 +16,7 @@ #define ACPI_PDC_C_C1_FFH (0x0100) #define ACPI_PDC_C_C2C3_FFH (0x0200) #define ACPI_PDC_SMP_P_HWCOORD (0x0800) +#define ACPI_PDC_COLLAB_PROC_PERF (0x1000) #define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \ ACPI_PDC_C_C1_HALT | \ From patchwork Tue Jun 13 16:10:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wilczynski, Michal" X-Patchwork-Id: 107457 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp672451vqr; Tue, 13 Jun 2023 09:26:01 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4fslSH5aTuNi9jCj6bDLUa0KuiAxZSl1JZ2qLqjZK360xK2hD8SeFT76AT23Etcnr4+lH+ X-Received: by 2002:a05:6a20:8f26:b0:110:f66c:a0e1 with SMTP id b38-20020a056a208f2600b00110f66ca0e1mr14462026pzk.14.1686673559152; Tue, 13 Jun 2023 09:25:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686673559; cv=none; d=google.com; s=arc-20160816; b=lmknijfnHMFsvLy4OOmqZbR3ScuZ3XVeMCl1qw2Zlo+MXJMfiTru0ACt/U0N0Xc7Ll gSUdjYyz8eX8qCGuvzvH8ijzeWzo7eJUHcrLAmQKTwg/ZS6GTUny+nQbxkvj+jayk4xC 7ANZGjhHlSYrzWtyLnZDcMNViivMqNhEmIPYauW5fZLr7UbIEhEjsYPvutCkAR8wf1XM EWyhmyMzqmkIug/+L96KikjPWyvH/iGFKa8we588emz+Wr+tCw9sYc9+DOvyXZEFY9RC Ye01noUfYhg4C2JMBji11olZjRUVhSuR6G7PaYGuIABhMIFu5p5mcUHyGOkLVxL+KCKw gSEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5eJ0XoKUgVcUdKFPsMg2NxVQh6rK3/Zjg3pXrWP0xPM=; b=HNxfJgtMAK0ukMpyZfvV1dz6+4UbBZM+jo/2duep1zARPLJYWIt8uJvyxoRShLFR58 uF3ukYOWeWUmF4Kh61lWcqEpPCNlTYLAM0VSfOObM4lMMM+lPsFBYUGCgRWqdfmm5SjK JsnIDQxeFuLpqIqU/34nXYX4XiH4M5OyxGZxfzoASSfaHB31/dSAtjeW8iZg7yAL51Br /GK+tcSAurRMQNABsukh/n5xFrqhXlrBUgD+FT03I7m1lNlrXrwpGppERL9yELoaIbxB Y6qEtif9ylq16fMnChLp7zsHwF6bvlNO3j2wlTXmbfXBchdjb0k2rKqSeSKsUIBNYXyp e2Nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aOu4l5ct; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i65-20020a636d44000000b00543a0bddd71si8813924pgc.363.2023.06.13.09.25.46; Tue, 13 Jun 2023 09:25:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aOu4l5ct; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243036AbjFMQNH (ORCPT + 99 others); Tue, 13 Jun 2023 12:13:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243015AbjFMQM7 (ORCPT ); Tue, 13 Jun 2023 12:12:59 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59B641BFA; Tue, 13 Jun 2023 09:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686672774; x=1718208774; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kxUL6ph3VcSEU60xTmGTf3diW42CGsvE/pDl8/raJiY=; b=aOu4l5ctz/3RiyB8rFPiWzKShw4IsEdxx0vEEMr+7pywfl5MInRB2xQh GrcjSNpKK7Q7mBo5dtaLcVs1sH7pggc94K5WVw+4lVMQLLnhcORYoFcCL Iv5zaj+CigjmFdgdST3UtIArUVVKkSNS7wzKuLKO6H/cPxbCqHZ4Ze7fD hsL8oq4kmloiV+29z1qHmsXIBeZc4eIAlg8E43osxwBjaG/ryZiJIuFdE 3zbLNgee7sLhGc/FzgPT8BWjmeGcgZUrNwuvQ5ocwuUKE2BnTy7/X3g+w AMFvT7prDdh147PwjNotrXgeJRBtr7gH0MWxMQ4t389Yi8ZYRjldLwyRz g==; X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="348038888" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="348038888" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2023 09:11:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="714863574" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="714863574" Received: from powerlab.fi.intel.com ([10.237.71.25]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2023 09:11:05 -0700 From: Michal Wilczynski To: linux-acpi@vger.kernel.org Cc: rafael@kernel.org, andriy.shevchenko@intel.com, artem.bityutskiy@linux.intel.com, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, lenb@kernel.org, jgross@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH v3 4/5] acpi: Use _OSC method to convey processor OSPM capabilities Date: Tue, 13 Jun 2023 19:10:33 +0300 Message-Id: <20230613161034.3496047-5-michal.wilczynski@intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230613161034.3496047-1-michal.wilczynski@intel.com> References: <20230613161034.3496047-1-michal.wilczynski@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768605414276499679?= X-GMAIL-MSGID: =?utf-8?q?1768605414276499679?= Change acpi_early_processor_osc() to return value in case of the failure. Make it more generic - previously it served only to execute workaround for buggy BIOS in Skylake systems. Now it will walk through ACPI namespace looking for processor objects and will convey OSPM processor capabilities using _OSC method. Prefer using _OSC method over deprecated _PDC in the acpi_bus_init(). In case of the failure of the _OSC, try using _PDC as a fallback. Suggested-by: Rafael J. Wysocki Signed-off-by: Michal Wilczynski Reviewed-by: Andy Shevchenko --- drivers/acpi/acpi_processor.c | 23 +++++++++++++---------- drivers/acpi/bus.c | 13 +++++++++---- drivers/acpi/internal.h | 9 +-------- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index 0de0b05b6f53..8965e01406e0 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -669,17 +669,20 @@ static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, return AE_OK; } -void __init acpi_early_processor_osc(void) +acpi_status __init acpi_early_processor_osc(void) { - if (boot_cpu_has(X86_FEATURE_HWP)) { - acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, - acpi_hwp_native_thermal_lvt_osc, - NULL, NULL, NULL); - acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, - acpi_hwp_native_thermal_lvt_osc, - NULL, NULL); - } + acpi_status status; + + processor_dmi_check(); + + status = acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, + ACPI_UINT32_MAX, acpi_processor_osc, NULL, + NULL, NULL); + if (ACPI_FAILURE(status)) + return status; + + return acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, acpi_processor_osc, + NULL, NULL); } #endif diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index d161ff707de4..e8d1f645224f 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -1317,9 +1317,6 @@ static int __init acpi_bus_init(void) goto error1; } - /* Set capability bits for _OSC under processor scope */ - acpi_early_processor_osc(); - /* * _OSC method may exist in module level code, * so it must be run after ACPI_FULL_INITIALIZATION @@ -1335,7 +1332,15 @@ static int __init acpi_bus_init(void) acpi_sysfs_init(); - acpi_early_processor_set_pdc(); +#ifdef CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC + status = acpi_early_processor_osc(); + if (ACPI_FAILURE(status)) { + pr_err("_OSC methods failed, trying _PDC\n"); + acpi_early_processor_set_pdc(); + } else { + pr_info("_OSC methods ran successfully\n"); + } +#endif /* * Maybe EC region is required at bus_scan/acpi_get_devices. So it diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index f979a2f7077c..e7cc41313997 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -151,17 +151,10 @@ int acpi_wakeup_device_init(void); -------------------------------------------------------------------------- */ #ifdef CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC void acpi_early_processor_set_pdc(void); +acpi_status acpi_early_processor_osc(void); void processor_dmi_check(void); bool processor_physically_present(acpi_handle handle); -#else -static inline void acpi_early_processor_set_pdc(void) {} -#endif - -#ifdef CONFIG_X86 -void acpi_early_processor_osc(void); -#else -static inline void acpi_early_processor_osc(void) {} #endif /* -------------------------------------------------------------------------- From patchwork Tue Jun 13 16:10:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wilczynski, Michal" X-Patchwork-Id: 107467 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp692808vqr; Tue, 13 Jun 2023 09:57:54 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4Xtiur/BkBUO/3wmM2PX8g2ExAOWP4XDEiWRfTjAqnuKiRIhFxO3n/e5wmNVPNjGWsAHH2 X-Received: by 2002:a05:6a00:809:b0:665:c37f:759e with SMTP id m9-20020a056a00080900b00665c37f759emr3273678pfk.6.1686675474353; Tue, 13 Jun 2023 09:57:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686675474; cv=none; d=google.com; s=arc-20160816; b=QoppF4jYK/+/0FM/S166IWxzd7m+e5MH67+3gEh0kEkS28yxic/oZkgnPtZ8gHvWS+ P+4ZvvhxFPkzC1pI6lkny3FJLnSvPSShOEqAXsC43odCCqfEYraFXymkXliYhNhzPppF lVejaWply1GtW4a7cYdRHhUU9OT9CBAFyx2LEIGLUW4AfZG3ddKi6L60QoY54WSM5qhF OrR7Qw5Xct0YhCQwAl+kPA5WlGK0FzNCWXFP+K7zLY93ubQGl51XBUsFAg3w0w3g5ZdD FrxoLItJX7xBUEPk4FAEBlP6f+e2v/sriK6eYyhyYIMVmORLBHUCIXzZ2yZTvLRRe6sB 7xFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=C+H18sfjm4C2H0LbfRqaDuJ1xA+VngBabfmjjnaypIQ=; b=ex3PakQtdoAf/k/pHQVPG1GuDESeBr1HGCigR75Xm5r7O7/OaByHuIwP3isRNq11L3 1kmwom7N1oRVJQ79tb/nKr/VrdXGcwq5ASlgdwvw6VWahZ6X7jLgiYHn14reF10cyRMG P/kf331osrof9F5kWteV7gDOAr6HgNO80pcGdIW8P3KxW77vZWVsFe5vQP1+sOy/1NI/ cYN3Cjd+08yyo3QILbeALaEGfuBtIX9PiSUm2o8jntwPVJ64uS6iFbjay+Ssp1SORKLZ 1+UbEzMFhSY/GdcURFbAHFzKTFyBvCCt5ubfRcomei+hAKR3sIxkic6a32Ch+7Ple7xH JnXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YIadR5RA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a22-20020aa795b6000000b0065bf76ccd12si6317205pfk.325.2023.06.13.09.57.41; Tue, 13 Jun 2023 09:57:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YIadR5RA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243043AbjFMQNU (ORCPT + 99 others); Tue, 13 Jun 2023 12:13:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243023AbjFMQNH (ORCPT ); Tue, 13 Jun 2023 12:13:07 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9627F19B5; Tue, 13 Jun 2023 09:12:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686672777; x=1718208777; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VlsDfQe6xmJuoENKAKaKljnxwQolewMVS9540jaiQmg=; b=YIadR5RAi7pEJc1edHgAcgyzTJHimKJhsCb9fFYStoRmaR5G8dzlgcZS rPW6mvlPDnf3ehUKXt1rKOCFwhWqh/P9Jks1JQxB76IHr0OZuXJrPbbo5 OYqBuulkLYj8Y6r0nXUxX+mH7rjIIw4qgCWES4VClSGuJe/AOaRqT5yTw 71zQkNK6yC5rgMzYMozf6uN2wqhp6Z8505kjQNzaWhgiRbSpHX/kkzcnq t8QG7W3X+FNmvv19+7mCyxhZzd8j7103wfFoqHax1A6sUWaEpq5je5uHh nj20pbJ6kK3f0AboHL7oSrZkvK/7xFst7BQzufM8rseL5weztBu3IxvS2 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="348038920" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="348038920" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2023 09:11:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10740"; a="714863579" X-IronPort-AV: E=Sophos;i="6.00,240,1681196400"; d="scan'208";a="714863579" Received: from powerlab.fi.intel.com ([10.237.71.25]) by fmsmga007.fm.intel.com with ESMTP; 13 Jun 2023 09:11:09 -0700 From: Michal Wilczynski To: linux-acpi@vger.kernel.org Cc: rafael@kernel.org, andriy.shevchenko@intel.com, artem.bityutskiy@linux.intel.com, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, lenb@kernel.org, jgross@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH v3 5/5] acpi: Remove acpi_hwp_native_thermal_lvt_osc() Date: Tue, 13 Jun 2023 19:10:34 +0300 Message-Id: <20230613161034.3496047-6-michal.wilczynski@intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230613161034.3496047-1-michal.wilczynski@intel.com> References: <20230613161034.3496047-1-michal.wilczynski@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768607421940144119?= X-GMAIL-MSGID: =?utf-8?q?1768607421940144119?= Workaround for buggy skylake BIOS is implemented in acpi_processor_osc() and acpi_hwp_native_thermal_lvt_osc() function is not called anywhere. Remove it. Suggested-by: Rafael J. Wysocki Signed-off-by: Michal Wilczynski Reviewed-by: Andy Shevchenko --- drivers/acpi/acpi_processor.c | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index 8965e01406e0..1e305ad9540e 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -634,41 +634,6 @@ static acpi_status __init acpi_processor_osc(acpi_handle handle, u32 lvl, return AE_OK; } -static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, - u32 lvl, - void *context, - void **rv) -{ - u32 capbuf[2]; - struct acpi_osc_context osc_context = { - .uuid_str = sb_uuid_str, - .rev = 1, - .cap.length = 8, - .cap.pointer = capbuf, - }; - - if (acpi_hwp_native_thermal_lvt_set) - return AE_CTRL_TERMINATE; - - capbuf[0] = 0x0000; - capbuf[1] = 0x1000; /* set bit 12 */ - - if (ACPI_SUCCESS(acpi_run_osc(handle, &osc_context))) { - if (osc_context.ret.pointer && osc_context.ret.length > 1) { - u32 *capbuf_ret = osc_context.ret.pointer; - - if (capbuf_ret[1] & 0x1000) { - acpi_handle_info(handle, - "_OSC native thermal LVT Acked\n"); - acpi_hwp_native_thermal_lvt_set = true; - } - } - kfree(osc_context.ret.pointer); - } - - return AE_OK; -} - acpi_status __init acpi_early_processor_osc(void) { acpi_status status;