lkml.org 
[lkml]   [2004]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] physid for nodes
Date
Here's the node physid patch refreshed against the latest BK bits.  It works 
ok for nodes, but I'm wondering what to do about other devices. Is there a
structure that we could embed the physid string into that would apply to PCI
devices, busses, CPUs, and memory? Or should we just add the strings on a
case-by-case basis?

The ia64 bits also need to be abstracted out...

Thanks,
Jesse
===== arch/ia64/mm/numa.c 1.7 vs edited =====
--- 1.7/arch/ia64/mm/numa.c 2004-02-03 21:35:17 -08:00
+++ edited/arch/ia64/mm/numa.c 2004-07-26 09:42:34 -07:00
@@ -19,6 +19,8 @@
#include <linux/bootmem.h>
#include <asm/mmzone.h>
#include <asm/numa.h>
+#include <asm/sn/nodepda.h>
+#include <asm/sn/module.h>

static struct node *sysfs_nodes;
static struct cpu *sysfs_cpus;
@@ -48,6 +50,12 @@
break;

return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
+}
+
+void node_to_physid(int node, char *buf)
+{
+ struct nodepda_s *nodeinfo = NODEPDA(node);
+ format_module_id(buf, nodeinfo->module->id, MODULE_FORMAT_BRIEF);
}

static int __init topology_init(void)
===== drivers/base/node.c 1.22 vs edited =====
--- 1.22/drivers/base/node.c 2004-06-27 00:19:31 -07:00
+++ edited/drivers/base/node.c 2004-07-26 09:43:07 -07:00
@@ -101,6 +101,17 @@
}
static SYSDEV_ATTR(numastat, S_IRUGO, node_read_numastat, NULL);

+static ssize_t node_read_physid(struct sys_device * dev, char * buf)
+{
+ struct node *node_dev = to_node(dev);
+ int len;
+
+ len = snprintf(buf, NODE_MAX_PHYSID + 1, "%s\n", node_dev->physid);
+ return len;
+}
+
+static SYSDEV_ATTR(physid,S_IRUGO,node_read_physid,NULL);
+
/*
* register_node - Setup a driverfs device for a node.
* @num - Node number to use when creating the device.
@@ -112,6 +123,7 @@
int error;

node->cpumap = node_to_cpumask(num);
+ node_to_physid(num, node->physid);
node->sysdev.id = num;
node->sysdev.cls = &node_class;
error = sysdev_register(&node->sysdev);
@@ -120,6 +132,7 @@
sysdev_create_file(&node->sysdev, &attr_cpumap);
sysdev_create_file(&node->sysdev, &attr_meminfo);
sysdev_create_file(&node->sysdev, &attr_numastat);
+ sysdev_create_file(&node->sysdev, &attr_physid);
}
return error;
}
===== include/asm-ia64/topology.h 1.10 vs edited =====
--- 1.10/include/asm-ia64/topology.h 2004-02-03 21:35:17 -08:00
+++ edited/include/asm-ia64/topology.h 2004-07-26 09:41:24 -07:00
@@ -45,6 +45,8 @@

void build_cpu_to_node_map(void);

+extern void node_to_physid(int node, char *buf);
+
#endif /* CONFIG_NUMA */

#include <asm-generic/topology.h>
===== include/asm-ia64/sn/module.h 1.15 vs edited =====
--- 1.15/include/asm-ia64/sn/module.h 2004-06-07 08:45:42 -07:00
+++ edited/include/asm-ia64/sn/module.h 2004-07-26 09:43:29 -07:00
@@ -8,6 +8,7 @@
#ifndef _ASM_IA64_SN_MODULE_H
#define _ASM_IA64_SN_MODULE_H

+#include <asm/sn/sgi.h>
#include <asm/sn/klconfig.h>
#include <asm/sn/ksys/elsc.h>

===== include/linux/node.h 1.5 vs edited =====
--- 1.5/include/linux/node.h 2003-08-18 19:46:23 -07:00
+++ edited/include/linux/node.h 2004-07-26 09:41:26 -07:00
@@ -22,8 +22,11 @@
#include <linux/sysdev.h>
#include <linux/cpumask.h>

+#define NODE_MAX_PHYSID 80
+
struct node {
cpumask_t cpumap; /* Bitmap of CPUs on the Node */
+ char physid[NODE_MAX_PHYSID]; /* Physical ID of node */
struct sys_device sysdev;
};
\
 
 \ /
  Last update: 2005-03-22 14:04    [W:0.024 / U:0.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site