On Wed, Apr 27, 2022 at 10:42:07AM -0400, Matthew Rosato wrote: > On 4/27/22 10:04 AM, Jason Gunthorpe wrote: > > On Tue, Apr 26, 2022 at 04:08:37PM -0400, Matthew Rosato wrote: > > > > > +static int vfio_pci_zdev_group_notifier(struct notifier_block *nb, > > > + unsigned long action, void *data) > > > +{ > > > + struct zpci_dev *zdev = container_of(nb, struct zpci_dev, nb); > > > + int (*fn)(struct zpci_dev *zdev, struct kvm *kvm); > > > + int rc = NOTIFY_OK; > > > + > > > + if (action == VFIO_GROUP_NOTIFY_SET_KVM) { > > > + if (!zdev) > > > + return NOTIFY_DONE; > > > + > > > + fn = symbol_get(kvm_s390_pci_register_kvm); > > > + if (!fn) > > > + return NOTIFY_DONE; > > > + > > > + if (fn(zdev, (struct kvm *)data)) > > > + rc = NOTIFY_BAD; > > > + > > > + symbol_put(kvm_s390_pci_register_kvm); > > > > Is it possible this function can be in statically linked arch code? > > > > Or, actually, is zPCI useful anyhow without kvm ie can you just have a > > direct dependency here? > > > > zPCI devices (zpci_dev) exist regardless of whether kvm is configured or > not, and you can e.g. bind the associated PCI device to vfio-pci when KVM is > not configured (or module not loaded) and get the existing vfio-pci-zdev > extensions for that device (extra VFIO_DEVICE_INFO response data). Making a > direct dependency on KVM would remove that; this was discussed in a prior > version because this extra info is not used today outside of a KVM usecase > are not specific to kvm that need vfio-pci-zdev). I'm a bit confused, what is the drawback of just having a direct symbol dependency here? It means vfio loads a little extra kernel module code, but is that really a big worry given almost all vfio users on s390 will be using it with kvm? Or is there some technical blocker? (circular dep or something?) Jason