Re: [PATCH 6/9] perf: Generic pci uncore device support

Peter Zijlstra
2012-05-03T21:46:52Z

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);
> + }
> +}