sysfs: add missing symlinks for cpu/node
Add the following patterns of symlinks: - /sys/bus/cpu/drivers/processor/cpu* - /sys/bus/node/devices/node* And slightly change how /sys/devices/system/cpu/cpu*/node* are created to avoid duplicate lookups Change-Id: Id94a4d157da06d75f6bd450d5bd9a9e7709a1414
This commit is contained in:
committed by
Masamichi Takagi
parent
3738b70ad3
commit
f9d8d98af1
@@ -578,34 +578,6 @@ static void setup_cpu_sysfs_files(struct mcctrl_usrdata *udp,
|
|||||||
return;
|
return;
|
||||||
} /* setup_cpu_sysfs_files() */
|
} /* setup_cpu_sysfs_files() */
|
||||||
|
|
||||||
static void setup_cpus_sysfs_files_node_link(struct mcctrl_usrdata *udp)
|
|
||||||
{
|
|
||||||
int error;
|
|
||||||
int cpu;
|
|
||||||
struct sysfs_handle handle;
|
|
||||||
|
|
||||||
for (cpu = 0; cpu < udp->cpu_info->n_cpus; ++cpu) {
|
|
||||||
int node = linux_numa_2_mckernel_numa(udp,
|
|
||||||
cpu_to_node(mckernel_cpu_2_linux_cpu(udp, cpu)));
|
|
||||||
|
|
||||||
error = sysfsm_lookupf(udp->os, &handle,
|
|
||||||
"/sys/devices/system/node/node%d", node);
|
|
||||||
if (error) {
|
|
||||||
panic("sysfsm_lookupf: node for CPU");
|
|
||||||
}
|
|
||||||
|
|
||||||
error = sysfsm_symlinkf(udp->os, handle,
|
|
||||||
"/sys/devices/system/cpu/cpu%d/node%d",
|
|
||||||
cpu, node);
|
|
||||||
if (error) {
|
|
||||||
panic("sysfsm_symlinkf(CPU in node)");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
error = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void setup_cpus_sysfs_files(struct mcctrl_usrdata *udp)
|
static void setup_cpus_sysfs_files(struct mcctrl_usrdata *udp)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
@@ -731,7 +703,7 @@ static int setup_node_files(struct mcctrl_usrdata *udp)
|
|||||||
|
|
||||||
|
|
||||||
list_for_each_entry(p, &udp->node_topology_list, chain) {
|
list_for_each_entry(p, &udp->node_topology_list, chain) {
|
||||||
struct sysfs_handle handle;
|
struct sysfs_handle node_handle, cpu_handle;
|
||||||
int cpu;
|
int cpu;
|
||||||
size_t offset = 0;
|
size_t offset = 0;
|
||||||
param.nbits = nr_cpu_ids;
|
param.nbits = nr_cpu_ids;
|
||||||
@@ -762,6 +734,20 @@ static int setup_node_files(struct mcctrl_usrdata *udp)
|
|||||||
"/sys/devices/system/node/node%d/cpulist",
|
"/sys/devices/system/node/node%d/cpulist",
|
||||||
p->mckernel_numa_id);
|
p->mckernel_numa_id);
|
||||||
|
|
||||||
|
error = sysfsm_lookupf(udp->os, &node_handle,
|
||||||
|
"/sys/devices/system/node/node%d",
|
||||||
|
p->mckernel_numa_id);
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_lookupf(node)");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_symlinkf(udp->os, node_handle,
|
||||||
|
"/sys/bus/node/devices/node%d",
|
||||||
|
p->mckernel_numa_id);
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_symlinkf(bus node)");
|
||||||
|
}
|
||||||
|
|
||||||
/* Add CPU symlinks for this node */
|
/* Add CPU symlinks for this node */
|
||||||
for (cpu = 0; cpu < udp->cpu_info->n_cpus; ++cpu) {
|
for (cpu = 0; cpu < udp->cpu_info->n_cpus; ++cpu) {
|
||||||
if (linux_numa_2_mckernel_numa(udp,
|
if (linux_numa_2_mckernel_numa(udp,
|
||||||
@@ -770,13 +756,20 @@ static int setup_node_files(struct mcctrl_usrdata *udp)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = sysfsm_lookupf(udp->os, &handle,
|
error = sysfsm_symlinkf(udp->os, node_handle,
|
||||||
|
"/sys/devices/system/cpu/cpu%d/node%d",
|
||||||
|
cpu, p->mckernel_numa_id);
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_symlinkf(node in CPU)");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_lookupf(udp->os, &cpu_handle,
|
||||||
"/sys/devices/system/cpu/cpu%d", cpu);
|
"/sys/devices/system/cpu/cpu%d", cpu);
|
||||||
if (error) {
|
if (error) {
|
||||||
panic("sysfsm_lookupf(CPU in node)");
|
panic("sysfsm_lookupf(CPU in node)");
|
||||||
}
|
}
|
||||||
|
|
||||||
error = sysfsm_symlinkf(udp->os, handle,
|
error = sysfsm_symlinkf(udp->os, cpu_handle,
|
||||||
"/sys/devices/system/node/node%d/cpu%d",
|
"/sys/devices/system/node/node%d/cpu%d",
|
||||||
p->mckernel_numa_id, cpu);
|
p->mckernel_numa_id, cpu);
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -1173,7 +1166,6 @@ void setup_sysfs_files(ihk_os_t os)
|
|||||||
setup_local_snooping_files(os);
|
setup_local_snooping_files(os);
|
||||||
setup_cpus_sysfs_files(udp);
|
setup_cpus_sysfs_files(udp);
|
||||||
setup_node_files(udp);
|
setup_node_files(udp);
|
||||||
setup_cpus_sysfs_files_node_link(udp);
|
|
||||||
#ifdef SETUP_PCI_FILES
|
#ifdef SETUP_PCI_FILES
|
||||||
setup_pci_files(udp);
|
setup_pci_files(udp);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -258,6 +258,12 @@ cpu_sysfs_setup(void)
|
|||||||
if (error) {
|
if (error) {
|
||||||
panic("cpu_sysfs_setup:sysfs_symlinkf failed\n");
|
panic("cpu_sysfs_setup:sysfs_symlinkf failed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
error = sysfs_symlinkf(targeth, "/sys/bus/cpu/drivers/processor/cpu%d",
|
||||||
|
cpu);
|
||||||
|
if (error) {
|
||||||
|
panic("cpu_sysfs_setup:sysfs_symlinkf failed\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user