Commit 711ef84e authored by Anton Blanchard's avatar Anton Blanchard Committed by Benjamin Herrenschmidt
Browse files

powerpc/pseries: Cleanup VPA registration and deregistration errors



Make the VPA, SLB shadow and DTL registration and deregistration
functions print consistent messages on error. I needed the firmware
error code while chasing a kexec bug but we weren't printing it.

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent b1301797
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -39,17 +39,20 @@ static void pseries_kexec_cpu_down(int crash_shutdown, int secondary)
		}

		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",
		ret = unregister_slb_shadow(hard_smp_processor_id(), addr);
		if (ret) {
			pr_err("WARNING: SLB shadow buffer deregistration "
			       "for cpu %d (hw %d) failed with %d\n",
			       smp_processor_id(),
			       hard_smp_processor_id());
			       hard_smp_processor_id(), 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(hard_smp_processor_id(), addr);
		if (ret) {
			pr_err("WARNING: VPA deregistration for cpu %d "
			       "(hw %d) failed with %d\n", smp_processor_id(),
			       hard_smp_processor_id(), ret);
		}
	}
}
+8 −9
Original line number Diff line number Diff line
@@ -67,9 +67,8 @@ void vpa_init(int cpu)
	ret = register_vpa(hwcpu, addr);

	if (ret) {
		printk(KERN_ERR "WARNING: vpa_init: VPA registration for "
				"cpu %d (hw %d) of area %lx returns %ld\n",
				cpu, hwcpu, addr, ret);
		pr_err("WARNING: VPA registration for cpu %d (hw %d) of area "
		       "%lx failed with %ld\n", cpu, hwcpu, addr, ret);
		return;
	}
	/*
@@ -80,10 +79,9 @@ void vpa_init(int cpu)
	if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
		ret = register_slb_shadow(hwcpu, addr);
		if (ret)
			printk(KERN_ERR
			       "WARNING: vpa_init: SLB shadow buffer "
			       "registration for cpu %d (hw %d) of area %lx "
			       "returns %ld\n", cpu, hwcpu, addr, ret);
			pr_err("WARNING: SLB shadow buffer registration for "
			       "cpu %d (hw %d) of area %lx failed with %ld\n",
			       cpu, hwcpu, addr, ret);
	}

	/*
@@ -100,8 +98,9 @@ void vpa_init(int cpu)
		dtl->enqueue_to_dispatch_time = DISPATCH_LOG_BYTES;
		ret = register_dtl(hwcpu, __pa(dtl));
		if (ret)
			pr_warn("DTL registration failed for cpu %d (%ld)\n",
				cpu, ret);
			pr_err("WARNING: DTL registration of cpu %d (hw %d) "
			       "failed with %ld\n", smp_processor_id(),
			       hwcpu, ret);
		lppaca_of(cpu).dtl_enable_mask = 2;
	}
}
+3 −2
Original line number Diff line number Diff line
@@ -324,8 +324,9 @@ static int alloc_dispatch_logs(void)
	dtl->enqueue_to_dispatch_time = DISPATCH_LOG_BYTES;
	ret = register_dtl(hard_smp_processor_id(), __pa(dtl));
	if (ret)
		pr_warn("DTL registration failed for boot cpu %d (%d)\n",
			smp_processor_id(), ret);
		pr_err("WARNING: DTL registration of cpu %d (hw %d) failed "
		       "with %d\n", smp_processor_id(),
		       hard_smp_processor_id(), ret);
	get_paca()->lppaca_ptr->dtl_enable_mask = 2;

	return 0;