perf/x86/intel/uncore: Rename uncore_notifier to uncore_pci_sub_notifier
authorKan Liang <kan.liang@linux.intel.com>
Wed, 17 Mar 2021 17:59:35 +0000 (10:59 -0700)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 2 Apr 2021 08:04:54 +0000 (10:04 +0200)
Perf will use a similar method to the PCI sub driver to register
the PMUs for the PCI type of uncore blocks. The method requires a BUS
notifier to support hotplug. The current BUS notifier cannot be reused,
because it searches a const id_table for the corresponding registered
PMU. The PCI type of uncore blocks in the discovery tables doesn't
provide an id_table.

Factor out uncore_bus_notify() and add the pointer of an id_table as a
parameter. The uncore_bus_notify() will be reused in the following
patch.

The current BUS notifier is only used by the PCI sub driver. Its name is
too generic. Rename it to uncore_pci_sub_notifier, which is specific for
the PCI sub driver.

Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/1616003977-90612-4-git-send-email-kan.liang@linux.intel.com
arch/x86/events/intel/uncore.c

index dabc01f..391fa7c 100644 (file)
@@ -1203,7 +1203,8 @@ static void uncore_pci_remove(struct pci_dev *pdev)
 }
 
 static int uncore_bus_notify(struct notifier_block *nb,
-                            unsigned long action, void *data)
+                            unsigned long action, void *data,
+                            const struct pci_device_id *ids)
 {
        struct device *dev = data;
        struct pci_dev *pdev = to_pci_dev(dev);
@@ -1214,7 +1215,7 @@ static int uncore_bus_notify(struct notifier_block *nb,
        if (action != BUS_NOTIFY_DEL_DEVICE)
                return NOTIFY_DONE;
 
-       pmu = uncore_pci_find_dev_pmu(pdev, uncore_pci_sub_driver->id_table);
+       pmu = uncore_pci_find_dev_pmu(pdev, ids);
        if (!pmu)
                return NOTIFY_DONE;
 
@@ -1226,8 +1227,15 @@ static int uncore_bus_notify(struct notifier_block *nb,
        return NOTIFY_OK;
 }
 
-static struct notifier_block uncore_notifier = {
-       .notifier_call = uncore_bus_notify,
+static int uncore_pci_sub_bus_notify(struct notifier_block *nb,
+                                    unsigned long action, void *data)
+{
+       return uncore_bus_notify(nb, action, data,
+                                uncore_pci_sub_driver->id_table);
+}
+
+static struct notifier_block uncore_pci_sub_notifier = {
+       .notifier_call = uncore_pci_sub_bus_notify,
 };
 
 static void uncore_pci_sub_driver_init(void)
@@ -1268,7 +1276,7 @@ static void uncore_pci_sub_driver_init(void)
                ids++;
        }
 
-       if (notify && bus_register_notifier(&pci_bus_type, &uncore_notifier))
+       if (notify && bus_register_notifier(&pci_bus_type, &uncore_pci_sub_notifier))
                notify = false;
 
        if (!notify)
@@ -1319,7 +1327,7 @@ static void uncore_pci_exit(void)
        if (pcidrv_registered) {
                pcidrv_registered = false;
                if (uncore_pci_sub_driver)
-                       bus_unregister_notifier(&pci_bus_type, &uncore_notifier);
+                       bus_unregister_notifier(&pci_bus_type, &uncore_pci_sub_notifier);
                pci_unregister_driver(uncore_pci_driver);
                uncore_types_exit(uncore_pci_uncores);
                kfree(uncore_extra_pci_dev);