Re: [PATCH] 2.5.27: s390 fixes.

From: Arnd Bergmann (arnd@bergmann-dalldorf.de)
Date: Tue Jul 23 2002 - 12:50:38 EST


updated patch, part 5/6:

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.683.1.4 -> 1.683.1.5
# include/asm-s390x/param.h 1.2 -> 1.3
# include/asm-s390/debug.h 1.5 -> 1.6
# include/asm-s390/param.h 1.2 -> 1.3
# drivers/s390/net/lcs.c 1.1 -> 1.2
# include/asm-s390x/pgalloc.h 1.6 -> 1.7
# arch/s390x/kernel/linux32.c 1.15 -> 1.16
# drivers/s390/cio/blacklist.c 1.1 -> 1.2
# arch/s390x/mm/fault.c 1.9 -> 1.10
# drivers/s390/misc/chandev.c 1.9 -> 1.10
# drivers/s390/Makefile 1.8 -> 1.9
# include/asm-s390x/debug.h 1.5 -> 1.6
# include/asm-s390/pgalloc.h 1.7 -> 1.8
# arch/s390/mm/fault.c 1.8 -> 1.9
# drivers/s390/cio/s390io.c 1.1 -> 1.2
# include/asm-s390x/system.h 1.5 -> 1.6
# arch/s390x/kernel/linux32.h 1.2 -> 1.3
# drivers/s390/cio/cio.c 1.1 -> 1.2
# drivers/s390/char/ctrlchar.c 1.3 -> 1.4
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/07/23 arnd@bergmann-dalldorf.de 1.683.1.5
# trivial fixes to keep s390 arch working
# --------------------------------------------
#
diff -Nru a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
--- a/arch/s390/mm/fault.c Tue Jul 23 18:53:49 2002
+++ b/arch/s390/mm/fault.c Tue Jul 23 18:53:49 2002
@@ -234,16 +234,18 @@
          * the fault.
          */
         switch (handle_mm_fault(mm, vma, address, error_code == 4)) {
- case 1:
+ case VM_FAULT_MINOR:
                 tsk->min_flt++;
                 break;
- case 2:
+ case VM_FAULT_MAJOR:
                 tsk->maj_flt++;
                 break;
- case 0:
+ case VM_FAULT_SIGBUS:
                 goto do_sigbus;
- default:
+ case VM_FAULT_OOM:
                 goto out_of_memory;
+ default:
+ BUG();
         }
 
         up_read(&mm->mmap_sem);
diff -Nru a/arch/s390x/kernel/linux32.c b/arch/s390x/kernel/linux32.c
--- a/arch/s390x/kernel/linux32.c Tue Jul 23 18:53:49 2002
+++ b/arch/s390x/kernel/linux32.c Tue Jul 23 18:53:49 2002
@@ -514,16 +514,15 @@
         if (!p)
                 return -ENOMEM;
 
+ err = -EINVAL;
         if (second > MSGMAX || first < 0 || second < 0)
- return -EINVAL;
+ goto out;
 
         err = -EFAULT;
         if (!uptr)
                 goto out;
-
- err = get_user (p->mtype, &up->mtype);
- err |= __copy_from_user (p->mtext, &up->mtext, second);
- if (err)
+ if (get_user (p->mtype, &up->mtype) ||
+ __copy_from_user (p->mtext, &up->mtext, second))
                 goto out;
         old_fs = get_fs ();
         set_fs (KERNEL_DS);
diff -Nru a/arch/s390x/kernel/linux32.h b/arch/s390x/kernel/linux32.h
--- a/arch/s390x/kernel/linux32.h Tue Jul 23 18:53:49 2002
+++ b/arch/s390x/kernel/linux32.h Tue Jul 23 18:53:49 2002
@@ -8,8 +8,6 @@
 #include <linux/nfsd/nfsd.h>
 #include <linux/nfsd/export.h>
 
-#ifdef CONFIG_S390_SUPPORT
-
 /* Macro that masks the high order bit of an 32 bit pointer and converts it*/
 /* to a 64 bit pointer */
 #define A(__x) ((unsigned long)((__x) & 0x7FFFFFFFUL))
@@ -241,6 +239,4 @@
         sigset_t32 uc_sigmask; /* mask last for extensibility */
 };
 
-#endif /* !CONFIG_S390_SUPPORT */
-
 #endif /* _ASM_S390X_S390_H */
diff -Nru a/arch/s390x/mm/fault.c b/arch/s390x/mm/fault.c
--- a/arch/s390x/mm/fault.c Tue Jul 23 18:53:49 2002
+++ b/arch/s390x/mm/fault.c Tue Jul 23 18:53:49 2002
@@ -234,16 +234,18 @@
          * the fault.
          */
         switch (handle_mm_fault(mm, vma, address, error_code == 4)) {
- case 1:
+ case VM_FAULT_MINOR:
                 tsk->min_flt++;
                 break;
- case 2:
+ case VM_FAULT_MAJOR:
                 tsk->maj_flt++;
                 break;
- case 0:
+ case VM_FAULT_SIGBUS:
                 goto do_sigbus;
- default:
+ case VM_FAULT_OOM:
                 goto out_of_memory;
+ default:
+ BUG();
         }
 
         up_read(&mm->mmap_sem);
diff -Nru a/drivers/s390/Makefile b/drivers/s390/Makefile
--- a/drivers/s390/Makefile Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/Makefile Tue Jul 23 18:53:49 2002
@@ -7,6 +7,6 @@
 obj-$(CONFIG_QDIO) += qdio.o
 
 obj-y += s390mach.o s390dyn.o sysinfo.o
-obj-y += block/ char/ misc/ net/ cio/
+obj-y += cio/ block/ char/ misc/ net/
 
 include $(TOPDIR)/Rules.make
diff -Nru a/drivers/s390/char/ctrlchar.c b/drivers/s390/char/ctrlchar.c
--- a/drivers/s390/char/ctrlchar.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/char/ctrlchar.c Tue Jul 23 18:53:49 2002
@@ -26,7 +26,7 @@
 
 static void
 ctrlchar_handle_sysrq(struct tty_struct *tty) {
- handle_sysrq(ctrlchar_sysrq_key, NULL, NULL, tty);
+ handle_sysrq(ctrlchar_sysrq_key, NULL, tty);
 }
 #endif
 
diff -Nru a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
--- a/drivers/s390/cio/blacklist.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/cio/blacklist.c Tue Jul 23 18:53:49 2002
@@ -1,7 +1,7 @@
 /*
  * drivers/s390/cio/blacklist.c
  * S/390 common I/O routines -- blacklisting of specific devices
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
  *
  * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
  * IBM Corporation
@@ -243,10 +243,10 @@
                 return -EFAULT;
         }
         buf[user_len] = '\0';
-
+#if 0
         CIO_DEBUG(KERN_DEBUG, 2,
                   "/proc/cio_ignore: '%s'\n", buf);
-
+#endif
         blacklist_parse_proc_parameters (buf);
 
         vfree (buf);
diff -Nru a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
--- a/drivers/s390/cio/cio.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/cio/cio.c Tue Jul 23 18:53:49 2002
@@ -1,7 +1,7 @@
 /*
  * drivers/s390/cio/cio.c
  * S/390 common I/O routines -- low level i/o calls
- * $Revision: 1.15 $
+ * $Revision: 1.17 $
  *
  * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
  * IBM Corporation
@@ -52,7 +52,7 @@
         }
         DBG ("%s\n", buffer);
         if (cio_debug_initialized)
- debug_text_event (cio_debug_trace_id, level, buffer);
+ debug_text_event (cio_debug_msg_id, level, buffer);
 }
 
 
@@ -1448,7 +1448,7 @@
         
         ioinfo[irq]->devstat.intparm = 0;
         
- if (!ioinfo[irq]->ui.flags.s_pend)
+ if (!(ioinfo[irq]->ui.flags.s_pend || ioinfo[irq]->ui.flags.repnone))
                 ioinfo[irq]->irq_desc.handler (irq, udp, NULL);
         
         return 1;
diff -Nru a/drivers/s390/cio/s390io.c b/drivers/s390/cio/s390io.c
--- a/drivers/s390/cio/s390io.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/cio/s390io.c Tue Jul 23 18:53:49 2002
@@ -1,7 +1,7 @@
 /*
  * drivers/s390/cio/s390io.c
  * S/390 common I/O routines
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
  *
  * S390 version
  * Copyright (C) 1999, 2000 IBM Deutschland Entwicklung GmbH,
@@ -1910,12 +1910,19 @@
 
                                 ret = 0;
 
- } else {
+ } else if (ret == -ENODEV) {
 
                                 CIO_DEBUG(KERN_ERR, 2,
- "PathVerification(%04X) - "
- "Unexpected error on device %04X\n",
+ "PathVerification(%04X) "
+ "- Device %04X is no longer there?!?\n",
                                           irq, ioinfo[irq]->schib.pmcw.dev);
+
+ } else if (ret) {
+
+ CIO_DEBUG(KERN_ERR, 2,
+ "PathVerification(%04X) - "
+ "Unexpected error %d on device %04X\n",
+ irq, ret, ioinfo[irq]->schib.pmcw.dev);
                                 
                                 ioinfo[irq]->ui.flags.pgid_supp = 0;
                         }
diff -Nru a/drivers/s390/misc/chandev.c b/drivers/s390/misc/chandev.c
--- a/drivers/s390/misc/chandev.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/misc/chandev.c Tue Jul 23 18:53:49 2002
@@ -24,6 +24,7 @@
 #include <asm/s390dyn.h>
 #include <asm/queue.h>
 #include <linux/kmod.h>
+#include <linux/tqueue.h>
 #ifndef MIN
 #define MIN(a,b) ((a<b)?a:b)
 #endif
diff -Nru a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
--- a/drivers/s390/net/lcs.c Tue Jul 23 18:53:49 2002
+++ b/drivers/s390/net/lcs.c Tue Jul 23 18:53:49 2002
@@ -124,6 +124,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
+#include <linux/tqueue.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <asm/system.h>
diff -Nru a/include/asm-s390/debug.h b/include/asm-s390/debug.h
--- a/include/asm-s390/debug.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390/debug.h Tue Jul 23 18:53:49 2002
@@ -160,7 +160,8 @@
 }
 
 extern debug_entry_t *
-debug_sprintf_event(debug_info_t* id,int level,char *string,...);
+debug_sprintf_event(debug_info_t* id,int level,char *string,...)
+ __attribute__ ((format(printf, 3, 4)));
 
 
 extern inline debug_entry_t*
@@ -195,7 +196,8 @@
 
 
 extern debug_entry_t *
-debug_sprintf_exception(debug_info_t* id,int level,char *string,...);
+debug_sprintf_exception(debug_info_t* id,int level,char *string,...)
+ __attribute__ ((format(printf, 3, 4)));
 
 int debug_register_view(debug_info_t* id, struct debug_view* view);
 int debug_unregister_view(debug_info_t* id, struct debug_view* view);
diff -Nru a/include/asm-s390/param.h b/include/asm-s390/param.h
--- a/include/asm-s390/param.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390/param.h Tue Jul 23 18:53:49 2002
@@ -9,6 +9,12 @@
 #ifndef _ASMS390_PARAM_H
 #define _ASMS390_PARAM_H
 
+#ifdef __KERNEL__
+# define HZ 100 /* Internal kernel timer frequency */
+# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
+# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
+#endif
+
 #ifndef HZ
 #define HZ 100
 #endif
@@ -24,9 +30,5 @@
 #endif
 
 #define MAXHOSTNAMELEN 64 /* max length of hostname */
-
-#ifdef __KERNEL__
-# define CLOCKS_PER_SEC HZ /* frequency at which times() counts */
-#endif
 
 #endif
diff -Nru a/include/asm-s390/pgalloc.h b/include/asm-s390/pgalloc.h
--- a/include/asm-s390/pgalloc.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390/pgalloc.h Tue Jul 23 18:53:49 2002
@@ -16,6 +16,8 @@
 #include <linux/config.h>
 #include <asm/processor.h>
 #include <linux/threads.h>
+#include <linux/gfp.h>
+#include <linux/mm.h>
 
 #define check_pgt_cache() do {} while (0)
 
diff -Nru a/include/asm-s390x/debug.h b/include/asm-s390x/debug.h
--- a/include/asm-s390x/debug.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390x/debug.h Tue Jul 23 18:53:49 2002
@@ -160,7 +160,8 @@
 }
 
 extern debug_entry_t *
-debug_sprintf_event(debug_info_t* id,int level,char *string,...);
+debug_sprintf_event(debug_info_t* id,int level,char *string,...)
+ __attribute__ ((format(printf, 3, 4)));
 
 
 extern inline debug_entry_t*
@@ -195,7 +196,8 @@
 
 
 extern debug_entry_t *
-debug_sprintf_exception(debug_info_t* id,int level,char *string,...);
+debug_sprintf_exception(debug_info_t* id,int level,char *string,...)
+ __attribute__ ((format(printf, 3, 4)));
 
 int debug_register_view(debug_info_t* id, struct debug_view* view);
 int debug_unregister_view(debug_info_t* id, struct debug_view* view);
diff -Nru a/include/asm-s390x/param.h b/include/asm-s390x/param.h
--- a/include/asm-s390x/param.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390x/param.h Tue Jul 23 18:53:49 2002
@@ -9,11 +9,14 @@
 #ifndef _ASMS390_PARAM_H
 #define _ASMS390_PARAM_H
 
-#ifndef HZ
-#define HZ 100
 #ifdef __KERNEL__
-#define hz_to_std(a) (a)
+# define HZ 100 /* Internal kernel timer frequency */
+# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
+# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
 #endif
+
+#ifndef HZ
+#define HZ 100
 #endif
 
 #define EXEC_PAGESIZE 4096
@@ -28,8 +31,4 @@
 
 #define MAXHOSTNAMELEN 64 /* max length of hostname */
 
-#ifdef __KERNEL__
-# define CLOCKS_PER_SEC HZ /* frequency at which times() counts */
-#endif
-
 #endif
diff -Nru a/include/asm-s390x/pgalloc.h b/include/asm-s390x/pgalloc.h
--- a/include/asm-s390x/pgalloc.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390x/pgalloc.h Tue Jul 23 18:53:49 2002
@@ -16,6 +16,8 @@
 #include <linux/config.h>
 #include <asm/processor.h>
 #include <linux/threads.h>
+#include <linux/gfp.h>
+#include <linux/mm.h>
 
 #define check_pgt_cache() do { } while (0)
 
diff -Nru a/include/asm-s390x/system.h b/include/asm-s390x/system.h
--- a/include/asm-s390x/system.h Tue Jul 23 18:53:49 2002
+++ b/include/asm-s390x/system.h Tue Jul 23 18:53:49 2002
@@ -23,7 +23,7 @@
 #define prepare_arch_switch(rq) do { } while (0)
 #define finish_arch_switch(rq) spin_unlock_irq(&(rq)->lock)
 
-#define switch_to(prev,next),last do { \
+#define switch_to(prev,next,last) do { \
         if (prev == next) \
                 break; \
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jul 23 2002 - 22:00:43 EST