Received: by 10.223.164.202 with SMTP id h10csp203345wrb; Mon, 13 Nov 2017 16:46:29 -0800 (PST) X-Google-Smtp-Source: AGs4zMaYMIq/9QfMSoQmC1DII74pU/7bxiPOYk6871h15Cvq1u2oBzzM02b0z/sy9v4fofPoPzQO X-Received: by 10.99.157.3 with SMTP id i3mr10209755pgd.165.1510620389161; Mon, 13 Nov 2017 16:46:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510620389; cv=none; d=google.com; s=arc-20160816; b=G5zQNDgDXnS+QBJjjOGsjGL63mbQIJyPKP4aSXnXSbiwFxxlRqi12dQwFTW22X++99 P6sgU5FRuD4onWCbuLiFvaAZqHeKjM4ubcf1rN05aDXTpEa9FIhlwpuqnRR0dswxKfzd cbWIcYRyB6CcpubJlQQy5A0bU+2yqp1H+DBRVN2Tg9KRnzYHa569ZeGNwfrfGZyQZ8nD OrJJM/bAv73BbqsvCVtQYHE3F89ERtK8F1XXRXYKHBEriqKMxO8TFf1V7Zk7Da0RPih2 zRrxxcc6CYGjvlF860aKV0REOJnJNj+x30PCWiOBfDiyELTCDqdtJUJrcA1VUUxFM++7 QuWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=+xU5zdGnqO+FVRfzba6wEUCypysQnp0lyKyta0iZkwg=; b=qigQArvrtYaKbT85R46nFZvwkGLqLxztaAo97DAPDg6RKIf9oauWP1nPr1wBMroI4N ge+dLELXJmGE7LYBB647/sUFo+d7D1x5CWKI1yoZbR3dVrx1C7VFiR/3RqyUGfCIMvxo xzgndVvIKE7fIsOGPp8DigvILfZ+8sJi1zBGo1BX5Loi6ANklKIYrCRht8Oq62uxULvv 6LKFaOpibw4G4mEKcwXAaTfzR02FcWurz6wfxQSWUFVp7fk75FqzxPe2tGVw/ZMkRHxq dlCTY6bRtNEWqhkgKXuPBCnOaSq53PpD8vH9NPuheafaCcn59nuHkRxUF4vaeywGjFtG +c0Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q4si14789673pgq.711.2017.11.13.16.46.16; Mon, 13 Nov 2017 16:46:29 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752858AbdKNAm3 (ORCPT + 90 others); Mon, 13 Nov 2017 19:42:29 -0500 Received: from mga01.intel.com ([192.55.52.88]:37783 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752394AbdKNAmS (ORCPT ); Mon, 13 Nov 2017 19:42:18 -0500 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2017 16:42:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,392,1505804400"; d="scan'208";a="2288260" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by fmsmga001.fm.intel.com with ESMTP; 13 Nov 2017 16:42:16 -0800 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com Cc: vikas.shivappa@linux.intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre Subject: [RFC PATCH 03/20] x86/intel_rdt: Introduce hooks to create pseudo-locking files Date: Mon, 13 Nov 2017 08:39:26 -0800 Message-Id: X-Mailer: git-send-email 2.13.5 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We create a new file to host pseudo-locking specific code. The first of this code are the functions that create the initial pseudo_lock directory with its first file, "avail", starting by reporting zero. This will be expanded in future commits. Signed-off-by: Reinette Chatre --- arch/x86/kernel/cpu/Makefile | 3 +- arch/x86/kernel/cpu/intel_rdt.h | 2 + arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c | 105 ++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile index 236999c54edc..ce704c5fe1da 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile @@ -34,7 +34,8 @@ obj-$(CONFIG_CPU_SUP_CENTAUR) += centaur.o obj-$(CONFIG_CPU_SUP_TRANSMETA_32) += transmeta.o obj-$(CONFIG_CPU_SUP_UMC_32) += umc.o -obj-$(CONFIG_INTEL_RDT) += intel_rdt.o intel_rdt_rdtgroup.o intel_rdt_monitor.o intel_rdt_ctrlmondata.o +obj-$(CONFIG_INTEL_RDT) += intel_rdt.o intel_rdt_rdtgroup.o intel_rdt_monitor.o +obj-$(CONFIG_INTEL_RDT) += intel_rdt_ctrlmondata.o intel_rdt_pseudo_lock.o obj-$(CONFIG_X86_MCE) += mcheck/ obj-$(CONFIG_MTRR) += mtrr/ diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h index 8cb42523894e..4d3b03685fda 100644 --- a/arch/x86/kernel/cpu/intel_rdt.h +++ b/arch/x86/kernel/cpu/intel_rdt.h @@ -449,5 +449,7 @@ void cqm_setup_limbo_handler(struct rdt_domain *dom, unsigned long delay_ms); void cqm_handle_limbo(struct work_struct *work); bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d); void __check_limbo(struct rdt_domain *d, bool force_free); +int rdt_pseudo_lock_fs_init(struct kernfs_node *root); +void rdt_pseudo_lock_fs_remove(void); #endif /* _ASM_X86_INTEL_RDT_H */ diff --git a/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c new file mode 100644 index 000000000000..ad8b97747024 --- /dev/null +++ b/arch/x86/kernel/cpu/intel_rdt_pseudo_lock.c @@ -0,0 +1,105 @@ +/* + * Resource Director Technology(RDT) + * + * Pseudo-locking support built on top of Cache Allocation Technology (CAT) + * + * Copyright (C) 2017 Intel Corporation + * + * Author: Reinette Chatre + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include "intel_rdt.h" + +static struct kernfs_node *pseudo_lock_kn; + +static int pseudo_lock_avail_show(struct seq_file *sf, void *v) +{ + seq_puts(sf, "0\n"); + return 0; +} + +static struct kernfs_ops pseudo_lock_avail_ops = { + .seq_show = pseudo_lock_avail_show, +}; + +/** + * rdt_pseudo_lock_fs_init - Create and initialize pseudo-locking files + * @root: location in kernfs where directory and files should be created + * + * The pseudo_lock directory and the pseudo-locking related files and + * directories will live within the structure created here. + * + * LOCKING: + * rdtgroup_mutex is expected to be held when called + * + * RETURNS: + * 0 on success, -errno on failure + */ +int rdt_pseudo_lock_fs_init(struct kernfs_node *root) +{ + struct kernfs_node *kn; + int ret; + + lockdep_assert_held(&rdtgroup_mutex); + + pseudo_lock_kn = kernfs_create_dir(root, "pseudo_lock", + root->mode, NULL); + if (IS_ERR(pseudo_lock_kn)) + return PTR_ERR(pseudo_lock_kn); + + kn = __kernfs_create_file(pseudo_lock_kn, "avail", 0444, + 0, &pseudo_lock_avail_ops, + NULL, NULL, NULL); + if (IS_ERR(kn)) { + ret = PTR_ERR(kn); + goto error; + } + + ret = rdtgroup_kn_set_ugid(pseudo_lock_kn); + if (ret) + goto error; + + kernfs_activate(pseudo_lock_kn); + + ret = 0; + goto out; + +error: + kernfs_remove(pseudo_lock_kn); + pseudo_lock_kn = NULL; +out: + return ret; +} + +/** + * rdt_pseudo_lock_fs_remove - Remove all pseudo-locking files + * + * All pseudo-locking related files and directories are removed. + * + * LOCKING: + * rdtgroup_mutex is expected to be held when called + * + * RETURNS: + * none + */ +void rdt_pseudo_lock_fs_remove(void) +{ + lockdep_assert_held(&rdtgroup_mutex); + + kernfs_remove(pseudo_lock_kn); + pseudo_lock_kn = NULL; +} -- 2.13.5 From 1584144780908352369@xxx Wed Nov 15 15:03:11 +0000 2017 X-GM-THRID: 1584144780908352369 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread