Messages in this thread | | | Subject | Re: [PATCH 6/9] perf: Generic pci uncore device support | From | Peter Zijlstra <> | Date | Thu, 03 May 2012 23:46:35 +0200 |
| |
On Wed, 2012-05-02 at 10:07 +0800, Yan, Zheng wrote: > +static void __devexit uncore_pci_remove(struct pci_dev *pdev) > +{ > + struct intel_uncore_box *box = pci_get_drvdata(pdev); > + int phyid = pcibus_to_phyid[pdev->bus->number]; > + > + if (WARN_ON_ONCE(phyid != box->phy_id)) > + return; > + > + box->pci_dev = NULL; > + if (--box->refcnt == 0) {
This appears completely unserialized (as is all the refcnt stuff in patch 4 it seems), now I figure the only way to actually have this pci device go away is by hotplug, which is serialized. Still looks very odd.
> + spin_lock(&uncore_pci_lock); > + hlist_del_rcu(&box->hlist); > + spin_unlock(&uncore_pci_lock); > + kfree_rcu(box, rcu_head); > + } > +}
| |