After digging deeper into the device driver code, and adding code to the
interrupt routine I have located the problem. The issue is not the PCI bus
but the problem is related more to interrupts and how the PCI PCLTA card
handles those interrupts after a soft reset. During a Soft Reset the PCI
PCLTA card is causing an extremely large number of interrupts to occur
before the Driver has finished intializing the card, even though the
interrupts are being acknowledged in the interrupt routine, the PCI PCLTA
card (still uninitialized) was not turning off the interrupt.
The solution was to check in the interrupt routine for correct
intialization. When the card was not initialized to disallow access to most
Control Registers of the PCI PCLTA card.
Question: What is the best method for debugging an interrupt routine??
Thanks for the suggestions and added information.
“Hardware Support Account” <firstname.lastname@example.org> wrote in message
QNX4 relies on the PCI bios to setup the bus, so there is no way to
re-initialize the bus. I would place some debug printf’s into the
device driver and see at what stage it hangs. Is the device driver
catching the SIGPWR signal and shutting down gracefully?
Hardware Support Account <> email@example.com> > wrote:
I am going to ask around here to see if anyone has any suggestions.
Gordon Morganson <> firstname.lastname@example.org> > wrote:
I have a working version of a PCI-PCLTA device driver which works under
Linux and Windows, and I have adapted it for QNX 4. Everything works
correctly except for one problem - after a soft reset on the computer,
entire system freezes once the device driver tries accessing the PCI
When the hard reset occurs (power down computer and restore power)
everything works correctly until the next soft reset
the reset button). There are no interrupt conflicts, and it appears to
problem with initialization of the PCI bus. In the case of the hard
the BIOS does a plug and play initialization for the PCI bus, in the
the soft reset it does not.
Is there a simple way to initialize the PCI bus after a soft reset?
What other problems could cause this to happen?
Does anyone have any ideas?