]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 10 Dec 2009 03:01:47 +0000 (19:01 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 10 Dec 2009 03:01:47 +0000 (19:01 -0800)
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (72 commits)
  [S390] 3215/3270 console: remove wrong comment
  [S390] dasd: remove BKL from extended error reporting code
  [S390] vmlogrdr: remove BKL
  [S390] vmur: remove BKL
  [S390] zcrypt: remove BKL
  [S390] 3270: remove BKL
  [S390] vmwatchdog: remove lock_kernel() from open() function
  [S390] monwriter: remove lock_kernel() from open() function
  [S390] monreader: remove lock_kernel() from open() function
  [S390] s390: remove unused nfsd #includes
  [S390] ftrace: build ftrace.o when CONFIG_FTRACE_SYSCALLS is set for s390
  [S390] etr/stp: put correct per cpu variable
  [S390] tty3270: move keyboard compat ioctls
  [S390] sclp: improve servicability setting
  [S390] s390: use change recording override for kernel mapping
  [S390] MAINTAINERS: Add s390 drivers block
  [S390] use generic sockios.h header file
  [S390] use generic termbits.h header file
  [S390] smp: remove unused typedef and defines
  [S390] cmm: free pages on hibernate.
  ...

1  2 
MAINTAINERS
arch/s390/kernel/compat_linux.c
arch/s390/kernel/compat_linux.h
arch/s390/kernel/time.c
arch/s390/mm/cmm.c

diff --combined MAINTAINERS
index ea781c1cfb5a159e01093f11311fc0c4f95042a0,ea3c88ed3adee3f48a6ff54c3e582799e5469697..c8973c6102d8e730dc588fb84908f5092fa80f53
@@@ -659,9 -659,6 +659,9 @@@ ARM/FREESCALE IMX / MXC ARM ARCHITECTUR
  M:    Sascha Hauer <kernel@pengutronix.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +T:    git://git.pengutronix.de/git/imx/linux-2.6.git
 +F:    arch/arm/mach-mx*/
 +F:    arch/arm/plat-mxc/
  
  ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -732,19 -729,6 +732,19 @@@ L:       linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-ixp4xx/
  
 +ARM/INTEL RESEARCH IMOTE 2 MACHINE SUPPORT
 +M:    Jonathan Cameron <jic23@cam.ac.uk>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-pxa/imote2.c
 +
 +ARM/INTEL RESEARCH STARGATE 2 MACHINE SUPPORT
 +M:    Jonathan Cameron <jic23@cam.ac.uk>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-pxa/stargate2.c
 +F:    drivers/pcmcia/pxa2xx_stargate2.c
 +
  ARM/INTEL XSC3 (MANZANO) ARM CORE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  M:    Dan Williams <dan.j.williams@intel.com>
@@@ -787,14 -771,6 +787,14 @@@ ARM/NEC MOBILEPRO 900/c MACHINE SUPPOR
  M:    Michael Petchkovsky <mkpetch@internode.on.net>
  S:    Maintained
  
 +ARM/NOMADIK ARCHITECTURE
 +M:     Alessandro Rubini <rubini@unipv.it>
 +M:     STEricsson <STEricsson_nomadik_linux@list.st.com>
 +L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:     Maintained
 +F:     arch/arm/mach-nomadik/
 +F:     arch/arm/plat-nomadik/
 +
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
  M:    Nelson Castillo <arhuaco@freaks-unidos.net>
  L:    openmoko-kernel@lists.openmoko.org (subscribers-only)
@@@ -939,12 -915,6 +939,12 @@@ L:       linux-arm-kernel@lists.infradead.or
  W:    http://www.mcuos.com
  S:    Maintained
  
 +ARM/U8500 ARM ARCHITECTURE
 +M:    Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-ux500/
 +
  ARM/VFP SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1150,6 -1120,7 +1150,6 @@@ F:      include/net/ax25.
  F:    net/ax25/
  
  B43 WIRELESS DRIVER
 -M:    Michael Buesch <mb@bu3sch.de>
  M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
  W:    http://linuxwireless.org/en/users/Drivers/b43
@@@ -1848,19 -1819,6 +1848,19 @@@ S:    Maintaine
  F:    drivers/scsi/dpt*
  F:    drivers/scsi/dpt/
  
 +DRBD DRIVER
 +P:     Philipp Reisner
 +P:     Lars Ellenberg
 +M:     drbd-dev@lists.linbit.com
 +L:     drbd-user@lists.linbit.com
 +W:     http://www.drbd.org
 +T:     git git://git.drbd.org/linux-2.6-drbd.git drbd
 +T:     git git://git.drbd.org/drbd-8.3.git
 +S:     Supported
 +F:     drivers/block/drbd/
 +F:     lib/lru_cache.c
 +F:     Documentation/blockdev/drbd/
 +
  DRIVER CORE, KOBJECTS, AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@suse.de>
  T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
@@@ -2859,15 -2817,6 +2859,15 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/net/wireless/iwlwifi/
  
 +INTEL WIRELESS MULTICOMM 3200 WIFI (iwmc3200wifi)
 +M:    Samuel Ortiz <samuel.ortiz@intel.com>
 +M:    Zhu Yi <yi.zhu@intel.com>
 +M:    Intel Linux Wireless <ilw@linux.intel.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Supported
 +W:    http://wireless.kernel.org/en/users/Drivers/iwmc3200wifi
 +F:    drivers/net/wireless/iwmc3200wifi/
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-mips@linux-mips.org
@@@ -3139,6 -3088,7 +3139,7 @@@ S:      Supporte
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
+ F:    drivers/s390/kvm/
  
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
@@@ -3792,9 -3742,9 +3793,9 @@@ F:      include/linux/if_
  F:    include/linux/*device.h
  
  NETXEN (1/10) GbE SUPPORT
 -M:    Dhananjay Phadke <dhananjay@netxen.com>
 +M:    Amit Kumar Salecha <amit.salecha@qlogic.com>
  L:    netdev@vger.kernel.org
 -W:    http://www.netxen.com
 +W:    http://www.qlogic.com
  S:    Supported
  F:    drivers/net/netxen/
  
@@@ -4553,6 -4503,7 +4554,7 @@@ L:      linux-s390@vger.kernel.or
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
  F:    arch/s390/
+ F:    drivers/s390/
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
@@@ -4568,6 -4519,7 +4570,7 @@@ M:      Felix Beck <felix.beck@de.ibm.com
  M:    Ralph Wuerthner <ralph.wuerthner@de.ibm.com>
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
+ W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
  F:    drivers/s390/crypto/
  
index fda1a8123f9b9562f61ac6535458c902df8b5c8e,29a2f34b955530d4e8d435fe2bf2f09bc0cfa8b9..25c31d681402f1c43e140232dd8c7cbfa6166a0f
  #include <linux/shm.h>
  #include <linux/slab.h>
  #include <linux/uio.h>
- #include <linux/nfs_fs.h>
  #include <linux/quota.h>
  #include <linux/module.h>
- #include <linux/sunrpc/svc.h>
- #include <linux/nfsd/nfsd.h>
- #include <linux/nfsd/cache.h>
- #include <linux/nfsd/xdr.h>
- #include <linux/nfsd/syscall.h>
  #include <linux/poll.h>
  #include <linux/personality.h>
  #include <linux/stat.h>
@@@ -527,6 -521,59 +521,6 @@@ asmlinkage long sys32_sendfile64(int ou
        return ret;
  }
  
 -#ifdef CONFIG_SYSCTL_SYSCALL
 -struct __sysctl_args32 {
 -      u32 name;
 -      int nlen;
 -      u32 oldval;
 -      u32 oldlenp;
 -      u32 newval;
 -      u32 newlen;
 -      u32 __unused[4];
 -};
 -
 -asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
 -{
 -      struct __sysctl_args32 tmp;
 -      int error;
 -      size_t oldlen;
 -      size_t __user *oldlenp = NULL;
 -      unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
 -
 -      if (copy_from_user(&tmp, args, sizeof(tmp)))
 -              return -EFAULT;
 -
 -      if (tmp.oldval && tmp.oldlenp) {
 -              /* Duh, this is ugly and might not work if sysctl_args
 -                 is in read-only memory, but do_sysctl does indirectly
 -                 a lot of uaccess in both directions and we'd have to
 -                 basically copy the whole sysctl.c here, and
 -                 glibc's __sysctl uses rw memory for the structure
 -                 anyway.  */
 -              if (get_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)) ||
 -                  put_user(oldlen, (size_t __user *)addr))
 -                      return -EFAULT;
 -              oldlenp = (size_t __user *)addr;
 -      }
 -
 -      lock_kernel();
 -      error = do_sysctl(compat_ptr(tmp.name), tmp.nlen, compat_ptr(tmp.oldval),
 -                        oldlenp, compat_ptr(tmp.newval), tmp.newlen);
 -      unlock_kernel();
 -      if (oldlenp) {
 -              if (!error) {
 -                      if (get_user(oldlen, (size_t __user *)addr) ||
 -                          put_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)))
 -                              error = -EFAULT;
 -              }
 -              if (copy_to_user(args->__unused, tmp.__unused,
 -                               sizeof(tmp.__unused)))
 -                      error = -EFAULT;
 -      }
 -      return error;
 -}
 -#endif
 -
  struct stat64_emu31 {
        unsigned long long  st_dev;
        unsigned int    __pad1;
index 45e9092b3aad785fc7795771109dac142a5dfc17,81d6ee826ff3d9c964c2fd17b71dbd3749941116..cb97afc85c94a93cbb7b6aac57351b98080ce78e
@@@ -4,10 -4,6 +4,6 @@@
  #include <linux/compat.h>
  #include <linux/socket.h>
  #include <linux/syscalls.h>
- #include <linux/nfs_fs.h>
- #include <linux/sunrpc/svc.h>
- #include <linux/nfsd/nfsd.h>
- #include <linux/nfsd/export.h>
  
  /* Macro that masks the high order bit of an 32 bit pointer and converts it*/
  /*       to a 64 bit pointer */
@@@ -162,6 -158,7 +158,6 @@@ struct ucontext32 
        compat_sigset_t         uc_sigmask;     /* mask last for extensibility */
  };
  
 -struct __sysctl_args32;
  struct stat64_emu31;
  struct mmap_arg_struct_emu31;
  struct fadvise64_64_args;
@@@ -211,6 -208,7 +207,6 @@@ long sys32_sendfile(int out_fd, int in_
                    size_t count);
  long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
                      s32 count);
 -long sys32_sysctl(struct __sysctl_args32 __user *args);
  long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf);
  long sys32_lstat64(char __user * filename,
                   struct stat64_emu31 __user * statbuf);
diff --combined arch/s390/kernel/time.c
index 68e1ecf5ebabf657a6c7e053577752dc69d6046b,75cdc0d02415d7a034f37f6173749b1d17f04584..65065ac48ed36eeedb0c943c0cd6a9e154506825
@@@ -214,8 -214,7 +214,8 @@@ struct clocksource * __init clocksource
        return &clocksource_tod;
  }
  
 -void update_vsyscall(struct timespec *wall_time, struct clocksource *clock)
 +void update_vsyscall(struct timespec *wall_time, struct clocksource *clock,
 +                   u32 mult)
  {
        if (clock != &clocksource_tod)
                return;
@@@ -335,7 -334,7 +335,7 @@@ int get_sync_clock(unsigned long long *
        sw0 = atomic_read(sw_ptr);
        *clock = get_clock();
        sw1 = atomic_read(sw_ptr);
-       put_cpu_var(clock_sync_sync);
+       put_cpu_var(clock_sync_word);
        if (sw0 == sw1 && (sw0 & 0x80000000U))
                /* Success: time is in sync. */
                return 0;
@@@ -385,7 -384,7 +385,7 @@@ static inline int check_sync_clock(void
  
        sw_ptr = &get_cpu_var(clock_sync_word);
        rc = (atomic_read(sw_ptr) & 0x80000000U) != 0;
-       put_cpu_var(clock_sync_sync);
+       put_cpu_var(clock_sync_word);
        return rc;
  }
  
diff --combined arch/s390/mm/cmm.c
index ff58779bf7e95662363d6b42f9cba05d0b61b942,5e5f3849660f4373dddbaef3b1daae2396438205..76a3637b88e0ac90338296638ac9215ae2d3272e
@@@ -18,6 -18,7 +18,7 @@@
  #include <linux/swap.h>
  #include <linux/kthread.h>
  #include <linux/oom.h>
+ #include <linux/suspend.h>
  
  #include <asm/pgalloc.h>
  #include <asm/uaccess.h>
@@@ -44,6 -45,7 +45,7 @@@ static volatile long cmm_pages_target
  static volatile long cmm_timed_pages_target;
  static long cmm_timeout_pages;
  static long cmm_timeout_seconds;
+ static int cmm_suspended;
  
  static struct cmm_page_array *cmm_page_list;
  static struct cmm_page_array *cmm_timed_page_list;
@@@ -147,9 -149,9 +149,9 @@@ cmm_thread(void *dummy
  
        while (1) {
                rc = wait_event_interruptible(cmm_thread_wait,
-                       (cmm_pages != cmm_pages_target ||
-                        cmm_timed_pages != cmm_timed_pages_target ||
-                        kthread_should_stop()));
+                       (!cmm_suspended && (cmm_pages != cmm_pages_target ||
+                        cmm_timed_pages != cmm_timed_pages_target)) ||
+                        kthread_should_stop());
                if (kthread_should_stop() || rc == -ERESTARTSYS) {
                        cmm_pages_target = cmm_pages;
                        cmm_timed_pages_target = cmm_timed_pages;
@@@ -343,29 -345,30 +345,29 @@@ static struct ctl_table cmm_table[] = 
        {
                .procname       = "cmm_pages",
                .mode           = 0644,
 -              .proc_handler   = &cmm_pages_handler,
 +              .proc_handler   = cmm_pages_handler,
        },
        {
                .procname       = "cmm_timed_pages",
                .mode           = 0644,
 -              .proc_handler   = &cmm_pages_handler,
 +              .proc_handler   = cmm_pages_handler,
        },
        {
                .procname       = "cmm_timeout",
                .mode           = 0644,
 -              .proc_handler   = &cmm_timeout_handler,
 +              .proc_handler   = cmm_timeout_handler,
        },
 -      { .ctl_name = 0 }
 +      { }
  };
  
  static struct ctl_table cmm_dir_table[] = {
        {
 -              .ctl_name       = CTL_VM,
                .procname       = "vm",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = cmm_table,
        },
 -      { .ctl_name = 0 }
 +      { }
  };
  #endif
  
@@@ -410,6 -413,38 +412,38 @@@ cmm_smsg_target(char *from, char *msg
  
  static struct ctl_table_header *cmm_sysctl_header;
  
+ static int cmm_suspend(void)
+ {
+       cmm_suspended = 1;
+       cmm_free_pages(cmm_pages, &cmm_pages, &cmm_page_list);
+       cmm_free_pages(cmm_timed_pages, &cmm_timed_pages, &cmm_timed_page_list);
+       return 0;
+ }
+ static int cmm_resume(void)
+ {
+       cmm_suspended = 0;
+       cmm_kick_thread();
+       return 0;
+ }
+ static int cmm_power_event(struct notifier_block *this,
+                          unsigned long event, void *ptr)
+ {
+       switch (event) {
+       case PM_POST_HIBERNATION:
+               return cmm_resume();
+       case PM_HIBERNATION_PREPARE:
+               return cmm_suspend();
+       default:
+               return NOTIFY_DONE;
+       }
+ }
+ static struct notifier_block cmm_power_notifier = {
+       .notifier_call = cmm_power_event,
+ };
  static int
  cmm_init (void)
  {
  #ifdef CONFIG_CMM_PROC
        cmm_sysctl_header = register_sysctl_table(cmm_dir_table);
        if (!cmm_sysctl_header)
-               goto out;
+               goto out_sysctl;
  #endif
  #ifdef CONFIG_CMM_IUCV
        rc = smsg_register_callback(SMSG_PREFIX, cmm_smsg_target);
        rc = register_oom_notifier(&cmm_oom_nb);
        if (rc < 0)
                goto out_oom_notify;
+       rc = register_pm_notifier(&cmm_power_notifier);
+       if (rc)
+               goto out_pm;
        init_waitqueue_head(&cmm_thread_wait);
        init_timer(&cmm_timer);
        cmm_thread_ptr = kthread_run(cmm_thread, NULL, "cmmthread");
        rc = IS_ERR(cmm_thread_ptr) ? PTR_ERR(cmm_thread_ptr) : 0;
-       if (!rc)
-               goto out;
-       /*
-        * kthread_create failed. undo all the stuff from above again.
-        */
-       unregister_oom_notifier(&cmm_oom_nb);
+       if (rc)
+               goto out_kthread;
+       return 0;
  
+ out_kthread:
+       unregister_pm_notifier(&cmm_power_notifier);
+ out_pm:
+       unregister_oom_notifier(&cmm_oom_nb);
  out_oom_notify:
  #ifdef CONFIG_CMM_IUCV
        smsg_unregister_callback(SMSG_PREFIX, cmm_smsg_target);
@@@ -446,8 -485,8 +484,8 @@@ out_smsg
  #endif
  #ifdef CONFIG_CMM_PROC
        unregister_sysctl_table(cmm_sysctl_header);
+ out_sysctl:
  #endif
- out:
        return rc;
  }
  
@@@ -455,6 -494,7 +493,7 @@@ static voi
  cmm_exit(void)
  {
        kthread_stop(cmm_thread_ptr);
+       unregister_pm_notifier(&cmm_power_notifier);
        unregister_oom_notifier(&cmm_oom_nb);
        cmm_free_pages(cmm_pages, &cmm_pages, &cmm_page_list);
        cmm_free_pages(cmm_timed_pages, &cmm_timed_pages, &cmm_timed_page_list);