09 Nov, 2014

1 commit


28 Oct, 2014

1 commit

  • If a device's dev_pm_ops::freeze callback fails during the QUIESCE
    phase, we don't rollback things correctly calling the thaw and complete
    callbacks. This could leave some devices in a suspended state in case of
    an error during resuming from hibernation.

    Signed-off-by: Imre Deak
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki

    Imre Deak
     

24 Oct, 2014

2 commits


23 Oct, 2014

1 commit


22 Oct, 2014

2 commits

  • as per 0c740d0afc3b (introduce for_each_thread() to replace the buggy
    while_each_thread()) get rid of do_each_thread { } while_each_thread()
    construct and replace it by a more error prone for_each_thread.

    This patch doesn't introduce any user visible change.

    Suggested-by: Oleg Nesterov
    Signed-off-by: Michal Hocko
    Signed-off-by: Rafael J. Wysocki

    Michal Hocko
     
  • PM freezer relies on having all tasks frozen by the time devices are
    getting frozen so that no task will touch them while they are getting
    frozen. But OOM killer is allowed to kill an already frozen task in
    order to handle OOM situtation. In order to protect from late wake ups
    OOM killer is disabled after all tasks are frozen. This, however, still
    keeps a window open when a killed task didn't manage to die by the time
    freeze_processes finishes.

    Reduce the race window by checking all tasks after OOM killer has been
    disabled. This is still not race free completely unfortunately because
    oom_killer_disable cannot stop an already ongoing OOM killer so a task
    might still wake up from the fridge and get killed without
    freeze_processes noticing. Full synchronization of OOM and freezer is,
    however, too heavy weight for this highly unlikely case.

    Introduce and check oom_kills counter which gets incremented early when
    the allocator enters __alloc_pages_may_oom path and only check all the
    tasks if the counter changes during the freezing attempt. The counter
    is updated so early to reduce the race window since allocator checked
    oom_killer_disabled which is set by PM-freezing code. A false positive
    will push the PM-freezer into a slow path but that is not a big deal.

    Changes since v1
    - push the re-check loop out of freeze_processes into
    check_frozen_processes and invert the condition to make the code more
    readable as per Rafael

    Fixes: f660daac474c6f (oom: thaw threads if oom killed thread is frozen before deferring)
    Cc: 3.2+ # 3.2+
    Signed-off-by: Michal Hocko
    Signed-off-by: Rafael J. Wysocki

    Michal Hocko
     

07 Oct, 2014

4 commits

  • * pm-domains: (32 commits)
    PM / Domains: Rename cpu_data to cpuidle_data
    PM / Domains: Move dev_pm_domain_attach|detach() to pm_domain.h
    PM / Domains: Remove legacy API for adding devices through DT
    PM / Domains: Add genpd attach/detach callbacks
    PM / Domains: add debugfs listing of struct generic_pm_domain-s
    ACPI / PM: Convert acpi_dev_pm_detach() into a static function
    ARM: exynos: Move to generic PM domain DT bindings
    amba: Add support for attach/detach of PM domains
    spi: core: Convert to dev_pm_domain_attach|detach()
    mmc: sdio: Convert to dev_pm_domain_attach|detach()
    i2c: core: Convert to dev_pm_domain_attach|detach()
    drivercore / platform: Convert to dev_pm_domain_attach|detach()
    PM / Domains: Add APIs to attach/detach a PM domain for a device
    PM / Domains: Add generic OF-based PM domain look-up
    ACPI / PM: Assign the ->detach() callback when attaching the PM domain
    PM / Domains: Add a detach callback to the struct dev_pm_domain
    PM / domains: Spelling s/domian/domain/
    PM / domains: Keep declaration of dev_power_governors together
    PM / domains: Remove default_stop_ok() API
    drivers: sh: Leave disabling of unused PM domains to genpd
    ...

    Rafael J. Wysocki
     
  • * acpi-pm:
    ACPI / sleep: Rework the handling of ACPI GPE wakeup from suspend-to-idle
    PM / sleep: Rename platform suspend/resume functions in suspend.c
    PM / sleep: Export dpm_suspend_late/noirq() and dpm_resume_early/noirq()

    Rafael J. Wysocki
     
  • * pm-sleep:
    PM / hibernate: Iterate over set bits instead of PFNs in swsusp_free()
    PM / sleep: new suspend_resume trace event for console resume
    PM / sleep: Update test_suspend option documentation
    PM / sleep: Enhance test_suspend option with repeat capability
    PM / sleep: Support freeze as test_suspend option
    PM / sysfs: avoid shadowing variables

    Rafael J. Wysocki
     
  • * pm-genirq:
    PM / genirq: Document rules related to system suspend and interrupts
    PCI / PM: Make PCIe PME interrupts wake up from suspend-to-idle
    x86 / PM: Set IRQCHIP_SKIP_SET_WAKE for IOAPIC IRQ chip objects
    genirq: Simplify wakeup mechanism
    genirq: Mark wakeup sources as armed on suspend
    genirq: Create helper for flow handler entry check
    genirq: Distangle edge handler entry
    genirq: Avoid double loop on suspend
    genirq: Move MASK_ON_SUSPEND handling into suspend_device_irqs()
    genirq: Make use of pm misfeature accounting
    genirq: Add sanity checks for PM options on shared interrupt lines
    genirq: Move suspend/resume logic into irq/pm code
    PM / sleep: Mechanism for aborting system suspends unconditionally

    Rafael J. Wysocki
     

01 Oct, 2014

5 commits

  • The existing implementation of swsusp_free iterates over all
    pfns in the system and checks every bit in the two memory
    bitmaps.

    This doesn't scale very well with large numbers of pfns,
    especially when the bitmaps are not populated very densly.
    Change the algorithm to iterate over the set bits in the
    bitmaps instead to make it scale better in large memory
    configurations.

    Also add a memory_bm_clear_current() helper function that
    clears the bit for the last position returned from the
    memory bitmap.

    This new version adds a !NULL check for the memory bitmaps
    before they are walked. Not doing so causes a kernel crash
    when the bitmaps are NULL.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • The ACPI GPE wakeup from suspend-to-idle is currently based on using
    the IRQF_NO_SUSPEND flag for the ACPI SCI, but that is problematic
    for a couple of reasons. First, in principle the ACPI SCI may be
    shared and IRQF_NO_SUSPEND does not really work well with shared
    interrupts. Second, it may require the ACPI subsystem to special-case
    the handling of device notifications depending on whether or not
    they are received during suspend-to-idle in some places which would
    lead to fragile code. Finally, it's better the handle ACPI wakeup
    interrupts consistently with wakeup interrupts from other sources.

    For this reason, remove the IRQF_NO_SUSPEND flag from the ACPI SCI
    and use enable_irq_wake()/disable_irq_wake() with it instead, which
    requires two additional platform hooks to be added to struct
    platform_freeze_ops.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Rename several local functions related to platform handling during
    system suspend resume in suspend.c so that their names better
    reflect their roles.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Subsequent change sets will add platform-related operations between
    dpm_suspend_late() and dpm_suspend_noirq() as well as between
    dpm_resume_noirq() and dpm_resume_early() in suspend_enter(), so
    export these functions for suspend_enter() to be able to call them
    separately and split the invocations of dpm_suspend_end() and
    dpm_resume_start() in there accordingly.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Rafael J. Wysocki
     

29 Sep, 2014

1 commit


25 Sep, 2014

2 commits

  • Also adds a class type PM_QOS_SUM that aggregates the values by summing them.

    It can be used by memory controllers to calculate the optimum clock frequency
    based on the bandwidth needs of the different memory clients.

    Signed-off-by: Tomeu Vizoso
    Acked-by: Pavel Machek
    Signed-off-by: Rafael J. Wysocki

    Tomeu Vizoso
     
  • Revert commit 6efde38f0769 (PM / Hibernate: Iterate over set bits
    instead of PFNs in swsusp_free()) that introduced a NULL pointer
    dereference during system resume from hibernation:

    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [] swsusp_free+0x21/0x190
    PGD b39c2067 PUD b39c1067 PMD 0
    Oops: 0000 [#1] SMP
    Modules linked in:
    CPU: 1 PID: 4898 Comm: s2disk Tainted: G C 3.17-rc5-amd64 #1 Debian 3.17~rc5-1~exp1
    Hardware name: LENOVO 2776LEG/2776LEG, BIOS 6EET55WW (3.15 ) 12/19/2011
    task: ffff88023155ea40 ti: ffff8800b3b14000 task.ti: ffff8800b3b14000
    RIP: 0010:[] []
    swsusp_free+0x21/0x190
    RSP: 0018:ffff8800b3b17ea8 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff8800b39bab00 RCX: 0000000000000001
    RDX: ffff8800b39bab10 RSI: ffff8800b39bab00 RDI: 0000000000000000
    RBP: 0000000000000010 R08: 0000000000000000 R09: 0000000000000000
    R10: ffff8800b39bab10 R11: 0000000000000246 R12: ffffea0000000000
    R13: ffff880232f485a0 R14: ffff88023ac27cd8 R15: ffff880232927590
    FS: 00007f406d83b700(0000) GS:ffff88023bc80000(0000)
    knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 0000000000000000 CR3: 00000000b3a62000 CR4: 00000000000007e0
    Stack:
    ffff8800b39bab00 0000000000000010 ffff880232927590 ffffffff810acb4a
    ffff8800b39bab00 ffffffff811a955a ffff8800b39bab10 0000000000000000
    ffff88023155f098 ffffffff81a6b8c0 ffff88023155ea40 0000000000000007
    Call Trace:
    [] ? snapshot_release+0x2a/0xb0
    [] ? __fput+0xca/0x1d0
    [] ? task_work_run+0x97/0xd0
    [] ? do_notify_resume+0x69/0xa0
    [] ? int_signal+0x12/0x17
    Code: 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 41 54 48 8b 05 ba 62 9c 00 49 bc 00 00 00 00 00 ea ff ff 48 8b 3d a1 62 9c 00 55 53 8b 10 48 89 50 18 48 8b 52 20 48 c7 40 28 00 00 00 00 c7 40
    RIP [] swsusp_free+0x21/0x190
    RSP
    CR2: 0000000000000000
    ---[ end trace f02be86a1ec0cccb ]---

    due to forbidden_pages_map being NULL in swsusp_free().

    Fixes: 6efde38f0769 "PM / Hibernate: Iterate over set bits instead of PFNs in swsusp_free()"
    Reported-by: Bjørn Mork
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

22 Sep, 2014

3 commits

  • This patch moves Exynos PM domain code to use the new generic PM domain
    look-up framework introduced in previous patches, thus also allowing
    the new code to be compiled with CONFIG_ARCH_EXYNOS.

    This patch was originally submitted by Tomasz Figa when he was employed
    by Samsung.

    Link: http://marc.info/?l=linux-pm&m=139955336002083&w=2
    Signed-off-by: Ulf Hansson
    Reviewed-by: Kevin Hilman
    Reviewed-by: Dmitry Torokhov
    Signed-off-by: Rafael J. Wysocki

    Tomasz Figa
     
  • This patch introduces generic code to perform PM domain look-up using
    device tree and automatically bind devices to their PM domains.

    Generic device tree bindings are introduced to specify PM domains of
    devices in their device tree nodes.

    Backwards compatibility with legacy Samsung-specific PM domain bindings
    is provided, but for now the new code is not compiled when
    CONFIG_ARCH_EXYNOS is selected to avoid collision with legacy code.
    This will change as soon as the Exynos PM domain code gets converted to
    use the generic framework in further patch.

    This patch was originally submitted by Tomasz Figa when he was employed
    by Samsung.

    Link: http://marc.info/?l=linux-pm&m=139955349702152&w=2
    Signed-off-by: Ulf Hansson
    Acked-by: Rob Herring
    Tested-by: Philipp Zabel
    Reviewed-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    Tomasz Figa
     
  • This patch adds another suspend_resume trace event for analyze_suspend
    to capture. The resume_console call can take several hundred milliseconds
    if the printk buffer is full of debug info. The tool will now inform
    testers of the wasted time and encourage them to disable it in
    production builds.

    Signed-off-by: Todd Brandt
    Signed-off-by: Rafael J. Wysocki

    Todd E Brandt
     

09 Sep, 2014

2 commits


03 Sep, 2014

1 commit

  • After commit d431cbc53cb7 (PM / sleep: Simplify sleep states sysfs
    interface code) the pm_states[] array is not populated initially,
    which causes setup_test_suspend() to always fail and the suspend
    testing during boot doesn't work any more.

    Fix the problem by using pm_labels[] instead of pm_states[] in
    setup_test_suspend() and storing a pointer to the label of the
    sleep state to test rather than the number representing it,
    because the connection between the state numbers and labels is
    only established by suspend_set_ops().

    Fixes: d431cbc53cb7 (PM / sleep: Simplify sleep states sysfs interface code)
    Reported-by: Srinivas Pandruvada
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

01 Sep, 2014

1 commit

  • It sometimes may be necessary to abort a system suspend in
    progress or wake up the system from suspend-to-idle even if the
    pm_wakeup_event()/pm_stay_awake() mechanism is not enabled.

    For this purpose, introduce a new global variable pm_abort_suspend
    and make pm_wakeup_pending() check its value. Also add routines
    for manipulating that variable.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

12 Aug, 2014

1 commit

  • * pm-sleep:
    PM / hibernate: avoid unsafe pages in e820 reserved regions

    * pm-cpufreq:
    cpufreq: arm_big_little: fix module license spec
    cpufreq: speedstep-smi: fix decimal printf specifiers
    cpufreq: OPP: Avoid sleeping while atomic
    cpufreq: cpu0: Do not print error message when deferring
    cpufreq: integrator: Use set_cpus_allowed_ptr

    * pm-cpuidle:
    cpuidle: menu: Lookup CPU runqueues less
    cpuidle: menu: Call nr_iowait_cpu less times
    cpuidle: menu: Use ktime_to_us instead of reinventing the wheel
    cpuidle: menu: Use shifts when calculating averages where possible

    Rafael J. Wysocki
     

07 Aug, 2014

2 commits

  • Pull ACPI and power management updates from Rafael Wysocki:
    "Again, ACPICA leads the pack (47 commits), followed by cpufreq (18
    commits) and system suspend/hibernation (9 commits).

    From the new code perspective, the ACPICA update brings ACPI 5.1 to
    the table, including a new device configuration object called _DSD
    (Device Specific Data) that will hopefully help us to operate device
    properties like Device Trees do (at least to some extent) and changes
    related to supporting ACPI on ARM.

    Apart from that we have hibernation changes making it use radix trees
    to store memory bitmaps which should speed up some operations carried
    out by it quite significantly. We also have some power management
    changes related to suspend-to-idle (the "freeze" sleep state) support
    and more preliminary changes needed to support ACPI on ARM (outside of
    ACPICA).

    The rest is fixes and cleanups pretty much everywhere.

    Specifics:

    - ACPICA update to upstream version 20140724. That includes ACPI 5.1
    material (support for the _CCA and _DSD predefined names, changes
    related to the DMAR and PCCT tables and ARM support among other
    things) and cleanups related to using ACPICA's header files. A
    major part of it is related to acpidump and the core code used by
    that utility. Changes from Bob Moore, David E Box, Lv Zheng,
    Sascha Wildner, Tomasz Nowicki, Hanjun Guo.

    - Radix trees for memory bitmaps used by the hibernation core from
    Joerg Roedel.

    - Support for waking up the system from suspend-to-idle (also known
    as the "freeze" sleep state) using ACPI-based PCI wakeup signaling
    (Rafael J Wysocki).

    - Fixes for issues related to ACPI button events (Rafael J Wysocki).

    - New device ID for an ACPI-enumerated device included into the
    Wildcat Point PCH from Jie Yang.

    - ACPI video updates related to backlight handling from Hans de Goede
    and Linus Torvalds.

    - Preliminary changes needed to support ACPI on ARM from Hanjun Guo
    and Graeme Gregory.

    - ACPI PNP core cleanups from Arjun Sreedharan and Zhang Rui.

    - Cleanups related to ACPI_COMPANION() and ACPI_HANDLE() macros
    (Rafael J Wysocki).

    - ACPI-based device hotplug cleanups from Wei Yongjun and Rafael J
    Wysocki.

    - Cleanups and improvements related to system suspend from Lan
    Tianyu, Randy Dunlap and Rafael J Wysocki.

    - ACPI battery cleanup from Wei Yongjun.

    - cpufreq core fixes from Viresh Kumar.

    - Elimination of a deadband effect from the cpufreq ondemand governor
    and intel_pstate driver cleanups from Stratos Karafotis.

    - 350MHz CPU support for the powernow-k6 cpufreq driver from Mikulas
    Patocka.

    - Fix for the imx6 cpufreq driver from Anson Huang.

    - cpuidle core and governor cleanups from Daniel Lezcano, Sandeep
    Tripathy and Mohammad Merajul Islam Molla.

    - Build fix for the big_little cpuidle driver from Sachin Kamat.

    - Configuration fix for the Operation Performance Points (OPP)
    framework from Mark Brown.

    - APM cleanup from Jean Delvare.

    - cpupower utility fixes and cleanups from Peter Senna Tschudin,
    Andrey Utkin, Himangi Saraogi, Rickard Strandqvist, Thomas
    Renninger"

    * tag 'pm+acpi-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (118 commits)
    ACPI / LPSS: add LPSS device for Wildcat Point PCH
    ACPI / PNP: Replace faulty is_hex_digit() by isxdigit()
    ACPICA: Update version to 20140724.
    ACPICA: ACPI 5.1: Update for PCCT table changes.
    ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
    ACPICA/ARM: ACPI 5.1: Update for MADT changes.
    ACPICA/ARM: ACPI 5.1: Update for FADT changes.
    ACPICA: ACPI 5.1: Support for the _CCA predifined name.
    ACPICA: ACPI 5.1: New notify value for System Affinity Update.
    ACPICA: ACPI 5.1: Support for the _DSD predefined name.
    ACPICA: Debug object: Add current value of Timer() to debug line prefix.
    ACPICA: acpihelp: Add UUID support, restructure some existing files.
    ACPICA: Utilities: Fix local printf issue.
    ACPICA: Tables: Update for DMAR table changes.
    ACPICA: Remove some extraneous printf arguments.
    ACPICA: Update for comments/formatting. No functional changes.
    ACPICA: Disassembler: Add support for the ToUUID opererator (macro).
    ACPICA: Remove a redundant cast to acpi_size for ACPI_OFFSET() macro.
    ACPICA: Work around an ancient GCC bug.
    ACPI / processor: Make it possible to get local x2apic id via _MAT
    ...

    Linus Torvalds
     
  • When the machine doesn't well handle the e820 persistent when hibernate
    resuming, then it may cause page fault when writing image to snapshot
    buffer:

    [ 17.929495] BUG: unable to handle kernel paging request at ffff880069d4f000
    [ 17.933469] IP: [] load_image_lzo+0x810/0xe40
    [ 17.933469] PGD 2194067 PUD 77ffff067 PMD 2197067 PTE 0
    [ 17.933469] Oops: 0002 [#1] SMP
    ...

    The ffff880069d4f000 page is in e820 reserved region of resume boot
    kernel:

    [ 0.000000] BIOS-e820: [mem 0x0000000069d4f000-0x0000000069e12fff] reserved
    ...
    [ 0.000000] PM: Registered nosave memory: [mem 0x69d4f000-0x69e12fff]

    So snapshot.c mark the pfn to forbidden pages map. But, this
    page is also in the memory bitmap in snapshot image because it's an
    original page used by image kernel, so it will also mark as an
    unsafe(free) page in prepare_image().

    That means the page in e820 when resuming mark as "forbidden" and
    "free", it causes get_buffer() treat it as an allocated unsafe page.
    Then snapshot_write_next() return this page to load_image, load_image
    writing content to this address, but this page didn't really allocated
    . So, we got page fault.

    Although the root cause is from BIOS, I think aggressive check and
    significant message in kernel will better then a page fault for
    issue tracking, especially when serial console unavailable.

    This patch adds code in mark_unsafe_pages() for check does free pages in
    nosave region. If so, then it print message and return fault to stop whole
    S4 resume process:

    [ 8.166004] PM: Image loading progress: 0%
    [ 8.658717] PM: 0x6796c000 in e820 nosave region: [mem 0x6796c000-0x6796cfff]
    [ 8.918737] PM: Read 2511940 kbytes in 1.04 seconds (2415.32 MB/s)
    [ 8.926633] PM: Error -14 resuming
    [ 8.933534] PM: Failed to load hibernation image, recovering.

    Reviewed-by: Takashi Iwai
    Acked-by: Pavel Machek
    Signed-off-by: Lee, Chun-Yi
    [rjw: Subject]
    Signed-off-by: Rafael J. Wysocki

    Lee, Chun-Yi
     

06 Aug, 2014

1 commit

  • * pm-sleep:
    PM / Hibernate: Touch Soft Lockup Watchdog in rtree_next_node
    PM / Hibernate: Remove the old memory-bitmap implementation
    PM / Hibernate: Iterate over set bits instead of PFNs in swsusp_free()
    PM / Hibernate: Implement position keeping in radix tree
    PM / Hibernate: Add memory_rtree_find_bit function
    PM / Hibernate: Create a Radix-Tree to store memory bitmap
    PM / sleep: fix kernel-doc warnings in drivers/base/power/main.c

    Rafael J. Wysocki
     

05 Aug, 2014

1 commit

  • Pull tracing updates from Steven Rostedt:
    "This pull request has a lot of work done. The main thing is the
    changes to the ftrace function callback infrastructure. It's
    introducing a way to allow different functions to call directly
    different trampolines instead of all calling the same "mcount" one.

    The only user of this for now is the function graph tracer, which
    always had a different trampoline, but the function tracer trampoline
    was called and did basically nothing, and then the function graph
    tracer trampoline was called. The difference now, is that the
    function graph tracer trampoline can be called directly if a function
    is only being traced by the function graph trampoline. If function
    tracing is also happening on the same function, the old way is still
    done.

    The accounting for this takes up more memory when function graph
    tracing is activated, as it needs to keep track of which functions it
    uses. I have a new way that wont take as much memory, but it's not
    ready yet for this merge window, and will have to wait for the next
    one.

    Another big change was the removal of the ftrace_start/stop() calls
    that were used by the suspend/resume code that stopped function
    tracing when entering into suspend and resume paths. The stop of
    ftrace was done because there was some function that would crash the
    system if one called smp_processor_id()! The stop/start was a big
    hammer to solve the issue at the time, which was when ftrace was first
    introduced into Linux. Now ftrace has better infrastructure to debug
    such issues, and I found the problem function and labeled it with
    "notrace" and function tracing can now safely be activated all the way
    down into the guts of suspend and resume

    Other changes include clean ups of uprobe code, clean up of the
    trace_seq() code, and other various small fixes and clean ups to
    ftrace and tracing"

    * tag 'trace-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (57 commits)
    ftrace: Add warning if tramp hash does not match nr_trampolines
    ftrace: Fix trampoline hash update check on rec->flags
    ring-buffer: Use rb_page_size() instead of open coded head_page size
    ftrace: Rename ftrace_ops field from trampolines to nr_trampolines
    tracing: Convert local function_graph functions to static
    ftrace: Do not copy old hash when resetting
    tracing: let user specify tracing_thresh after selecting function_graph
    ring-buffer: Always run per-cpu ring buffer resize with schedule_work_on()
    tracing: Remove function_trace_stop and HAVE_FUNCTION_TRACE_MCOUNT_TEST
    s390/ftrace: remove check of obsolete variable function_trace_stop
    arm64, ftrace: Remove check of obsolete variable function_trace_stop
    Blackfin: ftrace: Remove check of obsolete variable function_trace_stop
    metag: ftrace: Remove check of obsolete variable function_trace_stop
    microblaze: ftrace: Remove check of obsolete variable function_trace_stop
    MIPS: ftrace: Remove check of obsolete variable function_trace_stop
    parisc: ftrace: Remove check of obsolete variable function_trace_stop
    sh: ftrace: Remove check of obsolete variable function_trace_stop
    sparc64,ftrace: Remove check of obsolete variable function_trace_stop
    tile: ftrace: Remove check of obsolete variable function_trace_stop
    ftrace: x86: Remove check of obsolete variable function_trace_stop
    ...

    Linus Torvalds
     

29 Jul, 2014

6 commits

  • When a memory bitmap is fully populated on a large memory
    machine (several TB of RAM) it can take more than a minute
    to walk through all bits. This causes the soft lockup
    detector on these machine to report warnings.

    Avoid this by touching the soft lockup watchdog in the
    memory bitmap walking code.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • The radix tree implementatio is proved to work the same as
    the old implementation now. So the old implementation can be
    removed to finish the switch to the radix tree for the
    memory bitmaps.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • The existing implementation of swsusp_free iterates over all
    pfns in the system and checks every bit in the two memory
    bitmaps.

    This doesn't scale very well with large numbers of pfns,
    especially when the bitmaps are not populated very densly.
    Change the algorithm to iterate over the set bits in the
    bitmaps instead to make it scale better in large memory
    configurations.

    Also add a memory_bm_clear_current() helper function that
    clears the bit for the last position returned from the
    memory bitmap.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • Add code to remember the last position that was requested in
    the radix tree. Use it as a cache for faster linear walking
    of the bitmap in the memory_bm_rtree_next_pfn() function
    which is also added with this patch.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • Add a function to find a bit in the radix tree for a given
    pfn. Also add code to the memory bitmap wrapper functions to
    use the radix tree together with the existing memory bitmap
    implementation.

    On read accesses compare the results of both bitmaps to make
    sure the radix tree behaves the same way.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     
  • This patch adds the code to allocate and build the radix
    tree to store the memory bitmap. The old data structure is
    left in place until the radix tree implementation is
    finished.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Rafael J. Wysocki

    Joerg Roedel
     

28 Jul, 2014

2 commits


23 Jul, 2014

1 commit