08 Apr, 2014

1 commit

  • * pm-cpuidle:
    cpuidle: sysfs: Export target residency information
    intel_idle: fine-tune IVT residency targets
    tools/power turbostat: Run on Broadwell
    tools/power turbostat: simplify output, add Avg_MHz
    intel_idle: Add CPU model 54 (Atom N2000 series)
    intel_idle: support Bay Trail
    intel_idle: allow sparse sub-state numbering, for Bay Trail
    ACPI idle: permit sparse C-state sub-state numbers

    Rafael J. Wysocki
     

05 Apr, 2014

1 commit

  • Ivy Town processors have slightly different properties
    than Ivy Bridge processors, particuarly as socket count grows.
    Here we add dedicated tables covering 1-2 socket,
    3-4 socket, and > 4 socket IVT configurations.

    This reduces the frequency of deep transitions on those systems,
    which can impact throughput.

    Signed-off-by: Len Brown

    Len Brown
     

20 Mar, 2014

1 commit

  • Subsystems that want to register CPU hotplug callbacks, as well as perform
    initialization for the CPUs that are already online, often do it as shown
    below:

    get_online_cpus();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    register_cpu_notifier(&foobar_cpu_notifier);

    put_online_cpus();

    This is wrong, since it is prone to ABBA deadlocks involving the
    cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
    with CPU hotplug operations).

    Instead, the correct and race-free way of performing the callback
    registration is:

    cpu_notifier_register_begin();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    /* Note the use of the double underscored version of the API */
    __register_cpu_notifier(&foobar_cpu_notifier);

    cpu_notifier_register_done();

    Fix the intel-idle code by using this latter form of callback registration.

    Cc: Len Brown
    Cc: Ingo Molnar
    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Rafael J. Wysocki

    Srivatsa S. Bhat
     

28 Feb, 2014

1 commit

  • Add CPU ID for Atom N2600/N2800 processors. Datasheets indicate support
    for this, detailed information about potential quirks or limitations are
    missing, though. So we just reuse the definition for the previous ATOM
    series. Tests on N2800 systems showed that this addition is fine an can
    reduce power consumption by about 0.25 W (personally confirmed on Intel
    DN2800MT).

    Signed-off-by: Jan Kiszka
    Signed-off-by: Len Brown

    Jan Kiszka
     

20 Feb, 2014

2 commits

  • Bay Trail (BYT) is a family of Silvermont-core Atom Processor SOCs,
    including the Intel Atom Processor Z36xxx and Z37xxx Series.

    Although it shares the Silvermont core with Avoton,
    BYT is optimized for mobile, and thus it supports
    different power saving CPU idle states.

    Note that not all versions of Bay Trail HW support all
    of the states listed in the driver.

    Signed-off-by: Len Brown
    Tested-by: Aubrey Li

    Len Brown
     
  • Like acpi_idle, intel_idle compared sub-state numbers
    to the number of supported sub-states -- discarding
    sub-states numbers that were numbered >= the number of states.

    But some Bay Trail SOCs use sparse sub-state numbers,
    so we can't make such a comparison if we are going
    to access those states.

    So now we simply check that _some_ sub-states are
    supported for the given state, and assume that the
    sub-state number in our driver is valid.

    In practice, the driver is correct, and even if it were not,
    the hardware clips invalid sub-state requests to valid ones.

    No entries in the driver require this change,
    but Bay Trail will need it.

    Signed-off-by: Len Brown

    Len Brown
     

25 Jan, 2014

1 commit

  • Pull ACPI and power management updates from Rafael Wysocki:
    "As far as the number of commits goes, the top spot belongs to ACPI
    this time with cpufreq in the second position and a handful of PM
    core, PNP and cpuidle updates. They are fixes and cleanups mostly, as
    usual, with a couple of new features in the mix.

    The most visible change is probably that we will create struct
    acpi_device objects (visible in sysfs) for all devices represented in
    the ACPI tables regardless of their status and there will be a new
    sysfs attribute under those objects allowing user space to check that
    status via _STA.

    Consequently, ACPI device eject or generally hot-removal will not
    delete those objects, unless the table containing the corresponding
    namespace nodes is unloaded, which is extremely rare. Also ACPI
    container hotplug will be handled quite a bit differently and cpufreq
    will support CPU boost ("turbo") generically and not only in the
    acpi-cpufreq driver.

    Specifics:

    - ACPI core changes to make it create a struct acpi_device object for
    every device represented in the ACPI tables during all namespace
    scans regardless of the current status of that device. In
    accordance with this, ACPI hotplug operations will not delete those
    objects, unless the underlying ACPI tables go away.

    - On top of the above, new sysfs attribute for ACPI device objects
    allowing user space to check device status by triggering the
    execution of _STA for its ACPI object. From Srinivas Pandruvada.

    - ACPI core hotplug changes reducing code duplication, integrating
    the PCI root hotplug with the core and reworking container hotplug.

    - ACPI core simplifications making it use ACPI_COMPANION() in the
    code "glueing" ACPI device objects to "physical" devices.

    - ACPICA update to upstream version 20131218. This adds support for
    the DBG2 and PCCT tables to ACPICA, fixes some bugs and improves
    debug facilities. From Bob Moore, Lv Zheng and Betty Dall.

    - Init code change to carry out the early ACPI initialization
    earlier. That should allow us to use ACPI during the timekeeping
    initialization and possibly to simplify the EFI initialization too.
    From Chun-Yi Lee.

    - Clenups of the inclusions of ACPI headers in many places all over
    from Lv Zheng and Rashika Kheria (work in progress).

    - New helper for ACPI _DSM execution and rework of the code in
    drivers that uses _DSM to execute it via the new helper. From
    Jiang Liu.

    - New Win8 OSI blacklist entries from Takashi Iwai.

    - Assorted ACPI fixes and cleanups from Al Stone, Emil Goode, Hanjun
    Guo, Lan Tianyu, Masanari Iida, Oliver Neukum, Prarit Bhargava,
    Rashika Kheria, Tang Chen, Zhang Rui.

    - intel_pstate driver updates, including proper Baytrail support,
    from Dirk Brandewie and intel_pstate documentation from Ramkumar
    Ramachandra.

    - Generic CPU boost ("turbo") support for cpufreq from Lukasz
    Majewski.

    - powernow-k6 cpufreq driver fixes from Mikulas Patocka.

    - cpufreq core fixes and cleanups from Viresh Kumar, Jane Li, Mark
    Brown.

    - Assorted cpufreq drivers fixes and cleanups from Anson Huang, John
    Tobias, Paul Bolle, Paul Walmsley, Sachin Kamat, Shawn Guo, Viresh
    Kumar.

    - cpuidle cleanups from Bartlomiej Zolnierkiewicz.

    - Support for hibernation APM events from Bin Shi.

    - Hibernation fix to avoid bringing up nonboot CPUs with ACPI EC
    disabled during thaw transitions from Bjørn Mork.

    - PM core fixes and cleanups from Ben Dooks, Leonardo Potenza, Ulf
    Hansson.

    - PNP subsystem fixes and cleanups from Dmitry Torokhov, Levente
    Kurusa, Rashika Kheria.

    - New tool for profiling system suspend from Todd E Brandt and a
    cpupower tool cleanup from One Thousand Gnomes"

    * tag 'pm+acpi-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (153 commits)
    thermal: exynos: boost: Automatic enable/disable of BOOST feature (at Exynos4412)
    cpufreq: exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ
    Documentation: cpufreq / boost: Update BOOST documentation
    cpufreq: exynos: Extend Exynos cpufreq driver to support boost
    cpufreq / boost: Kconfig: Support for software-managed BOOST
    acpi-cpufreq: Adjust the code to use the common boost attribute
    cpufreq: Add boost frequency support in core
    intel_pstate: Add trace point to report internal state.
    cpufreq: introduce cpufreq_generic_get() routine
    ARM: SA1100: Create dummy clk_get_rate() to avoid build failures
    cpufreq: stats: create sysfs entries when cpufreq_stats is a module
    cpufreq: stats: free table and remove sysfs entry in a single routine
    cpufreq: stats: remove hotplug notifiers
    cpufreq: stats: handle cpufreq_unregister_driver() and suspend/resume properly
    cpufreq: speedstep: remove unused speedstep_get_state
    platform: introduce OF style 'modalias' support for platform bus
    PM / tools: new tool for suspend/resume performance optimization
    ACPI: fix module autoloading for ACPI enumerated devices
    ACPI: add module autoloading support for ACPI enumerated devices
    ACPI: fix create_modalias() return value handling
    ...

    Linus Torvalds
     

14 Jan, 2014

1 commit


11 Jan, 2014

2 commits

  • intel_idle driver sets dev->state_count to drv->state_count so
    the default dev->state_count initialization in cpuidle_enable_device()
    (called from cpuidle_register_device()) can be used instead.

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Kyungmin Park
    Cc: Len Brown
    Reviewed-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Bartlomiej Zolnierkiewicz
     
  • If the system is booted with some CPUs offline C1E promotion disable quirk
    won't be applied because on_each_cpu() in intel_idle_cpuidle_driver_init()
    operates only on online CPUs. Fix it by adding the C1E promotion disable
    handling to intel_idle_cpu_init() (which is also called during CPU_ONLINE
    operation).

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Kyungmin Park
    Cc: Len Brown
    Reviewed-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Bartlomiej Zolnierkiewicz
     

10 Jan, 2014

1 commit

  • Close avn_cstates array with correct marker to avoid overflow
    in function intel_idle_cpu_init().

    [rjw: The problem was introduced when commit 22e580d07f65 was merged
    on top of eba682a5aeb6 (intel_idle: shrink states tables).]

    Fixes: 22e580d07f65 (intel_idle: Fixed C6 state on Avoton/Rangeley processors)
    Signed-off-by: Jiang Liu
    Signed-off-by: Rafael J. Wysocki

    Jiang Liu
     

09 Jan, 2014

1 commit

  • This reverts commit 9d046ccb98085f1d437585f84748c783a04ba240.

    Commit 9d046ccb98085 marks all state tables with __initdata, but
    the state table may be accessed when doing CPU online, which then
    causing system crash as below:

    [ 204.188841] BUG: unable to handle kernel paging request at ffffffff8227cce8
    [ 204.196844] IP: [] intel_idle_cpu_init+0x40/0x130
    [ 204.203996] PGD 1e11067 PUD 1e12063 PMD 455859063 PTE 800000000227c062
    [ 204.211638] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 204.216975] Modules linked in: x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd gpio_ich microcode joydev sb_edac edac_core ipmi_si lpc_ich ipmi_msghandler lp tpm_tis parport wmi mac_hid acpi_pad hid_generic ixgbe isci usbhid dca hid libsas ptp ahci libahci scsi_transport_sas megaraid_sas pps_core mdio
    [ 204.262815] CPU: 11 PID: 1489 Comm: bash Not tainted 3.13.0-rc7+ #48
    [ 204.269993] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRIVTIN1.86B.0047.L09.1312061514 12/06/2013
    [ 204.281646] task: ffff8804303a24a0 ti: ffff880440fac000 task.ti: ffff880440fac000
    [ 204.290311] RIP: 0010:[] [] intel_idle_cpu_init+0x40/0x130
    [ 204.300184] RSP: 0018:ffff880440fadd28 EFLAGS: 00010286
    [ 204.306192] RAX: ffffffff8227cca0 RBX: ffffe8fff1a03400 RCX: 0000000000000007
    [ 204.314244] RDX: ffff88045f400000 RSI: 0000000000000009 RDI: 0000000000001120
    [ 204.322296] RBP: ffff880440fadd38 R08: 0000000000000000 R09: 0000000000000001
    [ 204.330411] R10: 0000000000000001 R11: 0000000000000000 R12: 000000000000001e
    [ 204.338482] R13: 00000000ffffffdb R14: 0000000000000001 R15: 0000000000000000
    [ 204.346743] FS: 00007f64f7b0c740(0000) GS:ffff88045ce00000(0000) knlGS:0000000000000000
    [ 204.355919] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 204.362449] CR2: ffffffff8227cce8 CR3: 0000000444ab0000 CR4: 00000000001407e0
    [ 204.370520] Stack:
    [ 204.372853] 000000000000001e ffffffff81f10240 ffff880440fadd50 ffffffff814aa307
    [ 204.381519] ffffffff81ea80e0 ffff880440fadda0 ffffffff8185a230 0000000000000000
    [ 204.390196] 000000000000001e 0000000000000002 0000000000000002 0000000000000000
    [ 204.398856] Call Trace:
    [ 204.401683] [] cpu_hotplug_notify+0x57/0x70
    [ 204.408638] [] notifier_call_chain+0x100/0x150
    [ 204.415553] [] __raw_notifier_call_chain+0xe/0x10
    [ 204.422772] [] cpu_notify+0x23/0x50
    [ 204.428616] [] _cpu_up+0x132/0x1a0
    [ 204.434361] [] cpu_up+0x7d/0xa0
    [ 204.439819] [] cpu_subsys_online+0x3c/0x90
    [ 204.446345] [] device_online+0x45/0xa0
    [ 204.452471] [] online_store+0x4e/0x80
    [ 204.458511] [] dev_attr_store+0x18/0x30
    [ 204.464744] [] sysfs_write_file+0x151/0x1c0
    [ 204.471681] [] vfs_write+0xe1/0x160
    [ 204.477524] [] SyS_write+0x4c/0x90
    [ 204.483270] [] system_call_fastpath+0x1a/0x1f
    [ 204.490081] Code: 41 54 41 89 fc 8b 3d 48 25 85 01 53 48 8b 1d 30 25 85 01 48 03 1c c5 40 90 fb 81 48 8b 05 19 25 85 01 c7 43 0c 01 00 00 00 66 90 83 78 48 00 74 4f 41 83 c0 01 41 39 f0 7e 10 48 c7 c7 38 79
    [ 204.515723] RIP [] intel_idle_cpu_init+0x40/0x130
    [ 204.522996] RSP
    [ 204.526976] CR2: ffffffff8227cce8
    [ 204.530766] ---[ end trace 336f56cc3d1cfc8c ]---

    Fixes: 9d046ccb98085 (intel_idle: mark states tables with __initdata tag)
    Signed-off-by: Jiang Liu
    Signed-off-by: Rafael J. Wysocki

    Jiang Liu
     

20 Dec, 2013

2 commits

  • People seem to delight in writing wrong and broken mwait idle routines;
    collapse the lot.

    This leaves mwait_play_dead() the sole remaining user of __mwait() and
    new __mwait() users are probably doing it wrong.

    Also remove __sti_mwait() as its unused.

    Cc: Arjan van de Ven
    Cc: Jacob Jun Pan
    Cc: Mike Galbraith
    Cc: Len Brown
    Cc: Rui Zhang
    Acked-by: Rafael Wysocki
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20131212141654.616820819@infradead.org
    Signed-off-by: H. Peter Anvin

    Peter Zijlstra
     
  • Linux 3.10 changed the timing of how thread_info->flags is touched:

    x86: Use generic idle loop
    (7d1a941731fabf27e5fb6edbebb79fe856edb4e5)

    This caused Intel NHM-EX and WSM-EX servers to experience a large number
    of immediate MONITOR/MWAIT break wakeups, which caused cpuidle to demote
    from deep C-states to shallow C-states, which caused these platforms
    to experience a significant increase in idle power.

    Note that this issue was already present before the commit above,
    however, it wasn't seen often enough to be noticed in power measurements.

    Here we extend an errata workaround from the Core2 EX "Dunnington"
    to extend to NHM-EX and WSM-EX, to prevent these immediate
    returns from MWAIT, reducing idle power on these platforms.

    While only acpi_idle ran on Dunnington, intel_idle
    may also run on these two newer systems.
    As of today, there are no other models that are known
    to need this tweak.

    Link: http://lkml.kernel.org/r/CAJvTdK=%2BaNN66mYpCGgbHGCHhYQAKx-vB0kJSWjVpsNb_hOAtQ@mail.gmail.com
    Signed-off-by: Len Brown
    Link: http://lkml.kernel.org/r/baff264285f6e585df757d58b17788feabc68918.1387403066.git.len.brown@intel.com
    Cc: # 3.12.x, 3.11.x, 3.10.x
    Signed-off-by: H. Peter Anvin

    Len Brown
     

28 Nov, 2013

1 commit


19 Nov, 2013

1 commit


14 Nov, 2013

1 commit

  • Pull ACPI and power management updates from Rafael J Wysocki:

    - New power capping framework and the the Intel Running Average Power
    Limit (RAPL) driver using it from Srinivas Pandruvada and Jacob Pan.

    - Addition of the in-kernel switching feature to the arm_big_little
    cpufreq driver from Viresh Kumar and Nicolas Pitre.

    - cpufreq support for iMac G5 from Aaro Koskinen.

    - Baytrail processors support for intel_pstate from Dirk Brandewie.

    - cpufreq support for Midway/ECX-2000 from Mark Langsdorf.

    - ARM vexpress/TC2 cpufreq support from Sudeep KarkadaNagesha.

    - ACPI power management support for the I2C and SPI bus types from Mika
    Westerberg and Lv Zheng.

    - cpufreq core fixes and cleanups from Viresh Kumar, Srivatsa S Bhat,
    Stratos Karafotis, Xiaoguang Chen, Lan Tianyu.

    - cpufreq drivers updates (mostly fixes and cleanups) from Viresh
    Kumar, Aaro Koskinen, Jungseok Lee, Sudeep KarkadaNagesha, Lukasz
    Majewski, Manish Badarkhe, Hans-Christian Egtvedt, Evgeny Kapaev.

    - intel_pstate updates from Dirk Brandewie and Adrian Huang.

    - ACPICA update to version 20130927 includig fixes and cleanups and
    some reduction of divergences between the ACPICA code in the kernel
    and ACPICA upstream in order to improve the automatic ACPICA patch
    generation process. From Bob Moore, Lv Zheng, Tomasz Nowicki, Naresh
    Bhat, Bjorn Helgaas, David E Box.

    - ACPI IPMI driver fixes and cleanups from Lv Zheng.

    - ACPI hotplug fixes and cleanups from Bjorn Helgaas, Toshi Kani, Zhang
    Yanfei, Rafael J Wysocki.

    - Conversion of the ACPI AC driver to the platform bus type and
    multiple driver fixes and cleanups related to ACPI from Zhang Rui.

    - ACPI processor driver fixes and cleanups from Hanjun Guo, Jiang Liu,
    Bartlomiej Zolnierkiewicz, Mathieu Rhéaume, Rafael J Wysocki.

    - Fixes and cleanups and new blacklist entries related to the ACPI
    video support from Aaron Lu, Felipe Contreras, Lennart Poettering,
    Kirill Tkhai.

    - cpuidle core cleanups from Viresh Kumar and Lorenzo Pieralisi.

    - cpuidle drivers fixes and cleanups from Daniel Lezcano, Jingoo Han,
    Bartlomiej Zolnierkiewicz, Prarit Bhargava.

    - devfreq updates from Sachin Kamat, Dan Carpenter, Manish Badarkhe.

    - Operation Performance Points (OPP) core updates from Nishanth Menon.

    - Runtime power management core fix from Rafael J Wysocki and update
    from Ulf Hansson.

    - Hibernation fixes from Aaron Lu and Rafael J Wysocki.

    - Device suspend/resume lockup detection mechanism from Benoit Goby.

    - Removal of unused proc directories created for various ACPI drivers
    from Lan Tianyu.

    - ACPI LPSS driver fix and new device IDs for the ACPI platform scan
    handler from Heikki Krogerus and Jarkko Nikula.

    - New ACPI _OSI blacklist entry for Toshiba NB100 from Levente Kurusa.

    - Assorted fixes and cleanups related to ACPI from Andy Shevchenko, Al
    Stone, Bartlomiej Zolnierkiewicz, Colin Ian King, Dan Carpenter,
    Felipe Contreras, Jianguo Wu, Lan Tianyu, Yinghai Lu, Mathias Krause,
    Liu Chuansheng.

    - Assorted PM fixes and cleanups from Andy Shevchenko, Thierry Reding,
    Jean-Christophe Plagniol-Villard.

    * tag 'pm+acpi-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (386 commits)
    cpufreq: conservative: fix requested_freq reduction issue
    ACPI / hotplug: Consolidate deferred execution of ACPI hotplug routines
    PM / runtime: Use pm_runtime_put_sync() in __device_release_driver()
    ACPI / event: remove unneeded NULL pointer check
    Revert "ACPI / video: Ignore BIOS initial backlight value for HP 250 G1"
    ACPI / video: Quirk initial backlight level 0
    ACPI / video: Fix initial level validity test
    intel_pstate: skip the driver if ACPI has power mgmt option
    PM / hibernate: Avoid overflow in hibernate_preallocate_memory()
    ACPI / hotplug: Do not execute "insert in progress" _OST
    ACPI / hotplug: Carry out PCI root eject directly
    ACPI / hotplug: Merge device hot-removal routines
    ACPI / hotplug: Make acpi_bus_hot_remove_device() internal
    ACPI / hotplug: Simplify device ejection routines
    ACPI / hotplug: Fix handle_root_bridge_removal()
    ACPI / hotplug: Refuse to hot-remove all objects with disabled hotplug
    ACPI / scan: Start matching drivers after trying scan handlers
    ACPI: Remove acpi_pci_slot_init() headers from internal.h
    ACPI / blacklist: fix name of ThinkPad Edge E530
    PowerCap: Fix build error with option -Werror=format-security
    ...

    Conflicts:
    arch/arm/mach-omap2/opp.c
    drivers/Kconfig
    drivers/spi/spi.c

    Linus Torvalds
     

13 Nov, 2013

1 commit


30 Oct, 2013

1 commit


25 Sep, 2013

1 commit

  • Mike reported that commit 7d1a9417 ("x86: Use generic idle loop")
    regressed several workloads and caused excessive reschedule
    interrupts.

    The patch in question failed to notice that the x86 code had an
    inverted sense of the polling state versus the new generic code (x86:
    default polling, generic: default !polling).

    Fix the two prominent x86 mwait based idle drivers and introduce a few
    new generic polling helpers (fixing the wrong smp_mb__after_clear_bit
    usage).

    Also switch the idle routines to using tif_need_resched() which is an
    immediate TIF_NEED_RESCHED test as opposed to need_resched which will
    end up being slightly different.

    Reported-by: Mike Galbraith
    Signed-off-by: Peter Zijlstra
    Cc: lenb@kernel.org
    Cc: tglx@linutronix.de
    Link: http://lkml.kernel.org/n/tip-nc03imb0etuefmzybzj7sprf@git.kernel.org
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

24 Sep, 2013

3 commits

  • intel_idle_probe() and intel_idle_cpuidle_driver_init() can be marked
    with __init tag as they are only called from intel_idle_init().

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Kyungmin Park
    Reviewed-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Bartlomiej Zolnierkiewicz
     
  • States tables are only accessed during driver initialization so they
    can be marked with __initdata tag.

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Kyungmin Park
    Reviewed-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Bartlomiej Zolnierkiewicz
     
  • There is no reason to define CPUIDLE_STATE_MAX (currently 10) entries
    in states tables if the driver always stops iterating over table when
    it encounters first .enter == NULL entry.

    $ size drivers/idle/intel_idle.o.*
    text data bss dec hex filename
    2886 5440 32 8358 20a6 drivers/idle/intel_idle.o.before
    2886 3752 32 6670 1a0e drivers/idle/intel_idle.o.after

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Kyungmin Park
    Acked-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Bartlomiej Zolnierkiewicz
     

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