Use the AHC_DISABLE_PCI_PERR flag to silence parity error reporting on
chips where setting the FAILDIS bit is not effective. While here, try again to make it clear that reported parity errors indicate a failure of some PCI device *other than* the aic7xxx controller.
This commit is contained in:
parent
a6869ccad0
commit
ad3d2a4dc5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=150453
@ -2023,11 +2023,15 @@ ahc_pci_intr(struct ahc_softc *ahc)
|
||||
status1 = aic_pci_read_config(ahc->dev_softc,
|
||||
PCIR_STATUS + 1, /*bytes*/1);
|
||||
|
||||
printf("%s: PCI error Interrupt at seqaddr = 0x%x\n",
|
||||
ahc_name(ahc),
|
||||
ahc_inb(ahc, SEQADDR0) | (ahc_inb(ahc, SEQADDR1) << 8));
|
||||
if ((status1 & ~DPE) != 0
|
||||
|| (ahc->flags & AHC_DISABLE_PCI_PERR) == 0) {
|
||||
printf("%s: PCI error Interrupt at seqaddr = 0x%x\n",
|
||||
ahc_name(ahc),
|
||||
ahc_inb(ahc, SEQADDR0) | (ahc_inb(ahc, SEQADDR1) << 8));
|
||||
}
|
||||
|
||||
if (status1 & DPE) {
|
||||
if (status1 & DPE
|
||||
&& (ahc->flags & AHC_DISABLE_PCI_PERR) == 0) {
|
||||
ahc->pci_target_perr_count++;
|
||||
printf("%s: Data Parity Error Detected during address "
|
||||
"or write data phase\n", ahc_name(ahc));
|
||||
@ -2060,17 +2064,20 @@ ahc_pci_intr(struct ahc_softc *ahc)
|
||||
ahc_outb(ahc, CLRINT, CLRPARERR);
|
||||
}
|
||||
|
||||
if (ahc->pci_target_perr_count > AHC_PCI_TARGET_PERR_THRESH) {
|
||||
if (ahc->pci_target_perr_count > AHC_PCI_TARGET_PERR_THRESH
|
||||
&& (ahc->flags & AHC_DISABLE_PCI_PERR) == 0) {
|
||||
printf(
|
||||
"%s: WARNING WARNING WARNING WARNING\n"
|
||||
"%s: Too many PCI parity errors observed as a target.\n"
|
||||
"%s: Some device on this bus is generating bad parity.\n"
|
||||
"%s: This is an error *observed by*, not *generated by*, this controller.\n"
|
||||
"%s: Some device on this PCI bus is generating bad parity.\n"
|
||||
"%s: This is an error *observed by*, not *generated by*, %s.\n"
|
||||
"%s: PCI parity error checking has been disabled.\n"
|
||||
"%s: WARNING WARNING WARNING WARNING\n",
|
||||
ahc_name(ahc), ahc_name(ahc), ahc_name(ahc),
|
||||
ahc_name(ahc), ahc_name(ahc), ahc_name(ahc));
|
||||
ahc_name(ahc), ahc_name(ahc), ahc_name(ahc),
|
||||
ahc_name(ahc));
|
||||
ahc->seqctl |= FAILDIS;
|
||||
ahc->flags |= AHC_DISABLE_PCI_PERR;
|
||||
ahc_outb(ahc, SEQCTL, ahc->seqctl);
|
||||
}
|
||||
ahc_unpause(ahc);
|
||||
|
Loading…
Reference in New Issue
Block a user