Commit 599c8531 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] locking problem with __cpcmd.
  [S390] don't call handle_mm_fault() if in an atomic context.
  [S390] Fix vmalloc area size calculation.
  [S390] Fix cpu hotplug (missing 'online' attribute).
  [S390] cio: use barrier() in stsch_reset.
  [S390] memory detection misses 128k.
parents 2f5c33b3 bf3dbdcd
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -164,11 +164,14 @@ startup_continue:
	srl	%r7,28
	clr	%r6,%r7			# compare cc with last access code
	be	.Lsame-.LPG1(%r13)
	b	.Lchkmem-.LPG1(%r13)
	lhi	%r8,0			# no program checks
	b	.Lsavchk-.LPG1(%r13)
.Lsame:
	ar	%r5,%r1			# add 128KB to end of chunk
	bno	.Lloop-.LPG1(%r13)	# r1 < 0x80000000 -> loop
.Lchkmem:				# > 2GB or tprot got a program check
	lhi	%r8,1			# set program check flag
.Lsavchk:
	clr	%r4,%r5			# chunk size > 0?
	be	.Lchkloop-.LPG1(%r13)
	st	%r4,0(%r3)		# store start address of chunk
@@ -190,8 +193,15 @@ startup_continue:
	je	.Ldonemem		# if not, leave
	chi	%r10,0			# do we have chunks left?
	je	.Ldonemem
	chi	%r8,1			# program check ?
	je	.Lpgmchk
	lr	%r4,%r5			# potential new chunk
	alr	%r5,%r1			# add 128KB to end of chunk
	j	.Llpcnt
.Lpgmchk:
	alr	%r5,%r1			# add 128KB to end of chunk
	lr	%r4,%r5			# potential new chunk
.Llpcnt:
	clr	%r5,%r9			# should we go on?
	jl	.Lloop
.Ldonemem:
+11 −1
Original line number Diff line number Diff line
@@ -172,12 +172,15 @@ startup_continue:
	srl	%r7,28
	clr	%r6,%r7			# compare cc with last access code
	je	.Lsame
	j	.Lchkmem
	lghi	%r8,0			# no program checks
	j	.Lsavchk
.Lsame:
	algr	%r5,%r1			# add 128KB to end of chunk
					# no need to check here,
	brc	12,.Lloop		# this is the same chunk
.Lchkmem:				# > 16EB or tprot got a program check
	lghi	%r8,1			# set program check flag
.Lsavchk:
	clgr	%r4,%r5			# chunk size > 0?
	je	.Lchkloop
	stg	%r4,0(%r3)		# store start address of chunk
@@ -204,8 +207,15 @@ startup_continue:
	chi	%r10, 0			# do we have chunks left?
	je	.Ldonemem
.Lhsaskip:
	chi	%r8,1			# program check ?
	je	.Lpgmchk
	lgr	%r4,%r5			# potential new chunk
	algr	%r5,%r1			# add 128KB to end of chunk
	j	.Llpcnt
.Lpgmchk:
	algr	%r5,%r1			# add 128KB to end of chunk
	lgr	%r4,%r5			# potential new chunk
.Llpcnt:
	clgr	%r5,%r9			# should we go on?
	jl	.Lloop
.Ldonemem:
+1 −1
Original line number Diff line number Diff line
@@ -476,7 +476,7 @@ static void __init setup_memory_end(void)
	int i;

	memory_size = real_size = 0;
	max_phys = VMALLOC_END - VMALLOC_MIN_SIZE;
	max_phys = VMALLOC_END_INIT - VMALLOC_MIN_SIZE;
	memory_end &= PAGE_MASK;

	max_mem = memory_end ? min(max_phys, memory_end) : max_phys;
+4 −1
Original line number Diff line number Diff line
@@ -794,7 +794,10 @@ static int __init topology_init(void)
	int ret;

	for_each_possible_cpu(cpu) {
		ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu);
		struct cpu *c = &per_cpu(cpu_devices, cpu);

		c->hotpluggable = 1;
		ret = register_cpu(c, cpu);
		if (ret)
			printk(KERN_WARNING "topology_init: register_cpu %d "
			       "failed (%d)\n", cpu, ret);
+3 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
 */

#include <linux/errno.h>
#include <linux/hardirq.h>
#include <linux/mm.h>
#include <asm/uaccess.h>
#include <asm/futex.h>
@@ -18,6 +19,8 @@ static inline int __handle_fault(struct mm_struct *mm, unsigned long address,
	struct vm_area_struct *vma;
	int ret = -EFAULT;

	if (in_atomic())
		return ret;
	down_read(&mm->mmap_sem);
	vma = find_vma(mm, address);
	if (unlikely(!vma))
Loading