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

Commit d9089c29 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (25 commits)
  powerpc: Disable 64K hugetlb support when doing 64K SPU mappings
  powerpc/powermac: Fixup default serial port device for pmac_zilog
  powerpc/powermac: Use sane default baudrate for SCC debugging
  powerpc/mm: Implement _PAGE_SPECIAL & pte_special() for 64-bit
  powerpc: Show processor cache information in sysfs
  powerpc: Make core id information available to userspace
  powerpc: Make core sibling information available to userspace
  powerpc/vio: More fallout from dma_mapping_error API change
  ibmveth: Fix multiple errors with dma_mapping_error conversion
  powerpc/pseries: Fix CMO sysdev attribute API change fallout
  powerpc: Enable tracehook for the architecture
  powerpc: Add TIF_NOTIFY_RESUME support for tracehook
  powerpc: Add asm/syscall.h with the tracehook entry points
  powerpc: Make syscall tracing use tracehook.h helpers
  powerpc: Call tracehook_signal_handler() when setting up signal frames
  powerpc: Update cpu_sibling_maps dynamically
  powerpc: register_cpu_online should be __cpuinit
  powerpc: kill useless SMT code in prom_hold_cpus
  powerpc: Fix 8xx build failure
  powerpc: Fix vio build warnings
  ...
parents bda426f5 00df438e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -117,6 +117,7 @@ config PPC
	select HAVE_KPROBES
	select HAVE_KPROBES
	select HAVE_ARCH_KGDB
	select HAVE_ARCH_KGDB
	select HAVE_KRETPROBES
	select HAVE_KRETPROBES
	select HAVE_ARCH_TRACEHOOK
	select HAVE_LMB
	select HAVE_LMB
	select HAVE_DMA_ATTRS if PPC64
	select HAVE_DMA_ATTRS if PPC64
	select USE_GENERIC_SMP_HELPERS if SMP
	select USE_GENERIC_SMP_HELPERS if SMP
+11 −6
Original line number Original line Diff line number Diff line
@@ -148,7 +148,7 @@ transfer_to_handler:
	/* Check to see if the dbcr0 register is set up to debug.  Use the
	/* Check to see if the dbcr0 register is set up to debug.  Use the
	   internal debug mode bit to do this. */
	   internal debug mode bit to do this. */
	lwz	r12,THREAD_DBCR0(r12)
	lwz	r12,THREAD_DBCR0(r12)
	andis.	r12,r12,(DBCR0_IDM  | DBSR_DAC1R | DBSR_DAC1W)@h
	andis.	r12,r12,DBCR0_IDM@h
	beq+	3f
	beq+	3f
	/* From user and task is ptraced - load up global dbcr0 */
	/* From user and task is ptraced - load up global dbcr0 */
	li	r12,-1			/* clear all pending debug events */
	li	r12,-1			/* clear all pending debug events */
@@ -292,7 +292,7 @@ syscall_exit_cont:
	/* If the process has its own DBCR0 value, load it up.  The internal
	/* If the process has its own DBCR0 value, load it up.  The internal
	   debug mode bit tells us that dbcr0 should be loaded. */
	   debug mode bit tells us that dbcr0 should be loaded. */
	lwz	r0,THREAD+THREAD_DBCR0(r2)
	lwz	r0,THREAD+THREAD_DBCR0(r2)
	andis.	r10,r0,(DBCR0_IDM  | DBSR_DAC1R | DBSR_DAC1W)@h
	andis.	r10,r0,DBCR0_IDM@h
	bnel-	load_dbcr0
	bnel-	load_dbcr0
#endif
#endif
#ifdef CONFIG_44x
#ifdef CONFIG_44x
@@ -343,7 +343,12 @@ syscall_dotrace:
	stw	r0,_TRAP(r1)
	stw	r0,_TRAP(r1)
	addi	r3,r1,STACK_FRAME_OVERHEAD
	addi	r3,r1,STACK_FRAME_OVERHEAD
	bl	do_syscall_trace_enter
	bl	do_syscall_trace_enter
	lwz	r0,GPR0(r1)	/* Restore original registers */
	/*
	 * Restore argument registers possibly just changed.
	 * We use the return value of do_syscall_trace_enter
	 * for call number to look up in the table (r0).
	 */
	mr	r0,r3
	lwz	r3,GPR3(r1)
	lwz	r3,GPR3(r1)
	lwz	r4,GPR4(r1)
	lwz	r4,GPR4(r1)
	lwz	r5,GPR5(r1)
	lwz	r5,GPR5(r1)
@@ -720,7 +725,7 @@ restore_user:
	/* Check whether this process has its own DBCR0 value.  The internal
	/* Check whether this process has its own DBCR0 value.  The internal
	   debug mode bit tells us that dbcr0 should be loaded. */
	   debug mode bit tells us that dbcr0 should be loaded. */
	lwz	r0,THREAD+THREAD_DBCR0(r2)
	lwz	r0,THREAD+THREAD_DBCR0(r2)
	andis.	r10,r0,(DBCR0_IDM  | DBSR_DAC1R | DBSR_DAC1W)@h
	andis.	r10,r0,DBCR0_IDM@h
	bnel-	load_dbcr0
	bnel-	load_dbcr0
#endif
#endif


@@ -1055,8 +1060,8 @@ do_user_signal: /* r10 contains MSR_KERNEL here */
	SAVE_NVGPRS(r1)
	SAVE_NVGPRS(r1)
	rlwinm	r3,r3,0,0,30
	rlwinm	r3,r3,0,0,30
	stw	r3,_TRAP(r1)
	stw	r3,_TRAP(r1)
2:	li	r3,0
2:	addi	r3,r1,STACK_FRAME_OVERHEAD
	addi	r4,r1,STACK_FRAME_OVERHEAD
	mr	r4,r9
	bl	do_signal
	bl	do_signal
	REST_NVGPRS(r1)
	REST_NVGPRS(r1)
	b	recheck
	b	recheck
+7 −3
Original line number Original line Diff line number Diff line
@@ -214,7 +214,12 @@ syscall_dotrace:
	bl	.save_nvgprs
	bl	.save_nvgprs
	addi	r3,r1,STACK_FRAME_OVERHEAD
	addi	r3,r1,STACK_FRAME_OVERHEAD
	bl	.do_syscall_trace_enter
	bl	.do_syscall_trace_enter
	ld	r0,GPR0(r1)	/* Restore original registers */
	/*
	 * Restore argument registers possibly just changed.
	 * We use the return value of do_syscall_trace_enter
	 * for the call number to look up in the table (r0).
	 */
	mr	r0,r3
	ld	r3,GPR3(r1)
	ld	r3,GPR3(r1)
	ld	r4,GPR4(r1)
	ld	r4,GPR4(r1)
	ld	r5,GPR5(r1)
	ld	r5,GPR5(r1)
@@ -638,8 +643,7 @@ user_work:
	b	.ret_from_except_lite
	b	.ret_from_except_lite


1:	bl	.save_nvgprs
1:	bl	.save_nvgprs
	li	r3,0
	addi	r3,r1,STACK_FRAME_OVERHEAD
	addi	r4,r1,STACK_FRAME_OVERHEAD
	bl	.do_signal
	bl	.do_signal
	b	.ret_from_except
	b	.ret_from_except


+17 −27
Original line number Original line Diff line number Diff line
@@ -493,18 +493,18 @@ static int __init serial_dev_init(void)
device_initcall(serial_dev_init);
device_initcall(serial_dev_init);




#ifdef CONFIG_SERIAL_8250_CONSOLE
/*
/*
 * This is called very early, as part of console_init() (typically just after
 * This is called very early, as part of console_init() (typically just after
 * time_init()). This function is respondible for trying to find a good
 * time_init()). This function is respondible for trying to find a good
 * default console on serial ports. It tries to match the open firmware
 * default console on serial ports. It tries to match the open firmware
 * default output with one of the available serial console drivers, either
 * default output with one of the available serial console drivers that have
 * one of the platform serial ports that have been probed earlier by
 * been probed earlier by find_legacy_serial_ports()
 * find_legacy_serial_ports() or some more platform specific ones.
 */
 */
static int __init check_legacy_serial_console(void)
static int __init check_legacy_serial_console(void)
{
{
	struct device_node *prom_stdout = NULL;
	struct device_node *prom_stdout = NULL;
	int speed = 0, offset = 0;
	int i, speed = 0, offset = 0;
	const char *name;
	const char *name;
	const u32 *spd;
	const u32 *spd;


@@ -548,11 +548,9 @@ static int __init check_legacy_serial_console(void)
	if (spd)
	if (spd)
		speed = *spd;
		speed = *spd;


	if (0)
	if (strcmp(name, "serial") != 0)
		;
		goto not_found;
#ifdef CONFIG_SERIAL_8250_CONSOLE

	else if (strcmp(name, "serial") == 0) {
		int i;
	/* Look for it in probed array */
	/* Look for it in probed array */
	for (i = 0; i < legacy_serial_count; i++) {
	for (i = 0; i < legacy_serial_count; i++) {
		if (prom_stdout != legacy_serial_infos[i].np)
		if (prom_stdout != legacy_serial_infos[i].np)
@@ -563,16 +561,7 @@ static int __init check_legacy_serial_console(void)
	}
	}
	if (i >= legacy_serial_count)
	if (i >= legacy_serial_count)
		goto not_found;
		goto not_found;
	}

#endif /* CONFIG_SERIAL_8250_CONSOLE */
#ifdef CONFIG_SERIAL_PMACZILOG_CONSOLE
	else if (strcmp(name, "ch-a") == 0)
		offset = 0;
	else if (strcmp(name, "ch-b") == 0)
		offset = 1;
#endif /* CONFIG_SERIAL_PMACZILOG_CONSOLE */
	else
		goto not_found;
	of_node_put(prom_stdout);
	of_node_put(prom_stdout);


	DBG("Found serial console at ttyS%d\n", offset);
	DBG("Found serial console at ttyS%d\n", offset);
@@ -591,3 +580,4 @@ static int __init check_legacy_serial_console(void)
}
}
console_initcall(check_legacy_serial_console);
console_initcall(check_legacy_serial_console);


#endif /* CONFIG_SERIAL_8250_CONSOLE */
+4 −4
Original line number Original line Diff line number Diff line
@@ -254,7 +254,7 @@ void do_dabr(struct pt_regs *regs, unsigned long address,
		return;
		return;


	/* Clear the DAC and struct entries.  One shot trigger */
	/* Clear the DAC and struct entries.  One shot trigger */
#if (defined(CONFIG_44x) || defined(CONFIG_BOOKE))
#if defined(CONFIG_BOOKE)
	mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) & ~(DBSR_DAC1R | DBSR_DAC1W
	mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) & ~(DBSR_DAC1R | DBSR_DAC1W
							| DBCR0_IDM));
							| DBCR0_IDM));
#endif
#endif
@@ -286,7 +286,7 @@ int set_dabr(unsigned long dabr)
	mtspr(SPRN_DABR, dabr);
	mtspr(SPRN_DABR, dabr);
#endif
#endif


#if defined(CONFIG_44x) || defined(CONFIG_BOOKE)
#if defined(CONFIG_BOOKE)
	mtspr(SPRN_DAC1, dabr);
	mtspr(SPRN_DAC1, dabr);
#endif
#endif


@@ -373,7 +373,7 @@ struct task_struct *__switch_to(struct task_struct *prev,
	if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr))
	if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr))
		set_dabr(new->thread.dabr);
		set_dabr(new->thread.dabr);


#if defined(CONFIG_44x) || defined(CONFIG_BOOKE)
#if defined(CONFIG_BOOKE)
	/* If new thread DAC (HW breakpoint) is the same then leave it */
	/* If new thread DAC (HW breakpoint) is the same then leave it */
	if (new->thread.dabr)
	if (new->thread.dabr)
		set_dabr(new->thread.dabr);
		set_dabr(new->thread.dabr);
@@ -568,7 +568,7 @@ void flush_thread(void)
		current->thread.dabr = 0;
		current->thread.dabr = 0;
		set_dabr(0);
		set_dabr(0);


#if defined(CONFIG_44x) || defined(CONFIG_BOOKE)
#if defined(CONFIG_BOOKE)
		current->thread.dbcr0 &= ~(DBSR_DAC1R | DBSR_DAC1W);
		current->thread.dbcr0 &= ~(DBSR_DAC1R | DBSR_DAC1W);
#endif
#endif
	}
	}
Loading