Hi,
The following patch is needed to make it work on alpha. remember to
rebuild the cluster tools, because there is a change in the system call
numbers. Previously built binaries wont work.
Modification details
FILE : config.in support for new config options
FILE : arch_regs.h changing thread_struct to thread ( variable name
correction )
FILE : rproc_arch.c -> arch_pt_regs.r8 ( register was getting referred
directly )
FILE : cluster/config.h included linux/threads.h to get the value of
PID_MAX
FILE : nsc.h include <cluster/arch/arch_regs.h > because without this
include process.c cannot understand arch_regs
FILE : entry.S ( the system call removed the loop to repeated
definition, without this it gives a panic )
FILE cluster.h -> to build with cluster tools. cluster tools define it
as this signature
FILE : process.c r26 register was getting referred directly
-aneesh
Index: Aneesh/opensource/linux-kernel//linux/arch/alpha/config.in
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/arch/alpha/config.in,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/arch/alpha/config.in 18 Jan 2002 05:45:35 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/arch/alpha/config.in 18 Jan 2002 17:47:35 -0000 1.2
@@ -396,11 +396,16 @@
mainmenu_option next_comment
comment 'Clustering'
-dep_bool 'SSI Clustering' CONFIG_SSI $CONFIG_DEVFS_FS
+dep_bool 'SSI Clustering' CONFIG_SSI $CONFIG_DEVFS_FS $CONFIG_BLK_DEV_INITRD
if [ "$CONFIG_SSI" = "y" ]; then
define_bool CONFIG_ICS y
define_bool CONFIG_CLMS y
+ define_bool CONFIG_LDLVL y
define_bool VPROC y
+ int ' Node Monitor timeout in milli-seconds' CONFIG_NODE_MONITOR_TIMEOUT_MS 10000
+ int ' Node Monitor probe frequency' CONFIG_NODE_MONITOR_FREQ 3
+ bool 'MOSIX Load Leveling for SSI' CONFIG_MOSIX_LL
fi
+
endmenu
Index: Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/entry.S
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/arch/alpha/kernel/entry.S,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/entry.S 18 Jan 2002 05:45:35 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/entry.S 18 Jan 2002 17:47:36 -0000 1.2
@@ -1266,9 +1266,15 @@
.quad sys_ni_syscall /* 380, sys_security */
#ifdef CONFIG_SSI
- .rept 390-(.-sys_call_table)/4
- .quad sys_ni_syscall
- .endr
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
/* BEGIN SSI SYSTEM CALLS */
.quad sys_ssisys /* 390 */
@@ -1279,8 +1285,8 @@
.quad sys_kill3
.quad sys_clone_with_pid
#endif /* VPROC */
-
- .rept NR_SYSCALLS-(.-sys_call_table)/4
- .quad sys_ni_syscall
- .endr
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall
+ .quad alpha_ni_syscall /* 399 */
#endif /* CONFIG_SSI */
Index: Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/process.c
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/arch/alpha/kernel/process.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/process.c 18 Jan 2002 05:45:35 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/arch/alpha/kernel/process.c 18 Jan 2002 17:47:36 -0000 1.2
@@ -525,7 +525,7 @@
do_ret_from_rproc( struct arch_regs_stack *remotestack, struct arch_regs_stack *localstack)
{
extern void ret_from_sys_call(void);
- remotestack->r26 = (unsigned long) ret_from_sys_call;
+ remotestack->arch_switch_stack.r26 = (unsigned long) ret_from_sys_call;
*localstack = *remotestack;
/* Invalidate all TLB */
tbia();
Index: Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/include/arch_regs.h
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/cluster/arch/alpha/include/arch_regs.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/include/arch_regs.h 18 Jan 2002 05:46:09 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/include/arch_regs.h 18 Jan 2002 17:47:36 -0000 1.2
@@ -38,7 +38,7 @@
* others you might have to execute some instructions.
*/
-#define arch_get_current_usp(_regs) (current->thread_struct.usp)
+#define arch_get_current_usp(_regs) (current->thread.usp)
/* The following macros expect a pointer to the pt_regs. */
#define SYSCALL_RETVAL(_regs) ((_regs)->r0)
Index: Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/vproc/rproc_arch.c
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/cluster/arch/alpha/vproc/rproc_arch.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/vproc/rproc_arch.c 18 Jan 2002 05:46:09 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/cluster/arch/alpha/vproc/rproc_arch.c 18 Jan 2002 17:47:36 -0000 1.2
@@ -64,7 +64,7 @@
(void)optype;
/* I am writing r8 inside ret_from_sys_call */
- fp->full_regs.r8=current;
+ fp->full_regs.arch_pt_regs.r8=current;
t->thread.usp = ap->arch_thread.usp;
/* Getting only linux specific values */
Index: Aneesh/opensource/linux-kernel//linux/include/cluster/config.h
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/include/cluster/config.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/include/cluster/config.h 18 Jan 2002 05:43:58 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/include/cluster/config.h 18 Jan 2002 17:47:36 -0000 1.2
@@ -24,6 +24,7 @@
#define _SSI_CONFIG_H
#include <linux/param.h>
+#include <linux/threads.h>
/*
* Define the maximum clusternode_t value actually supported, i.e. each
Index: Aneesh/opensource/linux-kernel//linux/include/cluster/nsc.h
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/include/cluster/nsc.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/include/cluster/nsc.h 18 Jan 2002 05:43:58 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/include/cluster/nsc.h 18 Jan 2002 17:47:36 -0000 1.2
@@ -36,6 +36,7 @@
#include <linux/cluster.h>
#include <linux/mm.h>
#include <cluster/timer.h>
+#include <cluster/arch/arch_regs.h>
#ifndef FALSE
#define FALSE 0
Index: Aneesh/opensource/linux-kernel//linux/include/linux/cluster.h
===================================================================
RCS file: /usr/local/cvsroot/Aneesh/opensource/linux-kernel/linux/include/linux/cluster.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Aneesh/opensource/linux-kernel//linux/include/linux/cluster.h 18 Jan 2002 05:43:45 -0000 1.1.1.1
+++ Aneesh/opensource/linux-kernel//linux/include/linux/cluster.h 18 Jan 2002 17:47:36 -0000 1.2
@@ -120,9 +120,9 @@
extern int cluster_maxnodes(void);
/* System calls */
-extern int rexecl(const char *file, ...);
-extern int rexecle(const char *file, ...);
-extern int rexeclp(const char *file, ...);
+extern int rexecl(const char *file, const char *arg, ...);
+extern int rexecle(const char *file, const char *arg, ...);
+extern int rexeclp(const char *file, const char *arg, ...);
extern int rexecv(const char *file, char *const *argv, clusternode_t node);
extern int rexecvp(const char *name, char *const *argv, clusternode_t node);
extern int rfork(clusternode_t node);
|