Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp1432025rwr; Thu, 20 Apr 2023 15:12:03 -0700 (PDT) X-Google-Smtp-Source: AKy350arQdJShuGqszvVGDT0aUmzrczKNDnfmIKkX0j/efiKUceMii20k9WioEnnASluePIPprB5 X-Received: by 2002:a05:6a20:a40e:b0:ee:f064:9b00 with SMTP id z14-20020a056a20a40e00b000eef0649b00mr3005140pzk.45.1682028722884; Thu, 20 Apr 2023 15:12:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682028722; cv=none; d=google.com; s=arc-20160816; b=Athu7vPdc2pyfqz62Qd6MjseF4b3FS6SGPprX3qf9oK9G8GKZlZvk8jpCNl4dYIkB7 tnT6NGD2CsanLPegaer4ue7H6qqOy+7r6H7yqNCact3sTlHeql3TVcLNAVmVYqpKENT2 9QOPNm3B0JasIEyFBHrR4p4cffeX12fFd9TFjAb/bNG9ps+4fgx6etqeG0Y+OPlmrSnv 1d4iTpNKCG6VlE0kwMAtVDgRBwSaBc36r25/YH5mAYwN6GmI4qdvN4cEZbFK1cl580ON sPbyADIrAP486fYkNzNU0XZYy+LyjGnS9F2GwzmdaCcvIPiIfFW5x+Gn7zBw51o2XnNN 2I7Q== 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=gm5KokjVt6oTedN+6gGV0IEDHCipvrzJsqGV/QNQSJk=; b=LvSsTrmKlSEk8+BjsFcrP/X3OqlxbfzE5oHeN64zT+rrhah/LgwSu7UQHjIpZOrbUd y9MGV8kbrCRuvHJwIef8DhS2ajLBF9KKaa7MR2hHTzZxEOmcLjpxx5KxfK1EvdxIVtGL rp2ZPcBVmX28XlYB7loXlkmeSHZ3/Nn9y2X4rcdn2hHToD4KG2kgD88qoBacmdQKXEU6 rrR/UClcG62RYrGWu3FXdLwBADIwATiZFT9kjHFW/zNmkUqSf68KxtGX5uVANl6U683w KRhi/AKKqtrexrkCBI1j9JHAxk4UoUIY4IFmKVzPbBoJVSB8FHjuDxREHRcPSEKBWLhb Rsng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BBz6ORoP; 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 n184-20020a6327c1000000b0051b8ab9b2a7si2835255pgn.193.2023.04.20.15.11.51; Thu, 20 Apr 2023 15:12:02 -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=BBz6ORoP; 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 S233030AbjDTWHV (ORCPT + 99 others); Thu, 20 Apr 2023 18:07:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229907AbjDTWG4 (ORCPT ); Thu, 20 Apr 2023 18:06:56 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4BB523C1B for ; Thu, 20 Apr 2023 15:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682028410; x=1713564410; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RoRP+ak75xtj8epEFOITeTaJ3nELbWFyH3TBq416Xuw=; b=BBz6ORoP2MZoNfI7gXrvJJL0s/dyk1tc1HB6TtbWXm+pVn2sKY4Hu/aA pQsypLzc4FnWQylhJwpkM1DhlM/eMHS7b0yZKeci6UhOSVnvoF4ROj0rA DoPTEvmWcnwOa0oaxPQDsu9NoqJ5rg7EWMuy99id6j72Nr1IiMiASV+lW 9WvNx+s94zHm3Gcy/uQMvMhSMA3iV8FGkvrWkI2zUzIErBy6PMjPMaNvN ONx13eMiKEB5G3EOYfR/MLtqweVtU9yhk+O3P1IIH2ffeR9OvaoNQ4EJq 4pGe3jlwdd5o1M47YwCYNt1j17/TEzRXSvAlvKFgxwef6CHyJCssxt3o4 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10686"; a="348650958" X-IronPort-AV: E=Sophos;i="5.99,213,1677571200"; d="scan'208";a="348650958" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2023 15:06:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10686"; a="724583774" X-IronPort-AV: E=Sophos;i="5.99,213,1677571200"; d="scan'208";a="724583774" Received: from agluck-desk3.sc.intel.com ([172.25.222.78]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2023 15:06:46 -0700 From: Tony Luck To: Fenghua Yu , Reinette Chatre , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Shaopeng Tan , Jamie Iles , James Morse , Babu Moger Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Tony Luck Subject: [RFC PATCH 7/7] x86/resctrl: Example resctrl driver Date: Thu, 20 Apr 2023 15:06:36 -0700 Message-Id: <20230420220636.53527-8-tony.luck@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230420220636.53527-1-tony.luck@intel.com> References: <20230420220636.53527-1-tony.luck@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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, 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 Simply add two files to each ctrlmon directory that show the closid and rmid respectively. Signed-off-by: Tony Luck --- .../cpu/resctrl/drivers/resctrl_example.c | 77 +++++++++++++++++++ arch/x86/Kconfig | 11 +++ arch/x86/kernel/cpu/resctrl/Makefile | 1 + arch/x86/kernel/cpu/resctrl/drivers/Makefile | 1 + 4 files changed, 90 insertions(+) create mode 100644 arch/x86/kernel/cpu/resctrl/drivers/resctrl_example.c create mode 100644 arch/x86/kernel/cpu/resctrl/drivers/Makefile diff --git a/arch/x86/kernel/cpu/resctrl/drivers/resctrl_example.c b/arch/x86/kernel/cpu/resctrl/drivers/resctrl_example.c new file mode 100644 index 000000000000..24998e0dc3c2 --- /dev/null +++ b/arch/x86/kernel/cpu/resctrl/drivers/resctrl_example.c @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright(c) 2023 Intel Corporation. */ + +/* + * Example resctrl driver + */ +#include +#include +#include +#include +#include +#include + +#undef pr_fmt +#define pr_fmt(fmt) "exampleresctrl: " fmt + +static int closid_show(struct seq_file *sf, void *arg) +{ + struct kernfs_open_file *of = sf->private; + unsigned long priv = (unsigned long)of->kn->priv; + u32 closid = priv >> 16; + + seq_printf(sf, "%d\n", closid); + + return 0; +} + +static int rmid_show(struct seq_file *sf, void *arg) +{ + struct kernfs_open_file *of = sf->private; + unsigned long priv = (unsigned long)of->kn->priv; + u32 rmid = priv & 0xffff; + + seq_printf(sf, "%d\n", rmid); + + return 0; +} + +static struct kernfs_ops closid_ops = { + .seq_show = closid_show, +}; + +static struct kernfs_ops rmid_ops = { + .seq_show = rmid_show, +}; + +static struct resctrl_fileinfo files[] = { + { + .name = "closid", .ops = &closid_ops + }, + { + .name = "rmid", .ops = &rmid_ops + }, + { + } +}; + +static struct resctrl_driver ops = { + .ctrlfiles = files, +}; + +static int __init init_example(void) +{ + resctrl_register_driver(&ops); + + return 0; +} + +static void __exit cleanup_example(void) +{ + resctrl_unregister_driver(&ops); +} + +module_init(init_example); +module_exit(cleanup_example); + +MODULE_LICENSE("GPL"); diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index a825bf031f49..7f2faec17365 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -500,6 +500,17 @@ config X86_CPU_RESCTRL Say N if unsure. +config X86_CPU_RESCTRL_DRIVERS + bool "resctrl driver" + +config X86_CPU_RESCTRL_EXAMPLE_DRIVER + tristate "example x86 resctrl driver" + depends on X86_CPU_RESCTRL + select X86_CPU_RESCTRL_DRIVERS + help + Example driver to show one possible use case for + resctrl driver registration. + if X86_32 config X86_BIGSMP bool "Support for big SMP systems with more than 8 CPUs" diff --git a/arch/x86/kernel/cpu/resctrl/Makefile b/arch/x86/kernel/cpu/resctrl/Makefile index 4a06c37b9cf1..7db4d729afbc 100644 --- a/arch/x86/kernel/cpu/resctrl/Makefile +++ b/arch/x86/kernel/cpu/resctrl/Makefile @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_X86_CPU_RESCTRL) += core.o rdtgroup.o monitor.o obj-$(CONFIG_X86_CPU_RESCTRL) += ctrlmondata.o pseudo_lock.o +obj-$(CONFIG_X86_CPU_RESCTRL_DRIVERS) += drivers/ CFLAGS_pseudo_lock.o = -I$(src) diff --git a/arch/x86/kernel/cpu/resctrl/drivers/Makefile b/arch/x86/kernel/cpu/resctrl/drivers/Makefile new file mode 100644 index 000000000000..27db936eb947 --- /dev/null +++ b/arch/x86/kernel/cpu/resctrl/drivers/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_X86_CPU_RESCTRL_EXAMPLE_DRIVER) += resctrl_example.o -- 2.39.2