23 Aug, 2013

1 commit


08 Aug, 2013

2 commits

  • In theory, under a given ACPI namespace node there should be only
    one child device object with _ADR whose value matches a given bus
    address exactly. In practice, however, there are systems in which
    multiple child device objects under a given parent have _ADR matching
    exactly the same address. In those cases we use _STA to determine
    which of the multiple matching devices is enabled, since some systems
    are known to indicate which ACPI device object to associate with the
    given physical (usually PCI) device this way.

    Unfortunately, as it turns out, there are systems in which many
    device objects under the same parent have _ADR matching exactly the
    same bus address and none of them has _STA, in which case they all
    should be regarded as enabled according to the spec. Still, if
    those device objects are supposed to represent bridges (e.g. this
    is the case for device objects corresponding to PCIe ports), we can
    try harder and skip the ones that have no child device objects in the
    ACPI namespace. With luck, we can avoid using device objects that we
    are not expected to use this way.

    Although this only works for bridges whose children also have ACPI
    namespace representation, it is sufficient to address graphics
    adapter detection issues on some systems, so rework the code finding
    a matching device ACPI handle for a given bus address to implement
    this idea.

    Introduce a new function, acpi_find_child(), taking three arguments:
    the ACPI handle of the device's parent, a bus address suitable for
    the device's bus type and a bool indicating if the device is a
    bridge and make it work as outlined above. Reimplement the function
    currently used for this purpose, acpi_get_child(), as a call to
    acpi_find_child() with the last argument set to 'false' and make
    the PCI subsystem use acpi_find_child() with the bridge information
    passed as the last argument to it. [Lan Tianyu notices that it is
    not sufficient to use pci_is_bridge() for that, because the device's
    subordinate pointer hasn't been set yet at this point, so use
    hdr_type instead.]

    This change fixes a regression introduced inadvertently by commit
    33f767d (ACPI: Rework acpi_get_child() to be more efficient) which
    overlooked the fact that for acpi_walk_namespace() "post-order" means
    "after all children have been visited" rather than "on the way back",
    so for device objects without children and for namespace walks of
    depth 1, as in the acpi_get_child() case, the "post-order" callbacks
    ordering is actually the same as the ordering of "pre-order" ones.
    Since that commit changed the namespace walk in acpi_get_child() to
    terminate after finding the first matching object instead of going
    through all of them and returning the last one, it effectively
    changed the result returned by that function in some rare cases and
    that led to problems (the switch from a "pre-order" to a "post-order"
    callback was supposed to prevent that from happening, but it was
    ineffective).

    As it turns out, the systems where the change made by commit
    33f767d actually matters are those where there are multiple ACPI
    device objects representing the same PCIe port (which effectively
    is a bridge). Moreover, only one of them, and the one we are
    expected to use, has child device objects in the ACPI namespace,
    so the regression can be addressed as described above.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=60561
    Reported-by: Peter Wu
    Tested-by: Vladimir Lalov
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Bjorn Helgaas
    Cc: 3.9+ # 3.9+

    Rafael J. Wysocki
     
  • try_offline_node() checks that all CPUs associated with the given
    node have been removed by using cpu_present_bits. If all cpus
    related to that node have been removed, try_offline_node() clears
    the node information.

    However, try_offline_node() called from acpi_processor_remove() never
    clears the node information. For disabling cpu_present_bits,
    acpi_unmap_lsapic() needs be called. Yet, acpi_unmap_lsapic() is
    called after try_offline_node() has run. So when try_offline_node()
    runs, the CPU's cpu_present_bits is always set.

    Fix the issue by moving try_offline_node() after acpi_unmap_lsapic().

    The problem fixed here was uncovered by commit cecdb19 "ACPI / scan:
    Change the implementation of acpi_bus_trim()".

    [rjw: Changelog]
    Signed-off-by: Yasuaki Ishimatsu
    Acked-by: Toshi Kani
    Cc: 3.9+ # 3.9+
    Signed-off-by: Rafael J. Wysocki

    Yasuaki Ishimatsu
     

06 Aug, 2013

2 commits

  • The physical_node_id_bitmap in struct acpi_device is only used for
    looking up the first currently unused dependent phyiscal node ID
    by acpi_bind_one(). It is not really necessary, however, because
    acpi_bind_one() walks the entire physical_node_list of the given
    device object for sanity checking anyway and if that list is always
    sorted by node_id, it is straightforward to find the first gap
    between the currently used node IDs and use that number as the ID
    of the new list node.

    This also removes the artificial limit of the maximum number of
    dependent physical devices per ACPI device object, which now depends
    only on the capacity of unsigend int. As a result, it fixes a
    regression introduced by commit e2ff394 (ACPI / memhotplug: Bind
    removable memory blocks to ACPI device nodes) that caused
    acpi_memory_enable_device() to fail when the number of 128 MB blocks
    within one removable memory module was greater than 32.

    Reported-and-tested-by: Yasuaki Ishimatsu
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Toshi Kani
    Reviewed-by: Yasuaki Ishimatsu

    Rafael J. Wysocki
     
  • The list of physical devices corresponding to an ACPI device
    object is walked by acpi_system_wakeup_device_seq_show() and
    physical_device_enable_wakeup() without taking that object's
    physical_node_lock mutex. Since each of those functions may be
    run at any time as a result of a user space action, the lack of
    appropriate locking in them may lead to a kernel crash if that
    happens during device hot-add or hot-remove involving the device
    object in question.

    Fix the issue by modifying acpi_system_wakeup_device_seq_show() and
    physical_device_enable_wakeup() to use physical_node_lock as
    appropriate.

    Signed-off-by: Rafael J. Wysocki
    Cc: All

    Rafael J. Wysocki
     

05 Aug, 2013

1 commit

  • If the _BCL package ordering is descending, the first level
    (br->levels[2]) is likely to be 0, and if the number of levels
    matches the number of steps, we might confuse a returned level to
    mean the index.

    For example:

    current_level = max_level = 100
    test_level = 0
    returned level = 100

    In this case 100 means the level, not the index, and _BCM failed.
    Still, if the _BCL package ordering is descending, the index of
    level 0 is also 100, so we assume _BQC is indexed, when it's not.

    This causes all _BQC calls to return bogus values causing weird
    behavior from the user's perspective. For example:

    xbacklight -set 10; xbacklight -set 20;

    would flash to 90% and then slowly down to the desired level (20).

    The solution is simple; test anything other than the first level
    (e.g. 1).

    [rjw: Changelog]
    Signed-off-by: Felipe Contreras
    Signed-off-by: Rafael J. Wysocki

    Felipe Contreras
     

30 Jul, 2013

1 commit

  • The _BIX method returns extended battery info as a package.
    According the ACPI spec (ACPI 5, Section 10.2.2.2), the first member
    of that package should be "Revision". However, the current ACPI
    battery driver treats the first member as "Power Unit" which should
    be the second member. This causes the result of _BIX return data
    parsing to be incorrect.

    Fix this by adding a new member called 'revision' to struct
    acpi_battery and adding the offsetof() information on it to
    extended_info_offsets[] as the first row.

    [rjw: Changelog]
    Reported-and-tested-by: Jan Hoffmann
    References: http://bugzilla.kernel.org/show_bug.cgi?id=60519
    Signed-off-by: Lan Tianyu
    Cc: 2.6.34+
    Signed-off-by: Rafael J. Wysocki

    Lan Tianyu
     

26 Jul, 2013

1 commit

  • We attempted to address a regression introduced by commit a57f7f9
    (ACPICA: Add Windows8/Server2012 string for _OSI method.) after which
    ACPI video backlight support doesn't work on a number of systems,
    because the relevant AML methods in the ACPI tables in their BIOSes
    become useless after the BIOS has been told that the OS is compatible
    with Windows 8. That problem is tracked by the bug entry at:

    https://bugzilla.kernel.org/show_bug.cgi?id=51231

    Commit 8c5bd7a (ACPI / video / i915: No ACPI backlight if firmware
    expects Windows 8) introduced for this purpose essentially prevented
    the ACPI backlight support from being used if the BIOS had been told
    that the OS was compatible with Windows 8 and the i915 driver was
    loaded, in which case the backlight would always be handled by i915.
    Unfortunately, however, that turned out to cause problems with
    backlight to appear on multiple systems with symptoms indicating that
    i915 was unable to control the backlight on those systems as
    expected.

    For this reason, revert commit 8c5bd7a, but leave the function
    acpi_video_backlight_quirks() introduced by it, because another
    commit on top of it uses that function.

    References: https://lkml.org/lkml/2013/7/21/119
    References: https://lkml.org/lkml/2013/7/22/261
    References: https://lkml.org/lkml/2013/7/23/429
    References: https://lkml.org/lkml/2013/7/23/459
    References: https://lkml.org/lkml/2013/7/23/81
    References: https://lkml.org/lkml/2013/7/24/27
    Reported-and-tested-by: James Hogan
    Reported-and-tested-by: Kamal Mostafa
    Reported-and-tested-by: Jörg Otte
    Reported-and-tested-by: Steven Newbury
    Reported-by: Martin Steigerwald
    Reported-by: Kalle Valo
    Tested-by: Joerg Platte
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

22 Jul, 2013

1 commit

  • Pull ACPI video support fixes from Rafael Wysocki:
    "I'm sending a separate pull request for this as it may be somewhat
    controversial. The breakage addressed here is not really new and the
    fixes may not satisfy all users of the affected systems, but we've had
    so much back and forth dance in this area over the last several weeks
    that I think it's time to actually make some progress.

    The source of the problem is that about a year ago we started to tell
    BIOSes that we're compatible with Windows 8, which we really need to
    do, because some systems shipping with Windows 8 are tested with it
    and nothing else, so if we tell their BIOSes that we aren't compatible
    with Windows 8, we expose our users to untested BIOS/AML code paths.

    However, as it turns out, some Windows 8-specific AML code paths are
    not tested either, because Windows 8 actually doesn't use the ACPI
    methods containing them, so if we declare Windows 8 compatibility and
    attempt to use those ACPI methods, things break. That occurs mostly
    in the backlight support area where in particular the _BCM and _BQC
    methods are plain unusable on some systems if the OS declares Windows
    8 compatibility.

    [ The additional twist is that they actually become usable if the OS
    says it is not compatible with Windows 8, but that may cause
    problems to show up elsewhere ]

    Investigation carried out by Matthew Garrett indicates that what
    Windows 8 does about backlight is to leave backlight control up to
    individual graphics drivers. At least there's evidence that it does
    that if the Intel graphics driver is used, so we've decided to follow
    Windows 8 in that respect and allow i915 to control backlight (Daniel
    likes that part).

    The first commit from Aaron Lu makes ACPICA export the variable from
    which we can infer whether or not the BIOS believes that we are
    compatible with Windows 8.

    The second commit from Matthew Garrett prepares the ACPI video driver
    by making it initialize the ACPI backlight even if it is not going to
    be used afterward (that is needed for backlight control to work on
    Thinkpads).

    The third commit implements the actual workaround making i915 take
    over backlight control if the firmware thinks it's dealing with
    Windows 8 and is based on the work of multiple developers, including
    Matthew Garrett, Chun-Yi Lee, Seth Forshee, and Aaron Lu.

    The final commit from Aaron Lu makes us follow Windows 8 by informing
    the firmware through the _DOS method that it should not carry out
    automatic brightness changes, so that brightness can be controlled by
    GUI.

    Hopefully, this approach will allow us to avoid using blacklists of
    systems that should not declare Windows 8 compatibility just to avoid
    backlight control problems in the future.

    - Change from Aaron Lu makes ACPICA export a variable which can be
    used by driver code to determine whether or not the BIOS believes
    that we are compatible with Windows 8.

    - Change from Matthew Garrett makes the ACPI video driver initialize
    the ACPI backlight even if it is not going to be used afterward
    (that is needed for backlight control to work on Thinkpads).

    - Fix from Rafael J Wysocki implements Windows 8 backlight support
    workaround making i915 take over bakclight control if the firmware
    thinks it's dealing with Windows 8. Based on the work of multiple
    developers including Matthew Garrett, Chun-Yi Lee, Seth Forshee,
    and Aaron Lu.

    - Fix from Aaron Lu makes the kernel follow Windows 8 by informing
    the firmware through the _DOS method that it should not carry out
    automatic brightness changes, so that brightness can be controlled
    by GUI"

    * tag 'acpi-video-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / video: no automatic brightness changes by win8-compatible firmware
    ACPI / video / i915: No ACPI backlight if firmware expects Windows 8
    ACPI / video: Always call acpi_video_init_brightness() on init
    ACPICA: expose OSI version

    Linus Torvalds
     

20 Jul, 2013

1 commit

  • Pull power management and ACPI fixes from Rafael Wysocki:
    "These are fixes collected over the last week, most importnatly two
    cpufreq reverts fixing regressions introduced in 3.10, an autoseelp
    fix preventing systems using it from crashing during shutdown and two
    ACPI scan fixes related to hotplug.

    Specifics:

    - Two cpufreq commits from the 3.10 cycle introduced regressions.
    The first of them was buggy (it did way much more than it needed to
    do) and the second one attempted to fix an issue introduced by the
    first one. Fixes from Srivatsa S Bhat revert both.

    - If autosleep triggers during system shutdown and the shutdown
    callbacks of some device drivers have been called already, it may
    crash the system. Fix from Liu Shuo prevents that from happening
    by making try_to_suspend() check system_state.

    - The ACPI memory hotplug driver doesn't clear its driver_data on
    errors which may cause a NULL poiter dereference to happen later.
    Fix from Toshi Kani.

    - The ACPI namespace scanning code should not try to attach scan
    handlers to device objects that have them already, which may
    confuse things quite a bit, and it should rescan the whole
    namespace branch starting at the given node after receiving a bus
    check notify event even if the device at that particular node has
    been discovered already. Fixes from Rafael J Wysocki.

    - New ACPI video blacklist entry for a system whose initial backlight
    setting from the BIOS doesn't make sense. From Lan Tianyu.

    - Garbage string output avoindance for ACPI PNP from Liu Shuo.

    - Two Kconfig fixes for issues introduced recently in the s3c24xx
    cpufreq driver (when moving the driver to drivers/cpufreq) from
    Paul Bolle.

    - Trivial comment fix in pm_wakeup.h from Chanwoo Choi"

    * tag 'pm+acpi-3.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / video: ignore BIOS initial backlight value for Fujitsu E753
    PNP / ACPI: avoid garbage in resource name
    cpufreq: Revert commit 2f7021a8 to fix CPU hotplug regression
    cpufreq: s3c24xx: fix "depends on ARM_S3C24XX" in Kconfig
    cpufreq: s3c24xx: rename CONFIG_CPU_FREQ_S3C24XX_DEBUGFS
    PM / Sleep: Fix comment typo in pm_wakeup.h
    PM / Sleep: avoid 'autosleep' in shutdown progress
    cpufreq: Revert commit a66b2e to fix suspend/resume regression
    ACPI / memhotplug: Fix a stale pointer in error path
    ACPI / scan: Always call acpi_bus_scan() for bus check notifications
    ACPI / scan: Do not try to attach scan handlers to devices having them

    Linus Torvalds
     

19 Jul, 2013

1 commit

  • The BIOS of FUjitsu E753 reports an incorrect initial backlight value
    for WIN8 compatible OS, causing backlight to be dark during startup.
    This change causes the incorrect initial value from BIOS to be ignored.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=60161
    Reported-and-tested-by: Jan Hinnerk Stosch
    Signed-off-by: Lan Tianyu
    Cc: 3.7+
    Signed-off-by: Rafael J. Wysocki

    Lan Tianyu
     

18 Jul, 2013

4 commits

  • Starting from win8, MS backlight control driver will set bit 2 of the
    parameter of control method _DOS, to inform firmware it should not
    perform any automatic brightness changes. This mostly affects hotkey
    notification deliver - if we do not set this bit, on hotkey press,
    firmware may choose to adjust brightness level instead of sending out
    notification and doing nothing.

    So this patch sets bit 2 when calling _DOS so that GUIs can show the
    notification window on hotkey press. This behavior change is only
    necessary for win8 systems.

    The MS document on win8 backlight control is here:
    http://msdn.microsoft.com/en-US/library/windows/hardware/jj159305

    References: https://bugzilla.kernel.org/show_bug.cgi?id=52951
    References: https://bugzilla.kernel.org/show_bug.cgi?id=56711
    Reported-by: Micael Dias
    Reported-by: Dan Garton
    Reported-by: Bob Ziuchkovski
    Signed-off-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     
  • According to Matthew Garrett, "Windows 8 leaves backlight control up
    to individual graphics drivers rather than making ACPI calls itself.
    There's plenty of evidence to suggest that the Intel driver for
    Windows [8] doesn't use the ACPI interface, including the fact that
    it's broken on a bunch of machines when the OS claims to support
    Windows 8. The simplest thing to do appears to be to disable the
    ACPI backlight interface on these systems".

    There's a problem with that approach, however, because simply
    avoiding to register the ACPI backlight interface if the firmware
    calls _OSI for Windows 8 may not work in the following situations:
    (1) The ACPI backlight interface actually works on the given system
    and the i915 driver is not loaded (e.g. another graphics driver
    is used).
    (2) The ACPI backlight interface doesn't work on the given system,
    but there is a vendor platform driver that will register its
    own, equally broken, backlight interface if not prevented from
    doing so by the ACPI subsystem.
    Therefore we need to allow the ACPI backlight interface to be
    registered until the i915 driver is loaded which then will unregister
    it if the firmware has called _OSI for Windows 8 (or will register
    the ACPI video driver without backlight support if not already
    present).

    For this reason, introduce an alternative function for registering
    ACPI video, acpi_video_register_with_quirks(), that will check
    whether or not the ACPI video driver has already been registered
    and whether or not the backlight Windows 8 quirk has to be applied.
    If the quirk has to be applied, it will block the ACPI backlight
    support and either unregister the backlight interface if the ACPI
    video driver has already been registered, or register the ACPI
    video driver without the backlight interface otherwise. Make
    the i915 driver use acpi_video_register_with_quirks() instead of
    acpi_video_register() in i915_driver_load().

    This change is based on earlier patches from Matthew Garrett,
    Chun-Yi Lee and Seth Forshee and includes a fix from Aaron Lu's.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=51231
    Tested-by: Aaron Lu
    Tested-by: Igor Gnatenko
    Tested-by: Yves-Alexis Perez
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Aaron Lu
    Acked-by: Matthew Garrett

    Rafael J. Wysocki
     
  • We have to call acpi_video_init_brightness() even if we're not going
    to initialise the backlight - Thinkpads seem to use this as the
    trigger for enabling ACPI notifications rather than handling it in
    firmware.

    [rjw: Drop the brightness object created by
    acpi_video_init_brightness() if we are not going to use it.]
    Signed-off-by: Matthew Garrett
    Signed-off-by: Rafael J. Wysocki

    Matthew Garrett
     
  • Expose acpi_gbl_osi_data so that code outside of ACPICA can check
    the value of the last successfull _OSI call. The definitions for
    OSI versions are moved to actypes.h so that other components can
    access them too.

    Based on a patch from Matthew Garrett which in turn was based on
    an earlier patch from Seth Forshee.

    [rjw: Changelog]
    Signed-off-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     

15 Jul, 2013

4 commits

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    This removes all the drivers/acpi uses of the __cpuinit macros
    from all C files.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: Len Brown
    Cc: "Rafael J. Wysocki"
    Cc: linux-acpi@vger.kernel.org
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • device->driver_data needs to be cleared when releasing its data,
    mem_device, in an error path of acpi_memory_device_add().

    The function evaluates the _CRS of memory device objects, and fails
    when it gets an unexpected resource or cannot allocate memory. A
    kernel crash or data corruption may occur when the kernel accesses
    the stale pointer.

    Signed-off-by: Toshi Kani
    Reviewed-by: Yasuaki Ishimatsu
    Cc: 2.6.32+
    Signed-off-by: Rafael J. Wysocki

    Toshi Kani
     
  • An ACPI_NOTIFY_BUS_CHECK notification means that we should scan the
    entire namespace starting from the given handle even if the device
    represented by that handle is present (other devices below it may
    just have appeared).

    For this reason, modify acpi_scan_bus_device_check() to always run
    acpi_bus_scan() if the notification being handled is of type
    ACPI_NOTIFY_BUS_CHECK.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Toshi Kani
    Cc: 3.10+

    Rafael J. Wysocki
     
  • In acpi_bus_device_attach(), if there is an ACPI device object
    for the given handle and that device object has a scan handler
    attached to it already, there's nothing more to do for that handle.
    Moreover, if acpi_scan_attach_handler() is called then, it may
    execute the .attach() callback of the ACPI scan handler already
    attached to the device object and that may lead to interesting
    breakage.

    For this reason, make acpi_bus_device_attach() return success
    immediately when the handle's device object has a scan handler
    attached to it.

    Reported-by: Toshi Kani
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Toshi Kani
    Cc: 3.10+

    Rafael J. Wysocki
     

12 Jul, 2013

1 commit

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

    - Fix for a recent cpufreq regression that caused WARN() to trigger
    overzealously in a couple of places and spam the kernel log with
    useless garbage as a result. From Viresh Kumar.

    - ACPI dock fix removing a discrepancy between the definition of
    acpi_dock_init(), which says that the function returns int, and its
    header in the header file, which says that it is a void function.
    The function is now defined as void too.

    - ACPI PM fix for failures to update device power states as needed, for
    example, during resume from system suspend, because the old state was
    deeper than the new one, but the new one is not D0.

    - Fix for two debug messages in the ACPI power resources code that
    don't have a newline at the end and make the kernel log difficult to
    read. From Mika Westerberg.

    - Two ACPI cleanups from Naresh Bhat and Haicheng Li.

    - cpupower updates from Thomas Renninger, including Intel Haswell
    support improvements and a new idle-set subcommand among other
    things.

    * tag 'pm+acpi-3.11-rc1-more' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / power: add missing newline to debug messages
    cpupower: Add Haswell family 0x45 specific idle monitor to show PC8,9,10 states
    cpupower: Haswell also supports the C-states introduced with SandyBridge
    cpupower: Introduce idle-set subcommand and C-state enabling/disabling
    cpupower: Implement disabling of cstate interface
    cpupower: Make idlestate usage unsigned
    ACPI / fan: Initialize acpi_state variable
    ACPI / scan: remove unused LIST_HEAD(acpi_device_list)
    ACPI / dock: Actually define acpi_dock_init() as void
    ACPI / PM: Fix corner case in acpi_bus_update_power()
    cpufreq: Fix serialization of frequency transitions

    Linus Torvalds
     

05 Jul, 2013

2 commits

  • There are few places in power.c where debug messages have no newline
    at the end. Reading such debug messages from dmesg is not fun, so
    fix this by adding the missing newlines.

    Signed-off-by: Mika Westerberg
    Cc: All
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     
  • Pull powerpc updates from Ben Herrenschmidt:
    "This is the powerpc changes for the 3.11 merge window. In addition to
    the usual bug fixes and small updates, the main highlights are:

    - Support for transparent huge pages by Aneesh Kumar for 64-bit
    server processors. This allows the use of 16M pages as transparent
    huge pages on kernels compiled with a 64K base page size.

    - Base VFIO support for KVM on power by Alexey Kardashevskiy

    - Wiring up of our nvram to the pstore infrastructure, including
    putting compressed oopses in there by Aruna Balakrishnaiah

    - Move, rework and improve our "EEH" (basically PCI error handling
    and recovery) infrastructure. It is no longer specific to pseries
    but is now usable by the new "powernv" platform as well (no
    hypervisor) by Gavin Shan.

    - I fixed some bugs in our math-emu instruction decoding and made it
    usable to emulate some optional FP instructions on processors with
    hard FP that lack them (such as fsqrt on Freescale embedded
    processors).

    - Support for Power8 "Event Based Branch" facility by Michael
    Ellerman. This facility allows what is basically "userspace
    interrupts" for performance monitor events.

    - A bunch of Transactional Memory vs. Signals bug fixes and HW
    breakpoint/watchpoint fixes by Michael Neuling.

    And more ... I appologize in advance if I've failed to highlight
    something that somebody deemed worth it."

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (156 commits)
    pstore: Add hsize argument in write_buf call of pstore_ftrace_call
    powerpc/fsl: add MPIC timer wakeup support
    powerpc/mpic: create mpic subsystem object
    powerpc/mpic: add global timer support
    powerpc/mpic: add irq_set_wake support
    powerpc/85xx: enable coreint for all the 64bit boards
    powerpc/8xx: Erroneous double irq_eoi() on CPM IRQ in MPC8xx
    powerpc/fsl: Enable CONFIG_E1000E in mpc85xx_smp_defconfig
    powerpc/mpic: Add get_version API both for internal and external use
    powerpc: Handle both new style and old style reserve maps
    powerpc/hw_brk: Fix off by one error when validating DAWR region end
    powerpc/pseries: Support compression of oops text via pstore
    powerpc/pseries: Re-organise the oops compression code
    pstore: Pass header size in the pstore write callback
    powerpc/powernv: Fix iommu initialization again
    powerpc/pseries: Inform the hypervisor we are using EBB regs
    powerpc/perf: Add power8 EBB support
    powerpc/perf: Core EBB support for 64-bit book3s
    powerpc/perf: Drop MMCRA from thread_struct
    powerpc/perf: Don't enable if we have zero events
    ...

    Linus Torvalds
     

04 Jul, 2013

9 commits

  • Make the following compiler warning go away:

    CC drivers/acpi/fan.o
    drivers/acpi/fan.c: In function ‘fan_get_cur_state’:
    drivers/acpi/fan.c:96:9: warning: ‘acpi_state’ may be used uninitialized in this function [-Wuninitialized]

    by initializing the local variable acpi_state in fan_get_cur_state().

    [rjw: Changelog]
    Signed-off-by: Naresh Bhat
    Signed-off-by: Rafael J. Wysocki

    Naresh Bhat
     
  • The acpi_device_list list is not used, so removed it.

    [rjw: Changelog]
    Signed-off-by: Haicheng Li
    Signed-off-by: Rafael J. Wysocki

    Haicheng Li
     
  • Commit 94add0f (ACPI / dock: Initialize ACPI dock subsystem upfront)
    changed the header of acpi_dock_init() in internal.h so that it is
    supposed to be a void function now, but it forgot to update its
    actual definition in dock.c according to which it still is supposed
    to return int.

    Although that didn't cause any visible breakage or even a compiler
    warning to be thrown, which is odd enough, fix it.

    Signed-off-by: Rafael J. Wysocki
    Cc: 3.10+

    Rafael J. Wysocki
     
  • The role of acpi_bus_update_power() is to update the given ACPI
    device object's power.state field to reflect the current physical
    state of the device (as inferred from the configuration of power
    resources and _PSC, if available). For this purpose it calls
    acpi_device_set_power() that should update the power resources'
    reference counters and set power.state as appropriate. However,
    that doesn't work if the "new" state is D1, D2 or D3hot and the
    the current value of power.state means D3cold, because in that
    case acpi_device_set_power() will refuse to transition the device
    from D3cold to non-D0.

    To address this problem, make acpi_bus_update_power() call
    acpi_power_transition() directly to update the power resources'
    reference counters and only use acpi_device_set_power() to put
    the device into D0 if the current physical state of it cannot
    be determined.

    Signed-off-by: Rafael J. Wysocki
    Cc: 3.9+

    Rafael J. Wysocki
     
  • Merge first patch-bomb from Andrew Morton:
    - various misc bits
    - I'm been patchmonkeying ocfs2 for a while, as Joel and Mark have been
    distracted. There has been quite a bit of activity.
    - About half the MM queue
    - Some backlight bits
    - Various lib/ updates
    - checkpatch updates
    - zillions more little rtc patches
    - ptrace
    - signals
    - exec
    - procfs
    - rapidio
    - nbd
    - aoe
    - pps
    - memstick
    - tools/testing/selftests updates

    * emailed patches from Andrew Morton : (445 commits)
    tools/testing/selftests: don't assume the x bit is set on scripts
    selftests: add .gitignore for kcmp
    selftests: fix clean target in kcmp Makefile
    selftests: add .gitignore for vm
    selftests: add hugetlbfstest
    self-test: fix make clean
    selftests: exit 1 on failure
    kernel/resource.c: remove the unneeded assignment in function __find_resource
    aio: fix wrong comment in aio_complete()
    drivers/w1/slaves/w1_ds2408.c: add magic sequence to disable P0 test mode
    drivers/memstick/host/r592.c: convert to module_pci_driver
    drivers/memstick/host/jmb38x_ms: convert to module_pci_driver
    pps-gpio: add device-tree binding and support
    drivers/pps/clients/pps-gpio.c: convert to module_platform_driver
    drivers/pps/clients/pps-gpio.c: convert to devm_* helpers
    drivers/parport/share.c: use kzalloc
    Documentation/accounting/getdelays.c: avoid strncpy in accounting tool
    aoe: update internal version number to v83
    aoe: update copyright date
    aoe: perform I/O completions in parallel
    ...

    Linus Torvalds
     
  • Pull PCI changes from Bjorn Helgaas:
    "PCI device hotplug
    - Add pci_alloc_dev() interface (Gu Zheng)
    - Add pci_bus_get()/put() for reference counting (Jiang Liu)
    - Fix SR-IOV reference count issues (Jiang Liu)
    - Remove unused acpi_pci_roots list (Jiang Liu)

    MSI
    - Conserve interrupt resources on x86 (Alexander Gordeev)

    AER
    - Force fatal severity when component has been reset (Betty Dall)
    - Reset link below Root Port as well as Downstream Port (Betty Dall)
    - Fix "Firmware first" flag setting (Bjorn Helgaas)
    - Don't parse HEST for non-PCIe devices (Bjorn Helgaas)

    ASPM
    - Warn when we can't disable ASPM as driver requests (Bjorn Helgaas)

    Miscellaneous
    - Add CircuitCo PCI IDs (Darren Hart)
    - Add AMD CZ SATA and SMBus PCI IDs (Shane Huang)
    - Work around Ivytown NTB BAR size issue (Jon Mason)
    - Detect invalid initial BAR values (Kevin Hao)
    - Add pcibios_release_device() (Sebastian Ott)
    - Fix powerpc & sparc PCI_UNKNOWN power state usage (Bjorn Helgaas)"

    * tag 'pci-v3.11-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (51 commits)
    MAINTAINERS: Add ACPI folks for ACPI-related things under drivers/pci
    PCI: Add CircuitCo vendor ID and subsystem ID
    PCI: Use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
    PCI: Return early on allocation failures to unindent mainline code
    PCI: Simplify IOV implementation and fix reference count races
    PCI: Drop redundant setting of bus->is_added in virtfn_add_bus()
    unicore32/PCI: Remove redundant call of pci_bus_add_devices()
    m68k/PCI: Remove redundant call of pci_bus_add_devices()
    PCI / ACPI / PM: Use correct power state strings in messages
    PCI: Fix comment typo for pcie_pme_remove()
    PCI: Rename pci_release_bus_bridge_dev() to pci_release_host_bridge_dev()
    PCI: Fix refcount issue in pci_create_root_bus() error recovery path
    ia64/PCI: Clean up pci_scan_root_bus() usage
    PCI/AER: Reset link for devices below Root Port or Downstream Port
    ACPI / APEI: Force fatal AER severity when component has been reset
    PCI/AER: Remove "extern" from function declarations
    PCI/AER: Move AER severity defines to aer.h
    PCI/AER: Set dev->__aer_firmware_first only for matching devices
    PCI/AER: Factor out HEST device type matching
    PCI/AER: Don't parse HEST table for non-PCIe devices
    ...

    Linus Torvalds
     
  • Fix various weird constructions of strncpy(dst, src, strlen(src)).

    Length limits should be about the space available in the destination,
    not repurposed as a method to either always include or always exclude a
    trailing NULL byte. Either the NULL should always be copied (using
    strlcpy), or it should not be copied (using something like memcpy).
    Readable code should not depend on the weird behavior of strncpy when it
    hits the length limit. Better to avoid the anti-pattern entirely.

    [akpm@linux-foundation.org: revert getdelays.c part due to missing bsd/string.h]
    Signed-off-by: Kees Cook
    Acked-by: Greg Kroah-Hartman [staging]
    Acked-by: Rafael J. Wysocki [acpi]
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Ursula Braun
    Cc: Frank Blaschka
    Cc: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • Pull power management and ACPI updates from Rafael Wysocki:
    "This time the total number of ACPI commits is slightly greater than
    the number of cpufreq commits, but Viresh Kumar (who works on cpufreq)
    remains the most active patch submitter.

    To me, the most significant change is the addition of offline/online
    device operations to the driver core (with the Greg's blessing) and
    the related modifications of the ACPI core hotplug code. Next are the
    freezer updates from Colin Cross that should make the freezing of
    tasks a bit less heavy weight.

    We also have a couple of regression fixes, a number of fixes for
    issues that have not been identified as regressions, two new drivers
    and a bunch of cleanups all over.

    Highlights:

    - Hotplug changes to support graceful hot-removal failures.

    It sometimes is necessary to fail device hot-removal operations
    gracefully if they cannot be carried out completely. For example,
    if memory from a memory module being hot-removed has been allocated
    for the kernel's own use and cannot be moved elsewhere, it's
    desirable to fail the hot-removal operation in a graceful way
    rather than to crash the kernel, but currenty a success or a kernel
    crash are the only possible outcomes of an attempted memory
    hot-removal. Needless to say, that is not a very attractive
    alternative and it had to be addressed.

    However, in order to make it work for memory, I first had to make
    it work for CPUs and for this purpose I needed to modify the ACPI
    processor driver. It's been split into two parts, a resident one
    handling the low-level initialization/cleanup and a modular one
    playing the actual driver's role (but it binds to the CPU system
    device objects rather than to the ACPI device objects representing
    processors). That's been sort of like a live brain surgery on a
    patient who's riding a bike.

    So this is a little scary, but since we found and fixed a couple of
    regressions it caused to happen during the early linux-next testing
    (a month ago), nobody has complained.

    As a bonus we remove some duplicated ACPI hotplug code, because the
    ACPI-based CPU hotplug is now going to use the common ACPI hotplug
    code.

    - Lighter weight freezing of tasks.

    These changes from Colin Cross and Mandeep Singh Baines are
    targeted at making the freezing of tasks a bit less heavy weight
    operation. They reduce the number of tasks woken up every time
    during the freezing, by using the observation that the freezer
    simply doesn't need to wake up some of them and wait for them all
    to call refrigerator(). The time needed for the freezer to decide
    to report a failure is reduced too.

    Also reintroduced is the check causing a lockdep warining to
    trigger when try_to_freeze() is called with locks held (which is
    generally unsafe and shouldn't happen).

    - cpufreq updates

    First off, a commit from Srivatsa S Bhat fixes a resume regression
    introduced during the 3.10 cycle causing some cpufreq sysfs
    attributes to return wrong values to user space after resume. The
    fix is kind of fresh, but also it's pretty obvious once Srivatsa
    has identified the root cause.

    Second, we have a new freqdomain_cpus sysfs attribute for the
    acpi-cpufreq driver to provide information previously available via
    related_cpus. From Lan Tianyu.

    Finally, we fix a number of issues, mostly related to the
    CPUFREQ_POSTCHANGE notifier and cpufreq Kconfig options and clean
    up some code. The majority of changes from Viresh Kumar with bits
    from Jacob Shin, Heiko Stübner, Xiaoguang Chen, Ezequiel Garcia,
    Arnd Bergmann, and Tang Yuantian.

    - ACPICA update

    A usual bunch of updates from the ACPICA upstream.

    During the 3.4 cycle we introduced support for ACPI 5 extended
    sleep registers, but they are only supposed to be used if the
    HW-reduced mode bit is set in the FADT flags and the code attempted
    to use them without checking that bit. That caused suspend/resume
    regressions to happen on some systems. Fix from Lv Zheng causes
    those registers to be used only if the HW-reduced mode bit is set.

    Apart from this some other ACPICA bugs are fixed and code cleanups
    are made by Bob Moore, Tomasz Nowicki, Lv Zheng, Chao Guan, and
    Zhang Rui.

    - cpuidle updates

    New driver for Xilinx Zynq processors is added by Michal Simek.

    Multidriver support simplification, addition of some missing
    kerneldoc comments and Kconfig-related fixes come from Daniel
    Lezcano.

    - ACPI power management updates

    Changes to make suspend/resume work correctly in Xen guests from
    Konrad Rzeszutek Wilk, sparse warning fix from Fengguang Wu and
    cleanups and fixes of the ACPI device power state selection
    routine.

    - ACPI documentation updates

    Some previously missing pieces of ACPI documentation are added by
    Lv Zheng and Aaron Lu (hopefully, that will help people to
    uderstand how the ACPI subsystem works) and one outdated doc is
    updated by Hanjun Guo.

    - Assorted ACPI updates

    We finally nailed down the IA-64 issue that was the reason for
    reverting commit 9f29ab11ddbf ("ACPI / scan: do not match drivers
    against objects having scan handlers"), so we can fix it and move
    the ACPI scan handler check added to the ACPI video driver back to
    the core.

    A mechanism for adding CMOS RTC address space handlers is
    introduced by Lan Tianyu to allow some EC-related breakage to be
    fixed on some systems.

    A spec-compliant implementation of acpi_os_get_timer() is added by
    Mika Westerberg.

    The evaluation of _STA is added to do_acpi_find_child() to avoid
    situations in which a pointer to a disabled device object is
    returned instead of an enabled one with the same _ADR value. From
    Jeff Wu.

    Intel BayTrail PCH (Platform Controller Hub) support is added to
    the ACPI driver for Intel Low-Power Subsystems (LPSS) and that
    driver is modified to work around a couple of known BIOS issues.
    Changes from Mika Westerberg and Heikki Krogerus.

    The EC driver is fixed by Vasiliy Kulikov to use get_user() and
    put_user() instead of dereferencing user space pointers blindly.

    Code cleanups are made by Bjorn Helgaas, Nicholas Mazzuca and Toshi
    Kani.

    - Assorted power management updates

    The "runtime idle" helper routine is changed to take the return
    values of the callbacks executed by it into account and to call
    rpm_suspend() if they return 0, which allows us to reduce the
    overall code bloat a bit (by dropping some code that's not
    necessary any more after that modification).

    The runtime PM documentation is updated by Alan Stern (to reflect
    the "runtime idle" behavior change).

    New trace points for PM QoS are added by Sahara
    ().

    PM QoS documentation is updated by Lan Tianyu.

    Code cleanups are made and minor issues are addressed by Bernie
    Thompson, Bjorn Helgaas, Julius Werner, and Shuah Khan.

    - devfreq updates

    New driver for the Exynos5-bus device from Abhilash Kesavan.

    Minor cleanups, fixes and MAINTAINERS update from MyungJoo Ham,
    Abhilash Kesavan, Paul Bolle, Rajagopal Venkat, and Wei Yongjun.

    - OMAP power management updates

    Adaptive Voltage Scaling (AVS) SmartReflex voltage control driver
    updates from Andrii Tseglytskyi and Nishanth Menon."

    * tag 'pm+acpi-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (162 commits)
    cpufreq: Fix cpufreq regression after suspend/resume
    ACPI / PM: Fix possible NULL pointer deref in acpi_pm_device_sleep_state()
    PM / Sleep: Warn about system time after resume with pm_trace
    cpufreq: don't leave stale policy pointer in cdbs->cur_policy
    acpi-cpufreq: Add new sysfs attribute freqdomain_cpus
    cpufreq: make sure frequency transitions are serialized
    ACPI: implement acpi_os_get_timer() according the spec
    ACPI / EC: Add HP Folio 13 to ec_dmi_table in order to skip DSDT scan
    ACPI: Add CMOS RTC Operation Region handler support
    ACPI / processor: Drop unused variable from processor_perflib.c
    cpufreq: tegra: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: s3c64xx: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: omap: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: imx6q: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: exynos: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: dbx500: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: davinci: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: arm-big-little: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: powernow-k8: call CPUFREQ_POSTCHANGE notfier in error cases
    cpufreq: pcc: call CPUFREQ_POSTCHANGE notfier in error cases
    ...

    Linus Torvalds
     
  • Pull pstore update from Tony Luck:
    "Fixes for pstore for 3.11 merge window"

    * tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
    efivars: If pstore_register fails, free unneeded pstore buffer
    acpi: Eliminate console msg if pstore.backend excludes ERST
    pstore: Return unique error if backend registration excluded by kernel param
    pstore: Fail to unlink if a driver has not defined pstore_erase
    pstore/ram: remove the power of buffer size limitation
    pstore/ram: avoid atomic accesses for ioremapped regions
    efi, pstore: Cocci spatch "memdup.spatch"

    Linus Torvalds
     

03 Jul, 2013

1 commit

  • Pull x86 RAS update from Ingo Molnar:
    "The changes in this tree are:

    - ACPI APEI (ACPI Platform Error Interface) improvements, by Chen
    Gong
    - misc MCE fixes/cleanups"

    * 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mce: Update MCE severity condition check
    mce: acpi/apei: Add comments to clarify usage of the various bitfields in the MCA subsystem
    ACPI/APEI: Update einj documentation for param1/param2
    ACPI/APEI: Add parameter check before error injection
    ACPI, APEI, EINJ: Fix error return code in einj_init()
    x86, mce: Fix "braodcast" typo

    Linus Torvalds
     

01 Jul, 2013

1 commit


29 Jun, 2013

4 commits

  • * acpi-assorted:
    ACPI: implement acpi_os_get_timer() according the spec

    Rafael J. Wysocki
     
  • * acpi-pm:
    ACPI / PM: Fix possible NULL pointer deref in acpi_pm_device_sleep_state()

    Rafael J. Wysocki
     
  • * acpi-hotplug:
    ACPI / processor: Drop unused variable from processor_perflib.c
    ACPI / processor: Remove unused macros in processor_driver.c

    Rafael J. Wysocki
     
  • This is patch 2/3 of a patch set that avoids what misleadingly appears
    to be a error during boot:

    ERST: Could not register with persistent store

    This message is displayed if the system has a valid ACPI ERST table and the
    pstore.backend kernel parameter has been used to disable use of ERST by
    pstore. But this same message is used for errors that preclude registration.

    In erst_init don't complain if the setting of kernel parameter pstore.backend
    precludes use of ACPI ERST for pstore. Routine pstore_register will inform
    about the facility that does register.

    Also, don't leave a dangling pointer to deallocated mem for the pstore
    buffer when registration fails.

    Signed-off-by: Lenny Szubowicz
    Reported-by: Naotaka Hamaguchi
    Signed-off-by: Tony Luck

    Lenny Szubowicz
     

28 Jun, 2013

3 commits

  • * pm-assorted:
    PM / QoS: Add pm_qos and dev_pm_qos to events-power.txt
    PM / QoS: Add dev_pm_qos_request tracepoints
    PM / QoS: Add pm_qos_request tracepoints
    PM / QoS: Add pm_qos_update_target/flags tracepoints
    PM / QoS: Update Documentation/power/pm_qos_interface.txt
    PM / Sleep: Print last wakeup source on failed wakeup_count write
    PM / QoS: correct the valid range of pm_qos_class
    PM / wakeup: Adjust messaging for wake events during suspend
    PM / Runtime: Update .runtime_idle() callback documentation
    PM / Runtime: Rework the "runtime idle" helper routine
    PM / Hibernate: print physical addresses consistently with other parts of kernel

    Rafael J. Wysocki
     
  • * acpi-assorted:
    ACPI / EC: Add HP Folio 13 to ec_dmi_table in order to skip DSDT scan
    ACPI: Add CMOS RTC Operation Region handler support
    ACPI: Remove unused flags in acpi_device_flags
    ACPI: Remove useless initializers
    ACPI / battery: Make sure all spaces are in correct places
    ACPI: add _STA evaluation at do_acpi_find_child()
    ACPI / EC: access user space with get_user()/put_user()

    Rafael J. Wysocki
     
  • * acpi-lpss:
    ACPI / LPSS: override SDIO private register space size from ACPI tables
    ACPI / LPSS: mask the UART TX completion interrupt
    ACPI / LPSS: add support for Intel BayTrail

    Conflicts:
    drivers/acpi/acpi_lpss.c (with commit b9e95fc)

    Rafael J. Wysocki