diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 15:08:05 +0200 | 
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 15:08:18 +0200 | 
| commit | e060c38434b2caa78efe7cedaff4191040b65a15 (patch) | |
| tree | 407361230bf6733f63d8e788e4b5e6566ee04818 /arch/powerpc/platforms/pseries/kexec.c | |
| parent | 10e4ac572eeffe5317019bd7330b6058a400dfc2 (diff) | |
| parent | cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 (diff) | |
| download | olio-linux-3.10-e060c38434b2caa78efe7cedaff4191040b65a15.tar.xz olio-linux-3.10-e060c38434b2caa78efe7cedaff4191040b65a15.zip  | |
Merge branch 'master' into for-next
Fast-forward merge with Linus to be able to merge patches
based on more recent version of the tree.
Diffstat (limited to 'arch/powerpc/platforms/pseries/kexec.c')
| -rw-r--r-- | arch/powerpc/platforms/pseries/kexec.c | 34 | 
1 files changed, 22 insertions, 12 deletions
diff --git a/arch/powerpc/platforms/pseries/kexec.c b/arch/powerpc/platforms/pseries/kexec.c index 54cf3a4aa16..7d94bdc63d5 100644 --- a/arch/powerpc/platforms/pseries/kexec.c +++ b/arch/powerpc/platforms/pseries/kexec.c @@ -25,20 +25,30 @@ static void pseries_kexec_cpu_down(int crash_shutdown, int secondary)  {  	/* Don't risk a hypervisor call if we're crashing */  	if (firmware_has_feature(FW_FEATURE_SPLPAR) && !crash_shutdown) { -		unsigned long addr; +		int ret; +		int cpu = smp_processor_id(); +		int hwcpu = hard_smp_processor_id(); -		addr = __pa(get_slb_shadow()); -		if (unregister_slb_shadow(hard_smp_processor_id(), addr)) -			printk("SLB shadow buffer deregistration of " -			       "cpu %u (hw_cpu_id %d) failed\n", -			       smp_processor_id(), -			       hard_smp_processor_id()); +		if (get_lppaca()->dtl_enable_mask) { +			ret = unregister_dtl(hwcpu); +			if (ret) { +				pr_err("WARNING: DTL deregistration for cpu " +				       "%d (hw %d) failed with %d\n", +				       cpu, hwcpu, ret); +			} +		} + +		ret = unregister_slb_shadow(hwcpu); +		if (ret) { +			pr_err("WARNING: SLB shadow buffer deregistration " +			       "for cpu %d (hw %d) failed with %d\n", +			       cpu, hwcpu, ret); +		} -		addr = __pa(get_lppaca()); -		if (unregister_vpa(hard_smp_processor_id(), addr)) { -			printk("VPA deregistration of cpu %u (hw_cpu_id %d) " -					"failed\n", smp_processor_id(), -					hard_smp_processor_id()); +		ret = unregister_vpa(hwcpu); +		if (ret) { +			pr_err("WARNING: VPA deregistration for cpu %d " +			       "(hw %d) failed with %d\n", cpu, hwcpu, ret);  		}  	}  }  |