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

Commit f900e582 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc

* master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc:
  [PATCH] powerpc: iSeries needs slb_initialize to be called
  powerpc: hook up the splice syscall
  [PATCH] powerpc/cell: compile fixes
  [PATCH] powerpc: trivial spelling fixes in fault.c
  [PATCH] powerpc/pseries: EEH Cleanup
  [PATCH] powerpc/pseries: misc lparcfg fixes
  [PATCH] powerpc/pseries: fix device name printing, again.
  [PATCH] powerpc: Extends HCALL interface for InfiniBand usage
  [PATCH] powerpc/pseries: Change H_StudlyCaps to H_SHOUTING_CAPS
  [PATCH] powerpc/pseries: print message if EEH recovery fails
  [PATCH] powerpc/pseries: mutex lock to serialize EEH event processing
  powerpc: converted embedded platforms to use new define_machine support
  powerpc: merge machine_check_exception between ppc32 & ppc64
parents 23344cb3 856d08ec
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
#include <asm/prom.h>
#include <asm/vdso_datapage.h>

#define MODULE_VERS "1.6"
#define MODULE_VERS "1.7"
#define MODULE_NAME "lparcfg"

/* #define LPARCFG_DEBUG */
@@ -149,17 +149,17 @@ static void log_plpar_hcall_return(unsigned long rc, char *tag)
	if (rc == 0)		/* success, return */
		return;
/* check for null tag ? */
	if (rc == H_Hardware)
	if (rc == H_HARDWARE)
		printk(KERN_INFO
		       "plpar-hcall (%s) failed with hardware fault\n", tag);
	else if (rc == H_Function)
	else if (rc == H_FUNCTION)
		printk(KERN_INFO
		       "plpar-hcall (%s) failed; function not allowed\n", tag);
	else if (rc == H_Authority)
	else if (rc == H_AUTHORITY)
		printk(KERN_INFO
		       "plpar-hcall (%s) failed; not authorized to this function\n",
		       tag);
	else if (rc == H_Parameter)
		       "plpar-hcall (%s) failed; not authorized to this"
		       " function\n", tag);
	else if (rc == H_PARAMETER)
		printk(KERN_INFO "plpar-hcall (%s) failed; Bad parameter(s)\n",
		       tag);
	else
@@ -209,7 +209,7 @@ static void h_pic(unsigned long *pool_idle_time, unsigned long *num_procs)
	unsigned long dummy;
	rc = plpar_hcall(H_PIC, 0, 0, 0, 0, pool_idle_time, num_procs, &dummy);

	if (rc != H_Authority)
	if (rc != H_AUTHORITY)
		log_plpar_hcall_return(rc, "H_PIC");
}

@@ -242,7 +242,7 @@ static void parse_system_parameter_string(struct seq_file *m)
{
	int call_status;

	char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL);
	unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL);
	if (!local_buffer) {
		printk(KERN_ERR "%s %s kmalloc failure at line %d \n",
		       __FILE__, __FUNCTION__, __LINE__);
@@ -254,7 +254,8 @@ static void parse_system_parameter_string(struct seq_file *m)
	call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
				NULL,
				SPLPAR_CHARACTERISTICS_TOKEN,
				__pa(rtas_data_buf));
				__pa(rtas_data_buf),
				RTAS_DATA_BUF_SIZE);
	memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
	spin_unlock(&rtas_data_buf_lock);

@@ -275,7 +276,7 @@ static void parse_system_parameter_string(struct seq_file *m)
#ifdef LPARCFG_DEBUG
		printk(KERN_INFO "success calling get-system-parameter \n");
#endif
		splpar_strlen = local_buffer[0] * 16 + local_buffer[1];
		splpar_strlen = local_buffer[0] * 256 + local_buffer[1];
		local_buffer += 2;	/* step over strlen value */

		memset(workbuffer, 0, SPLPAR_MAXLENGTH);
@@ -529,13 +530,13 @@ static ssize_t lparcfg_write(struct file *file, const char __user * buf,
	retval = plpar_hcall_norets(H_SET_PPP, *new_entitled_ptr,
				    *new_weight_ptr);

	if (retval == H_Success || retval == H_Constrained) {
	if (retval == H_SUCCESS || retval == H_CONSTRAINED) {
		retval = count;
	} else if (retval == H_Busy) {
	} else if (retval == H_BUSY) {
		retval = -EBUSY;
	} else if (retval == H_Hardware) {
	} else if (retval == H_HARDWARE) {
		retval = -EIO;
	} else if (retval == H_Parameter) {
	} else if (retval == H_PARAMETER) {
		retval = -EINVAL;
	} else {
		printk(KERN_WARNING "%s: received unknown hv return code %ld",
+6 −6
Original line number Diff line number Diff line
@@ -578,18 +578,18 @@ static void rtas_percpu_suspend_me(void *info)
	 * We use "waiting" to indicate our state.  As long
	 * as it is >0, we are still trying to all join up.
	 * If it goes to 0, we have successfully joined up and
	 * one thread got H_Continue.  If any error happens,
	 * one thread got H_CONTINUE.  If any error happens,
	 * we set it to <0.
	 */
	local_irq_save(flags);
	do {
		rc = plpar_hcall_norets(H_JOIN);
		smp_rmb();
	} while (rc == H_Success && data->waiting > 0);
	if (rc == H_Success)
	} while (rc == H_SUCCESS && data->waiting > 0);
	if (rc == H_SUCCESS)
		goto out;

	if (rc == H_Continue) {
	if (rc == H_CONTINUE) {
		data->waiting = 0;
		data->args->args[data->args->nargs] =
			rtas_call(ibm_suspend_me_token, 0, 1, NULL);
@@ -597,7 +597,7 @@ static void rtas_percpu_suspend_me(void *info)
			plpar_hcall_norets(H_PROD,i);
	} else {
		data->waiting = -EBUSY;
		printk(KERN_ERR "Error on H_Join hypervisor call\n");
		printk(KERN_ERR "Error on H_JOIN hypervisor call\n");
	}

out:
@@ -624,7 +624,7 @@ static int rtas_ibm_suspend_me(struct rtas_args *args)
		printk(KERN_ERR "Error doing global join\n");

	/* Prod each CPU.  This won't hurt, and will wake
	 * anyone we successfully put to sleep with H_Join
	 * anyone we successfully put to sleep with H_JOIN.
	 */
	for_each_possible_cpu(i)
		plpar_hcall_norets(H_PROD, i);
+0 −6
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@
#include <asm/kgdb.h>
#endif

extern void platform_init(void);
extern void bootx_init(unsigned long r4, unsigned long phys);

boot_infos_t *boot_infos;
@@ -138,12 +137,7 @@ void __init machine_init(unsigned long dt_ptr, unsigned long phys)
		strlcpy(cmd_line, CONFIG_CMDLINE, sizeof(cmd_line));
#endif /* CONFIG_CMDLINE */

#ifdef CONFIG_PPC_MULTIPLATFORM
	probe_machine();
#else
	/* Base init based on machine type. Obsoloete, please kill ! */
	platform_init();
#endif

#ifdef CONFIG_6xx
	if (cpu_has_feature(CPU_FTR_CAN_DOZE) ||
+4 −6
Original line number Diff line number Diff line
@@ -215,12 +215,10 @@ void __init early_setup(unsigned long dt_ptr)
	/*
	 * Initialize stab / SLB management except on iSeries
	 */
	if (!firmware_has_feature(FW_FEATURE_ISERIES)) {
	if (cpu_has_feature(CPU_FTR_SLB))
		slb_initialize();
		else
	else if (!firmware_has_feature(FW_FEATURE_ISERIES))
		stab_initialize(get_paca()->stab_real);
	}

	DBG(" <- early_setup()\n");
}
+3 −6
Original line number Diff line number Diff line
@@ -228,7 +228,7 @@ void system_reset_exception(struct pt_regs *regs)
 */
static inline int check_io_access(struct pt_regs *regs)
{
#ifdef CONFIG_PPC_PMAC
#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32)
	unsigned long msr = regs->msr;
	const struct exception_table_entry *entry;
	unsigned int *nip = (unsigned int *)regs->nip;
@@ -261,7 +261,7 @@ static inline int check_io_access(struct pt_regs *regs)
			return 1;
		}
	}
#endif /* CONFIG_PPC_PMAC */
#endif /* CONFIG_PPC_PMAC && CONFIG_PPC32 */
	return 0;
}

@@ -308,8 +308,8 @@ platform_machine_check(struct pt_regs *regs)

void machine_check_exception(struct pt_regs *regs)
{
#ifdef CONFIG_PPC64
	int recover = 0;
	unsigned long reason = get_mc_reason(regs);

	/* See if any machine dependent calls */
	if (ppc_md.machine_check_exception)
@@ -317,8 +317,6 @@ void machine_check_exception(struct pt_regs *regs)

	if (recover)
		return;
#else
	unsigned long reason = get_mc_reason(regs);

	if (user_mode(regs)) {
		regs->msr |= MSR_RI;
@@ -462,7 +460,6 @@ void machine_check_exception(struct pt_regs *regs)
	 * additional info, e.g. bus error registers.
	 */
	platform_machine_check(regs);
#endif /* CONFIG_PPC64 */

	if (debugger_fault_handler(regs))
		return;
Loading