RS/6000 Device Driver Problems.
Paul Chamberlain
tif at doorstop.austin.ibm.com
Tue Nov 27 02:04:19 AEST 1990
andre at eicon.eicon.qc.ca (Andre Scheunemann) writes:
> mem_addr = BUSMEM_ATT(bus_id, card_mem_addr);
> data = BUSIO_GETC(mem_addr); /* this causes a system crash !!!!! */
I would make sure that the bus_id is correct and that the
card_mem_addr does in fact have the correct address of the card.
If you have the Hardware Technical Reference -- General Information, you
should already be familiar with chapter 4. I see some particularly useful
information about "Load and Store Error Conditions" on pages 32-34. You
should be able to see the Channel Status Register (CSR) from the debugger
if you turn the debugger on. Use "bosboot -a -D" I think. I would almost
bet that the first nybble is a "0xB" for "Card Selected Feedback Error".
This means that whatever you did, no card answered to that address.
FYI, the crashes can be prevented and recovered from. A Data Storage
Interrupt (DSI) eventually causes a longjmpx() which is the opposite
of setjmpx(). These routines handle a _stack_ of recovery routines.
If the stack is empty it crashes. A routine called pio_assist()
assists in doing PIO and handling errors. I think that the library
version of this routine was left out on the very first ship of AIX 3.1.
I _think_ it is present in all others.
Paul Chamberlain | I do NOT represent IBM. tif at doorstop, sc30661 at ausvm6
512/838-7008 | ...!cs.utexas.edu!ibmchs!auschs!doorstop.austin.ibm.com!tif
More information about the Comp.unix.internals
mailing list