TODO 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. Contributions are solicited in particular to remedy the following issues:
  2. cpcihp:
  3. * Returned code from pci_hp_add_bridge() is not checked.
  4. cpqphp:
  5. * The driver spawns a kthread cpqhp_event_thread() which is woken by the
  6. hardirq handler cpqhp_ctrl_intr(). Convert this to threaded IRQ handling.
  7. The kthread is also woken from the timer pushbutton_helper_thread(),
  8. convert it to call irq_wake_thread(). Use pciehp as a template.
  9. * A large portion of cpqphp_ctrl.c and cpqphp_pci.c concerns resource
  10. management. Doesn't this duplicate functionality in the core?
  11. * Returned code from pci_hp_add_bridge() is not checked.
  12. ibmphp:
  13. * Implementations of hotplug_slot_ops callbacks such as get_adapter_present()
  14. in ibmphp_core.c create a copy of the struct slot on the stack, then perform
  15. the actual operation on that copy. Determine if this overhead is necessary,
  16. delete it if not. The functions also perform a NULL pointer check on the
  17. struct hotplug_slot, this seems superfluous.
  18. * Several functions access the pci_slot member in struct hotplug_slot even
  19. though pci_hotplug.h declares it private. See get_max_bus_speed() for an
  20. example. Either the pci_slot member should no longer be declared private
  21. or ibmphp should store a pointer to its bus in struct slot. Probably the
  22. former.
  23. * ibmphp_init_devno() takes a struct slot **, it could instead take a
  24. struct slot *.
  25. * The return value of pci_hp_register() is not checked.
  26. * The various slot data structures are difficult to follow and need to be
  27. simplified. A lot of functions are too large and too complex, they need
  28. to be broken up into smaller, manageable pieces. Negative examples are
  29. ebda_rsrc_controller() and configure_bridge().
  30. * A large portion of ibmphp_res.c and ibmphp_pci.c concerns resource
  31. management. Doesn't this duplicate functionality in the core?
  32. * Returned code from pci_hp_add_bridge() is not checked.
  33. shpchp:
  34. * The hardirq handler shpc_isr() queues events on a workqueue. It can be
  35. simplified by converting it to threaded IRQ handling. Use pciehp as a
  36. template.