At present, the "parent <- child" and "suppiler <- consumer" ordering info are stored duplicate in two places dpm_list and devices_kset, and corresponding, there are two sets of routines to manipulate them. The patch pushes the dpm_list and dpm_list_mtx out of CONFIG_PM, and let device_shutdown() use them to implement shutdown seq. Comparing to original code, this patch tries to simplify the code at the cost of a extra mutex if without CONFIG_PM and nothing if with CONFIG_PM. The cost on dpm_list_mtx can be ignored, since the device hot add/remove is not very frequently.
Cc: Greg Kroah-Hartman <[email protected]> Cc: "Rafael J. Wysocki" <[email protected]> Cc: [email protected] --- Pingfan Liu (3): drivers/base: move device_shutdown() to base/power PM/shutdown: device_shutdown() uses the order info in dpm_list instead of devices_kset drivers/base: clean up unused devices_kset_move_*() functions drivers/base/base.h | 1 - drivers/base/core.c | 126 ------------------------------------------ drivers/base/power/Makefile | 1 + drivers/base/power/main.c | 119 +++++++++++---------------------------- drivers/base/power/power.h | 25 ++++++--- drivers/base/power/shutdown.c | 123 +++++++++++++++++++++++++++++++++++++++++ include/linux/pm.h | 7 +-- 7 files changed, 173 insertions(+), 229 deletions(-) create mode 100644 drivers/base/power/shutdown.c -- 2.7.4

