]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/megaraid/megaraid_mbox.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[linux-2.6-omap-h63xx.git] / drivers / scsi / megaraid / megaraid_mbox.c
index c46685a03a9fea0a321da3780743a4dfaabdcd31..c8923108183a5f6a976f33773266d0781170dfae 100644 (file)
@@ -361,6 +361,7 @@ static struct scsi_host_template megaraid_template_g = {
        .eh_host_reset_handler          = megaraid_reset_handler,
        .change_queue_depth             = megaraid_change_queue_depth,
        .use_clustering                 = ENABLE_CLUSTERING,
+       .use_sg_chaining                = ENABLE_SG_CHAINING,
        .sdev_attrs                     = megaraid_sdev_attrs,
        .shost_attrs                    = megaraid_shost_attrs,
 };
@@ -426,7 +427,7 @@ megaraid_exit(void)
  * @id         : pci device id of the class of controllers
  *
  * This routine should be called whenever a new adapter is detected by the
- * PCI hotplug susbsytem.
+ * PCI hotplug susbsystem.
  */
 static int __devinit
 megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -454,7 +455,7 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
        pci_set_master(pdev);
 
        // Allocate the per driver initialization structure
-       adapter = kmalloc(sizeof(adapter_t), GFP_KERNEL);
+       adapter = kzalloc(sizeof(adapter_t), GFP_KERNEL);
 
        if (adapter == NULL) {
                con_log(CL_ANN, (KERN_WARNING
@@ -462,7 +463,6 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 
                goto out_probe_one;
        }
-       memset(adapter, 0, sizeof(adapter_t));
 
 
        // set up PCI related soft state and other pre-known parameters
@@ -746,10 +746,9 @@ megaraid_init_mbox(adapter_t *adapter)
         * Allocate and initialize the init data structure for mailbox
         * controllers
         */
-       raid_dev = kmalloc(sizeof(mraid_device_t), GFP_KERNEL);
+       raid_dev = kzalloc(sizeof(mraid_device_t), GFP_KERNEL);
        if (raid_dev == NULL) return -1;
 
-       memset(raid_dev, 0, sizeof(mraid_device_t));
 
        /*
         * Attach the adapter soft state to raid device soft state
@@ -1050,8 +1049,7 @@ megaraid_alloc_cmd_packets(adapter_t *adapter)
         * since the calling routine does not yet know the number of available
         * commands.
         */
-       adapter->kscb_list = kmalloc(sizeof(scb_t) * MBOX_MAX_SCSI_CMDS,
-                       GFP_KERNEL);
+       adapter->kscb_list = kcalloc(MBOX_MAX_SCSI_CMDS, sizeof(scb_t), GFP_KERNEL);
 
        if (adapter->kscb_list == NULL) {
                con_log(CL_ANN, (KERN_WARNING
@@ -1059,7 +1057,6 @@ megaraid_alloc_cmd_packets(adapter_t *adapter)
                        __LINE__));
                goto out_free_ibuf;
        }
-       memset(adapter->kscb_list, 0, sizeof(scb_t) * MBOX_MAX_SCSI_CMDS);
 
        // memory allocation for our command packets
        if (megaraid_mbox_setup_dma_pools(adapter) != 0) {
@@ -1587,10 +1584,8 @@ megaraid_mbox_build_cmd(adapter_t *adapter, struct scsi_cmnd *scp, int *busy)
                        caddr_t                 vaddr;
 
                        sgl = scsi_sglist(scp);
-                       if (sgl->page) {
-                               vaddr = (caddr_t)
-                                       (page_address((&sgl[0])->page)
-                                        + (&sgl[0])->offset);
+                       if (sg_page(sgl)) {
+                               vaddr = (caddr_t) sg_virt(&sgl[0]);
 
                                memset(vaddr, 0, scp->cmnd[4]);
                        }
@@ -2331,10 +2326,8 @@ megaraid_mbox_dpc(unsigned long devp)
                                && IS_RAID_CH(raid_dev, scb->dev_channel)) {
 
                        sgl = scsi_sglist(scp);
-                       if (sgl->page) {
-                               c = *(unsigned char *)
-                                       (page_address((&sgl[0])->page) +
-                                        (&sgl[0])->offset);
+                       if (sg_page(sgl)) {
+                               c = *(unsigned char *) sg_virt(&sgl[0]);
                        } else {
                                con_log(CL_ANN, (KERN_WARNING
                                                 "megaraid mailbox: invalid sg:%d\n",
@@ -3495,8 +3488,7 @@ megaraid_cmm_register(adapter_t *adapter)
        int             i;
 
        // Allocate memory for the base list of scb for management module.
-       adapter->uscb_list = kmalloc(sizeof(scb_t) * MBOX_MAX_USER_CMDS,
-                       GFP_KERNEL);
+       adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL);
 
        if (adapter->uscb_list == NULL) {
                con_log(CL_ANN, (KERN_WARNING
@@ -3504,7 +3496,6 @@ megaraid_cmm_register(adapter_t *adapter)
                        __LINE__));
                return -1;
        }
-       memset(adapter->uscb_list, 0, sizeof(scb_t) * MBOX_MAX_USER_CMDS);
 
 
        // Initialize the synchronization parameters for resources for