57 lines · plain
1Contributions are solicited in particular to remedy the following issues:2 3cpcihp:4 5* There are no implementations of the ->hardware_test, ->get_power and6 ->set_power callbacks in struct cpci_hp_controller_ops. Why were they7 introduced? Can they be removed from the struct?8 9* Returned code from pci_hp_add_bridge() is not checked.10 11cpqphp:12 13* The driver spawns a kthread cpqhp_event_thread() which is woken by the14 hardirq handler cpqhp_ctrl_intr(). Convert this to threaded IRQ handling.15 The kthread is also woken from the timer pushbutton_helper_thread(),16 convert it to call irq_wake_thread(). Use pciehp as a template.17 18* A large portion of cpqphp_ctrl.c and cpqphp_pci.c concerns resource19 management. Doesn't this duplicate functionality in the core?20 21* Returned code from pci_hp_add_bridge() is not checked.22 23ibmphp:24 25* Implementations of hotplug_slot_ops callbacks such as get_adapter_present()26 in ibmphp_core.c create a copy of the struct slot on the stack, then perform27 the actual operation on that copy. Determine if this overhead is necessary,28 delete it if not. The functions also perform a NULL pointer check on the29 struct hotplug_slot, this seems superfluous.30 31* Several functions access the pci_slot member in struct hotplug_slot even32 though pci_hotplug.h declares it private. See get_max_bus_speed() for an33 example. Either the pci_slot member should no longer be declared private34 or ibmphp should store a pointer to its bus in struct slot. Probably the35 former.36 37* ibmphp_init_devno() takes a struct slot **, it could instead take a38 struct slot *.39 40* The return value of pci_hp_register() is not checked.41 42* The various slot data structures are difficult to follow and need to be43 simplified. A lot of functions are too large and too complex, they need44 to be broken up into smaller, manageable pieces. Negative examples are45 ebda_rsrc_controller() and configure_bridge().46 47* A large portion of ibmphp_res.c and ibmphp_pci.c concerns resource48 management. Doesn't this duplicate functionality in the core?49 50* Returned code from pci_hp_add_bridge() is not checked.51 52shpchp:53 54* The hardirq handler shpc_isr() queues events on a workqueue. It can be55 simplified by converting it to threaded IRQ handling. Use pciehp as a56 template.57