The following commit has been merged into the perf/core branch of tip:

Commit-ID:     6477dc3934775f82a571fac469fd8c348e611095
Gitweb:        
https://git.kernel.org/tip/6477dc3934775f82a571fac469fd8c348e611095
Author:        Kan Liang <kan.li...@linux.intel.com>
AuthorDate:    Wed, 17 Mar 2021 10:59:35 -07:00
Committer:     Peter Zijlstra <pet...@infradead.org>
CommitterDate: Fri, 02 Apr 2021 10:04:54 +02:00

perf/x86/intel/uncore: Rename uncore_notifier to uncore_pci_sub_notifier

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.li...@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org>
Link: 
https://lkml.kernel.org/r/1616003977-90612-4-git-send-email-kan.li...@linux.intel.com
---
 arch/x86/events/intel/uncore.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index dabc01f..391fa7c 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -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);

Reply via email to