[parisc-linux] Oops in sim700.c on C360

Matthew Wilcox matthew@wil.cx
Fri, 1 Sep 2000 17:12:33 +0100


On Fri, Sep 01, 2000 at 11:44:20AM -0400, David Huggins-Daines wrote:
> <sim700.c, line 1664>:
> 
>     host = scsi_register(tpnt, sizeof(struct sim700_hostdata));
>     hostdata = (struct sim700_hostdata *)host->hostdata;
>     memset(hostdata, 0, sizeof(struct sim700_hostdata));
>     hostdata->targets = pci_alloc_consistent(NULL, PAGE_SIZE << 3, &dma_addr);

pci_alloc_consistent is a macro which indirects via hppa_dma_ops.

>     4cd8:       e8 40 00 00     b,l 4ce0 <sim700_init_host+0x90>,rp
>     4cdc:       08 07 02 5a     copy r7,r26
>     4ce0:       49 d3 00 00     ldw 0(sr0,r14),r19
>     4ce4:       34 1a 00 00     ldi 0,r26
>     4ce8:       23 24 00 00     ldil 8000,r25
>     4cec:       0e 68 10 96     ldw  4(sr0,r19),r22
>                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  This instruction here
>     4cf0:       37 d8 3f 11     ldo -78(sp),r24
>     4cf4:       e6 c0 20 00     be,l 0(sr4,r22),%sr0,%r31
>     4cf8:       08 1f 02 42     copy r31,rp
> 
> Looks like pci_alloc_consistent is broken...

And that's clearly hppa_dma_ops being NULL.  Before I committed the
support for PCX-S,T machines, this was initialised to pa11_dma_ops
but I now leave it uninitialised.  If the CPU detection code detects a
PCX-L or PCX-L2 CPU then hppa_dma_ops gets initialised to pa11_dma_ops.
If it detects a PCX-S or PCX-T CPU then it initialises it to fail_dma_ops
(i think richard changed the name recently?).  The CCIO support and
the SBA/LBA support initialise hppa_dma_ops with their respective
support routines.  So I deduce that the CCIO support hasn't recognised
your machine.  Perhaps we should initialise it to a routine which prints
that the PCI ops haven't been initialised and halts.

-- 
Revolutions do not require corporate support.