Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp2584572rwn; Fri, 9 Sep 2022 16:43:29 -0700 (PDT) X-Google-Smtp-Source: AA6agR59GKpRIhDTfeQjLD74iAOgChH8SBlYd/brkQlPNTHsFaWyPrwqPPMOzmZlqR0ffS5joqFX X-Received: by 2002:aa7:864a:0:b0:53f:dcdf:4614 with SMTP id a10-20020aa7864a000000b0053fdcdf4614mr11155618pfo.38.1662767008827; Fri, 09 Sep 2022 16:43:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662767008; cv=none; d=google.com; s=arc-20160816; b=QvPf/+ERkVDbphl5Zr20mlwLygBfGccCSBmInBmqzDKryklLLw6WRdqCaBBn7AhhQ5 GUBgxwuH1SRsAu/JU586FoNFa3WgAu8FoweLrPARDn+a20A8ZR1jf3g/C0KqtFJjiKwq srLbR0aZ1vxt3W/YWxdEitfEQJkD2B59EGeKEGhwW5nKiumLCSkJDeKnhdEiPx7xl5t9 uPl98x5Jz5zOpMw5lJUcrZdnVwOBPOsig+0dlkNC+g9SbJrrE0waOZn4L9zXAAPWBawR o/AEhoQ36gFbP4JJHpyeltxRz+KWDTpAly6ch4h+y+vz+wI93XSPRqQY17FdWQQLVQd1 EcjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=gfGaAi6H4vSU288AKuLMzuyGIfRGtNJ/RSgryWDKOrA=; b=zw6JWSLWiELS7z52U1wbyPFFIZ42LdmWQwfAWGZcYd1okHQMJe8ZuArU36fMP5k8TS dw3rUmu+wHry7F0mVwxohdBgOfAE1Q9ZjJ7HnLDL+RdoRjuxlv2XIgwHywmeS86oyd/u O1L64twAYCmISaL9HxmFBouXF7eSzImA3jzdM8BE3auXrRB1pqy04XnZqLeF80nOiCao CkQdqK78f1Paz/KZk6OoSaoGHDz1lBU8WMJSF81h+IBGCgGmM+LbErSsQINHm4B5QlY2 ag3+iCRJhaqBM+qfX3kLJB49g/vKYc9R8Ve79dTifFjiSy0+8MeV6rZ9NuYmrk4vjLpm sICQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NVdElGE0; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f3-20020a170902ce8300b001733a212ccfsi2047769plg.330.2022.09.09.16.43.18; Fri, 09 Sep 2022 16:43:28 -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=NVdElGE0; 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 S231842AbiIIXHg (ORCPT + 99 others); Fri, 9 Sep 2022 19:07:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231470AbiIIXGs (ORCPT ); Fri, 9 Sep 2022 19:06:48 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C55A115CC4 for ; Fri, 9 Sep 2022 16:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662764798; x=1694300798; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=MIecFpx/fYz164sdD9AyklxOPY/JrvhjZ46OYbtFEpc=; b=NVdElGE05XuA+fHb4hVamp7prbShAQZ1Ttf3rnc2F9P7cZfrgVZqsfXD XLUk5Hzyz06rObQzgpYcaOjHlIiZJyoTVEKnuwoIF4cFi7unc2f7zeFoJ 1wIIkDw7/Mmnts5x8rR8f/7WN3rES8FaAKtCIIGkAsRD7YVcM8GEM9If3 hRd/nDm1uJ2jSJmfydrOX99r04MSBBNw5lCrnLlkIMkj8Qr6fvHAQ/8Y9 SvLJHEUwF2zFADViro/0cqifSpSWt29C/YUQTS75l9DZsV9wFd4yxT4ce U6uaO68D4jmb8q0130/MIU7FQLqqXriBCetz6U2AVl4FO7HyEA1vWEJqf Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10465"; a="298386918" X-IronPort-AV: E=Sophos;i="5.93,304,1654585200"; d="scan'208";a="298386918" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2022 16:06:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,304,1654585200"; d="scan'208";a="677355019" Received: from ranerica-svr.sc.intel.com ([172.25.110.23]) by fmsmga008.fm.intel.com with ESMTP; 09 Sep 2022 16:06:34 -0700 From: Ricardo Neri To: "Peter Zijlstra (Intel)" , Juri Lelli , Vincent Guittot Cc: Ricardo Neri , "Ravi V. Shankar" , Ben Segall , Daniel Bristot de Oliveira , Dietmar Eggemann , Len Brown , Mel Gorman , "Rafael J. Wysocki" , Srinivas Pandruvada , Steven Rostedt , Tim Chen , Valentin Schneider , x86@kernel.org, linux-kernel@vger.kernel.org, Ricardo Neri , "Tim C . Chen" Subject: [RFC PATCH 14/23] thermal: intel: hfi: Update the class of the current task Date: Fri, 9 Sep 2022 16:11:56 -0700 Message-Id: <20220909231205.14009-15-ricardo.neri-calderon@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220909231205.14009-1-ricardo.neri-calderon@linux.intel.com> References: <20220909231205.14009-1-ricardo.neri-calderon@linux.intel.com> X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,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 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 Support the interfaces of the scheduler for classes of tasks. If an Intel processor supports Intel Thread Director, then it supports classes of tasks. Use the hardware resources that Intel Thread Director provides to assign a class to the currently running task. Cc: Ben Segall Cc: Daniel Bristot de Oliveira Cc: Dietmar Eggemann Cc: Len Brown Cc: Mel Gorman Cc: Rafael J. Wysocki Cc: Srinivas Pandruvada Cc: Steven Rostedt Cc: Tim C. Chen Cc: Valentin Schneider Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Ricardo Neri --- arch/x86/include/asm/topology.h | 8 +++++++ drivers/thermal/intel/intel_hfi.c | 35 +++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h index 458c891a8273..9c6df4fd9414 100644 --- a/arch/x86/include/asm/topology.h +++ b/arch/x86/include/asm/topology.h @@ -227,4 +227,12 @@ void init_freq_invariance_cppc(void); #define arch_init_invariance_cppc init_freq_invariance_cppc #endif +#ifdef CONFIG_INTEL_THREAD_DIRECTOR +int intel_hfi_has_task_classes(void); +void intel_hfi_update_task_class(struct task_struct *curr, bool smt_siblings_idle); + +#define arch_has_task_classes intel_hfi_has_task_classes +#define arch_update_task_class intel_hfi_update_task_class +#endif + #endif /* _ASM_X86_TOPOLOGY_H */ diff --git a/drivers/thermal/intel/intel_hfi.c b/drivers/thermal/intel/intel_hfi.c index 4bafe6848d5d..f46d9331f912 100644 --- a/drivers/thermal/intel/intel_hfi.c +++ b/drivers/thermal/intel/intel_hfi.c @@ -73,6 +73,17 @@ union cpuid6_edx { u32 full; }; +#ifdef CONFIG_INTEL_THREAD_DIRECTOR +union hfi_thread_feedback_char_msr { + struct { + u8 classid; + u64 __reserved:55; + u8 valid:1; + } split; + u64 full; +}; +#endif + /** * struct hfi_cpu_data - HFI capabilities per CPU * @perf_cap: Performance capability @@ -172,6 +183,30 @@ static struct workqueue_struct *hfi_updates_wq; #define HFI_UPDATE_INTERVAL HZ #define HFI_MAX_THERM_NOTIFY_COUNT 16 +#ifdef CONFIG_INTEL_THREAD_DIRECTOR +int intel_hfi_has_task_classes(void) +{ + return cpu_feature_enabled(X86_FEATURE_ITD); +} + +void intel_hfi_update_task_class(struct task_struct *curr, bool smt_siblings_idle) +{ + union hfi_thread_feedback_char_msr msr; + + /* We should not be here if ITD is not supported. */ + if (!cpu_feature_enabled(X86_FEATURE_ITD)) { + pr_warn_once("task classification requested but not supported!"); + return; + } + + rdmsrl(MSR_IA32_HW_FEEDBACK_CHAR, msr.full); + if (!msr.split.valid) + return; + + curr->class = msr.split.classid; +} +#endif /* CONFIG_INTEL_THREAD_DIRECTOR */ + static void get_hfi_caps(struct hfi_instance *hfi_instance, struct thermal_genl_cpu_caps *cpu_caps) { -- 2.25.1