[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.