1. 26 Jun, 2013 5 commits
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.10-late' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 687058ae
      Linus Torvalds authored
      Pull late power management and ACPI fixes from Rafael Wysocki:
       "Sorry about the timing of this, but ACPI-based docking stations with
        PCI devices on them and ATA bays would be hardly usable with 3.10
        without it.  We've been working on these fixes for the last couple of
        weeks and everyone involved appears to be reasonably comfortable with
        them now.
      
        The PM part is one fix for a cpufreq regression introduced recently
      
         - Fix for an ACPI dock regression introduced by the recent rework of
           the ACPI-based PCI hotplug code (acpiphp) that caused it to be
           initialized before the ACPI dock driver, which is incorrect (ACPI
           dock has to be initialized before acpiphp so that acpiphp can
           register PCI devices on docking stations with it for PCI hotplug on
           re-dock to work).  From Jiang Liu.
      
         - Fix for PCI resources allocation in the ACPI-based PCI hotplug code
           (acpiphp) that makes it use the same PCI resources assignment rules
           during runtime hotplug that are used during boot (the BIOS' choices
           are now respected in both cases).  This prevents PCI resource
           allocation failures during hotplug from happening in some cases.
           From Jiang Liu.
      
         - Fix for ordering and synchronization issues during hot-removal of
           PCI devices on docking stations.  It makes the ACPI dock code carry
           out the PCI devices removal synchronously during undock instead of
           spawning a separate asynchronous work item to remove each of them
           without even bothering to wait for all those work items to
           complete.  The hot-addition part is changed analogously.
      
         - Fix for a regression (introduced a few releases ago) that removed
           the code to register a hotplug notificaion handler for for ATA
           ports/devices inadvertently which prevented ATA bays hotplug from
           working.  The missing code is added back with some improvements.
           From Aaron Lu.
      
         - Fix for a recent cpufreq regression causing a NULL pointer
           dereference to trigger in od_set_powersave_bias() in some
           situations from Jacob Shin"
      
      * tag 'pm+acpi-3.10-late' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq: fix NULL pointer deference at od_set_powersave_bias()
        libata-acpi: add back ACPI based hotplug functionality
        ACPI / dock / PCI: Synchronous handling of dock events for PCI devices
        PCI / ACPI: Use boot-time resource allocation rules during hotplug
        ACPI / dock: Initialize ACPI dock subsystem upfront
      687058ae
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 54faf77d
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "Three small fixlets"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        hw_breakpoint: Use cpu_possible_mask in {reserve,release}_bp_slot()
        hw_breakpoint: Fix cpu check in task_bp_pinned(cpu)
        kprobes: Fix arch_prepare_kprobe to handle copy insn failures
      54faf77d
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm · e3ff9114
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
       "Another round of ARM fixes.  Largest one is the second half of the
        PJ4B fix which was pushed in the previous -rc - this one was delayed
        because its original caused a build regression while trying to fix a
        regression!
      
        As ever, noMMU gets forgotten when fixing problems on MMU, so we have
        a noMMU fix for a previous fix included in this set.
      
        A couple of fixes from Lorenzo for problems with the ARM DT CPU code,
        and a one liner to remove the buggy 'wait for interrupt' with FA526
        cores"
      
      * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7773/1: PJ4B: Add support for errata 4742
        ARM: 7772/1: Fix missing flush_kernel_dcache_page() for noMMU
        ARM: 7763/1: kernel: fix __cpu_logical_map default initialization
        ARM: 7762/1: kernel: fix arm_dt_init_cpu_maps() to skip non-cpu nodes
        ARM: 7760/1: cpu_fa526_do_idle: remove WFI
      e3ff9114
    • Linus Torvalds's avatar
      Merge tag 'critical_fix_for_3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/rwlove/fcoe · de6e1317
      Linus Torvalds authored
      Pull FCoE fix from Robert W Love:
       "This patch fixes a critical bug that was introduced in 3.9 related to
        VLAN tagging FCoE frames"
      
      * tag 'critical_fix_for_3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/rwlove/fcoe:
        fcoe: Use correct API to set vlan tag for FCoE Ethertype skbs
      de6e1317
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 78750f19
      Linus Torvalds authored
      Pull Ceph fix from Sage Weil:
       "This fixes another problem with using v2 images on 3.10 due to the
        order in which fields are read from the image header.
      
        Hopefully this is the last one"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
        rbd: fetch object order before using it
      78750f19
  2. 25 Jun, 2013 9 commits
  3. 24 Jun, 2013 11 commits
    • Aaron Lu's avatar
      libata-acpi: add back ACPI based hotplug functionality · 44521527
      Aaron Lu authored
      Commit 30dcf76a "libata: migrate ACPI code over to new bindings"
      mistakenly dropped the code to register hotplug notificaion handler
      for ATA port/devices, causing regression for people using ATA bay,
      as kernel bug #59871 shows.
      
      Fix this by adding back the hotplug notification handler registration
      code.  Since this code has to be run once and notification needs to
      be installed on every ATA port/devices handle no matter if there is
      actual device attached, we can't do this in binding time for ATA
      device ACPI handle, as the binding only occurs when a SCSI device is
      created, i.e. there is device attached.  So introduce the
      ata_acpi_hotplug_init() function to loop scan all ATA ACPI handles
      and if it is available, install the notificaion handler for it during
      ATA init time.
      
      With the ATA ACPI handle binding to SCSI device tree, it is possible
      now that when the SCSI hotplug work removes the SCSI device, the ACPI
      unbind function will find that the corresponding ACPI device has
      already been deleted by dock driver, causing a scaring message like:
      [  128.263966] scsi 4:0:0:0: Oops, 'acpi_handle' corrupt
      Fix this by waiting for SCSI hotplug task finish in our notificaion
      handler, so that the removal of ACPI device done in ACPI unbind
      function triggered by the removal of SCSI device is run earlier when
      ACPI device is still available.
      
      [rjw: Rebased]
      References: https://bugzilla.kernel.org/show_bug.cgi?id=59871Reported-bisected-and-tested-by: default avatarDirk Griesbach <spamthis@freenet.de>
      Signed-off-by: default avatarAaron Lu <aaron.lu@intel.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Cc: 3.6+ <stable@vger.kernel.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      44521527
    • Rojhalat Ibrahim's avatar
      powerpc/pci: Fix boot panic on mpc83xx (regression) · b37e1613
      Rojhalat Ibrahim authored
      The following commit caused a fatal oops when booting on mpc83xx with
      a non-express PCI bus (regardless of whether a PCI device is present):
      
      commit 50d8f87d
      Author: Rojhalat Ibrahim <imr@rtschenk.de>
      Date:   Mon Apr 8 10:15:28 2013 +0200
      
          powerpc/fsl-pci Make PCIe hotplug work with Freescale PCIe controllers
      
          Up to now the PCIe link status on Freescale PCIe controllers was only
          checked once at boot time. So hotplug did not work. With this patch the
          link status is checked on every config read. PCIe devices not present at
          boot time are found after doing 'echo 1 >/sys/bus/pci/rescan'.
      Signed-off-by: default avatarRojhalat Ibrahim <imr@rtschenk.de>
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      
      This patch fixes the issue by calling setup_indirect_pci for all device types.
      fsl_indirect_read_config is now only used for booke/86xx PCIe controllers.
      Reported-by: default avatarMichael Guntsche <mike@it-loops.com>
      Cc: Scott Wood <scottwood@freescale.com>
      Signed-off-by: default avatarRojhalat Ibrahim <imr@rtschenk.de>
      Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
      b37e1613
    • Gregory CLEMENT's avatar
      ARM: 7773/1: PJ4B: Add support for errata 4742 · 3e0a07f8
      Gregory CLEMENT authored
      This commit fixes the regression on Armada 370 (the kernal hang during
      boot) introduced by the commit: "ARM: 7691/1: mm: kill unused
      TLB_CAN_READ_FROM_L1_CACHE and use ALT_SMP instead".
      
      When coming out of either a Wait for Interrupt (WFI) or a Wait for
      Event (WFE) IDLE states, a specific timing sensitivity exists between
      the retiring WFI/WFE instructions and the newly issued subsequent
      instructions. This sensitivity can result in a CPU hang scenario.  The
      workaround is to insert either a Data Synchronization Barrier (DSB) or
      Data Memory Barrier (DMB) command immediately after the WFI/WFE
      instruction.
      
      This commit was based on the work of Lior Amsalem, but heavily
      modified to apply the errata fix dynamically according to the
      processor type thanks to the suggestions of Russell King and Nicolas
      Pitre.
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Reviewed-by: default avatarWill Deacon <will.deacon@arm.com>
      Acked-by: default avatarNicolas Pitre <nico@linaro.org>
      Tested-by: default avatarWilly Tarreau <w@1wt.eu>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      3e0a07f8
    • Simon Baatz's avatar
      ARM: 7772/1: Fix missing flush_kernel_dcache_page() for noMMU · 63384fd0
      Simon Baatz authored
      Commit 1bc39742 (ARM: 7755/1: handle user space mapped pages in
      flush_kernel_dcache_page) moved the implementation of
      flush_kernel_dcache_page() into mm/flush.c but did not implement it
      on noMMU ARM.
      Signed-off-by: default avatarSimon Baatz <gmbnomis@gmail.com>
      Acked-by: default avatarKevin Hilman <khilman@linaro.org>
      Cc: <stable@vger.kernel.org> # 3.2+: 1bc39742: ARM: 7755/1
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      63384fd0
    • Lorenzo Pieralisi's avatar
      ARM: 7763/1: kernel: fix __cpu_logical_map default initialization · 18d7f152
      Lorenzo Pieralisi authored
      The __cpu_logical_map array is statically initialized to 0, which is a valid
      MPIDR value. To prevent issues with the current implementation, this patch
      defines an MPIDR_INVALID value, and statically initializes the
      __cpu_logical_map[] array to it. Entries in the arm_dt_init_cpu_maps()
      tmp_map array used to stash DT reg properties while parsing DT are initialized
      with the MPIDR_INVALID value as well for consistency.
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarNicolas Pitre <nico@linaro.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      18d7f152
    • Lorenzo Pieralisi's avatar
      ARM: 7762/1: kernel: fix arm_dt_init_cpu_maps() to skip non-cpu nodes · 1ba9bf0a
      Lorenzo Pieralisi authored
      The introduction of the cpu-map topology node in the cpus node implies
      that cpus node might have children that are not cpu nodes. The DT
      parsing code needs updating otherwise it would check for cpu nodes
      properties in nodes that are not required to contain them, resulting
      in warnings that have no bearing on bindings defined in the dts source file.
      
      Cc: <stable@vger.kernel.org> [3.8+]
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      1ba9bf0a
    • Jonas Jensen's avatar
      ARM: 7760/1: cpu_fa526_do_idle: remove WFI · 8182a34d
      Jonas Jensen authored
      As it was already suggested by Russell King and Arnd Bergmann:
      
      https://lkml.org/lkml/2013/5/16/133
      
      moxart and gemini seem to be the only platforms using CPU_FA526,
      and instead of pointing arm_pm_idle to an empty function from
      platform code, it makes sense to remove WFI code from the processor
      specific idle function.
      
      Applies to arm-soc/for-next (and 3.10-rc1).
      
      Changes since v1:
      
      1. remove WFI but make sure cpu_fa526_do_idle do not fall through
         to cpu_fa526_dcache_clean_area
      
      Note: moxart boots and prints to UART without this patch, but input is broken.
      Signed-off-by: default avatarJonas Jensen <jonas.jensen@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      8182a34d
    • Mark Brown's avatar
    • Mark Brown's avatar
      2f5a5c1b
    • Rafael J. Wysocki's avatar
      ACPI / dock / PCI: Synchronous handling of dock events for PCI devices · 21a31013
      Rafael J. Wysocki authored
      The interactions between the ACPI dock driver and the ACPI-based PCI
      hotplug (acpiphp) are currently problematic because of ordering
      issues during hot-remove operations.
      
      First of all, the current ACPI glue code expects that physical
      devices will always be deleted before deleting the companion ACPI
      device objects.  Otherwise, acpi_unbind_one() will fail with a
      warning message printed to the kernel log, for example:
      
      [  185.026073] usb usb5: Oops, 'acpi_handle' corrupt
      [  185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
      [  185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
      [  180.013656]  port1: Oops, 'acpi_handle' corrupt
      
      This means, in particular, that struct pci_dev objects have to
      be deleted before the struct acpi_device objects they are "glued"
      with.
      
      Now, the following happens the during the undocking of an ACPI-based
      dock station:
       1) hotplug_dock_devices() invokes registered hotplug callbacks to
          destroy physical devices associated with the ACPI device objects
          depending on the dock station.  It calls dd->ops->handler() for
          each of those device objects.
       2) For PCI devices dd->ops->handler() points to
          handle_hotplug_event_func() that queues up a separate work item
          to execute _handle_hotplug_event_func() for the given device and
          returns immediately.  That work item will be executed later.
       3) hotplug_dock_devices() calls dock_remove_acpi_device() for each
          device depending on the dock station.  This runs acpi_bus_trim()
          for each of them, which causes the underlying ACPI device object
          to be destroyed, but the work items queued up by
          handle_hotplug_event_func() haven't been started yet.
       4) _handle_hotplug_event_func() queued up in step 2) are executed
          and cause the above failure to happen, because the PCI devices
          they handle do not have the companion ACPI device objects any
          more (those objects have been deleted in step 3).
      
      The possible breakage doesn't end here, though, because
      hotplug_dock_devices() may return before at least some of the
      _handle_hotplug_event_func() work items spawned by it have a
      chance to complete and then undock() will cause _DCK to be
      evaluated and that will cause the devices handled by the
      _handle_hotplug_event_func() to go away possibly while they are
      being accessed.
      
      This means that dd->ops->handler() for PCI devices should not point
      to handle_hotplug_event_func().  Instead, it should point to a
      function that will do the work of _handle_hotplug_event_func()
      synchronously.  For this reason, introduce such a function,
      hotplug_event_func(), and modity acpiphp_dock_ops to point to
      it as the handler.
      
      Unfortunately, however, this is not sufficient, because if the dock
      code were not changed further, hotplug_event_func() would now
      deadlock with hotplug_dock_devices() that called it, since it would
      run unregister_hotplug_dock_device() which in turn would attempt to
      acquire the dock station's hp_lock mutex already acquired by
      hotplug_dock_devices().
      
      To resolve that deadlock use the observation that
      unregister_hotplug_dock_device() won't need to acquire hp_lock
      if PCI bridges the devices on the dock station depend on are
      prevented from being removed prematurely while the first loop in
      hotplug_dock_devices() is in progress.
      
      To make that possible, introduce a mechanism by which the callers of
      register_hotplug_dock_device() can provide "init" and "release"
      routines that will be executed, respectively, during the addition
      and removal of the physical device object associated with the
      given ACPI device handle.  Make acpiphp use two new functions,
      acpiphp_dock_init() and acpiphp_dock_release(), that call
      get_bridge() and put_bridge(), respectively, on the acpiphp bridge
      holding the given device, for this purpose.
      
      In addition to that, remove the dock station's list of
      "hotplug devices" and make the dock code always walk the whole list
      of "dependent devices" instead in such a way that the loops in
      hotplug_dock_devices() and dock_event() (replacing the loops over
      "hotplug devices") will take references to the list entries that
      register_hotplug_dock_device() has been called for.  That prevents
      the "release" routines associated with those entries from being
      called while the given entry is being processed and for PCI
      devices this means that their bridges won't be removed (by a
      concurrent thread) while hotplug_event_func() handling them is
      being executed.
      
      This change is based on two earlier patches from Jiang Liu.
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=59501Reported-and-tested-by: default avatarAlexander E. Patrakov <patrakov@gmail.com>
      Tracked-down-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Tested-by: default avatarIllya Klymov <xanf@xanf.me>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      Cc: 3.9+ <stable@vger.kernel.org>
      21a31013
    • Michael Holzheu's avatar
      s390/ipl: Fix FCP WWPN and LUN format strings for read · eda4ddf7
      Michael Holzheu authored
      The following git commit changed the behavior of sscanf:
      
      commit 53809751
      Author: Jan Beulich <JBeulich@suse.com>
      Date:   Mon Dec 17 16:01:31 2012 -0800
          sscanf: don't ignore field widths for numeric conversions
      
      This broke the WWPN and LUN sysfs attributes for s390 reipl and dump
      on panic.
      
      Example:
      
      $ echo 0x0123456701234567 > /sys/firmware/reipl/fcp/wwpn
      $ cat /sys/firmware/reipl/fcp/wwpn
      0x0001234567012345
      
      So fix this and use format strings that work also with the
      new sscanf implementation:
      
      $ echo 0x012345670123456789 > /sys/firmware/reipl/fcp/wwpn
      $ cat /sys/firmware/reipl/fcp/wwpn
      0x0123456701234567
      
      Cc: stable@vger.kernel.org # 3.8+
      Reviewed-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      eda4ddf7
  4. 23 Jun, 2013 2 commits
  5. 22 Jun, 2013 11 commits
  6. 21 Jun, 2013 2 commits
    • Linus Torvalds's avatar
      Merge branch 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f71194a7
      Linus Torvalds authored
      Pull x86 fixes from Peter Anvin:
       "This series fixes a couple of build failures, and fixes MTRR cleanup
        and memory setup on very specific memory maps.
      
        Finally, it fixes triggering backtraces on all CPUs, which was
        inadvertently disabled on x86."
      
      * 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/efi: Fix dummy variable buffer allocation
        x86: Fix trigger_all_cpu_backtrace() implementation
        x86: Fix section mismatch on load_ucode_ap
        x86: fix build error and kconfig for ia32_emulation and binfmt
        range: Do not add new blank slot with add_range_with_merge
        x86, mtrr: Fix original mtrr range get for mtrr_cleanup
      f71194a7
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · e61cd5e2
      Linus Torvalds authored
      Pull drm radeon fixes from Dave Airlie:
       "One core fix, but mostly radeon fixes for s/r and big endian UVD
        support, and a fix to stop the GPU being reset for no good reason, and
        crashing people's machines."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon: update lockup tracking when scheduling in empty ring
        drm/prime: Honor requested file flags when exporting a buffer
        drm/radeon: fix UVD on big endian
        drm/radeon: fix write back suspend regression with uvd v2
        drm/radeon: do not try to uselessly update virtual memory pagetable
      e61cd5e2