12 May, 2013

1 commit


28 Apr, 2013

1 commit

  • * pm-cpuidle: (51 commits)
    cpuidle: add maintainer entry
    ARM: s3c64xx: cpuidle: use init/exit common routine
    SH: cpuidle: use init/exit common routine
    cpuidle: fix comment format
    ARM: imx: cpuidle: use init/exit common routine
    ARM: davinci: cpuidle: use init/exit common routine
    ARM: kirkwood: cpuidle: use init/exit common routine
    ARM: calxeda: cpuidle: use init/exit common routine
    ARM: tegra: cpuidle: use init/exit common routine for tegra3
    ARM: tegra: cpuidle: use init/exit common routine for tegra2
    ARM: OMAP4: cpuidle: use init/exit common routine
    ARM: shmobile: cpuidle: use init/exit common routine
    ARM: tegra: cpuidle: use init/exit common routine
    ARM: OMAP3: cpuidle: use init/exit common routine
    ARM: at91: cpuidle: use init/exit common routine
    ARM: ux500: cpuidle: use init/exit common routine
    cpuidle: make a single register function for all
    ARM: ux500: cpuidle: replace for_each_online_cpu by for_each_possible_cpu
    cpuidle: remove en_core_tk_irqen flag
    ARM: OMAP3: remove cpuidle_wrap_enter
    ...

    Rafael J. Wysocki
     

23 Apr, 2013

1 commit

  • The en_core_tk_irqen flag is set in all the cpuidle driver which
    means it is not necessary to specify this flag.

    Remove the flag and the code related to it.

    Signed-off-by: Daniel Lezcano
    Acked-by: Kevin Hilman # for mach-omap2/*
    Signed-off-by: Rafael J. Wysocki

    Daniel Lezcano
     

22 Apr, 2013

1 commit


18 Apr, 2013

1 commit


15 Mar, 2013

1 commit


23 Feb, 2013

1 commit

  • Pull core locking changes from Ingo Molnar:
    "The biggest change is the rwsem lock-steal improvements, both to the
    assembly optimized and the spinlock based variants.

    The other notable change is the clean up of the seqlock implementation
    to be based on the seqcount infrastructure.

    The rest is assorted smaller debuggability, cleanup and continued -rt
    locking changes."

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    rwsem-spinlock: Implement writer lock-stealing for better scalability
    futex: Revert "futex: Mark get_robust_list as deprecated"
    generic: Use raw local irq variant for generic cmpxchg
    lockdep: Selftest: convert spinlock to raw spinlock
    seqlock: Use seqcount infrastructure
    seqlock: Remove unused functions
    ntp: Make ntp_lock raw
    intel_idle: Convert i7300_idle_lock to raw_spinlock
    locking: Various static lock initializer fixes
    lockdep: Print more info when MAX_LOCK_DEPTH is exceeded
    rwsem: Implement writer lock-stealing for better scalability
    lockdep: Silence warning if CONFIG_LOCKDEP isn't set
    watchdog: Use local_clock for get_timestamp()
    lockdep: Rename print_unlock_inbalance_bug() to print_unlock_imbalance_bug()
    locking/stat: Fix a typo

    Linus Torvalds
     

22 Feb, 2013

1 commit

  • Pull driver core patches from Greg Kroah-Hartman:
    "Here is the big driver core merge for 3.9-rc1

    There are two major series here, both of which touch lots of drivers
    all over the kernel, and will cause you some merge conflicts:

    - add a new function called devm_ioremap_resource() to properly be
    able to check return values.

    - remove CONFIG_EXPERIMENTAL

    Other than those patches, there's not much here, some minor fixes and
    updates"

    Fix up trivial conflicts

    * tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)
    base: memory: fix soft/hard_offline_page permissions
    drivercore: Fix ordering between deferred_probe and exiting initcalls
    backlight: fix class_find_device() arguments
    TTY: mark tty_get_device call with the proper const values
    driver-core: constify data for class_find_device()
    firmware: Ignore abort check when no user-helper is used
    firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER
    firmware: Make user-mode helper optional
    firmware: Refactoring for splitting user-mode helper code
    Driver core: treat unregistered bus_types as having no devices
    watchdog: Convert to devm_ioremap_resource()
    thermal: Convert to devm_ioremap_resource()
    spi: Convert to devm_ioremap_resource()
    power: Convert to devm_ioremap_resource()
    mtd: Convert to devm_ioremap_resource()
    mmc: Convert to devm_ioremap_resource()
    mfd: Convert to devm_ioremap_resource()
    media: Convert to devm_ioremap_resource()
    iommu: Convert to devm_ioremap_resource()
    drm: Convert to devm_ioremap_resource()
    ...

    Linus Torvalds
     

19 Feb, 2013

1 commit

  • 24 core Intel box's first exposure to 3.0.12-rt30-rc3 didn't go well.

    [ 27.104159] i7300_idle: loaded v1.55
    [ 27.104192] BUG: scheduling while atomic: swapper/2/0/0x00000002
    [ 27.104309] Pid: 0, comm: swapper/2 Tainted: G N 3.0.12-rt30-rc3-rt #1
    [ 27.104317] Call Trace:
    [ 27.104338] [] dump_trace+0x85/0x2e0
    [ 27.104372] [] thread_return+0x12b/0x30b
    [ 27.104381] [] schedule+0x29/0xb0
    [ 27.104389] [] rt_spin_lock_slowlock+0xc5/0x240
    [ 27.104401] [] i7300_idle_notifier+0x3f/0x360 [i7300_idle]
    [ 27.104415] [] notifier_call_chain+0x37/0x70
    [ 27.104426] [] __atomic_notifier_call_chain+0x48/0x70
    [ 27.104439] [] cpu_idle+0x89/0xb0
    [ 27.104449] bad: scheduling from the idle thread!

    This lock is taken from interrupt disabled context in the guts of
    idle. Convert it to a raw_spinlock.

    Signed-off-by: Mike Galbraith
    Cc: Steven Rostedt
    Cc: Andy Henroid
    Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net
    Signed-off-by: Thomas Gleixner

    Mike Galbraith
     

14 Feb, 2013

1 commit

  • Here we disable HW promotion of C1 to C1E
    and export both C1 and C1E and distinct C-states.

    This allows a cpuidle governor to choose a lower latency
    C-state than C1E when necessary to satisfy performance
    and QOS constraints -- and still save power versus polling.
    This also corrects the erroneous latency previously reported
    for C1E -- it is 10usec, not 1usec.

    Note that if you use "intel_idle.max_cstate=N",
    then you must increment N by 1 to get the same behavior
    after this change.

    Signed-off-by: Len Brown

    Len Brown
     

09 Feb, 2013

3 commits

  • Remove the assumption that cstate_tables are
    indexed by MWAIT flag values. Each entry
    identifies itself via its own flags value.
    This change is needed to support multiple states
    that share the same MWAIT flags.

    Note that this can have an effect on what state is described
    by 'N' on cmdline intel_idle.max_cstate=N on some systems.

    intel_idle.max_cstate=0 still disables the driver
    intel_idle.max_cstate=1 still results in just C1(E)
    However, "place holders" in the sparse C-state name-space
    (eg. Atom) have been removed.

    Signed-off-by: Len Brown

    Len Brown
     
  • Cosmetic only.

    Replace use of MWAIT_MAX_NUM_CSTATES with CPUIDLE_STATE_MAX.
    They are both 8, so this patch has no functional change.

    The reason to change is that intel_idle will soon be able
    to export more than the 8 "major" states supported by MWAIT.
    When we hit that limit, it is important to know
    where the limit comes from.

    Signed-off-by: Len Brown

    Len Brown
     
  • This patch enables intel_idle to run on the
    next-generation Intel(R) Microarchitecture code named "Haswell".

    Signed-off-by: Len Brown

    Len Brown
     

02 Feb, 2013

1 commit

  • The commit, 4202735e8ab6ecfb0381631a0d0b58fefe0bd4e2
    (cpuidle: Split cpuidle_state structure and move per-cpu statistics fields)
    observed that the MWAIT flags for Cn on every processor to date were the
    same, and created get_driver_data() to supply them.

    Unfortunately, that assumption is false, going forward.
    So here we restore the MWAIT flags to the cpuidle_state table.
    However, instead restoring the old "driver_data" field,
    we put the flags into the existing "flags" field,
    where they probalby should have lived all along.

    This patch does not change any operation.

    This patch removes 1 of the 3 users of cpuidle_state_usage.driver_data.
    Perhaps some day we'll get rid of the other 2.

    Signed-off-by: Len Brown

    Len Brown
     

26 Jan, 2013

1 commit


22 Jan, 2013

1 commit

  • The CONFIG_EXPERIMENTAL config item has not carried much meaning for a
    while now and is almost always enabled by default. As agreed during the
    Linux kernel summit, remove it from any "depends on" lines in Kconfigs.

    Cc: Len Brown
    Signed-off-by: Kees Cook
    Signed-off-by: Greg Kroah-Hartman

    Kees Cook
     

18 Jan, 2013

1 commit

  • The 'intel_idle_probe' probes the CPU and sets the CPU notifier.
    But if later on during the module initialization we fail (say
    in cpuidle_register_driver), we stop loading, but we neglect
    to unregister the CPU notifier. This means that during CPU
    hotplug events the system will fail:

    calling intel_idle_init+0x0/0x326 @ 1
    intel_idle: MWAIT substates: 0x1120
    intel_idle: v0.4 model 0x2A
    intel_idle: lapic_timer_reliable_states 0xffffffff
    intel_idle: intel_idle yielding to none
    initcall intel_idle_init+0x0/0x326 returned -19 after 14 usecs

    ... some time later, offlining and onlining a CPU:

    cpu 3 spinlock event irq 62
    BUG: unable to ] __cpuidle_register_device+0x1c/0x120
    PGD 99b8b067 PUD 99b95067 PMD 0
    Oops: 0000 [#1] SMP
    Modules linked in: xen_evtchn nouveau mxm_wmi wmi radeon ttm i915 fbcon tileblit font atl1c bitblit softcursor drm_kms_helper video xen_blkfront xen_netfront fb_sys_fops sysimgblt sysfillrect syscopyarea xenfs xen_privcmd mperf
    CPU 0
    Pid: 2302, comm: udevd Not tainted 3.8.0-rc3upstream-00249-g09ad159 #1 MSI MS-7680/H61M-P23 (MS-7680)
    RIP: e030:[] [] __cpuidle_register_device+0x1c/0x120
    RSP: e02b:ffff88009dacfcb8 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: ffff880105380000 RCX: 000000000000001c
    RDX: 0000000000000000 RSI: 0000000000000055 RDI: ffff880105380000
    RBP: ffff88009dacfce8 R08: ffffffff81a4f048 R09: 0000000000000008
    R10: 0000000000000008 R11: 0000000000000000 R12: ffff880105380000
    R13: 00000000ffffffdd R14: 0000000000000000 R15: ffffffff81a523d0
    FS: 00007f37bd83b7a0(0000) GS:ffff880105200000(0000) knlGS:0000000000000000
    CS: e033 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000008 CR3: 00000000a09ea000 CR4: 0000000000042660
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process udevd (pid: 2302, threadinfo ffff88009dace000, task ffff88009afb47f0)
    Stack:
    ffffffff8107f2d0 ffffffff810c2fb7 ffff88009dacfce8 00000000ffffffea
    ffff880105380000 00000000ffffffdd ffff88009dacfd08 ffffffff814d9882
    0000000000000003 ffff880105380000 ffff88009dacfd28 ffffffff81340afd
    Call Trace:
    [] ? collect_cpu_info_local+0x30/0x30
    [] ? __might_sleep+0xe7/0x100
    [] cpuidle_register_device+0x32/0x70
    [] intel_idle_cpu_init+0xad/0x110
    [] cpu_hotplug_notify+0x68/0x80
    [] notifier_call_chain+0x4d/0x70
    [] __raw_notifier_call_chain+0x9/0x10
    [] __cpu_notify+0x1b/0x30
    [] _cpu_up+0x103/0x14b
    [] cpu_up+0xd9/0xec
    [] store_online+0x94/0xd0
    [] dev_attr_store+0x1b/0x20
    [] sysfs_write_file+0xf4/0x170
    [] vfs_write+0xb4/0x130
    [] sys_write+0x5a/0xa0
    [] system_call_fastpath+0x16/0x1b
    Code: 03 18 00 c9 c3 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 48 83 ec 30 48 89 5d e8 4c 89 65 f0 48 89 fb 4c 89 6d f8 e8 84 08 00 00 8b 78 08 49 89 c4 e8 f8 7f c1 ff 89 c2 b8 ea ff ff ff 84 d2
    RIP [] __cpuidle_register_device+0x1c/0x120
    RSP

    This patch fixes that by moving the CPU notifier registration
    as the last item to be done by the module.

    Signed-off-by: Konrad Rzeszutek Wilk
    Reviewed-by: Srivatsa S. Bhat
    Cc: 3.6+
    Signed-off-by: Rafael J. Wysocki

    Konrad Rzeszutek Wilk
     

03 Jan, 2013

1 commit


27 Nov, 2012

1 commit

  • Many cpuidle drivers measure their time spent in an idle state by
    reading the wallclock time before and after idling and calculating the
    difference. This leads to erroneous results when the wallclock time gets
    updated by another processor in the meantime, adding that clock
    adjustment to the idle state's time counter.

    If the clock adjustment was negative, the result is even worse due to an
    erroneous cast from int to unsigned long long of the last_residency
    variable. The negative 32 bit integer will zero-extend and result in a
    forward time jump of roughly four billion milliseconds or 1.3 hours on
    the idle state residency counter.

    This patch changes all affected cpuidle drivers to either use the
    monotonic clock for their measurements or make use of the generic time
    measurement wrapper in cpuidle.c, which was already working correctly.
    Some superfluous CLIs/STIs in the ACPI code are removed (interrupts
    should always already be disabled before entering the idle function, and
    not get reenabled until the generic wrapper has performed its second
    measurement). It also removes the erroneous cast, making sure that
    negative residency values are applied correctly even though they should
    not appear anymore.

    Signed-off-by: Julius Werner
    Reviewed-by: Preeti U Murthy
    Tested-by: Daniel Lezcano
    Acked-by: Daniel Lezcano
    Acked-by: Len Brown
    Signed-off-by: Rafael J. Wysocki

    Julius Werner
     

27 Sep, 2012

1 commit


18 Aug, 2012

1 commit


27 Jul, 2012

1 commit

  • Pull ACPI & power management update from Len Brown:
    "Re-write of the turbostat tool.
    lower overhead was necessary for measuring very large system when
    they are very idle.

    IVB support in intel_idle
    It's what I run on my IVB, others should be able to also:-)

    ACPICA core update
    We have found some bugs due to divergence between Linux and the
    upstream ACPICA base. Most of these patches are to reduce that
    divergence to reduce the risk of future bugs.

    Some cpuidle updates, mostly for non-Intel
    More will be coming, as they depend on this part.

    Some thermal management changes needed by non-ACPI systems.

    Some _OST (OS Status Indication) updates for hot ACPI hot-plug."

    * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: (51 commits)
    Thermal: Documentation update
    Thermal: Add Hysteresis attributes
    Thermal: Make Thermal trip points writeable
    ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check
    tools/power: turbostat: fix large c1% issue
    tools/power: turbostat v2 - re-write for efficiency
    ACPICA: Update to version 20120711
    ACPICA: AcpiSrc: Fix some translation issues for Linux conversion
    ACPICA: Update header files copyrights to 2012
    ACPICA: Add new ACPI table load/unload external interfaces
    ACPICA: Split file: tbxface.c -> tbxfload.c
    ACPICA: Add PCC address space to space ID decode function
    ACPICA: Fix some comment fields
    ACPICA: Table manager: deploy new firmware error/warning interfaces
    ACPICA: Add new interfaces for BIOS(firmware) errors and warnings
    ACPICA: Split exception code utilities to a new file, utexcep.c
    ACPI: acpi_pad: tune round_robin_time
    ACPICA: Update to version 20120620
    ACPICA: Add support for implicit notify on multiple devices
    ACPICA: Update comments; no functional change
    ...

    Linus Torvalds
     

06 Jul, 2012

1 commit

  • When the system is booted with some cpus offline, the idle
    driver is not initialized. When a cpu is set online, the
    acpi code call the intel idle init function. Unfortunately
    this code introduce a dependency between intel_idle and acpi.

    This patch is intended to remove this dependency by using the
    notifier of intel_idle. This patch has the benefit of
    encapsulating the intel_idle driver and remove some exported
    functions.

    Signed-off-by: Daniel Lezcano
    Acked-by: Srivatsa S. Bhat
    Signed-off-by: Rafael J. Wysocki

    Daniel Lezcano
     

06 Jun, 2012

1 commit


06 Apr, 2012

1 commit

  • Many users of debugfs copy the implementation of default_open() when
    they want to support a custom read/write function op. This leads to a
    proliferation of the default_open() implementation across the entire
    tree.

    Now that the common implementation has been consolidated into libfs we
    can replace all the users of this function with simple_open().

    This replacement was done with the following semantic patch:

    @ open @
    identifier open_f != simple_open;
    identifier i, f;
    @@
    -int open_f(struct inode *i, struct file *f)
    -{
    (
    -if (i->i_private)
    -f->private_data = i->i_private;
    |
    -f->private_data = i->i_private;
    )
    -return 0;
    -}

    @ has_open depends on open @
    identifier fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ...
    -.open = open_f,
    +.open = simple_open,
    ...
    };

    [akpm@linux-foundation.org: checkpatch fixes]
    Signed-off-by: Stephen Boyd
    Cc: Greg Kroah-Hartman
    Cc: Al Viro
    Cc: Julia Lawall
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     

22 Mar, 2012

1 commit


16 Feb, 2012

1 commit

  • Commit b66b8b9a4a79087dde1b358a016e5c8739ccf186 ('intel-idle: convert
    to x86_cpu_id auto probing') added a distinction between Nehalem and
    Westemere processors and changed auto_demotion_disable_flags for the
    former to 0. This was not explained in the commit message, so change
    it back.

    Signed-off-by: Ben Hutchings
    Acked-by: Thomas Renninger
    Acked-by: H. Peter Anvin
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     

14 Feb, 2012

1 commit

  • Commit b66b8b9a4a79087dde1b358a016e5c8739ccf186 ('intel-idle: convert
    to x86_cpu_id auto probing') put two entries for model 0x2f
    (Westmere-EX Xeon) in the device ID table and left out model 0x2e
    (Nehalem-EX Xeon).

    Signed-off-by: Ben Hutchings
    Acked-by: Thomas Renninger
    Acked-by: H. Peter Anvin
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     

03 Feb, 2012

1 commit


27 Jan, 2012

1 commit

  • With this it should be automatically loaded on suitable systems by
    udev.

    The old switch () is replaced with a table based approach, this
    also cleans up the code.

    Cc: Len Brown
    Signed-off-by: Andi Kleen
    Signed-off-by: Thomas Renninger
    Acked-by: H. Peter Anvin
    Signed-off-by: Greg Kroah-Hartman

    Andi Kleen
     

20 Jan, 2012

1 commit


18 Jan, 2012

5 commits

  • Len Brown
     
  • Function split up, should have no functional change.

    Provides entry point for physically hotplugged CPUs
    to initialize and activate cpuidle.

    Signed-off-by: Thomas Renninger
    CC: Deepthi Dharwar
    CC: Shaohua Li
    CC: Andrew Morton
    Signed-off-by: Len Brown

    Thomas Renninger
     
  • kvm -cpu host passes the original cpuid info to the guest.

    Latest kvm version seem to return true for mwait_leaf cpuid
    function on recent Intel CPUs. But it does not return mwait
    C-states (mwait_substates), instead zero is returned.

    While real CPUs seem to always return non-zero values, the intel
    idle driver should not get active in kvm (mwait_substates == 0)
    case and bail out.
    Otherwise a Null pointer exception will happen later when the
    cpuidle subsystem tries to get active:
    [0.984807] BUG: unable to handle kernel NULL pointer dereference at (null)
    [0.984807] IP: [] (null)
    ...
    [0.984807][] ? cpuidle_idle_call+0xb4/0x340
    [0.984807][] ? __atomic_notifier_call_chain+0x4c/0x70
    [0.984807][] ? cpu_idle+0x78/0xd0

    Reference:
    https://bugzilla.novell.com/show_bug.cgi?id=726296

    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Renninger
    CC: Bruno Friedmann
    Signed-off-by: Len Brown

    Thomas Renninger
     
  • Fix the following warning:

    drivers/idle/intel_idle.c: In function 'intel_idle_cpuidle_devices_init':
    drivers/idle/intel_idle.c:518:5: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

    By making get_driver_data() return a long instead of an int.

    Signed-off-by: David Howells
    Signed-off-by: Len Brown

    David Howells
     
  • irq disabling happens earlier in process_32.c:cpu_idle. Basically,
    cpuidle_state->enter is called, cpu irq is disabled. cpuidle_state->enter
    would turn on irq when exiting.

    intel_idle doesn't follow this assumption. Although it doesn't cause real
    issue, it misleads developers. Remove the call to local_irq_disable() at
    entry.

    [akpm@linux-foundation.org: add comment]
    Signed-off-by: Mingming Zhang
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Yanmin Zhang
     

17 Jan, 2012

1 commit

  • smp_call_function() only lets all other CPUs execute a specific function,
    while we expect all CPUs do in intel_idle. Without the fix, we could have
    one cpu which has auto_demotion enabled or has no broadcast timer setup.
    Usually we don't see impact because auto demotion just harms power and the
    intel_idle init is called in CPU 0, where boradcast timer delivers
    interrupt, but this still could be a problem.

    Cc: stable@vger.kernel.org
    Signed-off-by: Shaohua Li
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Shaohua Li
     

08 Nov, 2011

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    cpuidle: Single/Global registration of idle states
    cpuidle: Split cpuidle_state structure and move per-cpu statistics fields
    cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev->prepare()
    cpuidle: Move dev->last_residency update to driver enter routine; remove dev->last_state
    ACPI: Fix CONFIG_ACPI_DOCK=n compiler warning
    ACPI: Export FADT pm_profile integer value to userspace
    thermal: Prevent polling from happening during system suspend
    ACPI: Drop ACPI_NO_HARDWARE_INIT
    ACPI atomicio: Convert width in bits to bytes in __acpi_ioremap_fast()
    PNPACPI: Simplify disabled resource registration
    ACPI: Fix possible recursive locking in hwregs.c
    ACPI: use kstrdup()
    mrst pmu: update comment
    tools/power turbostat: less verbose debugging

    Linus Torvalds
     

07 Nov, 2011

2 commits

  • This patch makes the cpuidle_states structure global (single copy)
    instead of per-cpu. The statistics needed on per-cpu basis
    by the governor are kept per-cpu. This simplifies the cpuidle
    subsystem as state registration is done by single cpu only.
    Having single copy of cpuidle_states saves memory. Rare case
    of asymmetric C-states can be handled within the cpuidle driver
    and architectures such as POWER do not have asymmetric C-states.

    Having single/global registration of all the idle states,
    dynamic C-state transitions on x86 are handled by
    the boot cpu. Here, the boot cpu would disable all the devices,
    re-populate the states and later enable all the devices,
    irrespective of the cpu that would receive the notification first.

    Reference:
    https://lkml.org/lkml/2011/4/25/83

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Trinabh Gupta
    Tested-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Acked-by: Arjan van de Ven
    Acked-by: Kevin Hilman
    Signed-off-by: Len Brown

    Deepthi Dharwar
     
  • This is the first step towards global registration of cpuidle
    states. The statistics used primarily by the governor are per-cpu
    and have to be split from rest of the fields inside cpuidle_state,
    which would be made global i.e. single copy. The driver_data field
    is also per-cpu and moved.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Trinabh Gupta
    Tested-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Acked-by: Arjan van de Ven
    Acked-by: Kevin Hilman
    Signed-off-by: Len Brown

    Deepthi Dharwar