Messages in this thread | | | Date | Fri, 04 May 2012 14:07:51 +0800 | From | "Yan, Zheng" <> | Subject | Re: [PATCH 6/9] perf: Generic pci uncore device support |
| |
On 05/04/2012 05:46 AM, Peter Zijlstra wrote: > 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. > yes, box->refcnt should always be 1 here. will remove the 'if (--box->refcnt == 0)'
>> + spin_lock(&uncore_pci_lock); >> + hlist_del_rcu(&box->hlist); >> + spin_unlock(&uncore_pci_lock); >> + kfree_rcu(box, rcu_head); >> + } >> +}
| |