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

I'm developing i386 linux drivers for a custom PCI card basically built
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.

Antonio Borneo

Tiscali ADSL SENZA CANONE, paghi solo quello che consumi!
Navighi a 1,5 euro all'ora e il modem e' gratis! Abbonati subito.

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/