From 3e093f6a409dc7a5386a782d0a5d1a789dfeb098 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Thu, 3 Nov 2016 16:10:29 +0900 Subject: [PATCH] sysfs: fix /sys/devices/system/node/online value --- executer/kernel/mcctrl/mcctrl.h | 1 + executer/kernel/mcctrl/sysfs_files.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/executer/kernel/mcctrl/mcctrl.h b/executer/kernel/mcctrl/mcctrl.h index 11d1b161..09e867a3 100644 --- a/executer/kernel/mcctrl/mcctrl.h +++ b/executer/kernel/mcctrl/mcctrl.h @@ -281,6 +281,7 @@ struct mcctrl_usrdata { unsigned long cpu_online[CPU_LONGS]; struct ihk_cpu_info *cpu_info; struct ihk_mem_info *mem_info; + nodemask_t numa_online; struct list_head cpu_topology_list; struct list_head node_topology_list; }; diff --git a/executer/kernel/mcctrl/sysfs_files.c b/executer/kernel/mcctrl/sysfs_files.c index aeb024fa..f2c29827 100644 --- a/executer/kernel/mcctrl/sysfs_files.c +++ b/executer/kernel/mcctrl/sysfs_files.c @@ -658,6 +658,7 @@ out: static int setup_node_files(struct mcctrl_usrdata *udp) { int error; + int node; struct node_topology *p; struct sysfsm_bitmap_param param; @@ -669,10 +670,19 @@ static int setup_node_files(struct mcctrl_usrdata *udp) goto out; } + memset(&udp->numa_online, 0, sizeof(udp->numa_online)); + for (node = 0; node < udp->mem_info->n_numa_nodes; ++node) { + node_set(node, udp->numa_online); + } + + param.nbits = MAX_NUMNODES; + param.ptr = &udp->numa_online; + sysfsm_createf(udp->os, SYSFS_SNOOPING_OPS_pbl, ¶m, 0444, + "/sys/devices/system/node/online"); + list_for_each_entry(p, &udp->node_topology_list, chain) { struct sysfs_handle handle; int cpu; - int node; size_t offset = 0; param.nbits = nr_cpumask_bits; param.ptr = &p->cpumap;