• Sudeep Holla's avatar
    PM / core: Add support to skip power management in device/driver model · 85945c28
    Sudeep Holla authored
    All device objects in the driver model contain fields that control the
    handling of various power management activities. However, it's not
    always useful. There are few instances where pseudo devices are added
    to the model just to take advantage of many other features like
    kobjects, udev events, and so on. One such example is cpu devices and
    their caches.
    
    The sysfs for the cpu caches are managed by adding devices with cpu
    as the parent in cpu_device_create() when secondary cpu is brought
    online. Generally when the secondary CPUs are hotplugged back in as part
    of resume from suspend-to-ram, we call cpu_device_create() from the cpu
    hotplug state machine while the cpu device associated with that CPU is
    not yet ready to be resumed as the device_resume() call happens bit
    later. It's not really needed to set the flag is_prepared for cpu
    devices as they are mostly pseudo device and hotplug framework deals
    with state machine and not managed through the cpu device.
    
    This often results in annoying warning when resuming:
    Enabling non-boot CPUs ...
    CPU1: Booted secondary processor
     cache: parent cpu1 should not be sleeping
    CPU1 is up
    CPU2: Booted secondary processor
     cache: parent cpu2 should not be sleeping
    CPU2 is up
    .... and so on.
    
    So in order to fix these kind of errors, we could just completely avoid
    doing any power management related initialisations and operations if
    they are not used by these devices.
    
    Add no_pm flags to indicate that the device doesn't require any sort of
    PM activities and all of them can be completely skipped. We can use the
    same flag to also avoid adding not used *power* sysfs entries for these
    devices. For now, lets use this for cpu cache devices.
    Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Tested-by: default avatarEugeniu Rosca <erosca@de.adit-jv.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    85945c28
main.c 52.6 KB