diff options
-rw-r--r-- | drivers/block/rsxx/dma.c | 27 | ||||
-rw-r--r-- | drivers/block/rsxx/rsxx_priv.h | 2 |
2 files changed, 17 insertions, 12 deletions
diff --git a/drivers/block/rsxx/dma.c b/drivers/block/rsxx/dma.c index 4103601ae675..fc88ba3e1bd2 100644 --- a/drivers/block/rsxx/dma.c +++ b/drivers/block/rsxx/dma.c | |||
@@ -223,12 +223,14 @@ static void dma_intr_coal_auto_tune(struct rsxx_cardinfo *card) | |||
223 | /*----------------- RSXX DMA Handling -------------------*/ | 223 | /*----------------- RSXX DMA Handling -------------------*/ |
224 | static void rsxx_free_dma(struct rsxx_dma_ctrl *ctrl, struct rsxx_dma *dma) | 224 | static void rsxx_free_dma(struct rsxx_dma_ctrl *ctrl, struct rsxx_dma *dma) |
225 | { | 225 | { |
226 | if (!pci_dma_mapping_error(ctrl->card->dev, dma->dma_addr)) { | 226 | if (dma->cmd != HW_CMD_BLK_DISCARD) { |
227 | pci_unmap_page(ctrl->card->dev, dma->dma_addr, | 227 | if (!pci_dma_mapping_error(ctrl->card->dev, dma->dma_addr)) { |
228 | get_dma_size(dma), | 228 | pci_unmap_page(ctrl->card->dev, dma->dma_addr, |
229 | dma->cmd == HW_CMD_BLK_WRITE ? | 229 | get_dma_size(dma), |
230 | PCI_DMA_TODEVICE : | 230 | dma->cmd == HW_CMD_BLK_WRITE ? |
231 | PCI_DMA_FROMDEVICE); | 231 | PCI_DMA_TODEVICE : |
232 | PCI_DMA_FROMDEVICE); | ||
233 | } | ||
232 | } | 234 | } |
233 | 235 | ||
234 | kmem_cache_free(rsxx_dma_pool, dma); | 236 | kmem_cache_free(rsxx_dma_pool, dma); |
@@ -1057,11 +1059,14 @@ int rsxx_eeh_save_issued_dmas(struct rsxx_cardinfo *card) | |||
1057 | else | 1059 | else |
1058 | card->ctrl[i].stats.reads_issued--; | 1060 | card->ctrl[i].stats.reads_issued--; |
1059 | 1061 | ||
1060 | pci_unmap_page(card->dev, dma->dma_addr, | 1062 | if (dma->cmd != HW_CMD_BLK_DISCARD) { |
1061 | get_dma_size(dma), | 1063 | pci_unmap_page(card->dev, dma->dma_addr, |
1062 | dma->cmd == HW_CMD_BLK_WRITE ? | 1064 | get_dma_size(dma), |
1063 | PCI_DMA_TODEVICE : | 1065 | dma->cmd == HW_CMD_BLK_WRITE ? |
1064 | PCI_DMA_FROMDEVICE); | 1066 | PCI_DMA_TODEVICE : |
1067 | PCI_DMA_FROMDEVICE); | ||
1068 | } | ||
1069 | |||
1065 | list_add_tail(&dma->list, &issued_dmas[i]); | 1070 | list_add_tail(&dma->list, &issued_dmas[i]); |
1066 | push_tracker(card->ctrl[i].trackers, j); | 1071 | push_tracker(card->ctrl[i].trackers, j); |
1067 | cnt++; | 1072 | cnt++; |
diff --git a/drivers/block/rsxx/rsxx_priv.h b/drivers/block/rsxx/rsxx_priv.h index 913740e53d31..23fa05630fef 100644 --- a/drivers/block/rsxx/rsxx_priv.h +++ b/drivers/block/rsxx/rsxx_priv.h | |||
@@ -52,7 +52,7 @@ struct proc_cmd; | |||
52 | #define RS70_PCI_REV_SUPPORTED 4 | 52 | #define RS70_PCI_REV_SUPPORTED 4 |
53 | 53 | ||
54 | #define DRIVER_NAME "rsxx" | 54 | #define DRIVER_NAME "rsxx" |
55 | #define DRIVER_VERSION "4.0.1.2498" | 55 | #define DRIVER_VERSION "4.0.2.2510" |
56 | 56 | ||
57 | /* Block size is 4096 */ | 57 | /* Block size is 4096 */ |
58 | #define RSXX_HW_BLK_SHIFT 12 | 58 | #define RSXX_HW_BLK_SHIFT 12 |