On Tue, Mar 10, 2009 at 09:37:53AM +0800, Yu Zhao wrote: > On Tue, Mar 10, 2009 at 03:39:01AM +0800, Greg KH wrote: > > On Mon, Mar 09, 2009 at 04:25:05PM +0800, Yu Zhao wrote: > > > > > + pci_device_add(virtfn, virtfn->bus); > > > > > > > > Greg is probably going to ding you here for adding the device, then > > > > creating the symlinks. I believe it's now best practice to create the > > > > symlinks first, so there's no window where userspace can get confused. > > > > > > Yes, but unfortunately we can't create links before adding a device. > > > I double checked device_add(), there is no place for those links to be > > > created before it sends uevent. So for now, we have to trigger another > > > uevent for those links. > > > > What exactly are you trying to do with a symlink here that you need to > > do it this way? I vaguely remember you mentioning this in the past, but > > I thought you had dropped the symlinks after our conversation about this > > very problem. > > I'd like to create some symlinks to reflect the relationship between > Physical Function and its associated Virtual Functions. The Physical > Function is like a master device that controls the allocation of its > Virtual Functions and owns the device physical resource. The Virtual > Functions are like slave devices of the Physical Function. For example, > if 01:00.0 is a Physical Function and 02:00.0 is a Virtual Function > associated with 01:00.0. Then the symlinks (virtfnN and physfn) would > look like: > > $ ls -l /sys/bus/pci/devices/0000:01:00.0/ > ... > ... virtfn0 -> ../0000:02:00.0 > ... virtfn1 -> ../0000:02:00.1 > ... virtfn2 -> ../0000:02:00.2 > ... > > $ ls -l /sys/bus/pci/devices/0000:02:00.0/ > ... > ... physfn -> ../0000:01:00.0 > ... > > This is very useful for userspace applications, both KVM and Xen need > to know this kind of relationship so they can request the permission > from a Physical Function before using its associated Virtual Functions. Ok, but then make sure you never rely on a udev rule or notifier to see these symlinks when the device is added to the kernel, as there will be a nice race condition there :) thanks, greg k-h -- 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