Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01133148 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] fix s390x_newuname
  [S390] dasd: log sense for fatal errors
  [S390] cpu topology: fix locking
  [S390] cio: Fix refcount after moving devices.
  [S390] ftrace: fix kernel stack backchain walking
  [S390] ftrace: disable tracing on idle psw
  [S390] lockdep: fix compile bug
  [S390] kvm_s390: Fix oops in virtio device detection with "mem="
  [S390] sclp: emit error message if assign storage fails
  [S390] Fix range for add_active_range() in setup_memory()
parents c98114db d2f019fe
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -61,22 +61,25 @@ STACK_SIZE = 1 << STACK_SHIFT

#ifdef CONFIG_TRACE_IRQFLAGS
	.macro	TRACE_IRQS_ON
	l	%r1,BASED(.Ltrace_irq_on)
	basr	%r2,%r0
	l	%r1,BASED(.Ltrace_irq_on_caller)
	basr	%r14,%r1
	.endm

	.macro	TRACE_IRQS_OFF
	l	%r1,BASED(.Ltrace_irq_off)
	basr	%r2,%r0
	l	%r1,BASED(.Ltrace_irq_off_caller)
	basr	%r14,%r1
	.endm

	.macro	TRACE_IRQS_CHECK
	basr	%r2,%r0
	tm	SP_PSW(%r15),0x03	# irqs enabled?
	jz	0f
	l	%r1,BASED(.Ltrace_irq_on)
	l	%r1,BASED(.Ltrace_irq_on_caller)
	basr	%r14,%r1
	j	1f
0:	l	%r1,BASED(.Ltrace_irq_off)
0:	l	%r1,BASED(.Ltrace_irq_off_caller)
	basr	%r14,%r1
1:
	.endm
@@ -1113,9 +1116,12 @@ cleanup_io_leave_insn:
.Lschedtail:	.long	schedule_tail
.Lsysc_table:	.long	sys_call_table
#ifdef CONFIG_TRACE_IRQFLAGS
.Ltrace_irq_on: .long	trace_hardirqs_on
.Ltrace_irq_off:
		.long	trace_hardirqs_off
.Ltrace_irq_on_caller:
		.long	trace_hardirqs_on_caller
.Ltrace_irq_off_caller:
		.long	trace_hardirqs_off_caller
#endif
#ifdef CONFIG_LOCKDEP
.Llockdep_sys_exit:
		.long	lockdep_sys_exit
#endif
+7 −4
Original line number Diff line number Diff line
@@ -61,19 +61,22 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \

#ifdef CONFIG_TRACE_IRQFLAGS
	.macro	TRACE_IRQS_ON
	 brasl	%r14,trace_hardirqs_on
	 basr	%r2,%r0
	 brasl	%r14,trace_hardirqs_on_caller
	.endm

	.macro	TRACE_IRQS_OFF
	 brasl	%r14,trace_hardirqs_off
	 basr	%r2,%r0
	 brasl	%r14,trace_hardirqs_off_caller
	.endm

	.macro TRACE_IRQS_CHECK
	basr	%r2,%r0
	tm	SP_PSW(%r15),0x03	# irqs enabled?
	jz	0f
	brasl	%r14,trace_hardirqs_on
	brasl	%r14,trace_hardirqs_on_caller
	j	1f
0:	brasl	%r14,trace_hardirqs_off
0:	brasl	%r14,trace_hardirqs_off_caller
1:
	.endm
#else
+3 −0
Original line number Diff line number Diff line
@@ -136,9 +136,12 @@ static void default_idle(void)
		return;
	}
	trace_hardirqs_on();
	/* Don't trace preempt off for idle. */
	stop_critical_timings();
	/* Wait for external, I/O or machine check interrupt. */
	__load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT |
			PSW_MASK_IO | PSW_MASK_EXT);
	start_critical_timings();
}

void cpu_idle(void)
+2 −2
Original line number Diff line number Diff line
@@ -604,13 +604,13 @@ setup_memory(void)
		if (memory_chunk[i].type != CHUNK_READ_WRITE)
			continue;
		start_chunk = PFN_DOWN(memory_chunk[i].addr);
		end_chunk = start_chunk + PFN_DOWN(memory_chunk[i].size) - 1;
		end_chunk = start_chunk + PFN_DOWN(memory_chunk[i].size);
		end_chunk = min(end_chunk, end_pfn);
		if (start_chunk >= end_chunk)
			continue;
		add_active_range(0, start_chunk, end_chunk);
		pfn = max(start_chunk, start_pfn);
		for (; pfn <= end_chunk; pfn++)
		for (; pfn < end_chunk; pfn++)
			page_set_storage_key(PFN_PHYS(pfn), PAGE_DEFAULT_KEY);
	}

+1 −1
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ asmlinkage long s390x_newuname(struct new_utsname __user *name)
{
	int ret = sys_newuname(name);

	if (current->personality == PER_LINUX32 && !ret) {
	if (personality(current->personality) == PER_LINUX32 && !ret) {
		ret = copy_to_user(name->machine, "s390\0\0\0\0", 8);
		if (ret) ret = -EFAULT;
	}
Loading