MVSAS:Optimization for DMA buffer
PATCH 5/7 MVSAS:Optimization for DMA buffer
Quoted 2 lines
From
0b428877eecefb91b7ec7e9f1a087e5ccf2b0445Mon Sep 17 00:00:00 2001
From: Andy <[email protected]>
Date: Fri, 6 Nov 2009 17:25:08 +0800
Subject: [PATCH 5/7] optimization for DMA buffer
optimization for DMA buffer allocation to get better compatbility with different OS distribution
--- drivers/scsi/mvsas/mv_94xx.h | 2 +- drivers/scsi/mvsas/mv_defs.h | 7 +++-- drivers/scsi/mvsas/mv_init.c | 57 +++++++++++++++++++++++++++++------------ drivers/scsi/mvsas/mv_sas.c | 9 ++++-- drivers/scsi/mvsas/mv_sas.h | 2 + 5 files changed, 53 insertions(+), 24 deletions(-)
drivers/scsi/mvsas/mv_94xx.h +1 -1
@@ -187,7 +187,7 @@ struct mvs_prd_imt {struct mvs_prd {/* 64-bit buffer address */ -__le64 addr; +__le64 addr;/* 22-bit length */ __le32 im_len; } __attribute__ ((packed));
drivers/scsi/mvsas/mv_defs.h +4 -3
@@ -40,7 +40,6 @@ enum chip_flavors {/* driver compile-time configuration */ enum driver_configuration { -MVS_SLOTS =512 ,/* command slots */ MVS_TX_RING_SZ =1024 ,/* TX ring size (12-bit) */ MVS_RX_RING_SZ =1024 ,/* RX ring size (12-bit) */ /* software requires power-of-2
@@ -53,8 +52,8 @@ enum driver_configuration {MVS_SSP_CMD_SZ =64 ,/* SSP command table buffer size */ MVS_ATA_CMD_SZ =96 ,/* SATA command table buffer size */ MVS_OAF_SZ =64 ,/* Open address frame buffer size */ -MVS_QUEUE_SIZE =32 ,/* Support Queue depth */ -MVS_CAN_QUEUE =MVS_SLOTS -2 ,/* SCSI Queue depth */ +MVS_QUEUE_SIZE =64 ,/* Support Queue depth */ +MVS_CAN_QUEUE =MVS_QUEUE_SIZE -2 ,/* SCSI Queue depth */ MVS_SOC_CAN_QUEUE = MVS_SOC_SLOTS - 2, };
@@ -397,6 +396,7 @@ enum mvs_event_flags {PHY_PLUG_EVENT = (3U ),PHY_PLUG_IN = (1U <<0 ),/* phy plug in */ PHY_PLUG_OUT = (1U <<1 ),/* phy plug out */ + EXP_BRCT_CHG = (1U << 2), /* broadcast change */ }; enum mvs_port_type {
@@ -507,4 +507,5 @@ enum pci_cfg_comm_registers {PCR_CMD =0x04 , PCR_MSI_CTRL = 0x50, }; +#endif
drivers/scsi/mvsas/mv_init.c +40 -17
104 lines not on this page · raw message
drivers/scsi/mvsas/mv_sas.c +6 -3
@@ -719,9 +719,12 @@ static int mvs_task_prep_ata(struct mvs_info *mvi,/* fill in PRD (scatter/gather) table, if any */ MVS_CHIP_DISP ->make_prd (task->scatter, tei->n_elem, buf_prd);#ifndef DISABLE_HOTPLUG_DMA_FIX -if (task->data_dir ==DMA_FROM_DEVICE ) -MVS_CHIP_DISP ->dma_fix (mvi->bulk_buffer_dma, -TRASH_BUCKET_SIZE , tei->n_elem, buf_prd); +if (task->data_dir ==DMA_FROM_DEVICE ) { +dma_addr_t _dmaAddr = ((phy_mask <=0x08 ) ? + mvi->bulk_buffer_dma : mvi->bulk_buffer_dma1); +MVS_CHIP_DISP ->dma_fix (_dmaAddr,TRASH_BUCKET_SIZE , + tei->n_elem, buf_prd); + }#endif return 0 ; }
drivers/scsi/mvsas/mv_sas.h +2 -0
@@ -340,6 +340,8 @@ struct mvs_info {#ifndef DISABLE_HOTPLUG_DMA_FIX void *bulk_buffer;dma_addr_t bulk_buffer_dma; +void *bulk_buffer1; +dma_addr_t bulk_buffer_dma1;#define TRASH_BUCKET_SIZE 0x20000#endif struct mvs_slot_info slot_info[0 ];
Signature · 1 line
1.6.2.2
drivers/scsi/mvsas/mv_init.c static int pci_go_64(struct pci_dev *pdev) · line 452
Quoted 4 lines · Andy Yan
drivers/scsi/mvsas/mv_init.c +2
-2-if (!pci_set_dma_mask (pdev,DMA_BIT_MASK (64 ))) { - rc =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (64 )); +if (!pci_set_dma_mask (pdev,DMA_64BIT_MASK )) { + rc =pci_set_consistent_dma_mask (pdev,DMA_64BIT_MASK );
So I might not agree with the people who pointlessly churn our interfaces while adding no value but the old form now warns, so you can't just revert this change any more:
drivers/scsi/mvsas/mv_init.c: In function 'pci_go_64':drivers/scsi/mvsas/mv_init.c:460: warning: 'DMA_nnBIT_MASK' is deprecated drivers/scsi/mvsas/mv_init.c:461: warning: 'DMA_nnBIT_MASK' is deprecated drivers/scsi/mvsas/mv_init.c:463: warning: 'DMA_nnBIT_MASK' is deprecated drivers/scsi/mvsas/mv_init.c:471: warning: 'DMA_nnBIT_MASK' is deprecated drivers/scsi/mvsas/mv_init.c:477: warning: 'DMA_nnBIT_MASK' is deprecated
Please remove this reversion from the diff.
Thanks,
James