mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 07:04:00 +08:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC64]: Add some missing print_symbol() calls. [SPARC64]: Fix Tomatillo/Schizo IRQ handling.
This commit is contained in:
commit
d2c59a22dd
@ -793,7 +793,7 @@ static unsigned int schizo_irq_build(struct device_node *dp,
|
|||||||
return virt_irq;
|
return virt_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void schizo_irq_trans_init(struct device_node *dp)
|
static void __schizo_irq_trans_init(struct device_node *dp, int is_tomatillo)
|
||||||
{
|
{
|
||||||
struct linux_prom64_registers *regs;
|
struct linux_prom64_registers *regs;
|
||||||
struct schizo_irq_data *irq_data;
|
struct schizo_irq_data *irq_data;
|
||||||
@ -807,11 +807,24 @@ static void schizo_irq_trans_init(struct device_node *dp)
|
|||||||
dp->irq_trans->data = irq_data;
|
dp->irq_trans->data = irq_data;
|
||||||
|
|
||||||
irq_data->pbm_regs = regs[0].phys_addr;
|
irq_data->pbm_regs = regs[0].phys_addr;
|
||||||
irq_data->sync_reg = regs[3].phys_addr + 0x1a18UL;
|
if (is_tomatillo)
|
||||||
|
irq_data->sync_reg = regs[3].phys_addr + 0x1a18UL;
|
||||||
|
else
|
||||||
|
irq_data->sync_reg = 0UL;
|
||||||
irq_data->portid = of_getintprop_default(dp, "portid", 0);
|
irq_data->portid = of_getintprop_default(dp, "portid", 0);
|
||||||
irq_data->chip_version = of_getintprop_default(dp, "version#", 0);
|
irq_data->chip_version = of_getintprop_default(dp, "version#", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void schizo_irq_trans_init(struct device_node *dp)
|
||||||
|
{
|
||||||
|
__schizo_irq_trans_init(dp, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void tomatillo_irq_trans_init(struct device_node *dp)
|
||||||
|
{
|
||||||
|
__schizo_irq_trans_init(dp, 1);
|
||||||
|
}
|
||||||
|
|
||||||
static unsigned int pci_sun4v_irq_build(struct device_node *dp,
|
static unsigned int pci_sun4v_irq_build(struct device_node *dp,
|
||||||
unsigned int devino,
|
unsigned int devino,
|
||||||
void *_data)
|
void *_data)
|
||||||
@ -1050,8 +1063,8 @@ static struct irq_trans pci_irq_trans_table[] = {
|
|||||||
{ "pci108e,8001", schizo_irq_trans_init },
|
{ "pci108e,8001", schizo_irq_trans_init },
|
||||||
{ "SUNW,schizo+", schizo_irq_trans_init },
|
{ "SUNW,schizo+", schizo_irq_trans_init },
|
||||||
{ "pci108e,8002", schizo_irq_trans_init },
|
{ "pci108e,8002", schizo_irq_trans_init },
|
||||||
{ "SUNW,tomatillo", schizo_irq_trans_init },
|
{ "SUNW,tomatillo", tomatillo_irq_trans_init },
|
||||||
{ "pci108e,a801", schizo_irq_trans_init },
|
{ "pci108e,a801", tomatillo_irq_trans_init },
|
||||||
{ "SUNW,sun4v-pci", pci_sun4v_irq_trans_init },
|
{ "SUNW,sun4v-pci", pci_sun4v_irq_trans_init },
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,6 +87,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
|
|||||||
i + 1,
|
i + 1,
|
||||||
p->trapstack[i].tstate, p->trapstack[i].tpc,
|
p->trapstack[i].tstate, p->trapstack[i].tpc,
|
||||||
p->trapstack[i].tnpc, p->trapstack[i].tt);
|
p->trapstack[i].tnpc, p->trapstack[i].tt);
|
||||||
|
print_symbol("TRAPLOG: TPC<%s>\n", p->trapstack[i].tpc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1134,6 +1135,9 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
|
|||||||
printk("%s" "ERROR(%d): TPC[%lx] TNPC[%lx] O7[%lx] TSTATE[%lx]\n",
|
printk("%s" "ERROR(%d): TPC[%lx] TNPC[%lx] O7[%lx] TSTATE[%lx]\n",
|
||||||
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
||||||
regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
|
regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
|
||||||
|
printk("%s" "ERROR(%d): ",
|
||||||
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
|
||||||
|
print_symbol("TPC<%s>\n", regs->tpc);
|
||||||
printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
|
printk("%s" "ERROR(%d): M_SYND(%lx), E_SYND(%lx)%s%s\n",
|
||||||
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
(recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
|
||||||
(afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
|
(afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
|
||||||
@ -1741,6 +1745,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
|
|||||||
smp_processor_id(),
|
smp_processor_id(),
|
||||||
(type & 0x1) ? 'I' : 'D',
|
(type & 0x1) ? 'I' : 'D',
|
||||||
regs->tpc);
|
regs->tpc);
|
||||||
|
print_symbol(KERN_EMERG "TPC<%s>\n", regs->tpc);
|
||||||
panic("Irrecoverable Cheetah+ parity error.");
|
panic("Irrecoverable Cheetah+ parity error.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1748,6 +1753,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
|
|||||||
smp_processor_id(),
|
smp_processor_id(),
|
||||||
(type & 0x1) ? 'I' : 'D',
|
(type & 0x1) ? 'I' : 'D',
|
||||||
regs->tpc);
|
regs->tpc);
|
||||||
|
print_symbol(KERN_WARNING "TPC<%s>\n", regs->tpc);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sun4v_error_entry {
|
struct sun4v_error_entry {
|
||||||
@ -1946,6 +1952,7 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
|
|||||||
|
|
||||||
printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
|
printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
|
||||||
regs->tpc, tl);
|
regs->tpc, tl);
|
||||||
|
print_symbol(KERN_EMERG "SUN4V-ITLB: TPC<%s>\n", regs->tpc);
|
||||||
printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
|
printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
|
||||||
"pte[%lx] error[%lx]\n",
|
"pte[%lx] error[%lx]\n",
|
||||||
sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx,
|
sun4v_err_itlb_vaddr, sun4v_err_itlb_ctx,
|
||||||
@ -1966,6 +1973,7 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
|
|||||||
|
|
||||||
printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
|
printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
|
||||||
regs->tpc, tl);
|
regs->tpc, tl);
|
||||||
|
print_symbol(KERN_EMERG "SUN4V-DTLB: TPC<%s>\n", regs->tpc);
|
||||||
printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
|
printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
|
||||||
"pte[%lx] error[%lx]\n",
|
"pte[%lx] error[%lx]\n",
|
||||||
sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx,
|
sun4v_err_dtlb_vaddr, sun4v_err_dtlb_ctx,
|
||||||
|
Loading…
Reference in New Issue
Block a user