
Hi,
+static const char * +pciFindStubDriver(virConnectPtr conn) +{ + char drvpath[PATH_MAX]; + int probed = 0; + +recheck: + pciDriverDir(drvpath, sizeof(drvpath), "pci-stub"); + if (virFileExists(drvpath)) + return "pci-stub"; + pciDriverDir(drvpath, sizeof(drvpath), "pciback"); + if (virFileExists(drvpath)) + return "pciback"; + + if (!probed) { + const char *const stubprobe[] = { MODPROBE, "pci-stub", NULL }; + const char *const backprobe[] = { MODPROBE, "pciback", NULL };on xen.
+ + probed = 1; + if (virRun(conn, stubprobe, NULL) < 0 && + virRun(conn, backprobe, NULL) < 0) { char ebuf[1024]; - VIR_WARN(_("modprobe %s failed: %s"), stub_module, + VIR_WARN(_("failed to load pci-stub or pciback drivers: %s"), virStrerror(errno, ebuf, sizeof ebuf)); + return 0; } + + goto recheck; }
I'd tend to reverse that ordering. It isn't a issue today, but once pv_ops/dom0 gets pciback support you might actually have both modules present for a given kernel. pci-stub doesn't do anything special and will load just fine in any environment. pciback is xen-specific (especially the part which handles pci passthrough to pv domains) and should not load when not running on xen. cheers, Gerd