All of lore.kernel.org
 help / color / mirror / Atom feed
* Exception on host-PCI-bridge master-abort
@ 2003-11-07 11:45 daz
  0 siblings, 0 replies; 3+ messages in thread
From: daz @ 2003-11-07 11:45 UTC (permalink / raw)
  To: linux-kernel

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@stNO.SPAMcom


__________________________________________________________________
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/




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Exception on host-PCI-bridge master-abort
@ 2003-11-07 19:34 daz
  2003-11-10  9:34 ` Adrian Cox
  0 siblings, 1 reply; 3+ messages in thread
From: daz @ 2003-11-07 19:34 UTC (permalink / raw)
  To: linux-kernel

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@stNOS.PAMcom


__________________________________________________________________
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/




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Exception on host-PCI-bridge master-abort
  2003-11-07 19:34 daz
@ 2003-11-10  9:34 ` Adrian Cox
  0 siblings, 0 replies; 3+ messages in thread
From: Adrian Cox @ 2003-11-10  9:34 UTC (permalink / raw)
  To: daz; +Cc: linux-kernel

On Fri, 2003-11-07 at 19:34, daz@tiscali.it wrote:

> 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!

I've dealt with cards like that, but without that sort of problem.
Here's some things to think about: 
 
1) Linux should not issue read or write requests to PCI devices
randomly. If the request is directed to your card, are you sure that it
isn't coming from your own driver code? If so, fix your driver.

2) If the fatal access is to another device, then does your device pass
through an intermediate state where it corrupts accesses to other cards
on the same bus? If so, you need to use a PCI-PCI bridge to put it on a
bus by itself.

3) If it's a new custom card, worry about electrical issues. Maybe the
FPGA configuration fails sometimes.

- Adrian Cox
http://www.humboldt.co.uk/






^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-11-10  9:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-11-07 11:45 Exception on host-PCI-bridge master-abort daz
  -- strict thread matches above, loose matches on Subject: below --
2003-11-07 19:34 daz
2003-11-10  9:34 ` Adrian Cox

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.