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); |