Commit 854631be authored by Jesse Barnes's avatar Jesse Barnes Committed by David Mosberger

[PATCH] ia64: SN cleanups

Some patches from hch@infradead.org cleaning up sn2 code a bit,
including the removal of some unnecessary files.
parent a4b54490
...@@ -63,7 +63,7 @@ config IA64_GENERIC ...@@ -63,7 +63,7 @@ config IA64_GENERIC
HP-simulator For the HP simulator HP-simulator For the HP simulator
(<http://software.hp.com/ia64linux/>). (<http://software.hp.com/ia64linux/>).
HP-zx1 For HP zx1-based systems. HP-zx1 For HP zx1-based systems.
SN1-simulator For the SGI SN1 simulator. SGI-SN2 For SGI Altix systems
DIG-compliant For DIG ("Developer's Interface Guide") compliant DIG-compliant For DIG ("Developer's Interface Guide") compliant
systems. systems.
...@@ -187,8 +187,8 @@ config ITANIUM_BSTEP_SPECIFIC ...@@ -187,8 +187,8 @@ config ITANIUM_BSTEP_SPECIFIC
# align cache-sensitive data to 128 bytes # align cache-sensitive data to 128 bytes
config IA64_L1_CACHE_SHIFT config IA64_L1_CACHE_SHIFT
int int
default "7" if MCKINLEY || ITANIUM && IA64_SGI_SN1 default "7" if MCKINLEY
default "6" if ITANIUM && !IA64_SGI_SN1 default "6" if ITANIUM
# align cache-sensitive data to 64 bytes # align cache-sensitive data to 64 bytes
config MCKINLEY_ASTEP_SPECIFIC config MCKINLEY_ASTEP_SPECIFIC
...@@ -207,7 +207,7 @@ config MCKINLEY_A0_SPECIFIC ...@@ -207,7 +207,7 @@ config MCKINLEY_A0_SPECIFIC
config NUMA config NUMA
bool "Enable NUMA support" if IA64_GENERIC || IA64_DIG || IA64_HP_ZX1 bool "Enable NUMA support" if IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
default y if IA64_SGI_SN1 || IA64_SGI_SN2 default y if IA64_SGI_SN2
help help
Say Y to compile the kernel to support NUMA (Non-Uniform Memory Say Y to compile the kernel to support NUMA (Non-Uniform Memory
Access). This option is for configuring high-end multiprocessor Access). This option is for configuring high-end multiprocessor
...@@ -231,7 +231,7 @@ endchoice ...@@ -231,7 +231,7 @@ endchoice
config DISCONTIGMEM config DISCONTIGMEM
bool bool
depends on IA64_SGI_SN1 || IA64_SGI_SN2 || (IA64_GENERIC || IA64_DIG || IA64_HP_ZX1) && NUMA depends on IA64_SGI_SN2 || (IA64_GENERIC || IA64_DIG || IA64_HP_ZX1) && NUMA
default y default y
help help
Say Y to support efficient handling of discontiguous physical memory, Say Y to support efficient handling of discontiguous physical memory,
...@@ -256,7 +256,7 @@ config VIRTUAL_MEM_MAP ...@@ -256,7 +256,7 @@ config VIRTUAL_MEM_MAP
config IA64_MCA config IA64_MCA
bool "Enable IA-64 Machine Check Abort" if IA64_GENERIC || IA64_DIG || IA64_HP_ZX1 bool "Enable IA-64 Machine Check Abort" if IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
default y if IA64_SGI_SN1 || IA64_SGI_SN2 default y if IA64_SGI_SN2
help help
Say Y here to enable machine check support for IA-64. If you're Say Y here to enable machine check support for IA-64. If you're
unsure, answer Y. unsure, answer Y.
...@@ -290,17 +290,17 @@ config IOSAPIC ...@@ -290,17 +290,17 @@ config IOSAPIC
config IA64_SGI_SN config IA64_SGI_SN
bool bool
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
default y default y
config HWGFS_FS config HWGFS_FS
bool bool
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
default y default y
config IA64_SGI_SN_DEBUG config IA64_SGI_SN_DEBUG
bool "Enable extra debugging code" bool "Enable extra debugging code"
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
help help
Turns on extra debugging code in the SGI SN (Scalable NUMA) platform Turns on extra debugging code in the SGI SN (Scalable NUMA) platform
for IA-64. Unless you are debugging problems on an SGI SN IA-64 box, for IA-64. Unless you are debugging problems on an SGI SN IA-64 box,
...@@ -308,14 +308,14 @@ config IA64_SGI_SN_DEBUG ...@@ -308,14 +308,14 @@ config IA64_SGI_SN_DEBUG
config IA64_SGI_SN_SIM config IA64_SGI_SN_SIM
bool "Enable SGI Medusa Simulator Support" bool "Enable SGI Medusa Simulator Support"
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
help help
If you are compiling a kernel that will run under SGI's IA-64 If you are compiling a kernel that will run under SGI's IA-64
simulator (Medusa) then say Y, otherwise say N. simulator (Medusa) then say Y, otherwise say N.
config IA64_SGI_AUTOTEST config IA64_SGI_AUTOTEST
bool "Enable autotest (llsc). Option to run cache test instead of booting" bool "Enable autotest (llsc). Option to run cache test instead of booting"
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
help help
Build a kernel used for hardware validation. If you include the Build a kernel used for hardware validation. If you include the
keyword "autotest" on the boot command line, the kernel does NOT boot. keyword "autotest" on the boot command line, the kernel does NOT boot.
...@@ -325,7 +325,7 @@ config IA64_SGI_AUTOTEST ...@@ -325,7 +325,7 @@ config IA64_SGI_AUTOTEST
config SERIAL_SGI_L1_PROTOCOL config SERIAL_SGI_L1_PROTOCOL
bool "Enable protocol mode for the L1 console" bool "Enable protocol mode for the L1 console"
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
help help
Uses protocol mode instead of raw mode for the level 1 console on the Uses protocol mode instead of raw mode for the level 1 console on the
SGI SN (Scalable NUMA) platform for IA-64. If you are compiling for SGI SN (Scalable NUMA) platform for IA-64. If you are compiling for
...@@ -333,12 +333,12 @@ config SERIAL_SGI_L1_PROTOCOL ...@@ -333,12 +333,12 @@ config SERIAL_SGI_L1_PROTOCOL
config PERCPU_IRQ config PERCPU_IRQ
bool bool
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
default y default y
config PCIBA config PCIBA
tristate "PCIBA support" tristate "PCIBA support"
depends on IA64_SGI_SN1 || IA64_SGI_SN2 depends on IA64_SGI_SN2
help help
IRIX PCIBA-inspired user mode PCI interface for the SGI SN (Scalable IRIX PCIBA-inspired user mode PCI interface for the SGI SN (Scalable
NUMA) platform for IA-64. Unless you are compiling a kernel for an NUMA) platform for IA-64. Unless you are compiling a kernel for an
......
...@@ -11,13 +11,5 @@ ...@@ -11,13 +11,5 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN -DSHUB_SWAP_WAR EXTRA_CFLAGS := -DLITTLE_ENDIAN -DSHUB_SWAP_WAR
obj-$(CONFIG_IA64_SGI_SN) += sgi_if.o xswitch.o sgi_io_sim.o cdl.o ate_utils.o \ obj-y += sgi_if.o xswitch.o sgi_io_sim.o cdl.o ate_utils.o \
io.o machvec/ drivers/ platform_init/ io.o machvec/ drivers/ platform_init/ sn2/ hwgfs/
\ No newline at end of file
obj-$(CONFIG_IA64_SGI_SN2) += sn2/
ifdef CONFIG_HWGFS_FS
obj-$(CONFIG_HWGFS_FS) += hwgfs/
else
obj-$(CONFIG_DEVFS_FS) += hwgdfs/
endif
...@@ -9,6 +9,6 @@ ...@@ -9,6 +9,6 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN EXTRA_CFLAGS := -DLITTLE_ENDIAN
obj-y += hubdev.o ioconfig_bus.o ifconfig_net.o obj-y += ioconfig_bus.o ifconfig_net.o
obj-$(CONFIG_PCIBA) += pciba.o obj-$(CONFIG_PCIBA) += pciba.o
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1992-1997,2000-2003 Silicon Graphics, Inc. All rights reserved.
*/
#include <linux/config.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <asm/sn/sgi.h>
#include <asm/sn/io.h>
#include <asm/sn/iograph.h>
#include <asm/sn/sn_private.h>
#include <asm/sn/invent.h>
#include <asm/sn/hcl.h>
#include <asm/sn/labelcl.h>
struct hubdev_callout {
int (*attach_method)(vertex_hdl_t);
struct hubdev_callout *fp;
};
typedef struct hubdev_callout hubdev_callout_t;
mutex_t hubdev_callout_mutex;
static hubdev_callout_t *hubdev_callout_list;
void
hubdev_init(void)
{
mutex_init(&hubdev_callout_mutex);
hubdev_callout_list = NULL;
}
void
hubdev_register(int (*attach_method)(vertex_hdl_t))
{
hubdev_callout_t *callout;
ASSERT(attach_method);
callout = (hubdev_callout_t *)snia_kmem_zalloc(sizeof(hubdev_callout_t), KM_SLEEP);
ASSERT(callout);
mutex_lock(&hubdev_callout_mutex);
/*
* Insert at the end of the list
*/
callout->fp = hubdev_callout_list;
hubdev_callout_list = callout;
callout->attach_method = attach_method;
mutex_unlock(&hubdev_callout_mutex);
}
int
hubdev_unregister(int (*attach_method)(vertex_hdl_t))
{
hubdev_callout_t **p;
ASSERT(attach_method);
mutex_lock(&hubdev_callout_mutex);
/*
* Remove registry element containing attach_method
*/
for (p = &hubdev_callout_list; *p != NULL; p = &(*p)->fp) {
if ((*p)->attach_method == attach_method) {
hubdev_callout_t* victim = *p;
*p = (*p)->fp;
kfree(victim);
mutex_unlock(&hubdev_callout_mutex);
return (0);
}
}
mutex_unlock(&hubdev_callout_mutex);
return (ENOENT);
}
int
hubdev_docallouts(vertex_hdl_t hub)
{
hubdev_callout_t *p;
int errcode;
mutex_lock(&hubdev_callout_mutex);
for (p = hubdev_callout_list; p != NULL; p = p->fp) {
ASSERT(p->attach_method);
errcode = (*p->attach_method)(hub);
if (errcode != 0) {
mutex_unlock(&hubdev_callout_mutex);
return (errcode);
}
}
mutex_unlock(&hubdev_callout_mutex);
return (0);
}
...@@ -284,7 +284,7 @@ int __init init_ifconfig_net(void) ...@@ -284,7 +284,7 @@ int __init init_ifconfig_net(void)
{ {
ifconfig_net_handle = NULL; ifconfig_net_handle = NULL;
ifconfig_net_handle = hwgraph_register(hwgraph_root, ".ifconfig_net", ifconfig_net_handle = hwgraph_register(hwgraph_root, ".ifconfig_net",
0, DEVFS_FL_AUTO_DEVNUM, 0, 0,
0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
&ifconfig_net_fops, NULL); &ifconfig_net_fops, NULL);
......
...@@ -361,7 +361,7 @@ int init_ioconfig_bus(void) ...@@ -361,7 +361,7 @@ int init_ioconfig_bus(void)
{ {
ioconfig_bus_handle = NULL; ioconfig_bus_handle = NULL;
ioconfig_bus_handle = hwgraph_register(hwgraph_root, ".ioconfig_bus", ioconfig_bus_handle = hwgraph_register(hwgraph_root, ".ioconfig_bus",
0, DEVFS_FL_AUTO_DEVNUM, 0, 0,
0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
&ioconfig_bus_fops, NULL); &ioconfig_bus_fops, NULL);
......
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 2002-2003 Silicon Graphics, Inc. All Rights Reserved.
#
# Makefile for the sn2 io routines.
EXTRA_CFLAGS := -DLITTLE_ENDIAN
obj-y += hcl.o labelcl.o hcl_util.o invent_stub.o
This diff is collapsed.
/* $Id: hcl_util.c,v 1.3 2003/04/24 13:59:39 pfg Exp $
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1992-1997,2000-2003 Silicon Graphics, Inc. All rights reserved.
*/
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/devfs_fs.h>
#include <linux/devfs_fs_kernel.h>
#include <asm/sn/sgi.h>
#include <asm/io.h>
#include <asm/sn/io.h>
#include <asm/sn/iograph.h>
#include <asm/sn/invent.h>
#include <asm/sn/hcl.h>
#include <asm/sn/labelcl.h>
#include <asm/sn/hcl_util.h>
#include <asm/sn/nodepda.h>
static vertex_hdl_t hwgraph_all_cnodes = GRAPH_VERTEX_NONE;
extern vertex_hdl_t hwgraph_root;
/*
** Return the "master" for a given vertex. A master vertex is a
** controller or adapter or other piece of hardware that the given
** vertex passes through on the way to the rest of the system.
*/
vertex_hdl_t
device_master_get(vertex_hdl_t vhdl)
{
graph_error_t rc;
vertex_hdl_t master;
rc = hwgraph_edge_get(vhdl, EDGE_LBL_MASTER, &master);
if (rc == GRAPH_SUCCESS)
return(master);
else
return(GRAPH_VERTEX_NONE);
}
/*
** Set the master for a given vertex.
** Returns 0 on success, non-0 indicates failure
*/
int
device_master_set(vertex_hdl_t vhdl, vertex_hdl_t master)
{
graph_error_t rc;
rc = hwgraph_edge_add(vhdl, master, EDGE_LBL_MASTER);
return(rc != GRAPH_SUCCESS);
}
/*
** Return the compact node id of the node that ultimately "owns" the specified
** vertex. In order to do this, we walk back through masters and connect points
** until we reach a vertex that represents a node.
*/
cnodeid_t
master_node_get(vertex_hdl_t vhdl)
{
cnodeid_t cnodeid;
vertex_hdl_t master;
for (;;) {
cnodeid = nodevertex_to_cnodeid(vhdl);
if (cnodeid != CNODEID_NONE)
return(cnodeid);
master = device_master_get(vhdl);
/* Check for exceptional cases */
if (master == vhdl) {
/* Since we got a reference to the "master" thru
* device_master_get() we should decrement
* its reference count by 1
*/
return(CNODEID_NONE);
}
if (master == GRAPH_VERTEX_NONE) {
master = hwgraph_connectpt_get(vhdl);
if ((master == GRAPH_VERTEX_NONE) ||
(master == vhdl)) {
return(CNODEID_NONE);
}
}
vhdl = master;
}
}
static vertex_hdl_t hwgraph_all_cpuids = GRAPH_VERTEX_NONE;
extern int maxcpus;
void
mark_cpuvertex_as_cpu(vertex_hdl_t vhdl, cpuid_t cpuid)
{
if (cpuid == CPU_NONE)
return;
(void)labelcl_info_add_LBL(vhdl, INFO_LBL_CPUID, INFO_DESC_EXPORT,
(arbitrary_info_t)cpuid);
{
char cpuid_buffer[10];
if (hwgraph_all_cpuids == GRAPH_VERTEX_NONE) {
(void)hwgraph_path_add( hwgraph_root,
EDGE_LBL_CPUNUM,
&hwgraph_all_cpuids);
}
sprintf(cpuid_buffer, "%ld", cpuid);
(void)hwgraph_edge_add( hwgraph_all_cpuids,
vhdl,
cpuid_buffer);
}
}
/*
** If the specified device represents a node, return its
** compact node ID; otherwise, return CNODEID_NONE.
*/
cnodeid_t
nodevertex_to_cnodeid(vertex_hdl_t vhdl)
{
int rv = 0;
arbitrary_info_t cnodeid = CNODEID_NONE;
rv = labelcl_info_get_LBL(vhdl, INFO_LBL_CNODEID, NULL, &cnodeid);
return((cnodeid_t)cnodeid);
}
void
mark_nodevertex_as_node(vertex_hdl_t vhdl, cnodeid_t cnodeid)
{
if (cnodeid == CNODEID_NONE)
return;
cnodeid_to_vertex(cnodeid) = vhdl;
labelcl_info_add_LBL(vhdl, INFO_LBL_CNODEID, INFO_DESC_EXPORT,
(arbitrary_info_t)cnodeid);
{
char cnodeid_buffer[10];
if (hwgraph_all_cnodes == GRAPH_VERTEX_NONE) {
(void)hwgraph_path_add( hwgraph_root,
EDGE_LBL_NODENUM,
&hwgraph_all_cnodes);
}
sprintf(cnodeid_buffer, "%d", cnodeid);
(void)hwgraph_edge_add( hwgraph_all_cnodes,
vhdl,
cnodeid_buffer);
}
}
/*
** If the specified device represents a CPU, return its cpuid;
** otherwise, return CPU_NONE.
*/
cpuid_t
cpuvertex_to_cpuid(vertex_hdl_t vhdl)
{
arbitrary_info_t cpuid = CPU_NONE;
(void)labelcl_info_get_LBL(vhdl, INFO_LBL_CPUID, NULL, &cpuid);
return((cpuid_t)cpuid);
}
/*
** dev_to_name converts a vertex_hdl_t into a canonical name. If the vertex_hdl_t
** represents a vertex in the hardware graph, it is converted in the
** normal way for vertices. If the vertex_hdl_t is an old vertex_hdl_t (one which
** does not represent a hwgraph vertex), we synthesize a name based
** on major/minor number.
**
** Usually returns a pointer to the original buffer, filled in as
** appropriate. If the buffer is too small to hold the entire name,
** or if anything goes wrong while determining the name, dev_to_name
** returns "UnknownDevice".
*/
char *
dev_to_name(vertex_hdl_t dev, char *buf, uint buflen)
{
return(vertex_to_name(dev, buf, buflen));
}
/* $Id$
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1992-1997,2000-2003 Silicon Graphics, Inc. All rights reserved.
*/
/*
* Hardware Inventory
*
* See sys/sn/invent.h for an explanation of the hardware inventory contents.
*
*/
#include <linux/types.h>
#include <asm/sn/sgi.h>
#include <asm/sn/invent.h>
#include <asm/sn/hcl.h>
#include <asm/sn/labelcl.h>
void
inventinit(void)
{
}
/*
* For initializing/updating an inventory entry.
*/
void
replace_in_inventory(
inventory_t *pinv, int class, int type,
int controller, int unit, int state)
{
}
/*
* Inventory addition
*
* XXX NOTE: Currently must be called after dynamic memory allocator is
* initialized.
*
*/
void
add_to_inventory(int class, int type, int controller, int unit, int state)
{
}
/*
* Inventory retrieval
*
* These two routines are intended to prevent the caller from having to know
* the internal structure of the inventory table.
*
* The caller of get_next_inventory is supposed to call start_scan_invent
* before the irst call to get_next_inventory, and the caller is required
* to call end_scan_invent after the last call to get_next_inventory.
*/
inventory_t *
get_next_inventory(invplace_t *place)
{
return((inventory_t *) NULL);
}
/* ARGSUSED */
int
get_sizeof_inventory(int abi)
{
return sizeof(inventory_t);
}
/* Must be called prior to first call to get_next_inventory */
void
start_scan_inventory(invplace_t *iplace)
{
}
/* Must be called after last call to get_next_inventory */
void
end_scan_inventory(invplace_t *iplace)
{
}
/*
* Hardware inventory scanner.
*
* Calls fun() for every entry in inventory list unless fun() returns something
* other than 0.
*/
int
scaninvent(int (*fun)(inventory_t *, void *), void *arg)
{
return 0;
}
/*
* Find a particular inventory object
*
* pinv can be a pointer to an inventory entry and the search will begin from
* there, or it can be 0 in which case the search starts at the beginning.
* A -1 for any of the other arguments is a wildcard (i.e. it always matches).
*/
inventory_t *
find_inventory(inventory_t *pinv, int class, int type, int controller,
int unit, int state)
{
return((inventory_t *) NULL);
}
/*
** Retrieve inventory data associated with a device.
*/
inventory_t *
device_inventory_get_next( vertex_hdl_t device,
invplace_t *invplace)
{
return((inventory_t *) NULL);
}
/*
** Associate canonical inventory information with a device (and
** add it to the general inventory).
*/
void
device_inventory_add( vertex_hdl_t device,
int class,
int type,
major_t controller,
minor_t unit,
int state)
{
}
int
device_controller_num_get(vertex_hdl_t device)
{
return (0);
}
void
device_controller_num_set(vertex_hdl_t device, int contr_num)
{
}
This diff is collapsed.
...@@ -164,7 +164,7 @@ int __init init_hcl(void) ...@@ -164,7 +164,7 @@ int __init init_hcl(void)
* *
*/ */
hcl_handle = hwgraph_register(hwgraph_root, ".hcl", hcl_handle = hwgraph_register(hwgraph_root, ".hcl",
0, DEVFS_FL_AUTO_DEVNUM, 0, 0,
0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
&hcl_fops, NULL); &hcl_fops, NULL);
......
typedef struct dentry *hwgfs_handle_t;
extern hwgfs_handle_t hwgfs_register(hwgfs_handle_t dir, const char *name,
unsigned int flags,
unsigned int major, unsigned int minor,
umode_t mode, void *ops, void *info);
extern int hwgfs_mk_symlink(hwgfs_handle_t dir, const char *name,
unsigned int flags, const char *link,
hwgfs_handle_t *handle, void *info);
extern hwgfs_handle_t hwgfs_mk_dir(hwgfs_handle_t dir, const char *name,
void *info);
extern void hwgfs_unregister(hwgfs_handle_t de);
extern hwgfs_handle_t hwgfs_find_handle(hwgfs_handle_t dir, const char *name,
unsigned int major,unsigned int minor,
char type, int traverse_symlinks);
extern hwgfs_handle_t hwgfs_get_parent(hwgfs_handle_t de);
extern int hwgfs_generate_path(hwgfs_handle_t de, char *path, int buflen);
extern void *hwgfs_get_info(hwgfs_handle_t de);
extern int hwgfs_set_info(hwgfs_handle_t de, void *info);
...@@ -216,7 +216,7 @@ klhwg_add_hub(vertex_hdl_t node_vertex, klhub_t *hub, cnodeid_t cnode) ...@@ -216,7 +216,7 @@ klhwg_add_hub(vertex_hdl_t node_vertex, klhub_t *hub, cnodeid_t cnode)
(void) hwgraph_path_add(node_vertex, EDGE_LBL_HUB, &myhubv); (void) hwgraph_path_add(node_vertex, EDGE_LBL_HUB, &myhubv);
rc = device_master_set(myhubv, node_vertex); rc = device_master_set(myhubv, node_vertex);
hub_mon = hwgraph_register(myhubv, EDGE_LBL_PERFMON, hub_mon = hwgraph_register(myhubv, EDGE_LBL_PERFMON,
0, DEVFS_FL_AUTO_DEVNUM, 0, 0,
0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
&shub_mon_fops, (void *)(long)cnode); &shub_mon_fops, (void *)(long)cnode);
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/interrupt.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/sn/sgi.h> #include <asm/sn/sgi.h>
#include <asm/sn/io.h> #include <asm/sn/io.h>
......
...@@ -62,9 +62,6 @@ mlreset(int slave) ...@@ -62,9 +62,6 @@ mlreset(int slave)
/* early initialization of iograph */ /* early initialization of iograph */
iograph_early_init(); iograph_early_init();
/* Initialize Hub Pseudodriver Management */
hubdev_init();
} }
......
...@@ -655,7 +655,6 @@ io_init_node(cnodeid_t cnodeid) ...@@ -655,7 +655,6 @@ io_init_node(cnodeid_t cnodeid)
struct semaphore *peer_sema = 0; struct semaphore *peer_sema = 0;
uint32_t widget_partnum; uint32_t widget_partnum;
cpu_cookie_t c = 0; cpu_cookie_t c = 0;
extern int hubdev_docallouts(vertex_hdl_t);
npdap = NODEPDA(cnodeid); npdap = NODEPDA(cnodeid);
...@@ -671,8 +670,6 @@ io_init_node(cnodeid_t cnodeid) ...@@ -671,8 +670,6 @@ io_init_node(cnodeid_t cnodeid)
ASSERT(hubv != GRAPH_VERTEX_NONE); ASSERT(hubv != GRAPH_VERTEX_NONE);
hubdev_docallouts(hubv);
/* /*
* Read mfg info on this hub * Read mfg info on this hub
*/ */
......
...@@ -11,7 +11,5 @@ ...@@ -11,7 +11,5 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN -DSHUB_SWAP_WAR EXTRA_CFLAGS := -DLITTLE_ENDIAN -DSHUB_SWAP_WAR
obj-$(CONFIG_IA64_SGI_SN2) += pcibr_ate.o pcibr_config.o \ obj-y += pcibr_ate.o pcibr_config.o pcibr_dvr.o pcibr_hints.o pcibr_intr.o pcibr_rrb.o \
pcibr_dvr.o pcibr_hints.o \ pcibr_slot.o pcibr_error.o
pcibr_intr.o pcibr_rrb.o pcibr_slot.o \
pcibr_error.o
...@@ -1215,7 +1215,7 @@ pcibr_attach2(vertex_hdl_t xconn_vhdl, bridge_t *bridge, ...@@ -1215,7 +1215,7 @@ pcibr_attach2(vertex_hdl_t xconn_vhdl, bridge_t *bridge,
ctlr_vhdl = NULL; ctlr_vhdl = NULL;
ctlr_vhdl = hwgraph_register(pcibr_vhdl, EDGE_LBL_CONTROLLER, 0, ctlr_vhdl = hwgraph_register(pcibr_vhdl, EDGE_LBL_CONTROLLER, 0,
DEVFS_FL_AUTO_DEVNUM, 0, 0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
(struct file_operations *)&pcibr_fops, (void *)pcibr_vhdl); (struct file_operations *)&pcibr_fops, (void *)pcibr_vhdl);
ASSERT(ctlr_vhdl != NULL); ASSERT(ctlr_vhdl != NULL);
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
extern void hubni_eint_init(cnodeid_t cnode); extern void hubni_eint_init(cnodeid_t cnode);
extern void hubii_eint_init(cnodeid_t cnode); extern void hubii_eint_init(cnodeid_t cnode);
extern void hubii_eint_handler (int irq, void *arg, struct pt_regs *ep); extern irqreturn_t hubii_eint_handler (int irq, void *arg, struct pt_regs *ep);
int hubiio_crb_error_handler(vertex_hdl_t hub_v, hubinfo_t hinfo); int hubiio_crb_error_handler(vertex_hdl_t hub_v, hubinfo_t hinfo);
int hubiio_prb_error_handler(vertex_hdl_t hub_v, hubinfo_t hinfo); int hubiio_prb_error_handler(vertex_hdl_t hub_v, hubinfo_t hinfo);
extern void bte_crb_error_handler(vertex_hdl_t hub_v, int btenum, int crbnum, ioerror_t *ioe, int bteop); extern void bte_crb_error_handler(vertex_hdl_t hub_v, int btenum, int crbnum, ioerror_t *ioe, int bteop);
...@@ -168,7 +168,7 @@ hubii_eint_init(cnodeid_t cnode) ...@@ -168,7 +168,7 @@ hubii_eint_init(cnodeid_t cnode)
/*ARGSUSED*/ /*ARGSUSED*/
void irqreturn_t
hubii_eint_handler (int irq, void *arg, struct pt_regs *ep) hubii_eint_handler (int irq, void *arg, struct pt_regs *ep)
{ {
vertex_hdl_t hub_v; vertex_hdl_t hub_v;
...@@ -263,6 +263,8 @@ hubii_eint_handler (int irq, void *arg, struct pt_regs *ep) ...@@ -263,6 +263,8 @@ hubii_eint_handler (int irq, void *arg, struct pt_regs *ep)
*/ */
(void)hubiio_crb_error_handler(hub_v, hinfo); (void)hubiio_crb_error_handler(hub_v, hinfo);
(void)hubiio_prb_error_handler(hub_v, hinfo); (void)hubiio_prb_error_handler(hub_v, hinfo);
return IRQ_HANDLED;
} }
/* /*
......
...@@ -289,7 +289,7 @@ xbow_attach(vertex_hdl_t conn) ...@@ -289,7 +289,7 @@ xbow_attach(vertex_hdl_t conn)
*/ */
vhdl = NULL; vhdl = NULL;
vhdl = hwgraph_register(conn, EDGE_LBL_XBOW, 0, vhdl = hwgraph_register(conn, EDGE_LBL_XBOW, 0,
DEVFS_FL_AUTO_DEVNUM, 0, 0, 0, 0, 0,
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0,
(struct file_operations *)&xbow_fops, (void *)xbow); (struct file_operations *)&xbow_fops, (void *)xbow);
if (!vhdl) { if (!vhdl) {
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +9,7 @@
EXTRA_CFLAGS := -DLITTLE_ENDIAN EXTRA_CFLAGS := -DLITTLE_ENDIAN
obj-y := probe.o setup.o sv.o bte.o irq.o mca.o obj-y := probe.o setup.o sv.o bte.o irq.o mca.o sn2/
obj-$(CONFIG_IA64_SGI_SN2) += sn2/
obj-$(CONFIG_IA64_GENERIC) += machvec.o obj-$(CONFIG_IA64_GENERIC) += machvec.o
obj-$(CONFIG_MODULES) += sn_ksyms.o obj-$(CONFIG_MODULES) += sn_ksyms.o
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
* Copyright (C) 1992 - 1997, 2000-2003 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 1992 - 1997, 2000-2003 Silicon Graphics, Inc. All rights reserved.
*/ */
#define DEVFS_FL_AUTO_DEVNUM 0
typedef struct dentry *hwgfs_handle_t; typedef struct dentry *hwgfs_handle_t;
extern hwgfs_handle_t hwgfs_register(hwgfs_handle_t dir, const char *name, extern hwgfs_handle_t hwgfs_register(hwgfs_handle_t dir, const char *name,
......
...@@ -3629,15 +3629,6 @@ extern int kl_ioerror_handler(cnodeid_t, cnodeid_t, cpuid_t, ...@@ -3629,15 +3629,6 @@ extern int kl_ioerror_handler(cnodeid_t, cnodeid_t, cpuid_t,
extern int hub_error_devenable(vertex_hdl_t, int, int); extern int hub_error_devenable(vertex_hdl_t, int, int);
extern int hub_dma_enabled(vertex_hdl_t); extern int hub_dma_enabled(vertex_hdl_t);
/* hubdev */
extern void hubdev_init(void);
extern void hubdev_register(int (*attach_method)(vertex_hdl_t));
extern int hubdev_unregister(int (*attach_method)(vertex_hdl_t));
extern int hubdev_docallouts(vertex_hdl_t hub);
extern caddr_t hubdev_prombase_get(vertex_hdl_t hub);
extern cnodeid_t hubdev_cnodeid_get(vertex_hdl_t hub);
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _KERNEL */ #endif /* _KERNEL */
#endif /* _ASM_IA64_SN_SN2_SHUBIO_H */ #endif /* _ASM_IA64_SN_SN2_SHUBIO_H */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment