diff options
| -rw-r--r-- | arch/sparc64/kernel/pci_psycho.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c index e205ade69cfc..f85b6bebb0be 100644 --- a/arch/sparc64/kernel/pci_psycho.c +++ b/arch/sparc64/kernel/pci_psycho.c | |||
| @@ -575,7 +575,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm | |||
| 575 | { | 575 | { |
| 576 | unsigned long csr_reg, csr, csr_error_bits; | 576 | unsigned long csr_reg, csr, csr_error_bits; |
| 577 | irqreturn_t ret = IRQ_NONE; | 577 | irqreturn_t ret = IRQ_NONE; |
| 578 | u16 stat; | 578 | u16 stat, *addr; |
| 579 | 579 | ||
| 580 | if (is_pbm_a) { | 580 | if (is_pbm_a) { |
| 581 | csr_reg = pbm->controller_regs + PSYCHO_PCIA_CTRL; | 581 | csr_reg = pbm->controller_regs + PSYCHO_PCIA_CTRL; |
| @@ -597,7 +597,9 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm | |||
| 597 | printk("%s: PCI SERR signal asserted.\n", pbm->name); | 597 | printk("%s: PCI SERR signal asserted.\n", pbm->name); |
| 598 | ret = IRQ_HANDLED; | 598 | ret = IRQ_HANDLED; |
| 599 | } | 599 | } |
| 600 | pci_read_config_word(pbm->pci_bus->self, PCI_STATUS, &stat); | 600 | addr = psycho_pci_config_mkaddr(pbm, pbm->pci_first_busno, |
| 601 | 0, PCI_STATUS); | ||
| 602 | pci_config_read16(addr, &stat); | ||
| 601 | if (stat & (PCI_STATUS_PARITY | | 603 | if (stat & (PCI_STATUS_PARITY | |
| 602 | PCI_STATUS_SIG_TARGET_ABORT | | 604 | PCI_STATUS_SIG_TARGET_ABORT | |
| 603 | PCI_STATUS_REC_TARGET_ABORT | | 605 | PCI_STATUS_REC_TARGET_ABORT | |
| @@ -605,7 +607,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm | |||
| 605 | PCI_STATUS_SIG_SYSTEM_ERROR)) { | 607 | PCI_STATUS_SIG_SYSTEM_ERROR)) { |
| 606 | printk("%s: PCI bus error, PCI_STATUS[%04x]\n", | 608 | printk("%s: PCI bus error, PCI_STATUS[%04x]\n", |
| 607 | pbm->name, stat); | 609 | pbm->name, stat); |
| 608 | pci_write_config_word(pbm->pci_bus->self, PCI_STATUS, 0xffff); | 610 | pci_config_write16(addr, 0xffff); |
| 609 | ret = IRQ_HANDLED; | 611 | ret = IRQ_HANDLED; |
| 610 | } | 612 | } |
| 611 | return ret; | 613 | return ret; |
