error: while loading streams_timod

"kishore" <[email protected]> Sat, 7 Jan 2006 14:40:24 +0530
Newsgroups gmane.linux.kernel.streams
Message-ID <002e01c6136a$32585a30$3b01a8c0@kishore>
hi all,

    I used LiS-2.18.0.tgz (downloaded from gcom.com) along with the patch
file ( attached with this mail).
    I merged my drivers along with streams.

   Its working fine on
   LinuxVersion    :  Red Hat Enterprise Linux WS release 4 (Nahant Update
2)
   Kernel Version :  2.6.9-16.EL
   I am able to work with my drivers.

   When I used the same (LiS-2.18 and patch) on the following distribution,
    LinuxVersion     :  Red Hat Enterprise Linux ES release 4 (Nahant Update
2)
    Kernel Version  :  2.6.9-22.EL
    it raised the following message and my drivers are not working.

LiS-RunQ-2.18.0r4 running on CPU 0 pid=5161
streams_timod: no version magic, tainting kernel.
STREAMS module "timod" registered, id 5.

    I am not aware of this issue. Can any one tell me why it will  arise.
    Let me know, " Is streams_timod need the file /etc/modprobe.conf  ".
    Before, the same driver is working fine on ES4 with 2.6.9-22.EL;  but
after some modifications in /etc/modprobe.conf, this problem was arised ?

    Thanks in advance.

regards,
kishore,packetware.
LiS-2.18.0-RHEL4.patch (application/octet-stream, 34.3 KB)
diff -Naur LiS-2.18-orig/config.mk LiS-2.18-RHEL4/config.mk
--- LiS-2.18-orig/config.mk	2004-10-11 11:40:44.000000000 -0400
+++ LiS-2.18-RHEL4/config.mk    2005-04-13 05:54:21.093568464 -0400
@@ -61,6 +61,9 @@
 
 AS	=$(CROSS_COMPILE)as
 LD	=$(CROSS_COMPILE)ld
+ifeq ($(ARCH),ppc64)
+LD	=$(CROSS_COMPILE)ld -m elf64ppc
+endif
 CPP	=$(CC_NAME) -E
 AR	=$(CROSS_COMPILE)ar
 NM	=$(CROSS_COMPILE)nm
@@ -141,7 +141,8 @@
 #
 PROBLEMS = -Wpointer-arith
 PROBLEMS = 
-XOPTS = -Wall -Wstrict-prototypes $(PROBLEMS)
+# Added -D__KERNGLUE__ to keep RHEL4 happy
+XOPTS = -Wall -Wstrict-prototypes $(PROBLEMS) -D__KERNGLUE__
 XOPTS+= -fno-strict-aliasing -Wno-sign-compare -fno-common
 
 #
@@ -170,6 +171,9 @@
 ifeq ($(ARCH),ppc)
 XOPTS += -D__powerpc__ -fno-builtin -pipe -D_PPC_LIS_
 endif
+ifeq ($(ARCH),ppc64)
+XOPTS += -D_PPC_LIS_ -D_PPC64_LIS_ -m64 -msoft-float -pipe -Wno-uninitialized -mminimal-toc -mtraceback=none -mcall-aixdesc -mtune=power4 -fno-unit-at-a-time
+endif
 # For s390 & s390x architecture we need some bypasses
 ifeq ($(ARCH),s390)
 XOPTS += -D_S390_LIS_
diff -Naur LiS-2.18-orig/Configure LiS-2.18-RHEL4/Configure
--- LiS-2.18-orig/Configure	2004-10-11 16:20:49.000000000 -0400
+++ LiS-2.18-RHEL4/Configure    2005-04-11 02:46:49.335246168 -0400
@@ -464,7 +464,7 @@
 ac_get_config()
 {
     if [ -f $KSRC/include/linux/config.h ]; then
-	cc -I$KSRC/include -E -dM \
+	cc -D__KERNGLUE__ -I$KSRC/include -E -dM \
 		-include $KSRC/include/linux/config.h dummy.c >kconfig
 	x=`grep $1 kconfig 2>&1`
 	if [ $? -eq 0 ]; then			# found it
@@ -600,7 +600,7 @@
 get_vers_h()
 {
     if [ -f $1 ]; then
-	cc -I$KSRC/include -E -dM -include $1 dummy.c > kver
+	cc -D__KERNGLUE__ -I$KSRC/include -E -dM -include $1 dummy.c > kver
 	KVER_H=`grep UTS_RELEASE kver | \
 	     sed -e 's/^.*UTS_RELEASE.//' -e's/"//g' -e's/  *$//'`
 	NKVER_H=`echo $KVER_H | sed -e 's/-.*//'`
@@ -1332,10 +1332,19 @@
 
 if [ "$MACHINE" = "s390" -o "$MACHINE" = "s390x" ]; then
   SMP_GREP_ID='smp_num_cpus'
+elif [ "$MACHINE" = "ppc64" ]; then
+  SMP_GREP_ID='smp_cpus_done'
 else
   SMP_GREP_ID='cpu_online_map'
 fi
 
+if [ "$MACHINE" = "s390x" ]; then
+  INT_PSW=n
+fi
+if [ "$MACHINE" = "ppc64" ]; then
+  INT_PSW=n
+fi
+
 #
 # TARGET
 #
diff -Naur LiS-2.18-orig/Makefile LiS-2.18-RHEL4/Makefile
--- LiS-2.18-orig/Makefile	2004-09-10 10:28:47.000000000 -0400
+++ LiS-2.18-RHEL4/Makefile     2005-04-11 02:49:00.192352864 -0400
@@ -74,12 +74,15 @@
 endif
 
 #
-# If building on 64-bit s390 then build libc for 32-bit applications
+# If building on 64-bit s390x or ppc64 then build libc for 32-bit applications
 # running over 64-bit kernel.
 #
 ifeq ($(ARCH),s390x)
 ALL_TARGETS += libc32over64
 endif
+ifeq ($(ARCH),ppc64)
+ALL_TARGETS += libc32over64
+endif
 
 #
 # Does the user want us to install streams.o in the official
@@ -161,6 +164,9 @@
 ifeq ($(ARCH),s390x)
 	$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
 endif
+ifeq ($(ARCH),ppc64)
+	$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
+endif
 	$(Q)$(MAKE) -C $(UTILOBJ) $@
 	$(Q)$(MAKE) -C $(DRVROBJ) $@
 	$(Q)$(MAKE) -C $(HEADOBJ) $@
@@ -275,6 +281,9 @@
 ifeq ($(ARCH),s390x)
 	-$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
 endif
+ifeq ($(ARCH),ppc64)
+	-$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
+endif
 	-$(Q)$(MAKE) -C $(UTILOBJ) $@
 	-$(Q)$(MAKE) -C $(DRVROBJ) $@
 	-$(Q)$(MAKE) -C man $@
@@ -282,6 +282,7 @@
 ifeq ($(CONFIG_STREAMS),m)
 	-$(Q) scripts/update_conf.modules
 	-$(Q) (cd $(MOD_INST_DIR); rm -f streams.o streams-*.o)
+	-$(Q) (cd $(MOD_INST_DIR); rm -f streams.ko streams-*.ko)
 endif
 endif	# .config_mk
 	$(nothing)
@@ -363,7 +363,11 @@
 #
 streams.o: $(DRVROBJ)/drivers.o $(HEADOBJ)/streamshead.o pkg/drivers.o
 	$(Q_ECHO) $(qtag_LDm)$(reltarget)
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -r -d -m elf64ppc -o $@ $^
+else
 	$(Q)$(LD) -r -d -o $@ $^
+endif
 
 $(HEADOBJ)/streamshead.o: config
 	$(Q)$(MAKE) -C $(HEADOBJ)
@@ -559,6 +568,9 @@
 ifeq ($(ARCH),s390x)
 	-$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
 endif
+ifeq ($(ARCH),ppc64)
+	-$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
+endif
 	-$(Q)$(MAKE) -C $(HEADOBJ) $@
 	-$(Q)$(MAKE) -C $(DRVROBJ) $@
 	-$(Q)$(MAKE) -C $(UTILOBJ) $@
@@ -576,6 +588,9 @@
 ifeq ($(ARCH),s390x)
 	$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
 endif
+ifeq ($(ARCH),ppc64)
+	$(Q)$(MAKE) -C $(LIBOBJ32OVER64) $@
+endif
 	$(Q)$(MAKE) -C $(HEADOBJ) $@
 	$(Q)$(MAKE) -C $(DRVROBJ) $@
 	$(Q)$(MAKE) -C $(UTILOBJ) $@
diff -Naur LiS-2.18-orig/drivers/str/Config LiS-2.18-RHEL4/drivers/str/Config
--- LiS-2.18-orig/drivers/str/Config	2004-09-02 12:42:46.000000000 -0400
+++ LiS-2.18-RHEL4/drivers/str/Config   2005-04-11 02:40:01.106306400 -0400
@@ -36,7 +36,7 @@
 module	connld          connld_
 module	relay		relay_
 module	relay2		relay2_
-module	ip_strms	ip_to_streams_
+#module	ip_strms	ip_to_streams_
 module	timod		timod_
 module	tirdwr		tirdwr_
 
@@ -72,7 +72,7 @@
 objname module pipemod         pipemod
 objname module connld          connld
 objname module relay2          relay
-objname module ip_strms        ip_strm_mod
+#objname module ip_strms        ip_strm_mod
 objname module timod           timod
 objname module tirdwr          tirdwr
 
diff -Naur LiS-2.18-orig/drivers/str/loop.c LiS-2.18-RHEL4/drivers/str/loop.c
--- LiS-2.18-orig/drivers/str/loop.c	2004-09-13 11:12:31.000000000 -0400
+++ LiS-2.18-RHEL4/drivers/str/loop.c   2005-04-12 08:43:19.235999680 -0400
@@ -145,7 +145,9 @@
     if (rtn < 0 && rtn != -ENOENT)
     {
 	printk("unlink %s: error %d\n", name, rtn);
+#if !defined(__ppc64__)
 	return ;
+#endif
     }
 
     if (maj == 0)			/* don't make the node */
diff -Naur LiS-2.18-orig/drivers/str/mk.bdy LiS-2.18-RHEL4/drivers/str/mk.bdy
--- LiS-2.18-orig/drivers/str/mk.bdy	2004-06-06 17:05:25.000000000 -0400
+++ LiS-2.18-RHEL4/drivers/str/mk.bdy   2005-04-12 08:49:15.441028864 -0400
@@ -28,7 +28,11 @@
 
 drivers.o: $(DRVRS) $(TDRVRS)
 	$(Q_ECHO) $(qtag_LD)$(relpwdtarget)
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -r -m elf64ppc -o $@ $^
+else
 	$(Q)$(LD) -r -o $@ $^
+endif
 
 # Compiling a target-specific object ( $(TDRVRS) )
 %.o: %.c
diff -Naur LiS-2.18-orig/drivers/str/linux/liskmod.c LiS-2.18-RHEL4/drivers/str/linux/liskmod.c
--- LiS-2.18-orig/drivers/str/linux/liskmod.c	2004-06-06 17:05:25.000000000 -0400
+++ LiS-2.18-RHEL4/drivers/str/linux/liskmod.c  2005-04-11 02:40:01.107306248 -0400
@@ -49,7 +49,9 @@
 # ifdef LISMODVERS
 #  include <sys/modversions.h>	/* /usr/src/LiS/include/sys */
 # else
-#  include <linux/modversions.h>	/* BEFORE module.h, kernel.h, ... */
+#  if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5)
+#   include <linux/modversions.h>      /* BEFORE module.h, kernel.h, ... */
+#  endif
 # endif
 #endif
 
diff -Naur LiS-2.18-orig/drivers/str/linux/Makefile LiS-2.18-RHEL4/drivers/str/linux/Makefile
--- LiS-2.18-orig/drivers/str/linux/Makefile	2004-09-10 10:52:18.000000000 -0400
+++ LiS-2.18-RHEL4/drivers/str/linux/Makefile   2005-04-11 02:40:01.107306248 -0400
@@ -47,10 +47,10 @@
 TOBJS += ip_to_dlpi
 endif
 ifeq ($(ARCH),s390)
-TOBJS := connld
+TOBJS := connld mtdrv
 endif
 ifeq ($(ARCH),s390x)
-TOBJS := connld
+TOBJS := connld mtdrv
 endif
 
 # Similar to TOBJS, but non-streams modules
diff -Naur LiS-2.18-orig/head/linux/exports.c LiS-2.18-RHEL4/head/linux/exports.c
--- LiS-2.18-orig/head/linux/exports.c	2004-09-16 12:42:48.000000000 -0400
+++ LiS-2.18-RHEL4/head/linux/exports.c 2005-04-13 02:40:01.107306248 -0400
@@ -34,7 +34,9 @@
 # ifdef LISMODVERS
 #  include <sys/modversions.h>      /* /usr/src/LiS/include/sys */
 # else
-#  include <linux/modversions.h>
+#  if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5)
+#    include <linux/modversions.h>
+#  endif
 # endif
 #endif
 #define CONFIG_MODULES  1
@@ -172,9 +174,9 @@
 EXPORT_SYMBOL_NOVERS(lis_major);
 EXPORT_SYMBOL_NOVERS(lis_malloc);
 EXPORT_SYMBOL_NOVERS(lis_mark_mem_fcn);
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 EXPORT_SYMBOL_NOVERS(lis_membar);
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
 EXPORT_SYMBOL_NOVERS(lis_milli_to_ticks);
 EXPORT_SYMBOL_NOVERS(lis_mknod);
 #if 0 && defined(CONFIG_DEV)
@@ -205,7 +207,7 @@
 EXPORT_SYMBOL_NOVERS(lis_osif_pci_write_config_word);
 EXPORT_SYMBOL_NOVERS(lis_osif_sti);
 EXPORT_SYMBOL_NOVERS(lis_own_spl);
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 EXPORT_SYMBOL_NOVERS(lis_pcibios_find_class);
 EXPORT_SYMBOL_NOVERS(lis_pcibios_find_device);
 EXPORT_SYMBOL_NOVERS(lis_pcibios_init);
@@ -238,7 +240,7 @@
 EXPORT_SYMBOL_NOVERS(lis_pci_write_config_byte);
 EXPORT_SYMBOL_NOVERS(lis_pci_write_config_dword);
 EXPORT_SYMBOL_NOVERS(lis_pci_write_config_word);
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
 EXPORT_SYMBOL_NOVERS(lis_phys_to_virt);
 EXPORT_SYMBOL_NOVERS(lis_print_block);
 EXPORT_SYMBOL_NOVERS(lis_print_data);
@@ -351,7 +353,7 @@
 EXPORT_SYMBOL_NOVERS(lis_xmsgsize);
 EXPORT_SYMBOL_NOVERS(lis_zmalloc);
 
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 
 EXPORT_SYMBOL_NOVERS(lis_osif_pci_alloc_consistent);
 EXPORT_SYMBOL_NOVERS(lis_osif_pci_dma_supported);
@@ -395,4 +397,4 @@
 EXPORT_SYMBOL_NOVERS(__wrap_memcmp);
 
 
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
diff -Naur LiS-2.18-orig/head/linux-mdep.c LiS-2.18-RHEL4/head/linux-mdep.c
--- LiS-2.18-orig/head/linux-mdep.c	2004-10-13 12:07:36.000000000 -0400
+++ LiS-2.18-RHEL4/head/linux-mdep.c    2005-04-13 06:46:59.859912072 -0400
@@ -53,6 +53,9 @@
 #include <linux/module.h>
 #include <sys/LiS/modcnt.h>		/* after linux-mdep.h & module.h */
 #include <linux/version.h>
+#if defined(KERNEL_2_5)
+#include <linux/init.h>
+#endif
 
 #include <linux/sched.h>
 #define	__KERNEL_SYSCALLS__	1	/* to make kernel_thread visible */
@@ -94,7 +97,7 @@
  */
 #if ( defined(__s390__) || defined(__s390x__) ) && defined(KERNEL_2_4)
 #define NUM_CPUS		smp_num_cpus
-#elif defined(KERNEL_2_5)
+#elif defined(KERNEL_2_5)	/*? really ?*/
 #define NUM_CPUS		num_online_cpus()
 #else
 #define NUM_CPUS		smp_num_cpus
@@ -194,7 +197,7 @@
 static struct inode * lis_get_inode( mode_t mode, dev_t dev );
 void lis_print_dentry(struct dentry *d, char *comment) ;
 
-#ifdef _S390X_LIS_
+#if (defined(_S390X_LIS_) || defined(_PPC64_LIS_))
 extern long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);
 extern int register_ioctl32_conversion(unsigned int fd, 
                                        int (*handler)(unsigned int fd,
@@ -998,7 +1001,11 @@
 	if (inode && inode->i_cdev)
 	    printk(">> i->i_cdev: c@0x%p/%d/%x \"%s\"\n",
 		inode->i_cdev,
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8)
 		K_ATOMIC_READ(&inode->i_cdev->kobj.refcount),
+#else
+		K_ATOMIC_READ(&inode->i_cdev->kobj.kref.refcount),
+#endif
 		DEV_TO_INT(inode->i_cdev->dev),
 		(inode->i_cdev->owner ?
 		 inode->i_cdev->owner->name : "No-Owner")) ;
@@ -1020,6 +1027,16 @@
 #endif
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,9)
+void cdev_put (struct cdev *p)
+{
+    if (p) {
+        kobject_put(&p->kobj);
+        module_put(p->owner);
+    }
+}
+#endif
+
 void lis_dput(struct dentry *d)
 {
     struct super_block	*sb = NULL ;
@@ -3621,7 +3638,7 @@
 }
 
 
-#ifdef _S390X_LIS_
+#if (defined(_S390X_LIS_) || defined(_PPC64_LIS_))
 int lis_ioctl32_str (unsigned int fd, unsigned int cmd, unsigned long arg)
 {
   strioctl_t par64;
@@ -3774,7 +3791,7 @@
 
     lis_start_qsched() ;		/* ensure q running process going */
 
-#ifdef _S390X_LIS_
+#if (defined(_S390X_LIS_) || defined(_PPC64_LIS_))
     register_ioctl32_conversion(I_SETSIG,sys_ioctl);
     register_ioctl32_conversion(I_SRDOPT,sys_ioctl);
     register_ioctl32_conversion(I_PUSH,sys_ioctl);
@@ -3805,7 +3822,7 @@
  * Magic named routine called by kernel module support code.
  */
 #ifdef KERNEL_2_5
-int _lis_init_module( void )
+static int __init _lis_init_module( void )
 #else
 int init_module( void )
 #endif
@@ -3817,7 +3834,7 @@
  * Magic named routine called by kernel module support code.
  */
 #ifdef KERNEL_2_5
-void _lis_cleanup_module( void )
+static void __exit _lis_cleanup_module( void )
 #else
 void cleanup_module( void )
 #endif
@@ -3851,12 +3868,12 @@
     lis_kill_qsched() ;			/* drivers/str/runq.c */
     lis_terminate_head();
 
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS)) 
     {
         extern void	lis_pci_cleanup(void) ;
         lis_pci_cleanup() ;
     } 
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
 
     unregister_chrdev(lis_major,"streams");
     MNTSYNC();
@@ -3885,7 +3902,7 @@
     lis_terminate_final() ;		/* LiS internal memory */
     lis_mem_terminate() ;		/* LiS use of slab allocator */
 
-#ifdef _S390X_LIS_
+#if (defined(_S390X_LIS_) || defined(_PPC64_LIS_))
     unregister_ioctl32_conversion(I_SETSIG);
     unregister_ioctl32_conversion(I_SRDOPT);
     unregister_ioctl32_conversion(I_PUSH);
diff -Naur LiS-2.18-orig/head/mk.bdy LiS-2.18-RHEL4/head/mk.bdy
--- LiS-2.18-orig/head/mk.bdy	2004-10-11 11:40:44.000000000 -0400
+++ LiS-2.18-RHEL4/head/mk.bdy  2005-04-12 08:50:00.564091792 -0400
@@ -51,7 +51,11 @@
 
 streamshead.o: $(OBJS) $(XOBJS) $(ASMOBJS)
 	$(Q_ECHO) $(qtag_LD)$(relpwdtarget)
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -r -m elf64ppc -o $@ $^
+else
 	$(Q)$(LD) -r -o $@ $^
+endif
 
 #
 # Some rules to make object files
diff -Naur LiS-2.18-orig/head/mod.c LiS-2.18-RHEL4/head/mod.c
--- LiS-2.18-orig/head/mod.c	2004-10-11 11:40:44.000000000 -0400
+++ LiS-2.18-RHEL4/head/mod.c   2005-04-13 06:47:42.641931072 -0400
@@ -1022,7 +1022,7 @@
     if (devptr->irq <= 0)
 	return ;
 
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
     retval =  request_irq(devptr->irq, devptr->handler, 0, name, NULL);
     if (retval)
     {
@@ -1169,7 +1169,7 @@
 		devptr = &lis_device_config[i] ;
 		if (devptr->irq > 0)
 		{
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 		    free_irq(devptr->irq, NULL) ;
 #endif
 		
diff -Naur LiS-2.18-orig/head/osif.c LiS-2.18-RHEL4/head/osif.c
--- LiS-2.18-orig/head/osif.c	2004-10-11 17:49:31.000000000 -0400
+++ LiS-2.18-RHEL4/head/osif.c  2005-04-13 06:48:09.149895440 -0400
@@ -335,7 +335,7 @@
 #endif
 
 #if LINUX_VERSION_CODE >= 0x020400		/* 2.4 kernel */
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 
 	 /***************************************
 	 *        PCI DMA Mapping Fcns		*
@@ -473,7 +473,7 @@
 
 #endif                                  /* 2.4.13 */
 
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
 
 #endif		/* LINUX_VERSION_CODE >= 0x020400 */
 
@@ -536,7 +536,9 @@
 	if (dv->handler && dv->dev_id && dv->irq)
 	{
 	    printk("LiS freeing IRQ%u\n", dv->irq) ;
+#if !defined(__s390__)
 	    free_irq(dv->irq, dv) ;
+#endif
 	}
 	FREE(dv) ;
 	dv = nxt ;
@@ -879,7 +881,11 @@
 ************************************************************************/
 void  _RP lis_sleep_on(OSIF_WAIT_Q_ARG)
 {
+#  if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8)
     sleep_on(wq) ;
+#else
+    wait_event(wq,0) ;
+#endif
 }
 
 void  _RP lis_interruptible_sleep_on(OSIF_WAIT_Q_ARG)
diff -Naur LiS-2.18-orig/head/stream.c LiS-2.18-RHEL4/head/stream.c
--- LiS-2.18-orig/head/stream.c		2004-09-10 17:34:18.000000000 -0400
+++ LiS-2.18-RHEL4/head/stream.c        2005-05-12 13:01:52.838008472 -0400
@@ -142,10 +142,7 @@
 	lis_currq[cpu_id] = q ;			/* for debugging */
 	if (!LIS_CHECK_Q_MAGIC(q))
 	{
-	    printk("queuerun: scan queue is broken\n") ;
-	    lis_scanqhead = NULL ;
-	    lis_scanqtail = NULL ;
-	    K_ATOMIC_SET(&lis_runq_req_cnt, 0) ;
+	    printk("queuerun: queue flags are 0x%lx\n",q->q_flag) ;
 	    goto scan_loop_bottom ;
 	}
 
@@ -245,10 +242,7 @@
 	lis_currq[cpu_id] = q ;			/* for debugging */
 	if (!LIS_CHECK_Q_MAGIC(q))
 	{
-	    printk("queuerun: service queue is broken\n") ;
-	    lis_qhead = NULL ;
-	    lis_qtail = NULL ;
-	    K_ATOMIC_SET(&lis_runq_req_cnt, 0) ;
+	    printk("queuerun(2): queue flags are 0x%lx\n",q->q_flag) ;
 	    goto qsched_loop_bottom ;
 	}
 
diff -Naur LiS-2.18-orig/include/sys/osif.h LiS-2.18-RHEL4/include/sys/osif.h
--- LiS-2.18-orig/include/sys/osif.h	2004-09-16 14:50:09.000000000 -0400
+++ LiS-2.18-RHEL4/include/sys/osif.h   2005-04-13 06:50:34.702997496 -0400
@@ -173,7 +173,7 @@
 
 #if LINUX_VERSION_CODE >= 0x020400	/* 2.4 kernel */
 
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 #ifdef pci_alloc_consistent
 #undef pci_alloc_consistent
 #endif
@@ -255,7 +255,7 @@
 #endif
 #define sg_dma_len lis_osif_sg_dma_len
 
-#endif          /* S390 or S390X */
+#endif          /* S390 or S390X or PPC64 */
 #endif
 
 
@@ -526,7 +526,7 @@
 extern size_t lis_osif_sg_dma_len(struct scatterlist *sg)_RP;
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,13)	/* 2.4.13 or later */
-#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_))
+#if (!defined(_S390_LIS_) && !defined(_S390X_LIS_) && !defined(_PPC64_LIS_))
 extern void lis_osif_pci_unmap_page(struct pci_dev *hwdev,
 				dma_addr_t dma_address, size_t size,
 				int direction)_RP;
@@ -544,7 +544,7 @@
 					dma64_addr_t dma_addr)_RP;
 extern void lis_osif_pci_dac_dma_sync_single(struct pci_dev *pdev,
 			    dma64_addr_t dma_addr, size_t len, int direction)_RP;
-#endif					/* S390 or S390X */
+#endif					/* S390 or S390X or PPC64 */
 #endif					/* 2.4.13 */
 
 
diff -Naur LiS-2.18-orig/include/sys/gnu.stropts.h LiS-2.18-RHEL4/include/sys/gnu.stropts.h
--- LiS-2.18-orig/include/sys/gnu.stropts.h	1999-12-04 15:00:31.000000000 -0500
+++ LiS-2.18-RHEL4/include/sys/gnu.stropts.h    2005-04-11 02:40:01.113305336 -0400
@@ -22,7 +22,7 @@
 #include <bits/types.h>
 
 /* Macros used as `request' argument to `ioctl'.  */
-#define __SID		('S' << 8)
+#define __SID		(0xdc << 8)
 
 #define I_NREAD	    (__SID | 1)	/* Counts the number of data bytes in the data
 				   block in the first message.  */
diff -Naur LiS-2.18-orig/include/sys/LiS/linux-mdep.h LiS-2.18-RHEL4/include/sys/LiS/linux-mdep.h
--- LiS-2.18-orig/include/sys/LiS/linux-mdep.h	2004-09-16 12:41:59.000000000 -0400
+++ LiS-2.18-RHEL4/include/sys/LiS/linux-mdep.h 2005-04-11 02:40:01.111305640 -0400
@@ -82,14 +82,16 @@
  * versions.
  */
 #define queue_t	irda_queue_t
+#include <linux/version.h>
 #ifdef MODVERSIONS
 # ifdef LISMODVERS
 # include <sys/modversions.h>           /* /usr/src/LiS/include/sys */
 # else
-# include <linux/modversions.h>
+#  if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5)
+#   include <linux/modversions.h>
+#  endif
 # endif
 #endif
-#include <linux/version.h>
 #ifndef KERNEL_VERSION
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 #endif
diff -Naur LiS-2.18-orig/include/sys/LiS/module.h LiS-2.18-RHEL4/include/sys/LiS/module.h
--- LiS-2.18-orig/include/sys/LiS/module.h	2004-09-08 11:48:31.000000000 -0400
+++ LiS-2.18-RHEL4/include/sys/LiS/module.h     2005-04-11 02:40:01.111305640 -0400
@@ -40,7 +40,9 @@
 #     ifdef LISMODVERS
 #      include <sys/modversions.h>      /* /usr/src/LiS/include/sys */
 #     else
-#      include <linux/modversions.h>
+#      if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5)
+#       include <linux/modversions.h>
+#      endif
 #     endif
 #    endif
 #    include <linux/module.h>
diff -Naur LiS-2.18-orig/include/sys/strmsg.h LiS-2.18-RHEL4/include/sys/strmsg.h
--- LiS-2.18-orig/include/sys/strmsg.h	2004-02-19 16:24:24.000000000 -0500
+++ LiS-2.18-RHEL4/include/sys/strmsg.h 2005-04-11 02:40:01.111305640 -0400
@@ -92,34 +92,33 @@
     QNORM       = 0x00,		/* - S U O A H M L */
     M_DATA      = 0x00,		/* | S U O A H M L */
     M_PROTO     = 0x01,		/* | S U O A H M L */
-    M_BREAK     = 0x08,		/* v S U O(0x10) A H M L(0x02) */
-    M_PASSFP    = 0x09,		/* | S U O(0x11) A H M L(0x06) */
-    M_EVENT     = 0x0a,		/* ? S */
-    M_SIG       = 0x0b,		/* ^ S U O(0x13) A H M L(0x09) */
-    M_DELAY     = 0x0c,		/* v S U O(0x14) A H M L(0x04) */
-    M_CTL       = 0x0d,		/* | S U O(0x15) A H M L(0x03) */
-    M_IOCTL     = 0x0e,		/* v S U O(0x16) A H M L(0x05) */
-    M_SETOPTS   = 0x10,		/* ^ S U O(0x20) A H M L(0x08) */
-    M_RSE       = 0x11,		/* | S U O(0x21) A H M L(0x07) */
+    M_BREAK     = 0x02,		/* v S U O(0x10) A H M L(0x02) */
+    M_PASSFP    = 0x06,		/* | S U O(0x11) A H M L(0x06) */
+    M_SIG       = 0x09,		/* ^ S U O(0x13) A H M L(0x09) */
+    M_DELAY     = 0x04,		/* v S U O(0x14) A H M L(0x04) */
+    M_CTL       = 0x03,		/* | S U O(0x15) A H M L(0x03) */
+    M_IOCTL     = 0x05,		/* v S U O(0x16) A H M L(0x05) */
+    M_SETOPTS   = 0x08,		/* ^ S U O(0x20) A H M L(0x08) */
+    M_RSE       = 0x07,		/* | S U O(0x21) A H M L(0x07) */
     M_TRAIL     = 0x12,		/* ? U */
     M_BACKWASH  = 0x13,		/* v A */
-    QPCTL       = 0x80,		/* - S U O A H M L(0x0a) */
-    M_IOCACK    = 0x81,		/* ^ S U O A H M L(0x0f) */
-    M_IOCNAK    = 0x82,		/* ^ S U O A H M L(0x10) */
-    M_PCPROTO   = 0x83,		/* | S U O A H M L(0x12) */
-    M_PCSIG     = 0x84,		/* ^ S U O A H M L(0x14) */
-    M_READ      = 0x85,		/* v S U O(0x8b) A H(0x8b) M(0x8b) L(0x15) */
-    M_FLUSH     = 0x86,		/* | S U O A H M L(0x0d) */
-    M_STOP      = 0x87,		/* v S U O A H M L(0x16) */
-    M_START     = 0x88,		/* v S U O A H M L(0x17) */
-    M_HANGUP    = 0x89,		/* ^ S U O A H M L(0x0e) */
-    M_ERROR     = 0x8a,		/* ^ S U O A H M L(0x0c) */
-    M_COPYIN    = 0x8b,		/* ^ S U O(0x8d) A H(0x8d) M(0x8c) L(0x0a) */
-    M_COPYOUT   = 0x8c,		/* ^ S U O(0x8e) A H(0x8e) M(0x8d) L(0x0b) */
-    M_IOCDATA   = 0x8d,		/* v S U O(0x8f) A H(0x8f) M(0x8e) L(0x11) */
-    M_PCRSE     = 0x8e,		/* | S U O(0x90) A H(0x90) M(0x90) L(0x13) */
-    M_STOPI     = 0x8f,		/* v S U O(0x91) A H(0x91) M(0x91) L(0x19) */
-    M_STARTI    = 0x90,		/* v S U O(0x92) A H(0x92) M(0x92) L(0x18) */
+    QPCTL       = 0x0a,		/* - S U O A H M L(0x0a) */
+    M_IOCACK    = 0x0f,		/* ^ S U O A H M L(0x0f) */
+    M_IOCNAK    = 0x10,		/* ^ S U O A H M L(0x10) */
+    M_PCPROTO   = 0x12,		/* | S U O A H M L(0x12) */
+    M_PCSIG     = 0x14,		/* ^ S U O A H M L(0x14) */
+    M_READ      = 0x15,		/* v S U O(0x8b) A H(0x8b) M(0x8b) L(0x15) */
+    M_FLUSH     = 0x0d,		/* | S U O A H M L(0x0d) */
+    M_STOP      = 0x16,		/* v S U O A H M L(0x16) */
+    M_START     = 0x17,		/* v S U O A H M L(0x17) */
+    M_HANGUP    = 0x0e,		/* ^ S U O A H M L(0x0e) */
+    M_ERROR     = 0x0c,		/* ^ S U O A H M L(0x0c) */
+    M_COPYIN    = 0x0a,		/* ^ S U O(0x8d) A H(0x8d) M(0x8c) L(0x0a) */
+    M_COPYOUT   = 0x0b,		/* ^ S U O(0x8e) A H(0x8e) M(0x8d) L(0x0b) */
+    M_IOCDATA   = 0x11,		/* v S U O(0x8f) A H(0x8f) M(0x8e) L(0x11) */
+    M_PCRSE     = 0x13,		/* | S U O(0x90) A H(0x90) M(0x90) L(0x13) */
+    M_STOPI     = 0x19,		/* v S U O(0x91) A H(0x91) M(0x91) L(0x19) */
+    M_STARTI    = 0x18,		/* v S U O(0x92) A H(0x92) M(0x92) L(0x18) */
 
     /* the rest of these are all over the board, only M_UNHANGUP is common,
      * they have been renumbered so that at least they don't overlap
diff -Naur LiS-2.18-orig/include/sys/stropts.h LiS-2.18-RHEL4/include/sys/stropts.h
--- LiS-2.18-orig/include/sys/stropts.h	2004-07-30 11:52:59.000000000 -0400
+++ LiS-2.18-RHEL4/include/sys/stropts.h        2005-04-11 02:40:01.113305336 -0400
@@ -260,8 +260,8 @@
 #undef STR
 #endif
 
-#define __SID           ('S'<<8)	/* for GNU libc compatibility */
-#define STR             ('S'<<8)	/* for UnixWare/Solaris compatibility */
+#define __SID           (0xdc<<8)	/* for GNU libc compatibility */
+#define STR             (0xdc<<8)	/* for UnixWare/Solaris compatibility */
 #define I_NREAD         (__SID | 1)
 #define I_PUSH          (__SID | 2)
 #define I_POP           (__SID | 3)
diff -Naur LiS-2.18-orig/libc/linux/Makefile LiS-2.18-RHEL4/libc/linux/Makefile
--- LiS-2.18-orig/libc/linux/Makefile	2004-09-09 16:14:13.000000000 -0400
+++ LiS-2.18-RHEL4/libc/linux/Makefile  2005-04-11 02:56:49.932941440 -0400
@@ -13,6 +13,11 @@
 # For 64-bit zSeries, specify use of position independent code
 XOPTS  += -fPIC
 endif
+# For 64-bit ppc64, specify use of position independent code
+ifeq ($(ARCH), ppc64)
+XOPTS  += -fPIC -m64
+endif
+
 
 
 include $(LIBDIR)/mk.bdy
diff -Naur LiS-2.18-orig/libc/mk.bdy LiS-2.18-RHEL4/libc/mk.bdy
--- LiS-2.18-orig/libc/mk.bdy   2005-04-12 08:39:09.827976880 -0400
+++ LiS-2.18-RHEL4/libc/mk.bdy  2005-04-12 09:04:40.416987608 -0400
@@ -28,11 +28,19 @@
 
 $(LIB_SHARED): $(LIBOBJS)
 	$(Q_ECHO) $(qtag_LD)$(reltarget)
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -shared -m elf64ppc -o $@ $^ -lc
+else
 	$(Q)$(LD) -shared -o $@ $^ -lc
+endif
 
 $(LIB_PSHARED): $(PRELDOBJS)
 	$(Q_ECHO) $(qtag_LD)$(reltarget)
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -shared -m elf64ppc -o $@ $^ -lc
+else
 	$(Q)$(LD) -shared -o $@ $^ -lc
+endif
 
 $(LIB_STATIC): $(LIBOBJS)
 	-$(Q)rm -f $@
@@ -63,18 +71,22 @@
 
 install: .compiler all
 	$(Q_ECHO) $(qtag_INSTALL)$(relpwd)
-ifneq ($(ARCH),s390x)
-	$(Q)install -d $(DEST_LIBDIR)
-	$(Q)install -m 0755 $(LIB_SHARED) $(DEST_LIBDIR)/$(LIBFILE_SHARED)
-	$(Q)install -m 0755 $(LIB_PSHARED) $(DEST_LIBDIR)/$(LIBFILE_PSHARED)
-	$(Q)install -m 0644 $(LIB_STATIC) $(DEST_LIBDIR)/$(LIBFILE_STATIC)
+ifeq ($(ARCH),s390x)
+	$(Q)install -d $(DEST_LIB64DIR)
+	$(Q)install -m 0755 $(LIB_SHARED) $(DEST_LIB64DIR)/$(LIBFILE_SHARED)
+	$(Q)install -m 0755 $(LIB_PSHARED) $(DEST_LIB64DIR)/$(LIBFILE_PSHARED)
+	$(Q)install -m 0644 $(LIB_STATIC) $(DEST_LIB64DIR)/$(LIBFILE_STATIC)
 else
-#	FIXME - someone should define this directory
-ifneq ($(lib64dir),)
+ifeq ($(ARCH),ppc64)
 	$(Q)install -d $(DEST_LIB64DIR)
 	$(Q)install -m 0755 $(LIB_SHARED) $(DEST_LIB64DIR)/$(LIBFILE_SHARED)
 	$(Q)install -m 0755 $(LIB_PSHARED) $(DEST_LIB64DIR)/$(LIBFILE_PSHARED)
 	$(Q)install -m 0644 $(LIB_STATIC) $(DEST_LIB64DIR)/$(LIBFILE_STATIC)
+else
+	$(Q)install -d $(DEST_LIBDIR)
+	$(Q)install -m 0755 $(LIB_SHARED) $(DEST_LIBDIR)/$(LIBFILE_SHARED)
+	$(Q)install -m 0755 $(LIB_PSHARED) $(DEST_LIBDIR)/$(LIBFILE_PSHARED)
+	$(Q)install -m 0644 $(LIB_STATIC) $(DEST_LIBDIR)/$(LIBFILE_STATIC)
 endif
 endif
 ifeq ($(DESTDIR),)
diff -Naur LiS-2.18-orig/libc/getpmsg.c LiS-2.18-RHEL4/libc/getpmsg.c
--- LiS-2.18-orig/libc/getpmsg.c	2004-03-11 15:16:14.000000000 -0500
+++ LiS-2.18-RHEL4/libc/getpmsg.c       2005-04-11 02:40:01.112305488 -0400
@@ -6,16 +6,16 @@
 typedef struct strbuf6 {
     int       maxlen;
     int       len;
-    long long buf;
+    unsigned long long buf;
 } strbuf6_t;
 
 typedef struct getpmsg_args6
 {
     int                  fd ;
-    long long            ctl ;
-    long long            dat ;
-    long long            bandp ;
-    long long            flagsp ;
+    unsigned long long   ctl ;
+    unsigned long long   dat ;
+    unsigned long long   bandp ;
+    unsigned long long   flagsp ;
 
 } getpmsg_args6_t ;
 
@@ -33,7 +33,7 @@
     {
       ctl6.maxlen = ctlptr->maxlen;
       ctl6.len    = ctlptr->len;
-      ctl6.buf    = (long long)ctlptr->buf;
+      ctl6.buf    = (unsigned long long)(unsigned long)ctlptr->buf;
       ptrc6 = &ctl6;
     }
 
@@ -41,16 +41,16 @@
     {
       dat6.maxlen = dataptr->maxlen;
       dat6.len    = dataptr->len;
-      dat6.buf    = (long long)dataptr->buf;
+      dat6.buf    = (unsigned long long)(unsigned long)dataptr->buf;
       ptrd6 = &dat6;
     }
 
     memset((void*)&args,0,sizeof(getpmsg_args6_t));
     args.fd	= fd ;
-    args.ctl	= (long long)ptrc6 ;
-    args.dat	= (long long)ptrd6 ;
-    args.bandp	= (long long)bandp ;
-    args.flagsp	= (long long)flagsp ;
+    args.ctl	= (unsigned long long)(unsigned long)ptrc6 ;
+    args.dat	= (unsigned long long)(unsigned long)ptrd6 ;
+    args.bandp	= (unsigned long long)(unsigned long)bandp ;
+    args.flagsp	= (unsigned long long)(unsigned long)flagsp ;
 
     rc = read(fd, &args, LIS_GETMSG_PUTMSG_ULEN);
 
diff -Naur LiS-2.18-orig/libc/putpmsg.c LiS-2.18-RHEL4/libc/putpmsg.c
--- LiS-2.18-orig/libc/putpmsg.c	2004-03-11 15:16:14.000000000 -0500
+++ LiS-2.18-RHEL4/libc/putpmsg.c       2005-04-11 02:40:01.112305488 -0400
@@ -6,14 +6,14 @@
 typedef struct strbuf6 {
     int       maxlen;
     int       len;
-    long long buf;
+    unsigned long long buf;
 } strbuf6_t;
 
 typedef struct putpmsg_args6
 {
     int                  fd ;
-    long long            ctl ;
-    long long            dat ;
+    unsigned long long   ctl ;
+    unsigned long long   dat ;
     int                  band ;
     int                  flags ;
 
@@ -32,7 +32,7 @@
     {
       ctl6.maxlen = ctlptr->maxlen;
       ctl6.len    = ctlptr->len;
-      ctl6.buf    = (long long)ctlptr->buf;
+      ctl6.buf    = (unsigned long long)(unsigned long)ctlptr->buf;
       ptrc6 = &ctl6;
     }
 
@@ -40,14 +40,14 @@
     {
       dat6.maxlen = dataptr->maxlen;
       dat6.len    = dataptr->len;
-      dat6.buf    = (long long)dataptr->buf;
+      dat6.buf    = (unsigned long long)(unsigned long)dataptr->buf;
       ptrd6 = &dat6;
     }
 
     memset((void*)&args,0,sizeof(putpmsg_args6_t));
     args.fd	= fd ;
-    args.ctl	= (long long)ptrc6 ;
-    args.dat	= (long long)ptrd6 ;
+    args.ctl	= (unsigned long long)(unsigned long)ptrc6 ;
+    args.dat	= (unsigned long long)(unsigned long)ptrd6 ;
     args.band	= band ;
     args.flags	= flags ;
 
diff -Naur LiS-2.18-orig/libc32over64/linux/Makefile LiS-2.18-RHEL4/libc32over64/linux/Makefile
--- LiS-2.18-orig/libc32over64/linux/Makefile	2004-09-09 16:14:13.000000000 -0400
+++ LiS-2.18-RHEL4/libc32over64/linux/Makefile  2005-04-12 09:26:56.903074248 -0400
@@ -7,8 +7,21 @@
 
 CP_OPTS	= -f
 XOPTS  += -D__KERNEL_SYSCALLS__
+ifeq ($(ARCH),s390x)
 XOPTS  += -DBLD32OVER64 -m31
 LDOPTS = -melf_s390
+endif
+ifeq ($(ARCH),ppc64)
+XOPTS  = -D__KERNEL_SYSCALLS__
+XOPTS  += -DBLD32OVER64 -m32 -msoft-float -pipe -ffixed-r2 -mmultiple -mstring
+XOPTS  += -Wall -Wstrict-prototypes $(PROBLEMS)
+XOPTS  += -fno-strict-aliasing -Wno-sign-compare -fno-common
+XOPTS  += -D__powerpc__ -fno-builtin -pipe -D_PPC_LIS_
+XOPTS  += -D__SMP__
+XOPTS  += -I$(LIS_INCL)
+XOPTS  += -I$(KINCL) $(KINCL_MACH_GENERIC) $(KINCL_MACH_DEFAULT)
+LDOPTS = -m elf32ppc
+endif
 
 include $(LIBDIR32OVER64)/mk.bdy
 
diff -Naur LiS-2.18-orig/libc32over64/mk.bdy LiS-2.18-RHEL4/libc32over64/mk.bdy
--- LiS-2.18-orig/libc32over64/mk.bdy	2004-10-11 11:40:44.000000000 -0400
+++ LiS-2.18-RHEL4/libc32over64/mk.bdy  2005-04-12 11:50:30.379984136 -0400
@@ -20,7 +20,13 @@
 LIB_PSHARED = $(LIBDIR32OVER64)/$(LIBFILE_PSHARED)
 LIB_STATIC = $(LIBDIR32OVER64)/$(LIBFILE_STATIC)
 
+ifeq ($(ARCH),s390x)
 CC += -c $(XOPTS)
+endif
+ifeq ($(ARCH),ppc64)
+CC += -c $(XOPTS) -fPIC -m32 -msoft-float -pipe -ffixed-r2 -mmultiple -mstring
+LD = ld -m elf32ppc
+endif
 
 
 all: compiler $(LIB_SHARED) $(LIB_PSHARED) $(LIB_STATIC)
diff -Naur LiS-2.18-orig/pkg/Makefile LiS-2.18-RHEL4/pkg/Makefile
--- LiS-2.18-orig/pkg/Makefile	2004-09-09 16:14:13.000000000 -0400
+++ LiS-2.18-RHEL4/pkg/Makefile 2005-04-12 09:03:25.143983048 -0400
@@ -60,7 +60,11 @@
 #	file.
 #
 	$(Q_ECHO) $(qtag_continue) */*.o
-	$(Q)$(LD) -r -o $@ */*.o 
+ifeq ($(ARCH),ppc64)
+	$(Q)$(LD) -r -m elf64ppc -o $@ */*.o 
+else
+	$(Q)$(LD) -r -o $@ */*.o
+endif
 
 .objects: $(OBJECTS)
 	$(Q)echo $(relpwddeps) > $@
diff -Naur LiS-2.18-orig/scripts/update_conf.modules LiS-2.18-RHEL4/scripts/update_conf.modules
--- LiS-2.18-orig/scripts/update_conf.modules	2004-06-06 17:06:55.000000000 -0400
+++ LiS-2.18-RHEL4/scripts/update_conf.modules  2005-04-12 08:11:06.686000048 -0400
@@ -54,9 +54,12 @@
     fi
 }
 
-CONF=modules.conf			# new name
+CONF=modprobe.conf.streams              # newest name
 if [ ! -f /etc/$CONF ]; then
-    CONF=conf.modules			# old name
+    CONF=modules.conf                   # new name
+    if [ ! -f /etc/$CONF ]; then
+        CONF=conf.modules               # old name
+    fi
 fi
 
 cp /etc/$CONF ${CONF}.save && \
diff -Naur LiS-2.18-orig/util/streams.c LiS-2.18-RHEL4/util/streams.c
--- LiS-2.18-orig/util/streams.c	2004-07-30 11:52:59.000000000 -0400
+++ LiS-2.18-RHEL4/util/streams.c       2005-04-13 02:40:01.113305336 -0400
@@ -152,7 +152,11 @@
 
 	printf("%-28s: ", lis_itemnames[i].name);
 	for (j = 0; j < 4; j++)
+#if (defined(_S390X_LIS_) || defined(_PPC64_LIS_))
+	    printf("%12lu", strstats[inx][j]/4294967296);
+#else
 	    printf("%12lu", strstats[inx][j]);
+#endif
 	printf("\n");
     }
 
diff -Naur LiS-2.18-orig/util/strtst.c LiS-2.18-RHEL4/util/strtst.c
--- LiS-2.18-orig/util/strtst.c	2004-10-05 10:37:05.000000000 -0400
+++ LiS-2.18-RHEL4/util/strtst.c        2005-04-11 02:40:01.106306400 -0400
@@ -5411,7 +5411,11 @@
 
     print("band_test: band 2 full (%d msgs), write band 1\n", n_sent) ;
     send_band(fd1, 1, 23, _M_DATA) ;
+#if defined(__s390__) || defined(__s390x__)
+    sleep(2) ;				/* allow messages to flow */
+#else
     sleep(1) ;				/* allow messages to flow */
+#endif
     print("   %d messages available to read\n", nread_wait_msgs(fd2, 1)) ;
     flow_ok = 0 ;
     for (i = 0; i < n_sent; i++)
diff -Naur LiS-2.18-orig/util/linux/Makefile LiS-2.18-RHEL4/util/linux/Makefile
--- LiS-2.18-orig/util/linux/Makefile	2004-09-09 16:14:13.000000000 -0400
+++ LiS-2.18-RHEL4/util/linux/Makefile  2005-04-12 09:08:13.672047560 -0400
@@ -1,8 +1,13 @@
 include .config_mk
 
 OPT	= -DLINUX
+ifeq ($(ARCH),ppc64)
+XUTILS  = ldlconfig test test2 fattach fdetach \
+	  oc rwf mkfifo psfd pafd thrtst
+else
 XUTILS  = ldltest ldlconfig test test2 fattach fdetach \
 	  oc rwf mkfifo psfd pafd thrtst
+endif
 XINST	= install_xutils
 XUNINST	= uninstall_xutils
 XCLEAN	= makenodes.c
@@ -19,7 +24,11 @@
 #strtst:	../strtst.c
 #	$(CC) -o $@ $^ $(ULOPTS) -lpthread
 	
+ifeq ($(ARCH),ppc64)
+install_xutils:	ldlconfig fattach fdetach
+else
 install_xutils:	ldltest ldlconfig fattach fdetach
+endif
 	$(Q)install -d $(DESTDIR)$(sbindir)
 	$(Q)install $^ $(DESTDIR)$(sbindir)
 
diff -Naur LiS-2.18-orig/modules/.config LiS-2.18-RHEL4/modules/.config
--- LiS-2.18-orig/modules/.config      2004-09-10 13:06:49.000000000 -0400
+++ LiS-2.18-RHEL4/modules/.config     2005-04-11 16:39:53.758957792 -0400
@@ -36,6 +36,9 @@
 CPPFLAGS += -D__KERNEL__ -I$(KSRC)/include
 CFLAGS   := $(subst -Iinclude,-I$(KSRC)/include,$(CFLAGS))
 CFLAGS   += -O2
+ifeq ($(ARCH),ppc64)
+CFLAGS   += -m64 -msoft-float -pipe -Wno-uninitialized -mminimal-toc -mtraceback=none -mcall-aixdesc -mtune=power4 -fno-unit-at-a-time
+endif
 c_flags += $(CPPFLAGS) $(CFLAGS) -I$(KSRC)/include
 
 LDFLAGS_MODULE  = -r
diff -Naur LiS-2.18-orig/head/version.c LiS-2.18-RHEL4/head/version.c
--- LiS-2.18-orig/head/version.c        2004-10-13 12:31:15.000000000 -0400
+++ LiS-2.18-RHEL4/head/version.c       2005-05-12 07:07:07.070707070 -0400
@@ -34,8 +34,8 @@
 #ident "@(#) LiS version.c 2.18 10/12/04 16:25:34 "


-char	lis_version[] = "2.18.0" ;
-char	lis_date[]    = "10/13/04" ;
+char   lis_version[] = "2.18.0r4" ;
+char   lis_date[]    = "12/12/05" ;

 #if 0