1. 26 Feb, 2010 4 commits
  2. 13 Jan, 2010 2 commits
  3. 29 Oct, 2009 3 commits
    • Heiko Carstens's avatar
      [S390] smp: fix sigp sense handling · b3dcf3de
      Heiko Carstens authored
      
      
      sigp sense only returns the status of a cpu if it is non zero. If the
      status of the sensed cpu is all zeros condition code 0 (accpeted) is
      set and no status bits are returned.
      The current code however assumes that a status was returned and tests
      bits in it. This means uninitalized data is accessed with random
      results.
      Worst case is that the code that checks if cpu is offline on cpu
      hotplug assumes that the target cpu is offline while it is still
      running. This leads potentially to memory corruption since resources
      that are still needed by the target cpu will be freed and could be
      resused while still in use.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      b3dcf3de
    • Heiko Carstens's avatar
      [S390] smp: fix sigp stop handling · f8501ba7
      Heiko Carstens authored
      
      
      According to the architecture a cpu must not necessarily enter stopped
      state after completion of a sigp instruction with "stop" order code.
      So remove the BUG() statement after self sending sigp stop to avoid
      that it ever gets reached.
      Also add a sigp busy check to make sure that the order gets delivered.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      f8501ba7
    • Heiko Carstens's avatar
      [S390] smp: fix prefix handling of offlined cpus · 4f8048ee
      Heiko Carstens authored
      
      
      Offlined cpus still have valid prefix register contents. Dumpers
      will store the register contents of a cpu to the location where its
      prefix register points to.
      For offlined cpus the area (lowcore) has been freed and the dumper
      would write the uninteresting contents of the offline cpu to a memory
      location which might be in use by some other component and destroy
      valueable information.
      To fix this set the prefix register of offline cpus to absolute
      address zero again. This prevents the current dumpers to write to
      random memory locations.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      4f8048ee
  4. 24 Sep, 2009 1 commit
  5. 22 Sep, 2009 2 commits
  6. 11 Sep, 2009 2 commits
  7. 24 Jul, 2009 1 commit
    • Heiko Carstens's avatar
      [S390] vdso: fix per cpu area allocation · 3a6ba460
      Heiko Carstens authored
      
      
      vdso per cpu area allocation in smp_prepare_cpus() happens with GFP_KERNEL
      but irqs disabled. Triggers this one:
      
      Badness at kernel/lockdep.c:2280
      Modules linked in:
      CPU: 0 Not tainted 2.6.30 #2
      Process swapper (pid: 1, task: 000000003fe88000, ksp: 000000003fe87eb8)
      Krnl PSW : 0400c00180000000 0000000000083360 (lockdep_trace_alloc+0xec/0xf8)
      [...]
      Call Trace:
      ([<00000000000832b6>] lockdep_trace_alloc+0x42/0xf8)
       [<00000000000b1880>] __alloc_pages_internal+0x3e8/0x5c4
       [<00000000000b1b4a>] __get_free_pages+0x3a/0xb0
       [<0000000000026546>] vdso_alloc_per_cpu+0x6a/0x18c
       [<00000000005eff82>] smp_prepare_cpus+0x322/0x594
       [<00000000005e8232>] kernel_init+0x76/0x398
       [<000000000001bb1e>] kernel_thread_starter+0x6/0xc
       [<000000000001bb18>] kernel_thread_starter+0x0/0xc
      
      Fix this by moving the allocation out of the irqs disabled section.
      Reported-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      3a6ba460
  8. 22 Jun, 2009 1 commit
  9. 16 Jun, 2009 1 commit
  10. 12 Jun, 2009 2 commits
  11. 14 Apr, 2009 2 commits
  12. 26 Mar, 2009 9 commits
  13. 09 Jan, 2009 1 commit
  14. 31 Dec, 2008 2 commits
  15. 25 Dec, 2008 4 commits
  16. 13 Dec, 2008 1 commit
    • Rusty Russell's avatar
      cpumask: centralize cpu_online_map and cpu_possible_map · 98a79d6a
      Rusty Russell authored
      
      
      Impact: cleanup
      
      Each SMP arch defines these themselves.  Move them to a central
      location.
      
      Twists:
      1) Some archs (m32, parisc, s390) set possible_map to all 1, so we add a
         CONFIG_INIT_ALL_POSSIBLE for this rather than break them.
      
      2) mips and sparc32 '#define cpu_possible_map phys_cpu_present_map'.
         Those archs simply have phys_cpu_present_map replaced everywhere.
      
      3) Alpha defined cpu_possible_map to cpu_present_map; this is tricky
         so I just manipulate them both in sync.
      
      4) IA64, cris and m32r have gratuitous 'extern cpumask_t cpu_possible_map'
         declarations.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Reviewed-by: default avatarGrant Grundler <grundler@parisc-linux.org>
      Tested-by: default avatarTony Luck <tony.luck@intel.com>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Cc: Mike Travis <travis@sgi.com>
      Cc: ink@jurassic.park.msu.ru
      Cc: rmk@arm.linux.org.uk
      Cc: starvik@axis.com
      Cc: tony.luck@intel.com
      Cc: takata@linux-m32r.org
      Cc: ralf@linux-mips.org
      Cc: grundler@parisc-linux.org
      Cc: paulus@samba.org
      Cc: schwidefsky@de.ibm.com
      Cc: lethal@linux-sh.org
      Cc: wli@holomorphy.com
      Cc: davem@davemloft.net
      Cc: jdike@addtoit.com
      Cc: mingo@redhat.com
      98a79d6a
  17. 28 Oct, 2008 1 commit
    • Heiko Carstens's avatar
      [S390] Fix sysdev class file creation. · da5aae70
      Heiko Carstens authored
      
      
      Use sysdev_class_create_file() to create create sysdev class attributes
      instead of sysfs_create_file(). Using sysfs_create_file() wasn't a very
      good idea since the show and store functions have a different amount of
      parameters for sysfs files and sysdev class files.
      In particular the pointer to the buffer is the last argument and
      therefore accesses to random memory regions happened.
      Still worked surprisingly well until we got a kernel panic.
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      da5aae70
  18. 08 Sep, 2008 1 commit
    • Manfred Spraul's avatar
      kernel/cpu.c: create a CPU_STARTING cpu_chain notifier · e545a614
      Manfred Spraul authored
      
      
      Right now, there is no notifier that is called on a new cpu, before the new
      cpu begins processing interrupts/softirqs.
      Various kernel function would need that notification, e.g. kvm works around
      by calling smp_call_function_single(), rcu polls cpu_online_map.
      
      The patch adds a CPU_STARTING notification. It also adds a helper function
      that sends the message to all cpu_chain handlers.
      
      Tested on x86-64.
      All other archs are untested. Especially on sparc, I'm not sure if I got
      it right.
      Signed-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e545a614