From: Kan Liang <kan.liang@xxxxxxxxxxxxxxx> The PMU unregistration of a platform device is similar as a PCI device. Factor out the codes of unregister a PCI PMU into a separate function. The function will be used later. There is no functional change. Signed-off-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx> --- arch/x86/events/intel/uncore.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index ccc90b0..b702dc3 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c @@ -1118,6 +1118,16 @@ static int uncore_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id return ret; } +static void uncore_pci_pmu_unregister(struct intel_uncore_pmu *pmu, + struct intel_uncore_box *box) +{ + pmu->boxes[box->dieid] = NULL; + if (atomic_dec_return(&pmu->activeboxes) == 0) + uncore_pmu_unregister(pmu); + uncore_box_exit(box); + kfree(box); +} + static void uncore_pci_remove(struct pci_dev *pdev) { struct intel_uncore_box *box; @@ -1145,11 +1155,8 @@ static void uncore_pci_remove(struct pci_dev *pdev) return; pci_set_drvdata(pdev, NULL); - pmu->boxes[box->dieid] = NULL; - if (atomic_dec_return(&pmu->activeboxes) == 0) - uncore_pmu_unregister(pmu); - uncore_box_exit(box); - kfree(box); + + uncore_pci_pmu_unregister(pmu, box); } static int __init uncore_pci_init(void) -- 2.7.4