On Thu, Apr 11, 2013 at 11:05:17AM -0700, Tejun Heo wrote: > Hello, > > On Thu, Apr 11, 2013 at 06:30:30PM +0300, Michael S. Tsirkin wrote: > > The issue is that a driver, in it's probe function, calls > > pci_sriov_enable so a PF device probe causes VF probe (AKA nested > > probe). Each probe in pci_device_probe is (normally) run through > > work_on_cpu (this is to get the right numa node for memory allocated by > > the driver). In turn work_on_cpu does this internally: > > > > schedule_work_on(cpu, &wfc.work); > > flush_work(&wfc.work); > > > > So if you are running probe on CPU1, and cause another > > probe on the same CPU, this will try to flush > > workqueue from inside same workqueue which of course > > deadlocks. > > > > Nested probing might be tricky to get right generally. > > Hmm... how about adding a work_on_cpu_nested() which takes @subclass > argument? Wouldn't that be much cleaner? > > Thanks. Is that 3.9 material though? > -- > tejun -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html