Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
[SCSI] initio: bugfix for accessors patch
[SCSI] st: fix kernel BUG at include/linux/scatterlist.h:59!
[SCSI] initio: fix conflict when loading driver
[SCSI] sym53c8xx: fix "irq X: nobody cared" regression
[SCSI] dpt_i2o: driver is only 32 bit so don't set 64 bit DMA mask
[SCSI] sym53c8xx: fix free_irq() regression

+6 -4
+1 -2
drivers/scsi/dpt_i2o.c
··· 906 } 907 908 pci_set_master(pDev); 909 - if (pci_set_dma_mask(pDev, DMA_64BIT_MASK) && 910 - pci_set_dma_mask(pDev, DMA_32BIT_MASK)) 911 return -EINVAL; 912 913 base_addr0_phys = pci_resource_start(pDev,0);
··· 906 } 907 908 pci_set_master(pDev); 909 + if (pci_set_dma_mask(pDev, DMA_32BIT_MASK)) 910 return -EINVAL; 911 912 base_addr0_phys = pci_resource_start(pDev,0);
+2
drivers/scsi/initio.c
··· 2616 scsi_for_each_sg(cmnd, sglist, cblk->sglen, i) { 2617 sg->data = cpu_to_le32((u32)sg_dma_address(sglist)); 2618 total_len += sg->len = cpu_to_le32((u32)sg_dma_len(sglist)); 2619 } 2620 2621 cblk->buflen = (scsi_bufflen(cmnd) > total_len) ? ··· 2868 } 2869 host = (struct initio_host *)shost->hostdata; 2870 memset(host, 0, sizeof(struct initio_host)); 2871 2872 if (!request_region(host->addr, 256, "i91u")) { 2873 printk(KERN_WARNING "initio: I/O port range 0x%x is busy.\n", host->addr);
··· 2616 scsi_for_each_sg(cmnd, sglist, cblk->sglen, i) { 2617 sg->data = cpu_to_le32((u32)sg_dma_address(sglist)); 2618 total_len += sg->len = cpu_to_le32((u32)sg_dma_len(sglist)); 2619 + ++sg; 2620 } 2621 2622 cblk->buflen = (scsi_bufflen(cmnd) > total_len) ? ··· 2867 } 2868 host = (struct initio_host *)shost->hostdata; 2869 memset(host, 0, sizeof(struct initio_host)); 2870 + host->addr = pci_resource_start(pdev, 0); 2871 2872 if (!request_region(host->addr, 256, "i91u")) { 2873 printk(KERN_WARNING "initio: I/O port range 0x%x is busy.\n", host->addr);
+1
drivers/scsi/st.c
··· 3611 3612 tb->dma = need_dma; 3613 tb->buffer_size = got; 3614 3615 return tb; 3616 }
··· 3611 3612 tb->dma = need_dma; 3613 tb->buffer_size = got; 3614 + sg_init_table(tb->sg, max_sg); 3615 3616 return tb; 3617 }
+1 -1
drivers/scsi/sym53c8xx_2/sym_glue.c
··· 1243 * Free O/S specific resources. 1244 */ 1245 if (pdev->irq) 1246 - free_irq(pdev->irq, np); 1247 if (np->s.ioaddr) 1248 pci_iounmap(pdev, np->s.ioaddr); 1249 if (np->s.ramaddr)
··· 1243 * Free O/S specific resources. 1244 */ 1245 if (pdev->irq) 1246 + free_irq(pdev->irq, np->s.host); 1247 if (np->s.ioaddr) 1248 pci_iounmap(pdev, np->s.ioaddr); 1249 if (np->s.ramaddr)
+1 -1
drivers/scsi/sym53c8xx_2/sym_hipd.c
··· 2791 istat = INB(np, nc_istat); 2792 if (istat & INTF) { 2793 OUTB(np, nc_istat, (istat & SIGP) | INTF | np->istat_sem); 2794 - istat = INB(np, nc_istat); /* DUMMY READ */ 2795 if (DEBUG_FLAGS & DEBUG_TINY) printf ("F "); 2796 sym_wakeup_done(np); 2797 }
··· 2791 istat = INB(np, nc_istat); 2792 if (istat & INTF) { 2793 OUTB(np, nc_istat, (istat & SIGP) | INTF | np->istat_sem); 2794 + istat |= INB(np, nc_istat); /* DUMMY READ */ 2795 if (DEBUG_FLAGS & DEBUG_TINY) printf ("F "); 2796 sym_wakeup_done(np); 2797 }