On 01/21/2013 07:54 AM, Rafael J. Wysocki wrote: > On Saturday, January 19, 2013 12:07:41 AM Jiang Liu wrote: >> When adding/removing a PCI bus, some other components want to be snip >> + >> +void pci_bus_call_notifier(struct pci_bus *bus, unsigned long code) >> +{ >> + int ret; >> + >> + ret = blocking_notifier_call_chain(&pci_bus_notifier_chain, >> + code, bus); >> + WARN_ON(ret != NOTIFY_DONE && ret != NOTIFY_OK); > > I'm not sure if this is a good idea. WARN_ON() is quite a heavy tool. Hi Rafael, How about WARN_ONCE() here? > >> +} >> + >> void pci_add_resource_offset(struct list_head *resources, struct resource *res, >> resource_size_t offset) >> { >> diff --git a/include/linux/pci.h b/include/linux/pci.h >> index ee21795..12e5447 100644 >> --- a/include/linux/pci.h >> +++ b/include/linux/pci.h >> @@ -1033,6 +1033,18 @@ const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, >> int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, >> int pass); >> >> +/* >> + * All notifiers below get called with the target struct pci_bus *bus as >> + * an argument. >> + * Note: all PCI bus notifier must return success. Currently there's no >> + * error handling if any notifier returns error code. >> + */ >> +#define PCI_NOTIFY_POST_BUS_ADD 0x00000001 /* PCI bus has been added */ >> +#define PCI_NOTIFY_PRE_BUS_DEL 0x00000002 /* PCI bus will be deleted */ > > I would call them PCI_EVENT_BUS_ADDED and PCI_EVENT_BUS_REMOVE, respectively. Sure, will use them in next version. > >> + >> +int pci_bus_register_notifier(struct notifier_block *nb); >> +int pci_bus_unregister_notifier(struct notifier_block *nb); >> + >> void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), >> void *userdata); >> int pci_cfg_space_size_ext(struct pci_dev *dev); > > Apart from the nitpicks above, looks good. Thanks for review! Regards! Gerry > > Thanks, > Rafael > > -- 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