Exception on host-PCI-bridge master-abort
From: daz
Date: Fri Nov 07 2003 - 19:03:08 EST
Items: custom PCI card, master-abort on host-PCI bridge, i386 PC, kernel
2.4.18
Hi,
I'm developing i386 linux drivers for a custom PCI card basically built
on
a programmable FPGA.
Every time I re-program the FPGA (without re-booting the PC), the PCI
configuration regs of the card are resetted, which makes memory and I/O
aperture of the card disappearing from the PCI bus.
By calling pci_restore_state() I restore the proper configuration, but
unfortunately sometimes I'm not fast enough, and the PC issues a read or
write requests when the card is still wrong configured.
In such bad situation the PC freezes!
>From the PCI spec, if a card does not respond, after a small timeout a
master-abort situation will accour.
It will be desiderable having, e.g. a CPU exception when the host-PCI
bridge fails with a master-abort.
By putting a pci_restore_state() call in the exception handler I could solve
the problem.
Digging in the kernel code I didn't found a way for doing that.
No PCI bridge for PC seems having such a feature. Isn't it?
Using a ARM Integrator platform instead of a PC, the solution seems easy.
The V3 PCI controller is programmed to rise an exception when a master-abort
accurs (v3_fault() in arch/arm/mach-integrator/pci_v3.c).
Please could you suggest me a way for getting this exception on PC?
Currently I'm using a PC with SIS620 chipset, but if you know solutions
related with different chipsets, I'm ready to change MB.
Regards
Antonio Borneo
antonio.borneo@xxxxxxxxxxxx
__________________________________________________________________
Tiscali ADSL SENZA CANONE, paghi solo quello che consumi!
Navighi a 1,5 euro all'ora e il modem e' gratis! Abbonati subito.
http://point.tiscali.it/Adsl/prodotti/senzacanone/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/