Notifier functions are expected to return NOTIFY_* codes, not -E... ones. In particular, since the respective hypercalls failing is not fatal to the operation of the Dom0 kernel, it must be avoided to return negative values here as those would make it appear as if NOTIFY_STOP_MASK wa set, suppressing further notification calls to other interested parties (which is also why we don't want to use notifier_from_errno() here). Signed-off-by: Jan Beulich --- drivers/xen/pci.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) --- 3.1-rc2/drivers/xen/pci.c +++ 3.1-rc2-xen-pci-bus-notifier/drivers/xen/pci.c @@ -86,23 +86,22 @@ static int xen_pci_notifier(struct notif unsigned long action, void *data) { struct device *dev = data; - int r = 0; switch (action) { case BUS_NOTIFY_ADD_DEVICE: - r = xen_add_device(dev); + xen_add_device(dev); break; case BUS_NOTIFY_DEL_DEVICE: - r = xen_remove_device(dev); + xen_remove_device(dev); break; default: - break; + return NOTIFY_DONE; } - return r; + return NOTIFY_OK; } -struct notifier_block device_nb = { +static struct notifier_block device_nb = { .notifier_call = xen_pci_notifier, };