X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fchar%2Fsnsc.c;h=9d027ec553852fc6e3f8b49dfd72aa2b19590dc5;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=25917e08ea84d78bf7a94549b6d5def5e9a558ea;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c index 25917e08e..9d027ec55 100644 --- a/drivers/char/snsc.c +++ b/drivers/char/snsc.c @@ -21,7 +21,10 @@ #include #include #include +#include #include +#include +#include #include #include "snsc.h" @@ -364,17 +367,15 @@ int __init scdrv_init(void) { geoid_t geoid; - cmoduleid_t cmod; - int i; + cnodeid_t cnode; char devname[32]; char *devnamep; - module_t *m; struct sysctl_data_s *scd; void *salbuf; struct class_simple *snsc_class; dev_t first_dev, dev; - if (alloc_chrdev_region(&first_dev, 0, (MAX_SLABS*nummodules), + if (alloc_chrdev_region(&first_dev, 0, numionodes, SYSCTL_BASENAME) < 0) { printk("%s: failed to register SN system controller device\n", __FUNCTION__); @@ -382,16 +383,8 @@ scdrv_init(void) } snsc_class = class_simple_create(THIS_MODULE, SYSCTL_BASENAME); - for (cmod = 0; cmod < nummodules; cmod++) { - m = sn_modules[cmod]; - for (i = 0; i <= MAX_SLABS; i++) { - - if (m->nodes[i] == -1) { - /* node is not alive in module */ - continue; - } - - geoid = m->geoid[i]; + for (cnode = 0; cnode < numionodes; cnode++) { + geoid = cnodeid_get_geoid(cnode); devnamep = devname; format_module_id(devnamep, geo_module(geoid), MODULE_FORMAT_BRIEF); @@ -410,7 +403,7 @@ scdrv_init(void) memset(scd, 0, sizeof (struct sysctl_data_s)); /* initialize sysctl device data fields */ - scd->scd_nasid = cnodeid_to_nasid(m->nodes[i]); + scd->scd_nasid = cnodeid_to_nasid(cnode); if (!(salbuf = kmalloc(SCDRV_BUFSZ, GFP_KERNEL))) { printk("%s: failed to allocate driver buffer" "(%s%s)\n", __FUNCTION__, @@ -431,7 +424,7 @@ scdrv_init(void) continue; } - dev = first_dev + m->nodes[i]; + dev = first_dev + cnode; cdev_init(&scd->scd_cdev, &scdrv_fops); if (cdev_add(&scd->scd_cdev, dev, 1)) { printk("%s: failed to register system" @@ -448,7 +441,6 @@ scdrv_init(void) ia64_sn_irtr_intr_enable(scd->scd_nasid, 0 /*ignored */ , SAL_IROUTER_INTR_RECV); - } } return 0; }