init.c (8f47d1a5e545f903cd049c42da31a3be36178447) init.c (42d279f9137ab7d5503836baec2739284b278d8f)
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */
3#include <linux/init.h>
4#include <linux/kernel.h>
5#include <linux/module.h>
6#include <linux/slab.h>
7#include <linux/pci.h>
8#include <linux/interrupt.h>

--- 174 unchanged lines hidden (view full) ---

183 struct idxd_wq *wq = &idxd->wqs[i];
184 int rc;
185
186 wq->id = i;
187 wq->idxd = idxd;
188 mutex_init(&wq->wq_lock);
189 atomic_set(&wq->dq_count, 0);
190 init_waitqueue_head(&wq->submit_waitq);
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */
3#include <linux/init.h>
4#include <linux/kernel.h>
5#include <linux/module.h>
6#include <linux/slab.h>
7#include <linux/pci.h>
8#include <linux/interrupt.h>

--- 174 unchanged lines hidden (view full) ---

183 struct idxd_wq *wq = &idxd->wqs[i];
184 int rc;
185
186 wq->id = i;
187 wq->idxd = idxd;
188 mutex_init(&wq->wq_lock);
189 atomic_set(&wq->dq_count, 0);
190 init_waitqueue_head(&wq->submit_waitq);
191 wq->idxd_cdev.minor = -1;
191 rc = percpu_init_rwsem(&wq->submit_lock);
192 if (rc < 0) {
193 idxd_wqs_free_lock(idxd);
194 return rc;
195 }
196 }
197
198 for (i = 0; i < idxd->max_engines; i++) {

--- 117 unchanged lines hidden (view full) ---

316 mutex_lock(&idxd_idr_lock);
317 idxd->id = idr_alloc(&idxd_idrs[idxd->type], idxd, 0, 0, GFP_KERNEL);
318 mutex_unlock(&idxd_idr_lock);
319 if (idxd->id < 0) {
320 rc = -ENOMEM;
321 goto err_idr_fail;
322 }
323
192 rc = percpu_init_rwsem(&wq->submit_lock);
193 if (rc < 0) {
194 idxd_wqs_free_lock(idxd);
195 return rc;
196 }
197 }
198
199 for (i = 0; i < idxd->max_engines; i++) {

--- 117 unchanged lines hidden (view full) ---

317 mutex_lock(&idxd_idr_lock);
318 idxd->id = idr_alloc(&idxd_idrs[idxd->type], idxd, 0, 0, GFP_KERNEL);
319 mutex_unlock(&idxd_idr_lock);
320 if (idxd->id < 0) {
321 rc = -ENOMEM;
322 goto err_idr_fail;
323 }
324
325 idxd->major = idxd_cdev_get_major(idxd);
326
324 dev_dbg(dev, "IDXD device %d probed successfully\n", idxd->id);
325 return 0;
326
327 err_idr_fail:
328 idxd_mask_error_interrupts(idxd);
329 idxd_mask_msix_vectors(idxd);
330 err_setup:
331 return rc;

--- 164 unchanged lines hidden (view full) ---

496 err = idxd_register_bus_type();
497 if (err < 0)
498 return err;
499
500 err = idxd_register_driver();
501 if (err < 0)
502 goto err_idxd_driver_register;
503
327 dev_dbg(dev, "IDXD device %d probed successfully\n", idxd->id);
328 return 0;
329
330 err_idr_fail:
331 idxd_mask_error_interrupts(idxd);
332 idxd_mask_msix_vectors(idxd);
333 err_setup:
334 return rc;

--- 164 unchanged lines hidden (view full) ---

499 err = idxd_register_bus_type();
500 if (err < 0)
501 return err;
502
503 err = idxd_register_driver();
504 if (err < 0)
505 goto err_idxd_driver_register;
506
507 err = idxd_cdev_register();
508 if (err)
509 goto err_cdev_register;
510
504 err = pci_register_driver(&idxd_pci_driver);
505 if (err)
506 goto err_pci_register;
507
508 return 0;
509
510err_pci_register:
511 err = pci_register_driver(&idxd_pci_driver);
512 if (err)
513 goto err_pci_register;
514
515 return 0;
516
517err_pci_register:
518 idxd_cdev_remove();
519err_cdev_register:
511 idxd_unregister_driver();
512err_idxd_driver_register:
513 idxd_unregister_bus_type();
514 return err;
515}
516module_init(idxd_init_module);
517
518static void __exit idxd_exit_module(void)
519{
520 pci_unregister_driver(&idxd_pci_driver);
520 idxd_unregister_driver();
521err_idxd_driver_register:
522 idxd_unregister_bus_type();
523 return err;
524}
525module_init(idxd_init_module);
526
527static void __exit idxd_exit_module(void)
528{
529 pci_unregister_driver(&idxd_pci_driver);
530 idxd_cdev_remove();
521 idxd_unregister_bus_type();
522}
523module_exit(idxd_exit_module);
531 idxd_unregister_bus_type();
532}
533module_exit(idxd_exit_module);