powerpc/cell: Cleanup sysreset_hack for IBM cell blades
This patch adds a config option for the sysreset_hack used for IBM Cell blades. The code is moves from pervasive.c into ras.c and gets it's own init method. Signed-off-by: Christian Krafft <krafft@de.ibm.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
此提交包含在:

提交者
Benjamin Herrenschmidt

父節點
880e710580
當前提交
70694a8bab
@@ -236,6 +236,52 @@ static struct notifier_block cbe_ptcal_reboot_notifier = {
|
||||
.notifier_call = cbe_ptcal_notify_reboot
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PPC_IBM_CELL_RESETBUTTON
|
||||
static int sysreset_hack;
|
||||
|
||||
static int __init cbe_sysreset_init(void)
|
||||
{
|
||||
struct cbe_pmd_regs __iomem *regs;
|
||||
|
||||
sysreset_hack = machine_is_compatible("IBM,CBPLUS-1.0");
|
||||
if (!sysreset_hack)
|
||||
return 0;
|
||||
|
||||
regs = cbe_get_cpu_pmd_regs(0);
|
||||
if (!regs)
|
||||
return 0;
|
||||
|
||||
/* Enable JTAG system-reset hack */
|
||||
out_be32(®s->fir_mode_reg,
|
||||
in_be32(®s->fir_mode_reg) |
|
||||
CBE_PMD_FIR_MODE_M8);
|
||||
|
||||
return 0;
|
||||
}
|
||||
device_initcall(cbe_sysreset_init);
|
||||
|
||||
int cbe_sysreset_hack(void)
|
||||
{
|
||||
struct cbe_pmd_regs __iomem *regs;
|
||||
|
||||
/*
|
||||
* The BMC can inject user triggered system reset exceptions,
|
||||
* but cannot set the system reset reason in srr1,
|
||||
* so check an extra register here.
|
||||
*/
|
||||
if (sysreset_hack && (smp_processor_id() == 0)) {
|
||||
regs = cbe_get_cpu_pmd_regs(0);
|
||||
if (!regs)
|
||||
return 0;
|
||||
if (in_be64(®s->ras_esc_0) & 0x0000ffff) {
|
||||
out_be64(®s->ras_esc_0, 0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif /* CONFIG_PPC_IBM_CELL_RESETBUTTON */
|
||||
|
||||
int __init cbe_ptcal_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
新增問題並參考
封鎖使用者