Thanks for fixing the problem. If pci_map_page() can handle a call with
scp->request_bufflen=0 as a parameter then reverting this line should be ok. Otherwise we should not remove the line but add the initialization of
cmdp->u.raw64.sg_ranz respective cmdp->u.raw.sg_ranz to 0 before (where the initialization of all other elements like "reserved", "mdisc_time" etc. take place).
Thanks,
Achim Leubner
=======================
Achim Leubner
Software Engineer / RAID drivers
ICP vortex GmbH / Adaptec Inc.
Phone: +49-351-8718291
________________________________________
From: Jerome Borsboom [mailto:[email protected]]
Sent: Freitag, 13. Oktober 2006 13:04
To: [email protected]
Cc: Leubner, Achim
Subject: 2.6.18 bug in gdth.c [solved]
Recent changes in the gdth.c driver introduced an 'unable to handle kernel paging request' bug. The offending change seems to be following change in 'gdth_fill_raw_cmd':
@@ -3022,7 +3148,7 @@ #ifdef GDTH_STATISTICS
}
#endif
- } else {
+ } else if (scp->request_bufflen) {
scp->SCp.Status = GDTH_MAP_SINGLE;
scp->SCp.Message = PCI_DMA_BIDIRECTIONAL;
page = virt_to_page(scp->request_buffer);
Reverting this line, make the driver stable again. My hypothesis is that when scp->request_bufflen is 0, then cmdp->u.raw.sg_ranz will not be assigned which makes the subsequent ha->cmd_len calculation misbehave. When you compare gdth_fill_raw_cmd with gdth_fill_cache_cmd, then in the latter function cmdp- >u.cache.sg_canz IS assigned before the conditional 'if (scp- >use_sg)...'
Jerome Borsboom
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]