Re: [parisc-linux] Re: kernel>=2.6.4-rc3 hung or panic on C1[18]0 [was: 2.6.5-rc2-pa2 boot panic on c110 :(]
Joel Soete
soete.joel at tiscali.be
Wed Apr 21 04:08:41 MDT 2004
> >
> > On Sun, 2004-04-18 at 09:39, Joel Soete wrote:
> > I presume that wrong stuff come from the ccio_fill_pdir() or ccio_coalesce_chunks()
merge with lba one?
> > But I don't have yet more accurate idea on what went wrong here (difference
between functions are important).
My abd: I effectively analyse the differences between those function and
their nes release and there are few
> >
> > (would it help to rebuild this same kernel tree with gcc-3.0 32bit would
help? right now is was build with latest gcc-3.3.3.)
> >
> Well, actually, the problem can't be in the code you cite, otherwise my
> raven wouldn't work either and it's been fine.
>
So why reverting only this stuff make kernel works? The idea is in this hunck:
@@ -1708,6 +1556,7 @@
proc_runway_root, ccio_resource_map,
NULL);
}
parisc_vmerge_boundary = IOVP_SIZE;
+ parisc_vmerge_max_size = BITS_PER_LONG * IOVP_SIZE;
ioc_count++;
return 0;
}
Reverting this, let parisc_vmerge_max_size = 0 as initialized in gsc.c (it
is confirm by adding some printk() in ll_rw_blk and bio code) this btw confirms
your idea.
Learning so ncr53c8xx code, I found small trivial patches:
diff -NaurX dontdiff linux-2.6.6-rc1-pa0.orig/drivers/parisc/ccio-dma.c linux-2.6.6-rc1-pa0/drivers/parisc/ccio-dma.c
--- linux-2.6.6-rc1-pa0.orig/drivers/parisc/ccio-dma.c 2004-03-16 16:40:23.000000000
+0100
+++ linux-2.6.6-rc1-pa0/drivers/parisc/ccio-dma.c 2004-04-21 10:32:11.000000000
+0200
@@ -441,7 +447,7 @@
BUG_ON((pages_mapped * IOVP_SIZE) > DMA_CHUNK_SIZE);
BUG_ON(pages_mapped > BITS_PER_LONG);
- DBG_RES("%s(): res_idx: %d pages_mapped %d\n",
+ DBG_RES("%s(): res_idx: %d pages_mapped %ld\n",
__FUNCTION__, res_idx, pages_mapped);
#ifdef CCIO_MAP_STATS
@@ -766,7 +772,7 @@
pdir_start = &(ioc->pdir_base[idx]);
- DBG_RUN("%s() 0x%p -> 0x%lx size: %0x%x\n",
+ DBG_RUN("%s() 0x%p -> 0x%lx size: 0x%x\n",
__FUNCTION__, addr, (long)iovp | offset, size);
/* If not cacheline aligned, force SAFE_DMA on the whole mess */
diff -NaurX dontdiff linux-2.6.6-rc1-pa0.orig/drivers/parisc/iommu-helpers.h
linux-2.6.6-rc1-pa0/drivers/parisc/iommu-helpers.h
--- linux-2.6.6-rc1-pa0.orig/drivers/parisc/iommu-helpers.h 2004-03-12 17:37:31.000000000
+0100
+++ linux-2.6.6-rc1-pa0/drivers/parisc/iommu-helpers.h 2004-04-21 10:46:33.000000000
+0200
@@ -22,14 +22,15 @@
/* Horrible hack. For efficiency's sake, dma_sg starts one
* entry below the true start (it is immediately incremented
* in the loop) */
- dma_sg--;
+ dma_sg--;
while (nents-- > 0) {
unsigned long vaddr;
long size;
DBG_RUN_SG(" %d : %08lx/%05x %08lx/%05x\n", nents,
- (unsigned long)sg_dma_address(startsg), cnt,
+ (unsigned long)sg_dma_address(startsg),
+ sg_dma_len(startsg),
sg_virt_addr(startsg), startsg->length
);
diff -NaurX dontdiff linux-2.6.6-rc1-pa0.orig/drivers/scsi/ncr53c8xx.c linux-2.6.6-rc1-pa0/drivers/scsi/ncr53c8xx.c
--- linux-2.6.6-rc1-pa0.orig/drivers/scsi/ncr53c8xx.c 2004-03-16 16:40:24.000000000
+0100
+++ linux-2.6.6-rc1-pa0/drivers/scsi/ncr53c8xx.c 2004-04-21 11:11:06.855459160
+0200
@@ -3710,11 +3710,11 @@
**
**==========================================================
*/
-static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
+static int ncr_queue_command(struct ncb *np, struct scsi_cmnd *cmd)
{
/* struct scsi_device *device = cmd->device; */
- struct tcb *tp = &np->target[cmd->device->id];
- struct lcb *lp = tp->lp[cmd->device->lun];
+ struct tcb *tp = &np->target[cmd->device->id];
+ struct lcb *lp = tp->lp[cmd->device->lun];
struct ccb *cp;
int segments;
@@ -8604,8 +8604,8 @@
int unit, struct ncr_device *device)
{
struct host_data *host_data;
- struct ncb *np = 0;
- struct Scsi_Host *instance = 0;
+ struct ncb *np = NULL;
+ struct Scsi_Host *instance = NULL;
u_long flags = 0;
int i;
================================================================================
Is that possible that you ci (i don't have cvs write access).
Thanks in advance,
Joel
PS: As usual because of wrapping pb of my interface, I also attached the
diff file ;)
----------------------------------------------------------------------------------------
Tiscali ADSL: 35 /mois, la meilleure offre du marché!
http://reg.tiscali.be/default.asp?lg=fr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2.6.6-rc1-pa0.diff
Type: application/octet-stream
Size: 2751 bytes
Desc: not available
Url : http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20040421/751587f3/2.6.6-rc1-pa0.obj
More information about the parisc-linux
mailing list