[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <8400c5d421510914f7061f88058e7b8490fa4ba5.1510568528.git.reinette.chatre@intel.com>
Date: Mon, 13 Nov 2017 08:39:30 -0800
From: Reinette Chatre <reinette.chatre@...el.com>
To: tglx@...utronix.de, fenghua.yu@...el.com, tony.luck@...el.com
Cc: vikas.shivappa@...ux.intel.com, dave.hansen@...el.com,
mingo@...hat.com, hpa@...or.com, x86@...nel.org,
linux-kernel@...r.kernel.org,
Reinette Chatre <reinette.chatre@...el.com>
Subject: [RFC PATCH 07/20] x86/intel_rdt: Connect pseudo-locking directory to operations
As a dependent of RDT/CAT we hook up the pseudo-locking files
initialization to that of RDT/CAT. The initial operations of mkdir/rmdir
used to create pseudo-locked regions are now hooked up also.
Signed-off-by: Reinette Chatre <reinette.chatre@...el.com>
---
arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
index c711df201e57..afa3795a124e 100644
--- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
+++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
@@ -1179,13 +1179,19 @@ static struct dentry *rdt_mount(struct file_system_type *fs_type,
goto out_cdp;
}
+ ret = rdt_pseudo_lock_fs_init(rdtgroup_default.kn);
+ if (ret) {
+ dentry = ERR_PTR(ret);
+ goto out_info;
+ }
+
if (rdt_mon_capable) {
ret = mongroup_create_dir(rdtgroup_default.kn,
NULL, "mon_groups",
&kn_mongrp);
if (ret) {
dentry = ERR_PTR(ret);
- goto out_info;
+ goto out_psl;
}
kernfs_get(kn_mongrp);
@@ -1226,6 +1232,8 @@ static struct dentry *rdt_mount(struct file_system_type *fs_type,
out_mongrp:
if (rdt_mon_capable)
kernfs_remove(kn_mongrp);
+out_psl:
+ rdt_pseudo_lock_fs_remove();
out_info:
kernfs_remove(kn_info);
out_cdp:
@@ -1374,6 +1382,7 @@ static void rmdir_all_sub(void)
/* Notify online CPUs to update per cpu storage and PQR_ASSOC MSR */
update_closid_rmid(cpu_online_mask, &rdtgroup_default);
+ rdt_pseudo_lock_fs_remove();
kernfs_remove(kn_info);
kernfs_remove(kn_mongrp);
kernfs_remove(kn_mondata);
@@ -1796,6 +1805,9 @@ static int rdtgroup_mkdir(struct kernfs_node *parent_kn, const char *name,
if (strchr(name, '\n'))
return -EINVAL;
+ if (parent_kn == pseudo_lock_kn)
+ return rdt_pseudo_lock_mkdir(name, mode);
+
/*
* If the parent directory is the root directory and RDT
* allocation is supported, add a control and monitoring
@@ -1905,6 +1917,9 @@ static int rdtgroup_rmdir(struct kernfs_node *kn)
cpumask_var_t tmpmask;
int ret = 0;
+ if (parent_kn == pseudo_lock_kn)
+ return rdt_pseudo_lock_rmdir(kn);
+
if (!zalloc_cpumask_var(&tmpmask, GFP_KERNEL))
return -ENOMEM;
--
2.13.5
Powered by blists - more mailing lists