1. 13 Sep, 2014 15 commits
    • Bjorn Helgaas's avatar
      PCI: Configure *all* devices, not just hot-added ones · 1302fcf0
      Bjorn Helgaas authored
      There's not really a good way to determine whether firmware has already
      configured a device with _HPP/_HPX settings.  On legacy systems, the BIOS
      has probably configured everything, but on UEFI systems it is not required
      to do so.
      
      Per the PCI Firmware Specification, rev 3.1, sec 3.5, if PCI_COMMAND_IO or
      PCI_COMMAND_MEMORY is set, we can assume firmware has set the corresponding
      BARs and maybe we can assume it has configured the rest of the device.  And
      if a bridge has PCI_COMMAND_PARITY or PCI_COMMAND_SERR set, we can assume
      firmware has configured the bridge.  But we can't tell much about devices
      without BARs.
      
      I think it should be safe to apply _HPP and _HPX settings anyway, even if
      firmware has already configured the device, so configure everything we
      find.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      1302fcf0
    • Bjorn Helgaas's avatar
      PCI: Preserve MPS and MRRS when applying _HPX settings · 302328c0
      Bjorn Helgaas authored
      Linux manages MPS and MRRS settings to keep them consistent across the PCIe
      fabric.  BIOS doesn't participate in this Linux management, so ignore that
      part of any _HPX settings it supplies.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      302328c0
    • Bjorn Helgaas's avatar
      PCI: Apply _HPP settings to all hot-added PCI devices · ca0647e0
      Bjorn Helgaas authored
      We currently apply _HPP settings only to:
      
          - non-bridge devices, and
          - PCI-to-PCI bridges
      
      i.e., we do not apply them to PCI-to-ISA bridges and the like.  It has been
      that way since _HPP support was added by 40abb96c ("pciehp: Fix
      programming hotplug parameters"), but I don't think there's any reason to
      exclude these other bridges.
      
      Apply _HPP settings to hot-added PCI devices of any type.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      ca0647e0
    • Bjorn Helgaas's avatar
      PCI: Preserve BIOS PCI_COMMAND_SERR and PCI_COMMAND_PARITY settings · eab3a0ee
      Bjorn Helgaas authored
      Do not clear PCI_COMMAND_SERR or PCI_COMMAND_PARITY based on _HPP.  The
      spec (ACPI rev 5.0, sec 6.2.7) says that when "Enable SERR" is set to 1,
      we should enable SERR in the command register.  It says nothing about
      *disabling* SERR or PERR; in fact, the example in 6.2.7.1 says we should
      leave PERR alone unless "Enable PERR" is 1.
      
      For hot-added devices, this probably doesn't matter because they power up
      with these bits cleared.  But in addition to hot-plugged devices, the spec
      allows the platform to use _HPP for "configuration of PCI devices not
      configured by the BIOS at system boot," and it may make a difference for
      devices present at boot.
      
      This change means that if BIOS enables SERR or PERR on a device, and it
      supplies _HPP or _HPX with the SERR or PERR bits *cleared*, we will now
      leave SERR or PERR reporting enabled on that device instead of disabling it
      as we previously did.
      
      See also 40abb96c ("pciehp: Fix programming hotplug parameters"), where
      this code was first added.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      eab3a0ee
    • Bjorn Helgaas's avatar
      PCI: Apply _HPP settings to PCIe devices as well as PCI and PCI-X · c6285fc5
      Bjorn Helgaas authored
      The ACPI _HPP method was defined before PCIe existed, so its documentation
      only mentions PCI.  The _HPX Type 0 setting record is essentially identical
      to _HPP, but the spec (ACPI rev 5.0, sec 6.2.8.1) says it should be applied
      to PCI, PCI-X, and PCIe devices, with settings being ignored if they are
      not applicable.
      
      Some platforms with both conventional PCI and PCIe devices provide only
      _HPP (not _HPX), so treat _HPP the same way as an _HPX Type 0 record and
      apply it to PCIe devices as well as PCI and PCI-X.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      c6285fc5
    • Bjorn Helgaas's avatar
      PCI: Remove unused pci_configure_slot() · fbfa398b
      Bjorn Helgaas authored
      All pci_configure_slot() uses have been removed, so remove the definition
      as well.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      fbfa398b
    • Bjorn Helgaas's avatar
      ACPI / hotplug / PCI: Remove pci_configure_slot() usage · 81ee5732
      Bjorn Helgaas authored
      We now configure each PCI device as it is enumerated, in pci_device_add(),
      so remove the configuration done in acpiphp.
      
      That configuration, in pci_configure_device(), does not include the
      MPS/MRRS configuration done by pcie_bus_configure_settings(), so keep
      that here.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      81ee5732
    • Bjorn Helgaas's avatar
      PCI: shpchp: Remove pci_configure_slot() usage · b4071663
      Bjorn Helgaas authored
      We now configure each PCI device as it is enumerated, in pci_device_add(),
      so remove the configuration done in shpchp.
      
      That configuration, in pci_configure_device(), does not include the
      MPS/MRRS configuration done by pcie_bus_configure_settings(), so keep
      that here.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      b4071663
    • Bjorn Helgaas's avatar
      PCI: pciehp: Remove pci_configure_slot() usage · 77094fb3
      Bjorn Helgaas authored
      We now configure each PCI device as it is enumerated, in pci_device_add(),
      so remove the configuration done in pciehp.
      
      That configuration, in pci_configure_device(), does not include the
      MPS/MRRS configuration done by pcie_bus_configure_settings(), so keep
      that here.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      77094fb3
    • Bjorn Helgaas's avatar
      PCI: Add pci_configure_device() during enumeration · 6cd33649
      Bjorn Helgaas authored
      Some platforms can tell the OS how to configure PCI devices, e.g., how to
      set cache line size, error reporting enables, etc.  ACPI defines _HPP and
      _HPX methods for this purpose.
      
      This configuration was previously done by some of the hotplug drivers using
      pci_configure_slot().  But not all hotplug drivers did this, and per the
      spec (ACPI rev 5.0, sec 6.2.7), we can also do it for "devices not
      configured by the BIOS at system boot."
      
      Move this configuration into the PCI core by adding pci_configure_device()
      and calling it from pci_device_add(), so we do this for all devices as we
      enumerate them.
      
      This is based on pci_configure_slot(), which is used by hotplug drivers.
      I omitted:
      
        - pcie_bus_configure_settings() because it configures MPS and MRRS, which
          requires global knowledge of the fabric and must be done later, and
      
        - configuration of subordinate devices; that will happen when we call
          pci_device_add() for those devices.
      
      Because pci_configure_slot() was only done by hotplug drivers, this initial
      version of pci_configure_device() only configures hot-added devices,
      ignoring anything added during boot.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      6cd33649
    • Bjorn Helgaas's avatar
      PCI: Move pci_configure_slot() to drivers/pci/probe.c · 589fcc23
      Bjorn Helgaas authored
      Move pci_configure_slot() and related functions from
      drivers/pci/hotplug/pcihp_slot to drivers/pci/probe.c.
      
      This is to prepare for doing device configuration during the normal
      enumeration process instead of just after hot-add.
      
      No functional change.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      589fcc23
    • Bjorn Helgaas's avatar
      PCI: Shuffle pci-acpi.c functions to group them logically · 5e3d2344
      Bjorn Helgaas authored
      Move code around to put all the ACPI power management stuff together and
      all the pieces related to ACPI methods (_CBA, _HPP, _HPX) together.
      
      No functional change.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      5e3d2344
    • Bjorn Helgaas's avatar
      PCI: Whitespace cleanup in pci-acpi.c · abbfec34
      Bjorn Helgaas authored
      Whitespace fixes only; no functional change.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      abbfec34
    • Bjorn Helgaas's avatar
      PCI: Move pci_get_hp_params() to drivers/pci/pci-acpi.c · 9ce90ea5
      Bjorn Helgaas authored
      Move pci_get_hp_params() and related functions from
      drivers/pci/hotplug/acpi_pcihp.c to drivers/pci/pci-acpi.c.
      
      Previously, pci_get_hp_params() was used only by hotplug drivers.  But
      future changes will move this into the normal device enumeration process,
      so it will be used even when CONFIG_HOTPLUG_PCI is not set.
      
      No functional change.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      9ce90ea5
    • Bjorn Helgaas's avatar
      PCI: pciehp: Configure hot-added display devices · 1197ba22
      Bjorn Helgaas authored
      We configure cache line size and other settings of hot-added devices, e.g.,
      based on ACPI _HPP or _HPX methods.  Previously we skipped this for display
      devices, but ACPI rev 5.0, sec 6.2.7 and 6.2.8 have no requirement to skip
      them.
      
      Remove the check so we configure display devices the same way we configure
      other devices.
      
      See also ac81860e ("PCI: hotplug: pciehp: Removed check for hotplug of
      display devices").
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
      1197ba22
  2. 12 Sep, 2014 1 commit
  3. 25 Aug, 2014 5 commits
    • Linus Torvalds's avatar
      Linux 3.17-rc2 · 52addcf9
      Linus Torvalds authored
      52addcf9
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.17-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · f01bfc97
      Linus Torvalds authored
      Pull NFS client fixes from Trond Myklebust:
       "Highlights:
      
         - more fixes for read/write codepath regressions
           * sleeping while holding the inode lock
           * stricter enforcement of page contiguity when coalescing requests
           * fix up error handling in the page coalescing code
      
         - don't busy wait on SIGKILL in the file locking code"
      
      * tag 'nfs-for-3.17-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        nfs: Don't busy-wait on SIGKILL in __nfs_iocounter_wait
        nfs: can_coalesce_requests must enforce contiguity
        nfs: disallow duplicate pages in pgio page vectors
        nfs: don't sleep with inode lock in lock_and_join_requests
        nfs: fix error handling in lock_and_join_requests
        nfs: use blocking page_group_lock in add_request
        nfs: fix nonblocking calls to nfs_page_group_lock
        nfs: change nfs_page_group_lock argument
      f01bfc97
    • Linus Torvalds's avatar
      Merge tag 'renesas-sh-drivers-for-v3.17' of... · dd5957b7
      Linus Torvalds authored
      Merge tag 'renesas-sh-drivers-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas
      
      Pull SH driver fix from Simon Horman:
       "Confine SH_INTC to platforms that need it"
      
      * tag 'renesas-sh-drivers-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
        sh: intc: Confine SH_INTC to platforms that need it
      dd5957b7
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 497c01dd
      Linus Torvalds authored
      Pull MIPS fixes from Ralf Baechle:
       "Pretty much all across the field so with this we should be in
        reasonable shape for the upcoming -rc2"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: OCTEON: make get_system_type() thread-safe
        MIPS: CPS: Initialize EVA before bringing up VPEs from secondary cores
        MIPS: Malta: EVA: Rename 'eva_entry' to 'platform_eva_init'
        MIPS: EVA: Add new EVA header
        MIPS: scall64-o32: Fix indirect syscall detection
        MIPS: syscall: Fix AUDIT value for O32 processes on MIPS64
        MIPS: Loongson: Fix COP2 usage for preemptible kernel
        MIPS: NL: Fix nlm_xlp_defconfig build error
        MIPS: Remove race window in page fault handling
        MIPS: Malta: Improve system memory detection for '{e, }memsize' >= 2G
        MIPS: Alchemy: Fix db1200 PSC clock enablement
        MIPS: BCM47XX: Fix reboot problem on BCM4705/BCM4785
        MIPS: Remove duplicated include from numa.c
        MIPS: Add common plat_irq_dispatch declaration
        MIPS: MSP71xx: remove unused plat_irq_dispatch() argument
        MIPS: GIC: Remove useless parens from GICBIS().
        MIPS: perf: Mark pmu interupt IRQF_NO_THREAD
      497c01dd
    • Linus Torvalds's avatar
      Merge tag 'trace-fixes-v3.17-rc1' of... · 01e9982a
      Linus Torvalds authored
      Merge tag 'trace-fixes-v3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull fix for ftrace function tracer/profiler conflict from Steven Rostedt:
       "The rewrite of the ftrace code that makes it possible to allow for
        separate trampolines had a design flaw with the interaction between
        the function and function_graph tracers.
      
        The main flaw was the simplification of the use of multiple tracers
        having the same filter (like function and function_graph, that use the
        set_ftrace_filter file to filter their code).  The design assumed that
        the two tracers could never run simultaneously as only one tracer can
        be used at a time.  The problem with this assumption was that the
        function profiler could be implemented on top of the function graph
        tracer, and the function profiler could run at the same time as the
        function tracer.  This caused the assumption to be broken and when
        ftrace detected this failed assumpiton it would spit out a nasty
        warning and shut itself down.
      
        Instead of using a single ftrace_ops that switches between the
        function and function_graph callbacks, the two tracers can again use
        their own ftrace_ops.  But instead of having a complex hierarchy of
        ftrace_ops, the filter fields are placed in its own structure and the
        ftrace_ops can carefully use the same filter.  This change took a bit
        to be able to allow for this and currently only the global_ops can
        share the same filter, but this new design can easily be modified to
        allow for any ftrace_ops to share its filter with another ftrace_ops.
      
        The first four patches deal with the change of allowing the ftrace_ops
        to share the filter (and this needs to go to 3.16 as well).
      
        The fifth patch fixes a bug that was also caused by the new changes
        but only for archs other than x86, and only if those archs implement a
        direct call to the function_graph tracer which they do not do yet but
        will in the future.  It does not need to go to stable, but needs to be
        fixed before the other archs update their code to allow direct calls
        to the function_graph trampoline"
      
      * tag 'trace-fixes-v3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        ftrace: Use current addr when converting to nop in __ftrace_replace_code()
        ftrace: Fix function_profiler and function tracer together
        ftrace: Fix up trampoline accounting with looping on hash ops
        ftrace: Update all ftrace_ops for a ftrace_hash_ops update
        ftrace: Allow ftrace_ops to use the hashes from other ops
      01e9982a
  4. 24 Aug, 2014 12 commits
  5. 23 Aug, 2014 5 commits
    • Heiko Stuebner's avatar
      MAINTAINERS: add new Rockchip SoC list · 00250b52
      Heiko Stuebner authored
      Add the new list that Rockchip-specific patches should also be directed to.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      00250b52
    • Heiko Stuebner's avatar
      ARM: dts: rockchip: readd missing mmc0 pinctrl settings · 1302d32c
      Heiko Stuebner authored
      During the restructuring of the Rockchip Cortex-A9 dtsi files it seems
      like the pinctrl settings vanished at some point from the mmc0 support.
      
      This of course renders them unusable, so readd the necessary pinctrl
      properties.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      1302d32c
    • Olof Johansson's avatar
      Merge tag 'sunxi-dt-for-3.17-2' of... · 2136edf3
      Olof Johansson authored
      Merge tag 'sunxi-dt-for-3.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux into fixes
      
      Merge "Allwinner DT changes, take 2" from Maxime Ripard:
      
      Only a single patch in here that fixes a DTC warning.
      
      * tag 'sunxi-dt-for-3.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux:
        ARM: dt: sun6i: Add #address-cells and #size-cells to i2c controller nodes
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      2136edf3
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Use current addr when converting to nop in __ftrace_replace_code() · 39b5552c
      Steven Rostedt (Red Hat) authored
      In __ftrace_replace_code(), when converting the call to a nop in a function
      it needs to compare against the "curr" (current) value of the ftrace ops, and
      not the "new" one. It currently does not affect x86 which is the only arch
      to do the trampolines with function graph tracer, but when other archs that do
      depend on this code implement the function graph trampoline, it can crash.
      
      Here's an example when ARM uses the trampolines (in the future):
      
       ------------[ cut here ]------------
       WARNING: CPU: 0 PID: 9 at kernel/trace/ftrace.c:1716 ftrace_bug+0x17c/0x1f4()
       Modules linked in: omap_rng rng_core ipv6
       CPU: 0 PID: 9 Comm: migration/0 Not tainted 3.16.0-test-10959-gf0094b28-dirty #52
       [<c02188f4>] (unwind_backtrace) from [<c021343c>] (show_stack+0x20/0x24)
       [<c021343c>] (show_stack) from [<c095a674>] (dump_stack+0x78/0x94)
       [<c095a674>] (dump_stack) from [<c02532a0>] (warn_slowpath_common+0x7c/0x9c)
       [<c02532a0>] (warn_slowpath_common) from [<c02532ec>] (warn_slowpath_null+0x2c/0x34)
       [<c02532ec>] (warn_slowpath_null) from [<c02cbac4>] (ftrace_bug+0x17c/0x1f4)
       [<c02cbac4>] (ftrace_bug) from [<c02cc44c>] (ftrace_replace_code+0x80/0x9c)
       [<c02cc44c>] (ftrace_replace_code) from [<c02cc658>] (ftrace_modify_all_code+0xb8/0x164)
       [<c02cc658>] (ftrace_modify_all_code) from [<c02cc718>] (__ftrace_modify_code+0x14/0x1c)
       [<c02cc718>] (__ftrace_modify_code) from [<c02c7244>] (multi_cpu_stop+0xf4/0x134)
       [<c02c7244>] (multi_cpu_stop) from [<c02c6e90>] (cpu_stopper_thread+0x54/0x130)
       [<c02c6e90>] (cpu_stopper_thread) from [<c0271cd4>] (smpboot_thread_fn+0x1ac/0x1bc)
       [<c0271cd4>] (smpboot_thread_fn) from [<c026ddf0>] (kthread+0xe0/0xfc)
       [<c026ddf0>] (kthread) from [<c020f318>] (ret_from_fork+0x14/0x20)
       ---[ end trace dc9ce72c5b617d8f ]---
      [   65.047264] ftrace failed to modify [<c0208580>] asm_do_IRQ+0x10/0x1c
      [   65.054070]  actual: 85:1b:00:eb
      
      Fixes: 7413af1f "ftrace: Make get_ftrace_addr() and get_ftrace_addr_old() global"
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      39b5552c
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Fix function_profiler and function tracer together · 5f151b24
      Steven Rostedt (Red Hat) authored
      The latest rewrite of ftrace removed the separate ftrace_ops of
      the function tracer and the function graph tracer and had them
      share the same ftrace_ops. This simplified the accounting by removing
      the multiple layers of functions called, where the global_ops func
      would call a special list that would iterate over the other ops that
      were registered within it (like function and function graph), which
      itself was registered to the ftrace ops list of all functions
      currently active. If that sounds confusing, the code that implemented
      it was also confusing and its removal is a good thing.
      
      The problem with this change was that it assumed that the function
      and function graph tracer can never be used at the same time.
      This is mostly true, but there is an exception. That is when the
      function profiler uses the function graph tracer to profile.
      The function profiler can be activated the same time as the function
      tracer, and this breaks the assumption and the result is that ftrace
      will crash (it detects the error and shuts itself down, it does not
      cause a kernel oops).
      
      To solve this issue, a previous change allowed the hash tables
      for the functions traced by a ftrace_ops to be a pointer and let
      multiple ftrace_ops share the same hash. This allows the function
      and function_graph tracer to have separate ftrace_ops, but still
      share the hash, which is what is done.
      
      Now the function and function graph tracers have separate ftrace_ops
      again, and the function tracer can be run while the function_profile
      is active.
      
      Cc: stable@vger.kernel.org # 3.16 (apply after 3.17-rc4 is out)
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      5f151b24
  6. 22 Aug, 2014 2 commits