* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc64: Fix SMP bootup with CONFIG_STACK_DEBUG or ftrace. sparc64: Fix OOPS in psycho_pcierr_intr_other().
···575{576 unsigned long csr_reg, csr, csr_error_bits;577 irqreturn_t ret = IRQ_NONE;578- u16 stat;579580 if (is_pbm_a) {581 csr_reg = pbm->controller_regs + PSYCHO_PCIA_CTRL;···597 printk("%s: PCI SERR signal asserted.\n", pbm->name);598 ret = IRQ_HANDLED;599 }600- pci_read_config_word(pbm->pci_bus->self, PCI_STATUS, &stat);00601 if (stat & (PCI_STATUS_PARITY |602 PCI_STATUS_SIG_TARGET_ABORT |603 PCI_STATUS_REC_TARGET_ABORT |···607 PCI_STATUS_SIG_SYSTEM_ERROR)) {608 printk("%s: PCI bus error, PCI_STATUS[%04x]\n",609 pbm->name, stat);610- pci_write_config_word(pbm->pci_bus->self, PCI_STATUS, 0xffff);611 ret = IRQ_HANDLED;612 }613 return ret;
···575{576 unsigned long csr_reg, csr, csr_error_bits;577 irqreturn_t ret = IRQ_NONE;578+ u16 stat, *addr;579580 if (is_pbm_a) {581 csr_reg = pbm->controller_regs + PSYCHO_PCIA_CTRL;···597 printk("%s: PCI SERR signal asserted.\n", pbm->name);598 ret = IRQ_HANDLED;599 }600+ addr = psycho_pci_config_mkaddr(pbm, pbm->pci_first_busno,601+ 0, PCI_STATUS);602+ pci_config_read16(addr, &stat);603 if (stat & (PCI_STATUS_PARITY |604 PCI_STATUS_SIG_TARGET_ABORT |605 PCI_STATUS_REC_TARGET_ABORT |···605 PCI_STATUS_SIG_SYSTEM_ERROR)) {606 printk("%s: PCI bus error, PCI_STATUS[%04x]\n",607 pbm->name, stat);608+ pci_config_write16(addr, 0xffff);609 ret = IRQ_HANDLED;610 }611 return ret;
+2-1
arch/sparc64/kernel/traps.c
···1011#include <linux/module.h>12#include <linux/sched.h>013#include <linux/kernel.h>14#include <linux/signal.h>15#include <linux/smp.h>···2454/* This can get invoked before sched_init() so play it super safe2455 * and use hard_smp_processor_id().2456 */2457-void init_cur_cpu_trap(struct thread_info *t)2458{2459 int cpu = hard_smp_processor_id();2460 struct trap_per_cpu *p = &trap_block[cpu];
···1011#include <linux/module.h>12#include <linux/sched.h>13+#include <linux/linkage.h>14#include <linux/kernel.h>15#include <linux/signal.h>16#include <linux/smp.h>···2453/* This can get invoked before sched_init() so play it super safe2454 * and use hard_smp_processor_id().2455 */2456+void notrace init_cur_cpu_trap(struct thread_info *t)2457{2458 int cpu = hard_smp_processor_id();2459 struct trap_per_cpu *p = &trap_block[cpu];