On Mon, Jun 22, 2020 at 11:03:18PM +0300, Andra Paraschiv wrote:
+static int __init ne_init(void)Ick, that's a _very_ old-school way of binding to a pci device. Please
+{
+ struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_AMAZON,
+ PCI_DEVICE_ID_NE, NULL);
+ int rc = -EINVAL;
+
+ if (!pdev)
+ return -ENODEV;
just be a "real" pci driver and your probe function will be called if
your hardware is present (or when it shows up.) To do it this way
prevents your driver from being auto-loaded for when your hardware is
seen in the system, as well as lots of other things.
+Nice, you did it right here, but why the above crazy test?
+ if (!zalloc_cpumask_var(&ne_cpu_pool.avail, GFP_KERNEL))
+ return -ENOMEM;
+
+ mutex_init(&ne_cpu_pool.mutex);
+
+ rc = pci_register_driver(&ne_pci_driver);
+ if (rc < 0) {You leaked a reference on that pci device, didn't you? Not good :(
+ dev_err(&pdev->dev,
+ "Error in pci register driver [rc=%d]\n", rc);
+
+ goto free_cpumask;
+ }
+
+ return 0;