diff options
Diffstat (limited to 'drivers/dma/ioat/pci.c')
-rw-r--r-- | drivers/dma/ioat/pci.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/dma/ioat/pci.c b/drivers/dma/ioat/pci.c index 2c8d560e6334..1d051cd045db 100644 --- a/drivers/dma/ioat/pci.c +++ b/drivers/dma/ioat/pci.c | |||
@@ -123,6 +123,7 @@ module_param(ioat_dca_enabled, int, 0644); | |||
123 | MODULE_PARM_DESC(ioat_dca_enabled, "control support of dca service (default: 1)"); | 123 | MODULE_PARM_DESC(ioat_dca_enabled, "control support of dca service (default: 1)"); |
124 | 124 | ||
125 | struct kmem_cache *ioat2_cache; | 125 | struct kmem_cache *ioat2_cache; |
126 | struct kmem_cache *ioat3_sed_cache; | ||
126 | 127 | ||
127 | #define DRV_NAME "ioatdma" | 128 | #define DRV_NAME "ioatdma" |
128 | 129 | ||
@@ -207,9 +208,6 @@ static void ioat_remove(struct pci_dev *pdev) | |||
207 | if (!device) | 208 | if (!device) |
208 | return; | 209 | return; |
209 | 210 | ||
210 | if (device->version >= IOAT_VER_3_0) | ||
211 | ioat3_dma_remove(device); | ||
212 | |||
213 | dev_err(&pdev->dev, "Removing dma and dca services\n"); | 211 | dev_err(&pdev->dev, "Removing dma and dca services\n"); |
214 | if (device->dca) { | 212 | if (device->dca) { |
215 | unregister_dca_provider(device->dca, &pdev->dev); | 213 | unregister_dca_provider(device->dca, &pdev->dev); |
@@ -221,7 +219,7 @@ static void ioat_remove(struct pci_dev *pdev) | |||
221 | 219 | ||
222 | static int __init ioat_init_module(void) | 220 | static int __init ioat_init_module(void) |
223 | { | 221 | { |
224 | int err; | 222 | int err = -ENOMEM; |
225 | 223 | ||
226 | pr_info("%s: Intel(R) QuickData Technology Driver %s\n", | 224 | pr_info("%s: Intel(R) QuickData Technology Driver %s\n", |
227 | DRV_NAME, IOAT_DMA_VERSION); | 225 | DRV_NAME, IOAT_DMA_VERSION); |
@@ -231,9 +229,21 @@ static int __init ioat_init_module(void) | |||
231 | if (!ioat2_cache) | 229 | if (!ioat2_cache) |
232 | return -ENOMEM; | 230 | return -ENOMEM; |
233 | 231 | ||
232 | ioat3_sed_cache = KMEM_CACHE(ioat_sed_ent, 0); | ||
233 | if (!ioat3_sed_cache) | ||
234 | goto err_ioat2_cache; | ||
235 | |||
234 | err = pci_register_driver(&ioat_pci_driver); | 236 | err = pci_register_driver(&ioat_pci_driver); |
235 | if (err) | 237 | if (err) |
236 | kmem_cache_destroy(ioat2_cache); | 238 | goto err_ioat3_cache; |
239 | |||
240 | return 0; | ||
241 | |||
242 | err_ioat3_cache: | ||
243 | kmem_cache_destroy(ioat3_sed_cache); | ||
244 | |||
245 | err_ioat2_cache: | ||
246 | kmem_cache_destroy(ioat2_cache); | ||
237 | 247 | ||
238 | return err; | 248 | return err; |
239 | } | 249 | } |