1. 10 2月, 2015 10 次提交
    • R
      Merge branch 'pm-domains' · f7cc61f0
      Rafael J. Wysocki 提交于
      * pm-domains:
        PM: Convert dev_pm_put_subsys_data() into a void function
        PM: Update function header for dev_pm_get_subsys_data()
        PM / Domains: Handle errors from genpd's ->attach_dev() callback
        PM / Domains: Re-order initialization of generic_pm_domain_data
        PM / Domains: Free pm_subsys_data in error path in __pm_genpd_add_device()
        PM / Domains: Eliminate the mutex for the generic_pm_domain_data
        PM / Domains: Don't check for an existing device when adding a new
        PM / Domains: Don't allow an existing generic_pm_domain_data
        PM / Domains: Remove reference counting for the generic_pm_domain_data
        PM / Domains: Rename __pm_genpd_alloc|free_dev_data()
        PM / Domains: Remove pm_genpd_dev_need_restore() API
      f7cc61f0
    • R
      Merge branches 'pm-qos', 'pm-opp' and 'pm-devfreq' · 740b68ea
      Rafael J. Wysocki 提交于
      * pm-qos:
        PM / QoS: Use lockdep asserts to find missing hold of power.lock
        PM / QoS: Add debugfs support to view the list of constraints
      
      * pm-opp:
        PM / OPP: Assert RCU lock in exported functions
        PM / OPP: Update kernel documentation
        PM / OPP: Ensure consistent naming of static functions
        PM / OPP: export dev_pm_opp_get_notifier
      
      * pm-devfreq:
        PM / devfreq: event: Add documentation for exynos-ppmu devfreq-event driver
        devfreq: Fix build break of devfreq-event class
        PM / devfreq: event: Add devfreq_event class
        PM / devfreq: tegra: add devfreq driver for Tegra Activity Monitor
      740b68ea
    • R
      Merge branches 'pm-pci' and 'pm-cpuidle' · 2f8c42f3
      Rafael J. Wysocki 提交于
      * pm-pci:
        PCI / PM: Avoid resuming PCI devices during system suspend
      
      * pm-cpuidle:
        drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is unavailable
      2f8c42f3
    • R
      Merge branch 'acpi-resources' · 8fbcf5ec
      Rafael J. Wysocki 提交于
      * acpi-resources: (23 commits)
        Merge branch 'pci/host-generic' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci into acpi-resources
        x86/irq, ACPI: Implement ACPI driver to support IOAPIC hotplug
        ACPI: Add interfaces to parse IOAPIC ID for IOAPIC hotplug
        x86/PCI: Refine the way to release PCI IRQ resources
        x86/PCI/ACPI: Use common ACPI resource interfaces to simplify implementation
        x86/PCI: Fix the range check for IO resources
        PCI: Use common resource list management code instead of private implementation
        resources: Move struct resource_list_entry from ACPI into resource core
        ACPI: Introduce helper function acpi_dev_filter_resource_type()
        ACPI: Add field offset to struct resource_list_entry
        ACPI: Translate resource into master side address for bridge window resources
        ACPI: Return translation offset when parsing ACPI address space resources
        ACPI: Enforce stricter checks for address space descriptors
        ACPI: Set flag IORESOURCE_UNSET for unassigned resources
        ACPI: Normalize return value of resource parser functions
        ACPI: Fix a bug in parsing ACPI Memory24 resource
        ACPI: Add prefetch decoding to the address space parser
        ACPI: Move the window flag logic to the combined parser
        ACPI: Unify the parsing of address_space and ext_address_space
        ACPI: Let the parser return false for disabled resources
        ...
      8fbcf5ec
    • R
      Merge branch 'acpi-processor' · d2320968
      Rafael J. Wysocki 提交于
      * acpi-processor:
        ACPI / cpuidle: Common callback routine for entering states
        ACPI / cpuidle: Merge acpi_idle_enter_c1() and acpi_idle_enter_simple()
        ACPI / cpuidle: Drop flags.bm_check tests from acpi_idle_enter_bm()
        ACPI / cpuidle: Clean up white space in a switch statement
        ACPI / cpuidle: Drop irrelevant comment from acpi_idle_enter_simple()
        ACPI / cpuidle: Clean up fallback to C1 checks
        ACPI / cpuidle: Drop unnecessary calls from ->enter callback routines
        ACPI / cpuidle: Drop unnecessary calls from acpi_idle_do_entry()
      d2320968
    • R
      Merge branches 'acpi-doc', 'acpi-pm', 'acpi-pcc' and 'acpi-tables' · ca45c879
      Rafael J. Wysocki 提交于
      * acpi-doc:
        MAINTAINERS / ACPI: add the necessary '/' according to entry rules
        ACPI / Documentation: add a missing '='
      
      * acpi-pm:
        ACPI / sleep: mark acpi_sleep_dmi_check() __init
      
      * acpi-pcc:
        ACPI / PCC: Use pr_debug() for debug messages in pcc_init()
      
      * acpi-tables:
        ACPI / table: remove duplicate NULL check for the handler of acpi_table_parse()
      ca45c879
    • R
      Merge branches 'acpi-video' and 'acpi-soc' · 99e4d89a
      Rafael J. Wysocki 提交于
      * acpi-video:
        ACPI / video: Add disable_native_backlight quirk for Samsung 510R
        ACPI / video: Add disable_native_backlight quirk for Samsung 730U3E/740U3E
      
      * acpi-soc:
        ACPI: add AMD ACPI2Platform device support for x86 system
        ACPI / LPSS: Remove non-existing clock control from Intel Lynxpoint I2C
        ACPI / LPSS: check the result of ioremap()
      99e4d89a
    • R
      Merge branch 'acpi-ec' · 716bc413
      Rafael J. Wysocki 提交于
      * acpi-ec:
        ACPI / EC: Add GPE reference counting debugging messages
        ACPI / EC: Add query flushing support
        ACPI / EC: Refine command storm prevention support
        ACPI / EC: Add command flushing support.
        ACPI / EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag
        ACPI / EC: Update revision due to raw handler mode.
        ACPI / EC: Reduce ec_poll() by referencing the last register access timestamp.
        ACPI / EC: Fix several GPE handling issues by deploying ACPI_GPE_DISPATCH_RAW_HANDLER mode.
        ACPI / EC: Cleanup QR_EC related code
        ACPI / EC: Fix issues related to the SCI_EVT handling
        ACPI / EC: Fix a code path that global lock is not held
        ACPI / EC: Fix returning values in acpi_ec_sync_query()
        ACPI / EC: Add reference counting for query handlers
        ACPI / EC: Cleanup transaction wakeup code
      716bc413
    • R
      Merge branch 'acpica' · 55c39fc2
      Rafael J. Wysocki 提交于
      * acpica:
        ACPICA: Events: Enable APIs to allow interrupt/polling adaptive request based GPE handling model
        ACPICA: Events: Introduce acpi_set_gpe()/acpi_finish_gpe() to reduce divergences
        ACPICA: Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix 2 issues for the current GPE APIs
        ACPICA: Update version to 20150204
        ACPICA: Update Copyright headers to 2015
        ACPICA: Hardware: Cast GPE enable_mask before storing
        ACPICA: Events: Cleanup GPE dispatcher type obtaining code
        ACPICA: Events: Cleanup to move acpi_gbl_global_event_handler invocation out of acpi_ev_gpe_dispatch()
        ACPICA: Events: Cleanup of resetting the GPE handler to NULL before removing
        ACPICA: Events: Fix uninitialized variable
        ACPICA: Events: Remove acpi_ev_valid_gpe_event() due to current restriction
        ACPICA: Events: Remove duplicated sanity check in acpi_ev_enable_gpe()
        ACPICA: Events: Back port "ACPICA: Save current masks of enabled GPEs after enable register writes"
        ACPICA: Resources: Provide common part for struct acpi_resource_address structures.
        ACPI: Introduce acpi_unload_parent_table() usages in Linux kernel
        ACPICA: take ACPI_MTX_INTERPRETER in acpi_unload_table_id()
      55c39fc2
    • R
      Merge branch 'pci/host-generic' of... · 5c493df2
      Rafael J. Wysocki 提交于
      Merge branch 'pci/host-generic' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci into acpi-resources
      
      modified:   drivers/of/of_pci.c
      
      This fixes a build failure after merging the 'acpi-resources' branch
      with the PCI tree caused by bad interactions between that branch and
      the only commit in 'pci/host-generic'.  Also that commit contains a
      bug which can be fixed by removing one line of code, so do that too.
      
      Link: http://marc.info/?l=linux-kernel&m=142344882101429&w=2
      Link: http://marc.info/?l=linux-next&m=142346304003932&w=2Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5c493df2
  2. 09 2月, 2015 6 次提交
  3. 08 2月, 2015 4 次提交
    • S
      x86/tlb/trace: Do not trace on CPU that is offline · 6c8465a8
      Steven Rostedt (Red Hat) 提交于
      When taking a CPU down for suspend and resume, a tracepoint may be called
      when the CPU has been designated offline. As tracepoints require RCU for
      protection, they must not be called if the current CPU is offline.
      
      Unfortunately, trace_tlb_flush() is called in this scenario as was noted
      by LOCKDEP:
      
      ...
      
       Disabling non-boot CPUs ...
       intel_pstate CPU 1 exiting
      
       ===============================
       smpboot: CPU 1 didn't die...
       [ INFO: suspicious RCU usage. ]
       3.19.0-rc7-next-20150204.1-iniza-small #1 Not tainted
       -------------------------------
       include/trace/events/tlb.h:35 suspicious rcu_dereference_check() usage!
      
       other info that might help us debug this:
      
       RCU used illegally from offline CPU!
       rcu_scheduler_active = 1, debug_locks = 0
       no locks held by swapper/1/0.
      
       stack backtrace:
       CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.19.0-rc7-next-20150204.1-iniza-small #1
       Hardware name: SAMSUNG ELECTRONICS CO., LTD. 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
        0000000000000001 ffff88011a44fe18 ffffffff817e370d 0000000000000011
        ffff88011a448290 ffff88011a44fe48 ffffffff810d6847 ffff8800c66b9600
        0000000000000001 ffff88011a44c000 ffffffff81cb3900 ffff88011a44fe78
       Call Trace:
        [<ffffffff817e370d>] dump_stack+0x4c/0x65
        [<ffffffff810d6847>] lockdep_rcu_suspicious+0xe7/0x120
        [<ffffffff810b71a5>] idle_task_exit+0x205/0x2c0
        [<ffffffff81054c4e>] play_dead_common+0xe/0x50
        [<ffffffff81054ca5>] native_play_dead+0x15/0x140
        [<ffffffff8102963f>] arch_cpu_idle_dead+0xf/0x20
        [<ffffffff810cd89e>] cpu_startup_entry+0x37e/0x580
        [<ffffffff81053e20>] start_secondary+0x140/0x150
       intel_pstate CPU 2 exiting
      
      ...
      
      By converting the tlb_flush tracepoint to a TRACE_EVENT_CONDITION where the
      condition is cpu_online(smp_processor_id()), we can avoid calling RCU protected
      code when the CPU is offline.
      
      Link: http://lkml.kernel.org/r/CA+icZUUGiGDoL5NU8RuxKzFjoLjEKRtUWx=JB8B9a0EQv-eGzQ@mail.gmail.com
      
      Cc: stable@vger.kernel.org # 3.17+
      Fixes: d17d8f9d "x86/mm: Add tracepoints for TLB flushes"
      Reported-by: NSedat Dilek <sedat.dilek@gmail.com>
      Tested-by: NSedat Dilek <sedat.dilek@gmail.com>
      Suggested-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NDave Hansen <dave@sr71.net>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      6c8465a8
    • S
      tracing: Add condition check to RCU lockdep checks · a05d59a5
      Steven Rostedt (Red Hat) 提交于
      The trace_tlb_flush() tracepoint can be called when a CPU is going offline.
      When a CPU is offline, RCU is no longer watching that CPU and since the
      tracepoint is protected by RCU, it must not be called. To prevent the
      tlb_flush tracepoint from being called when the CPU is offline, it was
      converted to a TRACE_EVENT_CONDITION where the condition checks if the
      CPU is online before calling the tracepoint.
      
      Unfortunately, this was not enough to stop lockdep from complaining about
      it. Even though the RCU protected code of the tracepoint will never be
      called, the condition is hidden within the tracepoint, and even though the
      condition prevents RCU code from being called, the lockdep checks are
      outside the tracepoint (this is to test tracepoints even when they are not
      enabled).
      
      Even though tracepoints should be checked to be RCU safe when they are not
      enabled, the condition should still be considered when checking RCU.
      
      Link: http://lkml.kernel.org/r/CA+icZUUGiGDoL5NU8RuxKzFjoLjEKRtUWx=JB8B9a0EQv-eGzQ@mail.gmail.com
      
      Fixes: 3a630178 "tracing: generate RCU warnings even when tracepoints are disabled"
      Cc: stable@vger.kernel.org # 3.18+
      Acked-by: NDave Hansen <dave@sr71.net>
      Reported-by: NSedat Dilek <sedat.dilek@gmail.com>
      Tested-by: NSedat Dilek <sedat.dilek@gmail.com>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      a05d59a5
    • L
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 0b1ce1a8
      Linus Torvalds 提交于
      Pull one more infiniband revert from Roland Dreier:
       "One more last-second RDMA change for 3.19: Yann realized that the
        previous revert of new userspace ABI did not go far enough, and we're
        still exposing a change that we don't want.  Revert even closer to
        3.18 interface to make sure we get things right in the long run"
      
      Yann Droneaud pipes up:
       "I hope this could go in v3.19 as, at this stage, we don't want to
        expose any bits of this ABI in a released kernel"
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        Revert "IB/core: Add support for extended query device caps"
      0b1ce1a8
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · bdfeb5a1
      Linus Torvalds 提交于
      Pull btrfs fix from Chris Mason:
       "Forrest Liu tracked down a missing blk_finish_plug in the btrfs
        logging code.  This isn't a new bug, and it's hard to hit.  But, it's
        safe enough for inclusion now, and in my for-linus branch"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: add missing blk_finish_plug in btrfs_sync_log()
      bdfeb5a1
  4. 07 2月, 2015 6 次提交
    • L
      Merge branches 'timers-urgent-for-linus' and 'x86-urgent-for-linus' of... · 26cdd1f7
      Linus Torvalds 提交于
      Merge branches 'timers-urgent-for-linus' and 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
      
      Pull timer and x86 fix from Ingo Molnar:
       "A CLOCK_TAI early expiry fix and an x86 microcode driver oops fix"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        hrtimer: Fix incorrect tai offset calculation for non high-res timer systems
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, microcode: Return error from driver init code when loader is disabled
      26cdd1f7
    • L
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 396e9099
      Linus Torvalds 提交于
      Pull scheduler fixes from Ingo Molnar:
       "Misc fixes"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/deadline: Fix deadline parameter modification handling
        sched/wait: Remove might_sleep() from wait_event_cmd()
        sched: Fix crash if cpuset_cpumask_can_shrink() is passed an empty cpumask
        sched/fair: Avoid using uninitialized variable in preferred_group_nid()
      396e9099
    • L
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 29f12c48
      Linus Torvalds 提交于
      Pull core kernel fixes from Ingo Molnar:
       "Two liblockdep fixes and a CPU hotplug race fix"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tools/liblockdep: don't include host headers
        tools/liblockdep: ignore generated .so file
        smpboot: Add missing get_online_cpus() in smpboot_register_percpu_thread()
      29f12c48
    • L
      Merge tag 'sound-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 2af613d3
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "Hopefully the final pull request for 3.19: this ended up with a
        slightly higher volume than wished, but I put them all as they are
        either stable or 3.19 regression fixes.
      
        Most of commits are from ASoC, and have been stewed for a while in
        linux-next.  The only change in the common code is the regression
        fixes for ASoC AC97 stuff wrt device registrations.  The rest are
        device-specific, mostly small fixes in various ASoC drivers and ak411x
        on ice1724 boards"
      
      * tag 'sound-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: Intel: fix sst firmware path for cht-bsw-rt5672
        ARM: dts: Fix I2S1, I2S2 compatible for exynos4 SoCs
        ASoC: sgtl5000: add delay before first I2C access
        MAINTAINERS: ASoC: add maintainer for Intel BDW/HSW ASoC driver
        ASoC: atmel_ssc_dai: fix the setting for DSP mode
        ASoC: sgtl5000: Use shift mask when setting codec mode
        ASoC: tlv320aic3x: Fix data delay configuration
        ALSA: ak411x: Fix stall in work callback
        ASoC: Intel: Used lock version to update shim registers
        ASoC: wm8731: init mutex in i2c init path
        ASoC: atmel_ssc_dai: fix start event for I2S mode
        ASoC: rt5640: Add RT5642 ACPI ID for Intel Baytrail
        ASoC: wm97xx: Reset AC'97 device before registering it
        ASoC: Add support for allocating AC'97 device before registering it
      2af613d3
    • L
      Merge branch 'akpm' (patches from Andrew Morton) · 48beb121
      Linus Torvalds 提交于
      Merge misc fixes from Andrew Morton:
       "7 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        mm/debug_pagealloc: fix build failure on ppc and some other archs
        nilfs2: fix deadlock of segment constructor over I_SYNC flag
        MAINTAINERS: remove SUPERH website
        memcg, shmem: fix shmem migration to use lrucare
        mm: export "high_memory" symbol on !MMU
        .mailmap: update Konstantin Khlebnikov's email address
        mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range
      48beb121
    • L
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · dbf3b7dd
      Linus Torvalds 提交于
      Pull MIPS fixes from Ralf Baechle:
       "The pending MIPS fixes for 3.19.  All across the field and nothing
        particularly severe or dramatic"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (23 commits)
        IRQCHIP: mips-gic: Avoid rerouting timer IRQs for smp-cmp
        MIPS: Fix syscall_get_nr for the syscall exit tracing.
        MIPS: elf2ecoff: Ignore PT_MIPS_ABIFLAGS program headers.
        MIPS: elf2ecoff: Rewrite main processing loop to switch.
        MIPS: fork: Fix MSA/FPU/DSP context duplication race
        MIPS: Fix C0_Pagegrain[IEC] support.
        MIPS: traps: Fix inline asm ctc1 missing .set hardfloat
        MIPS: mipsregs.h: Add write_32bit_cp1_register()
        MIPS: Fix kernel lockup or crash after CPU offline/online
        MIPS: OCTEON: fix kernel crash when offlining a CPU
        MIPS: ARC: Fix build error.
        MIPS: IRQ: Fix disable_irq on CPU IRQs
        MIPS: smp-mt,smp-cmp: Enable all HW IRQs on secondary CPUs
        MIPS: Fix restart of indirect syscalls
        MIPS: ELF: fix loading o32 binaries on 64-bit kernels
        MIPS: mips-cm: Fix sparse warnings
        MIPS: Kconfig: Fix recursive dependency.
        MIPS: Compat: Fix build error if CONFIG_MIPS32_COMPAT but no compat ABI.
        MIPS: JZ4740: Fixup #include's (sparse)
        MIPS: Wire up execveat(2).
        ...
      dbf3b7dd
  5. 06 2月, 2015 14 次提交
    • L
      ACPI / EC: Add GPE reference counting debugging messages · b5bca896
      Lv Zheng 提交于
      This patch enhances debugging with the GPE reference count messages added.
      No functional changes.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      b5bca896
    • L
      ACPI / EC: Add query flushing support · f252cb09
      Lv Zheng 提交于
      This patch implementes the QR_EC flushing support.
      
      Grace periods are implemented from the detection of an SCI_EVT to the
      submission/completion of the QR_EC transaction. During this period, all
      EC command transactions are allowed to be submitted.
      
      Note that query periods and event periods are intentionally distiguished to
      allow further improvements.
      1. Query period: from the detection of an SCI_EVT to the sumission of the
         QR_EC command. This period is used for storming prevention, as currently
         QR_EC is deferred to a work queue rather than directly issued from the
         IRQ context even there is no other transactions pending, so malicous
         SCI_EVT GPE can act like "level triggered" to trigger a GPE storm. We
         need to be prepared for this. And in the future, we may change it to be
         a part of the advance_transaction() where we will try QR_EC submission
         in appropriate positions to avoid such GPE storming.
      2. Event period: from the detection of an SCI_EVT to the completion of the
         QR_EC command. We may extend it to the completion of _Qxx evaluation.
         This is actually a grace period for event flushing, but we only flush
         queries due to the reason stated in known issue 1. That's also why we
         use EC_FLAGS_EVENT_xxx. During this period, QR_EC transactions need to
         pass the flushable submission check.
      
      In this patch, the following flags are implemented:
      1. EC_FLAGS_EVENT_ENABLED: this is derived from the old
         EC_FLAGS_QUERY_PENDING flag which can block SCI_EVT handlings.
         With this flag, the logics implemented by the original flag are
         extended:
         1. Old logic: unless both of the flags are set, the event poller will
                       not be scheduled, and
         2. New logic: as soon as both of the flags are set, the evet poller will
                       be scheduled.
      2. EC_FLAGS_EVENT_DETECTED: this is also derived from the old
         EC_FLAGS_QUERY_PENDING flag which can block SCI_EVT detection. It thus
         can be used to indicate the storming prevention period for query
         submission.
         acpi_ec_submit_request()/acpi_ec_complete_request() are invoked to
         implement this period so that acpi_set_gpe() can be invoked under the
         "reference count > 0" condition.
      3. EC_FLAGS_EVENT_PENDING: this is newly added to indicate the grace period
         for event flushing (query flushing for now).
         acpi_ec_submit_request()/acpi_ec_complete_request() are invoked to
         implement this period so that the flushing process can wait until the
         event handling (query transaction for now) to be completed.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=82611
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=77431Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Tested-by: NOrtwin Glück <odi@odi.ch>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f252cb09
    • L
      ACPI / EC: Refine command storm prevention support · e1d4d90f
      Lv Zheng 提交于
      This patch refines EC command storm prevention support.
      
      Current command storming code is wrong, when the storming condition is
      detected, it only flags the condition without doing anything for the
      current command but performing storming prevention for the follow-up
      commands. So:
      1. The first command which suffers from the storming still suffers from
         storming.
      2. The follow-up commands which may not suffer from the storming are
         unconditionally forced into the storming prevention mode.
      Ideally, we should only enable storm prevention immediately after detection
      for the current command so that the next command can try the
      power/performance efficient interrupt mode again.
      
      This patch improves the command storm prevention by disabling GPE right
      after the detection and re-enabling it right before completing the command
      transaction using the GPE storming prevention APIs. This thus deploys the
      following GPE handling model:
      1. acpi_enable_gpe()/acpi_disable_gpe() for reference count changes:
         This set of APIs are used for EC usage reference counting.
      2. acpi_set_gpe(ACPI_GPE_ENABLE)/acpi_set_gpe(ACPI_GPE_DISABLE):
         This set of APIs are used for preventing GPE storm. They must be invoked
         when the reference count > 0.
         Note that as the storming prevention should always happen when there is
         an outstanding request, or GPE enabling value will be messed up by the
         races. This patch also adds BUG_ON() to enforces this rule to prevent
         future bugs.
      
      The msleep(1) used after completing a transaction is useless now as this
      sounds like a guard time only useful for platforms that need the
      EC_FLAGS_MSI quirks while we have fixed GPE race issues using the previous
      raw handler mode enabling. It is kept to avoid regressions. A seperate
      patch which deletes EC_FLAGS_MSI quirks should take care of deleting it.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e1d4d90f
    • L
      ACPI / EC: Add command flushing support. · 9887d22a
      Lv Zheng 提交于
      This patch implements the EC command flushing support.
      
      During the grace period indicated by EC_FLAGS_STARTED and EC_FLAGS_STOPPED,
      all submitted EC command transactions can be completed and new submissions
      are prevented before suspending so that the EC hardware can be ensured to
      be in the idle state when the system is resumed.
      
      There is a good indicator for flush support:
      All acpi_ec_submit_request() is invoked after checking driver state with
      acpi_ec_started() except the first one. This means all code paths can be
      flushed as fast as possible by discarding the requests occurred after the
      flush operation. The reference increased for such kind of code path is
      wrapped by acpi_ec_submit_flushable_request().
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Tested-by: NOrtwin Glück <odi@odi.ch>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      9887d22a
    • L
      ACPI / EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag · ad479e7f
      Lv Zheng 提交于
      By using the 2 flags, we can indicate an inter-mediate state where the
      current transactions should be completed while the new transactions should
      be dropped.
      
      The comparison of the old flag and the new flags:
        Old			New
        about to set BLOCKED	STOPPED set / STARTED set
        BLOCKED set		STOPPED clear / STARTED clear
        BLOCKED clear		STOPPED clear / STARTED set
      A new period can be indicated by the 2 flags. The new period is between the
      point where we are about to set BLOCKED and the point when the BLOCKED is
      set. The new flags facilitate us with acpi_ec_started() check to allow the
      EC transaction to be submitted during the new period. This period thus can
      be used as a grace period for the EC transaction flushing.
      
      The only functional change after applying this patch is:
      1. The GPE enabling/disabling is protected by the EC specific lock. We can
         do this because of recent ACPICA GPE API enhancement. This is reasonable
         as the GPE disabling/enabling state should only be determined by the EC
         driver's state machine which is protected by the EC spinlock.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Tested-by: NOrtwin Glück <odi@odi.ch>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ad479e7f
    • K
      ACPI: add AMD ACPI2Platform device support for x86 system · 92082a88
      Ken Xue 提交于
      This new feature is to interpret AMD specific ACPI device to
      platform device such as I2C, UART, GPIO found on AMD CZ and
      later chipsets. It based on example intel LPSS. Now, it can
      support AMD I2C, UART and GPIO.
      Signed-off-by: NKen Xue <Ken.Xue@amd.com>
      Acked-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      92082a88
    • R
      02c09177
    • Y
      Revert "IB/core: Add support for extended query device caps" · 43c61165
      Yann Droneaud 提交于
      While commit 7e36ef82 ("IB/core: Temporarily disable
      ex_query_device uverb") is correct as it makes the extended
      QUERY_DEVICE uverb (which came as part of commit 5a77abf9
      ("IB/core: Add support for extended query device caps") and commit
      860f10a7 ("IB/core: Add flags for on demand paging support")) not
      available to userspace, it doesn't address the initial issue regarding
      ib_copy_to_udata() [1][2].
      
      Additionally, further discussions around this new uverb seems to
      conclude it would require a different data structure than the one
      currently described in <rdma/ib_user_verbs.h> [3].
      
      Both of these issues require a revert of the changes, so this patch
      partially reverts commit 8cdd312c ("IB/mlx5: Implement the ODP
      capability query verb") and commit 860f10a7 ("IB/core: Add flags
      for on demand paging support") and fully reverts commit 5a77abf9
      ("IB/core: Add support for extended query device caps").
      
      [1] "Re: [PATCH v3 06/17] IB/core: Add support for extended query device caps"
          http://mid.gmane.org/1418733236.2779.26.camel@opteya.com
      
      [2] "Re: [PATCH] IB/core: Temporarily disable ex_query_device uverb"
          http://mid.gmane.org/1423067503.3030.83.camel@opteya.com
      
      [3] "RE: [PATCH v1 1/5] IB/uverbs: ex_query_device: answer must not depend on request's comp_mask"
          http://mid.gmane.org/2807E5FD2F6FDA4886F6618EAC48510E0CC12C30@CRSMSX101.amr.corp.intel.com
      
      Cc: Eli Cohen <eli@mellanox.com>
      Cc: Haggai Eran <haggaie@mellanox.com>
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Cc: Sagi Grimberg <sagig@mellanox.com>
      Cc: Shachar Raindel <raindel@mellanox.com>
      Signed-off-by: NYann Droneaud <ydroneaud@opteya.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      43c61165
    • H
      ACPI / table: remove duplicate NULL check for the handler of acpi_table_parse() · 2fad9308
      Hanjun Guo 提交于
      In acpi_table_parse(), pointer of the table to pass to handler() is
      checked before handler() called, so remove all the duplicate NULL
      check in the handler function.
      
      CC: Tony Luck <tony.luck@intel.com>
      CC: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NHanjun Guo <hanjun.guo@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2fad9308
    • J
      mm/debug_pagealloc: fix build failure on ppc and some other archs · 7b02190c
      Joonsoo Kim 提交于
      Kim Phillips reported following build failure.
      
        LD      init/built-in.o
        mm/built-in.o: In function `free_pages_prepare':
        mm/page_alloc.c:770: undefined reference to `.kernel_map_pages'
        mm/built-in.o: In function `prep_new_page':
        mm/page_alloc.c:933: undefined reference to `.kernel_map_pages'
        mm/built-in.o: In function `map_pages':
        mm/compaction.c:61: undefined reference to `.kernel_map_pages'
        make: *** [vmlinux] Error 1
      
      Reason for this problem is that commit 031bc574
      ("mm/debug-pagealloc: make debug-pagealloc boottime configurable")
      forgot to remove the old declaration of kernel_map_pages() for some
      architectures.  This patch removes them to fix build failure.
      Reported-by: NKim Phillips <kim.phillips@freescale.com>
      Signed-off-by: NJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: David Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7b02190c
    • R
      nilfs2: fix deadlock of segment constructor over I_SYNC flag · 7ef3ff2f
      Ryusuke Konishi 提交于
      Nilfs2 eventually hangs in a stress test with fsstress program.  This
      issue was caused by the following deadlock over I_SYNC flag between
      nilfs_segctor_thread() and writeback_sb_inodes():
      
        nilfs_segctor_thread()
          nilfs_segctor_thread_construct()
            nilfs_segctor_unlock()
              nilfs_dispose_list()
                iput()
                  iput_final()
                    evict()
                      inode_wait_for_writeback()  * wait for I_SYNC flag
      
        writeback_sb_inodes()
           * set I_SYNC flag on inode->i_state
          __writeback_single_inode()
            do_writepages()
              nilfs_writepages()
                nilfs_construct_dsync_segment()
                  nilfs_segctor_sync()
                     * wait for completion of segment constructor
          inode_sync_complete()
             * clear I_SYNC flag after __writeback_single_inode() completed
      
      writeback_sb_inodes() calls do_writepages() for dirty inodes after
      setting I_SYNC flag on inode->i_state.  do_writepages() in turn calls
      nilfs_writepages(), which can run segment constructor and wait for its
      completion.  On the other hand, segment constructor calls iput(), which
      can call evict() and wait for the I_SYNC flag on
      inode_wait_for_writeback().
      
      Since segment constructor doesn't know when I_SYNC will be set, it
      cannot know whether iput() will block or not unless inode->i_nlink has a
      non-zero count.  We can prevent evict() from being called in iput() by
      implementing sop->drop_inode(), but it's not preferable to leave inodes
      with i_nlink == 0 for long periods because it even defers file
      truncation and inode deallocation.  So, this instead resolves the
      deadlock by calling iput() asynchronously with a workqueue for inodes
      with i_nlink == 0.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Tested-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7ef3ff2f
    • S
      MAINTAINERS: remove SUPERH website · 81cca6fb
      Sudip Mukherjee 提交于
      The mentioned website only displays information about buying and selling
      domains.
      Signed-off-by: NSudip Mukherjee <sudip@vectorindia.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      81cca6fb
    • M
      memcg, shmem: fix shmem migration to use lrucare · f5e03a49
      Michal Hocko 提交于
      It has been reported that 965GM might trigger
      
        VM_BUG_ON_PAGE(!lrucare && PageLRU(oldpage), oldpage)
      
      in mem_cgroup_migrate when shmem wants to replace a swap cache page
      because of shmem_should_replace_page (the page is allocated from an
      inappropriate zone).  shmem_replace_page expects that the oldpage is not
      on LRU list and calls mem_cgroup_migrate without lrucare.  This is
      obviously incorrect because swapcache pages might be on the LRU list
      (e.g. swapin readahead page).
      
      Fix this by enabling lrucare for the migration in shmem_replace_page.
      Also clarify that lrucare should be used even if one of the pages might
      be on LRU list.
      
      The BUG_ON will trigger only when CONFIG_DEBUG_VM is enabled but even
      without that the migration code might leave the old page on an
      inappropriate memcg' LRU which is not that critical because the page
      would get removed with its last reference but it is still confusing.
      
      Fixes: 0a31bc97 ("mm: memcontrol: rewrite uncharge API")
      Signed-off-by: NMichal Hocko <mhocko@suse.cz>
      Reported-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reported-by: NDave Airlie <airlied@gmail.com>
      Acked-by: NHugh Dickins <hughd@google.com>
      Acked-by: NJohannes Weiner <hannes@cmpxchg.org>
      Cc: <stable@vger.kernel.org>	[3.17+]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f5e03a49
    • A
      mm: export "high_memory" symbol on !MMU · 944b6874
      Arnd Bergmann 提交于
      The symbol 'high_memory' is provided on both MMU- and NOMMU-kernels, but
      only one of them is exported, which leads to module build errors in
      drivers that work fine built-in:
      
        ERROR: "high_memory" [drivers/net/virtio_net.ko] undefined!
        ERROR: "high_memory" [drivers/net/ppp/ppp_mppe.ko] undefined!
        ERROR: "high_memory" [drivers/mtd/nand/nand.ko] undefined!
        ERROR: "high_memory" [crypto/tcrypt.ko] undefined!
        ERROR: "high_memory" [crypto/cts.ko] undefined!
      
      This exports the symbol to get these to work on NOMMU as well.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Acked-by: NGreg Ungerer <gerg@uclinux.org>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      944b6874