13 Nov, 2015

1 commit

  • Pull more power management and ACPI updates from Rafael Wysocki:
    "The only new feature in this batch is support for the ACPI _CCA device
    configuration object, which it a pre-requisite for future ACPI PCI
    support on ARM64, but should not affect the other architectures.

    The rest is fixes and cleanups, mostly in cpufreq (including
    intel_pstate), the Operating Performace Points (OPP) framework and
    tools (cpupower and turbostat).

    Specifics:

    - Support for the ACPI _CCA configuration object intended to tell the
    OS whether or not a bus master device supports hardware managed
    cache coherency and a new set of functions to allow drivers to
    check the cache coherency support for devices in a platform
    firmware interface agnostic way (Suravee Suthikulpanit, Jeremy
    Linton).

    - ACPI backlight quirks for ESPRIMO Mobile M9410 and Dell XPS L421X
    (Aaron Lu, Hans de Goede).

    - Fixes for the arm_big_little and s5pv210-cpufreq cpufreq drivers
    (Jon Medhurst, Nicolas Pitre).

    - kfree()-related fixup for the recently introduced CPPC cpufreq
    frontend (Markus Elfring).

    - intel_pstate fix reducing kernel log noise on systems where
    P-states are managed by hardware (Prarit Bhargava).

    - intel_pstate maintainers information update (Srinivas Pandruvada).

    - cpufreq core optimization related to the handling of delayed work
    items used by governors (Viresh Kumar).

    - Locking fixes and cleanups of the Operating Performance Points
    (OPP) framework (Viresh Kumar).

    - Generic power domains framework cleanups (Lina Iyer).

    - cpupower tool updates (Jacob Tanenbaum, Sriram Raghunathan, Thomas
    Renninger).

    - turbostat tool updates (Len Brown)"

    * tag 'pm+acpi-4.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (32 commits)
    PCI: ACPI: Add support for PCI device DMA coherency
    PCI: OF: Move of_pci_dma_configure() to pci_dma_configure()
    of/pci: Fix pci_get_host_bridge_device leak
    device property: ACPI: Remove unused DMA APIs
    device property: ACPI: Make use of the new DMA Attribute APIs
    device property: Adding DMA Attribute APIs for Generic Devices
    ACPI: Adding DMA Attribute APIs for ACPI Device
    device property: Introducing enum dev_dma_attr
    ACPI: Honor ACPI _CCA attribute setting
    cpufreq: CPPC: Delete an unnecessary check before the function call kfree()
    PM / OPP: Add opp_rcu_lockdep_assert() to _find_device_opp()
    PM / OPP: Hold dev_opp_list_lock for writers
    PM / OPP: Protect updates to list_dev with mutex
    PM / OPP: Propagate error properly from dev_pm_opp_set_sharing_cpus()
    cpufreq: s5pv210-cpufreq: fix wrong do_div() usage
    MAINTAINERS: update for intel P-state driver
    Creating a common structure initialization pattern for struct option
    cpupower: Enable disabled Cstates if they are below max latency
    cpupower: Remove debug message when using cpupower idle-set -D switch
    cpupower: cpupower monitor reports uninitialized values for offline cpus
    ...

    Linus Torvalds
     

12 Nov, 2015

1 commit

  • Pull DeviceTree fixes from Rob Herring:

    - Add empty of_translate_address needed for HiSilicon network driver.

    - Fix alignment requirements for CMA regions in DT.

    - Fix booting on PPC systems which can't do WARN() early.

    - Rename ak4554 binding doc from .c to .txt.

    * tag 'devicetree-fixes-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    of: Provide static inline function for of_translate_address if needed
    drivers: of: of_reserved_mem: fixup the alignment with CMA setup
    of: Print rather than WARN'ing when overlap check fails
    dt-bindings: ak4554: extension should be .txt

    Linus Torvalds
     

11 Nov, 2015

2 commits

  • There is an alignment mismatch issue between the of_reserved_mem and
    the CMA setup requirement. The of_reserved_mem will try to get the
    alignment value from the DTS and pass it to __memblock_alloc_base to
    do the memory block base allocation, but the alignment value specified
    in the DTS may not satisfy the CAM setup requirement since CMA setup
    required the alignment as the following in the code:

    align = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);

    The sanity check in the function of rmem_cma_setup will fail if the
    alignment does not setup correctly and thus CMA will fail to setup.

    This patch is to fixup the alignment to meet the CMA setup required.

    Mailing-list-thread: https://lkml.org/lkml/2015/11/9/138
    Signed-off-by: Jason Liu
    Acked-by: Marek Szyprowski
    Cc: Grant Likely
    Cc: Rob Herring
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring

    Jason Liu
     
  • __rmem_check_for_overlap() is called very early in boot, and on some
    powerpc systems it's not safe to call WARN that early in boot.

    If the overlap check fails the system will oops instead of printing a
    warning. Furthermore because it's so early in boot the console is not up
    and the user doesn't see the oops, they just get a dead system.

    Fix it by printing an error instead of calling WARN.

    Fixes: ae1add247bf8 ("of: Check for overlap in reserved memory regions")
    Signed-off-by: Michael Ellerman
    Signed-off-by: Rob Herring

    Michael Ellerman
     

07 Nov, 2015

5 commits

  • * acpi-pci:
    PCI: ACPI: Add support for PCI device DMA coherency
    PCI: OF: Move of_pci_dma_configure() to pci_dma_configure()
    of/pci: Fix pci_get_host_bridge_device leak
    device property: ACPI: Remove unused DMA APIs
    device property: ACPI: Make use of the new DMA Attribute APIs
    device property: Adding DMA Attribute APIs for Generic Devices
    ACPI: Adding DMA Attribute APIs for ACPI Device
    device property: Introducing enum dev_dma_attr
    ACPI: Honor ACPI _CCA attribute setting

    Conflicts:
    drivers/crypto/ccp/ccp-platform.c

    Rafael J. Wysocki
     
  • This patch move of_pci_dma_configure() to a more generic
    pci_dma_configure(), which can be extended by non-OF code (e.g. ACPI).

    This has no functional change.

    Signed-off-by: Suravee Suthikulpanit
    Acked-by: Rob Herring
    Acked-by: Bjorn Helgaas
    Reviewed-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Suthikulpanit, Suravee
     
  • In case of error, the current code return w/o calling
    pci_put_host_bridge_device. This patch fixes this.

    Signed-off-by: Suravee Suthikulpanit
    Acked-by: Bjorn Helgaas
    Reviewed-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Suthikulpanit, Suravee
     
  • Pull DeviceTree updates from Rob Herring:
    "A fairly large (by DT standards) pull request this time with the
    majority being some overdue moving DT binding docs around to
    consolidate similar bindings.

    - DT binding doc consolidation moving similar bindings to common
    locations. The majority of these are display related which were
    scattered in video/, fb/, drm/, gpu/, and panel/ directories.

    - Add new config option, CONFIG_OF_ALL_DTBS, to enable building all
    dtbs in the tree for most arches with dts files (except powerpc for
    now).

    - OF_IRQ=n fixes for user enabled CONFIG_OF.

    - of_node_put ref counting fixes from Julia Lawall.

    - Common DT binding for wakeup-source and deprecation of all similar
    bindings.

    - DT binding for PXA LCD controller.

    - Allow ignoring failed PCI resource translations in order to ignore
    64-bit addresses on non-LPAE 32-bit kernels.

    - Support setting the NUMA node from DT instead of only from parent
    device.

    - Couple of earlycon DT parsing fixes for address and options"

    * tag 'devicetree-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (45 commits)
    MAINTAINERS: update DT binding doc locations
    devicetree: add Sigma Designs vendor prefix
    of: simplify arch_find_n_match_cpu_physical_id() function
    Documentation: arm: Fixed typo in socfpga fpga mgr example
    Documentation: devicetree: fix reference to legacy wakeup properties
    Documentation: devicetree: standardize/consolidate on "wakeup-source" property
    drivers: of: removing assignment of 0 to static variable
    xtensa: enable building of all dtbs
    mips: enable building of all dtbs
    metag: enable building of all dtbs
    metag: use common make variables for dtb builds
    h8300: enable building of all dtbs
    arm64: enable building of all dtbs
    arm: enable building of all dtbs
    arc: enable building of all dtbs
    arc: use common make variables for dtb builds
    of: add config option to enable building of all dtbs
    of/fdt: fix error checking for earlycon address
    of/overlay: add missing of_node_put
    of/platform: add missing of_node_put
    ...

    Linus Torvalds
     
  • Pull PCI updates from Bjorn Helgaas:
    "Resource management:
    - Add support for Enhanced Allocation devices (Sean O. Stalley)
    - Add Enhanced Allocation register entries (Sean O. Stalley)
    - Handle IORESOURCE_PCI_FIXED when sizing resources (David Daney)
    - Handle IORESOURCE_PCI_FIXED when assigning resources (David Daney)
    - Handle Enhanced Allocation capability for SR-IOV devices (David Daney)
    - Clear IORESOURCE_UNSET when reverting to firmware-assigned address (Bjorn Helgaas)
    - Make Enhanced Allocation bitmasks more obvious (Bjorn Helgaas)
    - Expand Enhanced Allocation BAR output (Bjorn Helgaas)
    - Add of_pci_check_probe_only to parse "linux,pci-probe-only" (Marc Zyngier)
    - Fix lookup of linux,pci-probe-only property (Marc Zyngier)
    - Add sparc mem64 resource parsing for root bus (Yinghai Lu)

    PCI device hotplug:
    - pciehp: Queue power work requests in dedicated function (Guenter Roeck)

    Driver binding:
    - Add builtin_pci_driver() to avoid registration boilerplate (Paul Gortmaker)

    Virtualization:
    - Set SR-IOV NumVFs to zero after enumeration (Alexander Duyck)
    - Remove redundant validation of SR-IOV offset/stride registers (Alexander Duyck)
    - Remove VFs in reverse order if virtfn_add() fails (Alexander Duyck)
    - Reorder pcibios_sriov_disable() (Alexander Duyck)
    - Wait 1 second between disabling VFs and clearing NumVFs (Alexander Duyck)
    - Fix sriov_enable() error path for pcibios_enable_sriov() failures (Alexander Duyck)
    - Enable SR-IOV ARI Capable Hierarchy before reading TotalVFs (Ben Shelton)
    - Don't try to restore VF BARs (Wei Yang)

    MSI:
    - Don't alloc pcibios-irq when MSI is enabled (Joerg Roedel)
    - Add msi_controller setup_irqs() method for special multivector setup (Lucas Stach)
    - Export all remapped MSIs to sysfs attributes (Romain Bezut)
    - Disable MSI on SiS 761 (Ondrej Zary)

    AER:
    - Clear error status registers during enumeration and restore (Taku Izumi)

    Generic host bridge driver:
    - Fix lookup of linux,pci-probe-only property (Marc Zyngier)
    - Allow multiple hosts with different map_bus() methods (David Daney)
    - Pass starting bus number to pci_scan_root_bus() (David Daney)
    - Fix address window calculation for non-zero starting bus (David Daney)

    Altera host bridge driver:
    - Add msi.h to ARM Kbuild (Ley Foon Tan)
    - Add Altera PCIe host controller driver (Ley Foon Tan)
    - Add Altera PCIe MSI driver (Ley Foon Tan)

    APM X-Gene host bridge driver:
    - Remove msi_controller assignment (Duc Dang)

    Broadcom iProc host bridge driver:
    - Fix header comment "Corporation" misspelling (Florian Fainelli)
    - Fix code comment to match code (Ray Jui)
    - Remove unused struct iproc_pcie.irqs[] (Ray Jui)
    - Call pci_fixup_irqs() for ARM64 as well as ARM (Ray Jui)
    - Fix PCIe reset logic (Ray Jui)
    - Improve link detection logic (Ray Jui)
    - Update PCIe device tree bindings (Ray Jui)
    - Add outbound mapping support (Ray Jui)

    Freescale i.MX6 host bridge driver:
    - Return real error code from imx6_add_pcie_port() (Fabio Estevam)
    - Add PCIE_PHY_RX_ASIC_OUT_VALID definition (Fabio Estevam)

    Freescale Layerscape host bridge driver:
    - Remove ls_pcie_establish_link() (Minghuan Lian)
    - Ignore PCIe controllers in Endpoint mode (Minghuan Lian)
    - Factor out SCFG related function (Minghuan Lian)
    - Update ls_add_pcie_port() (Minghuan Lian)
    - Remove unused fields from struct ls_pcie (Minghuan Lian)
    - Add support for LS1043a and LS2080a (Minghuan Lian)
    - Add ls_pcie_msi_host_init() (Minghuan Lian)

    HiSilicon host bridge driver:
    - Add HiSilicon SoC Hip05 PCIe driver (Zhou Wang)

    Marvell MVEBU host bridge driver:
    - Return zero for reserved or unimplemented config space (Russell King)
    - Use exact config access size; don't read/modify/write (Russell King)
    - Use of_get_available_child_count() (Russell King)
    - Use for_each_available_child_of_node() to walk child nodes (Russell King)
    - Report full node name when reporting a DT error (Russell King)
    - Use port->name rather than "PCIe%d.%d" (Russell King)
    - Move port parsing and resource claiming to separate function (Russell King)
    - Fix memory leaks and refcount leaks (Russell King)
    - Split port parsing and resource claiming from port setup (Russell King)
    - Use gpio_set_value_cansleep() (Russell King)
    - Use devm_kcalloc() to allocate an array (Russell King)
    - Use gpio_desc to carry around gpio (Russell King)
    - Improve clock/reset handling (Russell King)
    - Add PCI Express root complex capability block (Russell King)
    - Remove code restricting accesses to slot 0 (Russell King)

    NVIDIA Tegra host bridge driver:
    - Wrap static pgprot_t initializer with __pgprot() (Ard Biesheuvel)

    Renesas R-Car host bridge driver:
    - Build pci-rcar-gen2.c only on ARM (Geert Uytterhoeven)
    - Build pcie-rcar.c only on ARM (Geert Uytterhoeven)
    - Make PCI aware of the I/O resources (Phil Edworthy)
    - Remove dependency on ARM-specific struct hw_pci (Phil Edworthy)
    - Set root bus nr to that provided in DT (Phil Edworthy)
    - Fix I/O offset for multiple host bridges (Phil Edworthy)

    ST Microelectronics SPEAr13xx host bridge driver:
    - Fix dw_pcie_cfg_read/write() usage (Gabriele Paoloni)

    Synopsys DesignWare host bridge driver:
    - Make "clocks" and "clock-names" optional DT properties (Bhupesh Sharma)
    - Use exact access size in dw_pcie_cfg_read() (Gabriele Paoloni)
    - Simplify dw_pcie_cfg_read/write() interfaces (Gabriele Paoloni)
    - Require config accesses to be naturally aligned (Gabriele Paoloni)
    - Make "num-lanes" an optional DT property (Gabriele Paoloni)
    - Move calculation of bus addresses to DRA7xx (Gabriele Paoloni)
    - Replace ARM pci_sys_data->align_resource with global function pointer (Gabriele Paoloni)
    - Factor out MSI msg setup (Lucas Stach)
    - Implement multivector MSI IRQ setup (Lucas Stach)
    - Make get_msi_addr() return phys_addr_t, not u32 (Lucas Stach)
    - Set up high part of MSI target address (Lucas Stach)
    - Fix PORT_LOGIC_LINK_WIDTH_MASK (Zhou Wang)
    - Revert "PCI: designware: Program ATU with untranslated address" (Zhou Wang)
    - Use of_pci_get_host_bridge_resources() to parse DT (Zhou Wang)
    - Make driver arch-agnostic (Zhou Wang)

    Miscellaneous:
    - Make x86 pci_subsys_init() static (Alexander Kuleshov)
    - Turn off Request Attributes to avoid Chelsio T5 Completion erratum (Hariprasad Shenai)"

    * tag 'pci-v4.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (94 commits)
    PCI: altera: Add Altera PCIe MSI driver
    PCI: hisi: Add HiSilicon SoC Hip05 PCIe driver
    PCI: layerscape: Add ls_pcie_msi_host_init()
    PCI: layerscape: Add support for LS1043a and LS2080a
    PCI: layerscape: Remove unused fields from struct ls_pcie
    PCI: layerscape: Update ls_add_pcie_port()
    PCI: layerscape: Factor out SCFG related function
    PCI: layerscape: Ignore PCIe controllers in Endpoint mode
    PCI: layerscape: Remove ls_pcie_establish_link()
    PCI: designware: Make "clocks" and "clock-names" optional DT properties
    PCI: designware: Make driver arch-agnostic
    ARM/PCI: Replace pci_sys_data->align_resource with global function pointer
    PCI: designware: Use of_pci_get_host_bridge_resources() to parse DT
    Revert "PCI: designware: Program ATU with untranslated address"
    PCI: designware: Move calculation of bus addresses to DRA7xx
    PCI: designware: Make "num-lanes" an optional DT property
    PCI: designware: Require config accesses to be naturally aligned
    PCI: designware: Simplify dw_pcie_cfg_read/write() interfaces
    PCI: designware: Use exact access size in dw_pcie_cfg_read()
    PCI: spear: Fix dw_pcie_cfg_read/write() usage
    ...

    Linus Torvalds
     

05 Nov, 2015

1 commit

  • Pull driver core updates from Greg KH:
    "Here's the "big" driver core updates for 4.4-rc1. Primarily a bunch
    of debugfs updates, with a smattering of minor driver core fixes and
    updates as well.

    All have been in linux-next for a long time"

    * tag 'driver-core-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    debugfs: Add debugfs_create_ulong()
    of: to support binding numa node to specified device in devicetree
    debugfs: Add read-only/write-only bool file ops
    debugfs: Add read-only/write-only size_t file ops
    debugfs: Add read-only/write-only x64 file ops
    debugfs: Consolidate file mode checks in debugfs_create_*()
    Revert "mm: Check if section present during memory block (un)registering"
    driver-core: platform: Provide helpers for multi-driver modules
    mm: Check if section present during memory block (un)registering
    devres: fix a for loop bounds check
    CMA: fix CONFIG_CMA_SIZE_MBYTES overflow in 64bit
    base/platform: assert that dev_pm_domain callbacks are called unconditionally
    sysfs: correctly handle short reads on PREALLOC attrs.
    base: soc: siplify ida usage
    kobject: move EXPORT_SYMBOL() macros next to corresponding definitions
    kobject: explain what kobject's sd field is
    debugfs: document that debugfs_remove*() accepts NULL and error values
    debugfs: Pass bool pointer to debugfs_create_bool()
    ACPI / EC: Fix broken 64bit big-endian users of 'global_lock'

    Linus Torvalds
     

31 Oct, 2015

2 commits


28 Oct, 2015

3 commits

  • Rob Herring
     
  • Enable building all dtb files when CONFIG_OF_ALL_DTBS is enabled. The dtbs
    are not really dependent on a platform being enabled or any other kernel
    config, so for testing coverage it is convenient to build all of the dtbs.

    In order to only build dtbs, this option can be used by creating an
    allno.config file containing:
    CONFIG_COMPILE_TEST=y
    CONFIG_OF=y
    CONFIG_OF_ALL_DTBS=y

    And then running:
    make KCONFIG_ALLCONFIG=1 allnoconfig
    make dtbs

    While building the dtbs themselves don't need a cross compiler, the
    scripts dependency does need one. This can be hacked around by
    commenting out "subdir-y += mod" in scripts/Makefile.

    Signed-off-by: Rob Herring
    Cc: Frank Rowand
    Cc: Grant Likely

    Rob Herring
     
  • fdt_translate_address() returns OF_BAD_ADDR on error. It is defined as
    a u64 value, so the variable "addr" should be defined as u64 as well.

    Fixes: fb11ffe74c79 ("of/fdt: add FDT serial scanning for earlycon")
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Rob Herring

    Masahiro Yamada
     

22 Oct, 2015

5 commits

  • for_each_child_of_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.

    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):

    //
    @@
    expression root,e;
    local idexpression child;
    @@

    for_each_child_of_node(root, child) {
    ... when != of_node_put(child)
    when != e = child
    (
    return child;
    |
    + of_node_put(child);
    ? return ...;
    )
    ...
    }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Rob Herring

    Julia Lawall
     
  • for_each_child_of_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.

    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):

    //
    @@
    local idexpression n;
    expression root,e;
    @@

    for_each_child_of_node(root,n) {
    ...
    (
    of_node_put(n);
    |
    e = n
    |
    + of_node_put(n);
    ? break;
    )
    ...
    }
    ... when != n
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Rob Herring

    Julia Lawall
     
  • for_each_matching_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.

    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):

    //
    @@
    local idexpression n;
    expression e;
    identifier l;
    @@

    for_each_matching_node(n,...) {
    ...
    (
    of_node_put(n);
    |
    e = n
    |
    + of_node_put(n);
    ? goto l;
    )
    ...
    }
    ...
    l: ... when != n
    //

    Besides the issue found by the semantic patch, this code also stores the
    device_node value in a list, which requires an of_node_get, and then cleans
    up the list on exit from the function, which requires an of_node_put.

    Signed-off-by: Julia Lawall
    Signed-off-by: Rob Herring

    Julia Lawall
     
  • for_each_child_of_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.

    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):

    //
    @@
    expression root,e;
    local idexpression child;
    @@

    for_each_child_of_node(root, child) {
    ... when != of_node_put(child)
    when != e = child
    (
    return child;
    |
    + of_node_put(child);
    ? return ...;
    )
    ...
    }
    //

    Combine the puts into code at the end of the function, for conciseness.

    Signed-off-by: Julia Lawall
    Signed-off-by: Rob Herring

    Julia Lawall
     
  • Rob Herring
     

18 Oct, 2015

1 commit


16 Oct, 2015

5 commits

  • While msi-parent is used to point to the MSI controller that
    works for all the devices behind a root complex, it doesn't
    allow configurations where each individual device can be routed
    to a separate MSI controller.

    The msi-map property provides this flexibility (and much more),
    so let's add a utility function that parses it, and return the
    corresponding MSI domain.

    Acked-by: Rob Herring
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • The msi-map property is also used to identify the MSI controller
    as a form of grown-up msi-parent property.

    Looking it up is complicated enough, and since of_msi_map_rid
    already implements this, let's turn it into an internal utility
    function. We'll put that to good use later on.

    Acked-by: Rob Herring
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • Now that we have a function that implements the complexity of the
    "msi-parent" property parsing, switch to that.

    Acked-by: Rob Herring
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • Since 126b16e2ad98 ("Docs: dt: add generic MSI bindings"),
    the definition of "msi-parent" has evolved, while maintaining
    some degree of compatibility. It can now express multiple MSI
    controllers as parents, as well as some sideband data being
    communicated to the controller.

    This patch adds the parsing of the property, iterating over
    the multiple parents until a suitable irqdomain is found.
    It can also fallback to the original parsing if the old
    binding is detected.

    This support code gets used in the subsequent patches.

    Suggested-by: Robin Murphy
    Acked-by: Rob Herring
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • The device tree property "msi-map" specifies how to create the PCI
    requester id used in some MSI controllers. Add a new function
    of_msi_map_rid() that finds the msi-map property and applies its
    translation to a given requester id.

    Reviewed-by: Marc Zyngier
    Acked-by: Rob Herring
    Signed-off-by: David Daney
    Signed-off-by: Marc Zyngier

    David Daney
     

14 Oct, 2015

4 commits

  • of_irq_find_parent has no users outside of of_irq.c, so it does not make
    sense to expose it in of_irq.h. Therefore remove the prototype and dummy
    implmeentation and make the function static instead.

    Signed-off-by: Jonas Gorski
    Signed-off-by: Rob Herring

    Jonas Gorski
     
  • Many boards use an alias in the stdout-path specification along
    with console options after a colon (e.g. serial0:115200n8). When
    using earlycon, this specification currently does not work. While
    fdt_path_offset supports alias resolution, it does not remove the
    console options by itself. Use the fdt_path_offset_namelen variant
    and provide the length of the alias to enable aliases with console
    options in the stdout-path.

    Signed-off-by: Stefan Agner
    Signed-off-by: Rob Herring

    Stefan Agner
     
  • This patch allows PCI host controller to function even if part of resources
    is unusable for some reason. An example is non-LPAE kernel on a machine
    which has some 64-bit resources. Unusable resources will be just skipped
    instead of a complete failure.

    Signed-off-by: Pavel Fedin
    Signed-off-by: Rob Herring

    Pavel Fedin
     
  • If non-LPAE kernel is booted up on a machine with 64-bit PCI resources,
    PCI controller probe fails with:

    PCI host bridge /pcie@10000000 ranges:
    IO 0x3eff0000..0x3effffff -> 0x00000000
    MEM 0x10000000..0x3efeffff -> 0x10000000
    MEM 0x8000000000..0xffffffffff -> 0x8000000000
    pci-host-generic 3f000000.pcie: resource collision: [mem 0x00000000-0xffffffff] conflicts with /pl011@9000000 [mem 0x09000000-0x09000fff]
    pci-host-generic: probe of 3f000000.pcie failed with error -16

    This happens because res->start assignment in of_pci_range_to_resource()
    truncates the upper part of the address, because res->start is of
    phys_addr_t type, which is 32-bit on non-LPAE kernels.

    This patch adds explicit recognition of 64-bit resources, preventing from
    potential problems when e. g. 0x8000001234 would be converted to
    0x00001234.

    Signed-off-by: Pavel Fedin
    Signed-off-by: Rob Herring

    Pavel Fedin
     

26 Sep, 2015

1 commit

  • Pull networking fixes from David Miller:

    1) When we run a tap on netlink sockets, we have to copy mmap'd SKBs
    instead of cloning them. From Daniel Borkmann.

    2) When converting classical BPF into eBPF, fix the setting of the
    source reg to BPF_REG_X. From Tycho Andersen.

    3) Fix igmpv3/mldv2 report parsing in the bridge multicast code, from
    Linus Lussing.

    4) Fix dst refcounting for ipv6 tunnels, from Martin KaFai Lau.

    5) Set NLM_F_REPLACE flag properly when replacing ipv6 routes, from
    Roopa Prabhu.

    6) Add some new cxgb4 PCI device IDs, from Hariprasad Shenai.

    7) Fix headroom tests and SKB leaks in ipv6 fragmentation code, from
    Florian Westphal.

    8) Check DMA mapping errors in bna driver, from Ivan Vecera.

    9) Several 8139cp bug fixes (dev_kfree_skb_any in interrupt context,
    misclearing of interrupt status in TX timeout handler, etc.) from
    David Woodhouse.

    10) In tipc, reset SKB header pointer after skb_linearize(), from Erik
    Hugne.

    11) Fix autobind races et al. in netlink code, from Herbert Xu with
    help from Tejun Heo and others.

    12) Missing SET_NETDEV_DEV in sunvnet driver, from Sowmini Varadhan.

    13) Fix various races in timewait timer and reqsk_queue_hadh_req, from
    Eric Dumazet.

    14) Fix array overruns in mac80211, from Johannes Berg and Dan
    Carpenter.

    15) Fix data race in rhashtable_rehash_one(), from Dmitriy Vyukov.

    16) Fix race between poll_one_napi and napi_disable, from Neil Horman.

    17) Fix byte order in geneve tunnel port config, from John W Linville.

    18) Fix handling of ARP replies over lightweight tunnels, from Jiri
    Benc.

    19) We can loop when fib rule dumps cross multiple SKBs, fix from Wilson
    Kok and Roopa Prabhu.

    20) Several reference count handling bug fixes in the PHY/MDIO layer
    from Russel King.

    21) Fix lockdep splat in ppp_dev_uninit(), from Guillaume Nault.

    22) Fix crash in icmp_route_lookup(), from David Ahern.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
    net: Fix panic in icmp_route_lookup
    net: update docbook comment for __mdiobus_register()
    ppp: fix lockdep splat in ppp_dev_uninit()
    net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected
    phy: marvell: add link partner advertised modes
    net: fix net_device refcounting
    phy: add phy_device_remove()
    phy: fixed-phy: properly validate phy in fixed_phy_update_state()
    net: fix phy refcounting in a bunch of drivers
    of_mdio: fix MDIO phy device refcounting
    phy: add proper phy struct device refcounting
    phy: fix mdiobus module safety
    net: dsa: fix of_mdio_find_bus() device refcount leak
    phy: fix of_mdio_find_bus() device refcount leak
    ip6_tunnel: Reduce log level in ip6_tnl_err() to debug
    ip6_gre: Reduce log level in ip6gre_err() to debug
    fib_rules: fix fib rule dumps across multiple skbs
    bnx2x: byte swap rss_key to comply to Toeplitz specs
    net: revert "net_sched: move tp->root allocation into fw_init()"
    lwtunnel: remove source and destination UDP port config option
    ...

    Linus Torvalds
     

25 Sep, 2015

1 commit

  • bus_find_device() is defined as:

    * This is similar to the bus_for_each_dev() function above, but it
    * returns a reference to a device that is 'found' for later use, as
    * determined by the @match callback.

    and it does indeed return a reference-counted pointer to the device:

    while ((dev = next_device(&i)))
    if (match(dev, data) && get_device(dev))
    ^^^^^^^^^^^^^^^
    break;
    klist_iter_exit(&i);
    return dev;

    What that means is that when we're done with the struct device, we must
    drop that reference. Neither of_phy_connect() nor of_phy_attach() did
    this when phy_connect_direct() or phy_attach_direct() failed.

    With our previous patch, phy_connect_direct() and phy_attach_direct()
    take a new refcount on the phy device when successful, so we can drop
    our local reference immediatley after these functions, whether or not
    they succeeded.

    Signed-off-by: Russell King
    Acked-by: Rob Herring
    Signed-off-by: David S. Miller

    Russell King
     

18 Sep, 2015

3 commits

  • Any overlap in the reserved memory regions (those specified in the
    reserved-memory DT node) is a bug. These bugs might go undetected as
    long as the contested region isn't used simultaneously by multiple
    software agents, which makes such bugs hard to debug. Fix this by
    printing a scary warning during boot if overlap is detected.

    Signed-off-by: Mitchel Humpherys
    Signed-off-by: Rob Herring

    Mitchel Humpherys
     
  • For now, in function device_add, the new device will be forced to
    inherit the numa node of its parent. But this will override the device's
    numa node which configured in devicetree.

    Signed-off-by: Zhen Lei
    Signed-off-by: Rob Herring

    Zhen Lei
     
  • It is perfectly legitimate for a PCI device to have an
    PCI_INTERRUPT_PIN value of zero. This happens if the device doesn't
    use interrupts, or on PCIe devices, where only MSI/MSI-X are
    supported.

    Silence the annoying "of_irq_parse_pci() failed with rc=-19" error
    messages by moving the printing code into of_irq_parse_pci(), and only
    emitting the message for cases where PCI_INTERRUPT_PIN == 0 is not the
    cause for an early exit.

    Signed-off-by: David Daney
    Signed-off-by: Rob Herring

    David Daney
     

17 Sep, 2015

1 commit

  • Both pci-host-generic and Pseries parse the "linux,pci-probe-only" property
    to engage the PCI_PROBE_ONLY mode, and both have a subtle bug that can be
    triggered if the property has no parameter.

    Provide a generic, safe implementation that can be used by both.

    [bhelgaas: fold in #include ]
    Signed-off-by: Marc Zyngier
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Rob Herring

    Marc Zyngier
     

09 Sep, 2015

1 commit

  • Pull i2c updates from Wolfram Sang:
    "Features:

    - new drivers: Renesas EMEV2, register based MUX, NXP LPC2xxx
    - core: scans DT and assigns wakeup interrupts. no driver changes needed.
    - core: some refcouting issues fixed and better API for that
    - core: new helper function for best effort block read emulation
    - slave framework: proper DT bindings and userspace instantiation
    - some bigger work for xiic, pxa, omap drivers

    .. and quite a number of smaller driver fixes, cleanups, improvements"

    * 'i2c/for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (65 commits)
    i2c: mux: reg Change ioread endianness for readback
    i2c: mux: reg: fix compilation warnings
    i2c: mux: reg: simplify register size checking
    i2c: muxes: fix leaked i2c adapter device node references
    i2c: allow specifying separate wakeup interrupt in device tree
    of/irq: export of_get_irq_byname()
    i2c: xgene-slimpro: dma_mapping_error() doesn't return an error code
    i2c: Replace I2C_CROS_EC_TUNNEL dependency
    eeprom: at24: use i2c_smbus_read_i2c_block_data_or_emulated
    i2c: core: Add support for best effort block read emulation
    i2c: lpc2k: add driver
    i2c: mux: Add register-based mux i2c-mux-reg
    i2c: dt: describe generic bindings
    i2c: slave: print warning if slave flag not set
    i2c: support 10 bit and slave addresses in sysfs 'new_device'
    i2c: take address space into account when checking for used addresses
    i2c: apply DT flags when probing
    i2c: make address check indpendent from client struct
    i2c: rename address check functions
    i2c: apply address offset for slaves, too
    ...

    Linus Torvalds
     

04 Sep, 2015

1 commit

  • Pull arm64 updates from Will Deacon:

    - Support for new architectural features introduced in ARMv8.1:
    * Privileged Access Never (PAN) to catch user pointer dereferences in
    the kernel
    * Large System Extension (LSE) for building scalable atomics and locks
    (depends on locking/arch-atomic from tip, which is included here)
    * Hardware Dirty Bit Management (DBM) for updating clean PTEs
    automatically

    - Move our PSCI implementation out into drivers/firmware/, where it can
    be shared with arch/arm/. RMK has also pulled this component branch
    and has additional patches moving arch/arm/ over. MAINTAINERS is
    updated accordingly.

    - Better BUG implementation based on the BRK instruction for trapping

    - Leaf TLB invalidation for unmapping user pages

    - Support for PROBE_ONLY PCI configurations

    - Various cleanups and non-critical fixes, including:
    * Always flush FP/SIMD state over exec()
    * Restrict memblock additions based on range of linear mapping
    * Ensure *(LIST_POISON) generates a fatal fault
    * Context-tracking syscall return no longer corrupts return value when
    not forced on.
    * Alternatives patching synchronisation/stability improvements
    * Signed sub-word cmpxchg compare fix (tickled by HAVE_CMPXCHG_LOCAL)
    * Force SMP=y
    * Hide direct DCC access from userspace
    * Fix EFI stub memory allocation when DRAM starts at 0x0

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (92 commits)
    arm64: flush FP/SIMD state correctly after execve()
    arm64: makefile: fix perf_callchain.o kconfig dependency
    arm64: set MAX_MEMBLOCK_ADDR according to linear region size
    of/fdt: make memblock maximum physical address arch configurable
    arm64: Fix source code file path in comments
    arm64: entry: always restore x0 from the stack on syscall return
    arm64: mdscr_el1: avoid exposing DCC to userspace
    arm64: kconfig: Move LIST_POISON to a safe value
    arm64: Add __exception_irq_entry definition for function graph
    arm64: mm: ensure patched kernel text is fetched from PoU
    arm64: alternatives: ensure secondary CPUs execute ISB after patching
    arm64: make ll/sc __cmpxchg_case_##name asm consistent
    arm64: dma-mapping: Simplify pgprot handling
    arm64: restore cpu suspend/resume functionality
    ARM64: PCI: do not enable resources on PROBE_ONLY systems
    arm64: cmpxchg: truncate sub-word signed types before comparison
    arm64: alternative: put secondary CPUs into polling loop during patch
    arm64/Documentation: clarify wording regarding memory below the Image
    arm64: lse: fix lse cmpxchg code indentation
    arm64: remove redundant object file list
    ...

    Linus Torvalds
     

03 Sep, 2015

1 commit

  • Pull networking updates from David Miller:
    "Another merge window, another set of networking changes. I've heard
    rumblings that the lightweight tunnels infrastructure has been voted
    networking change of the year. But what do I know?

    1) Add conntrack support to openvswitch, from Joe Stringer.

    2) Initial support for VRF (Virtual Routing and Forwarding), which
    allows the segmentation of routing paths without using multiple
    devices. There are some semantic kinks to work out still, but
    this is a reasonably strong foundation. From David Ahern.

    3) Remove spinlock fro act_bpf fast path, from Alexei Starovoitov.

    4) Ignore route nexthops with a link down state in ipv6, just like
    ipv4. From Andy Gospodarek.

    5) Remove spinlock from fast path of act_gact and act_mirred, from
    Eric Dumazet.

    6) Document the DSA layer, from Florian Fainelli.

    7) Add netconsole support to bcmgenet, systemport, and DSA. Also
    from Florian Fainelli.

    8) Add Mellanox Switch Driver and core infrastructure, from Jiri
    Pirko.

    9) Add support for "light weight tunnels", which allow for
    encapsulation and decapsulation without bearing the overhead of a
    full blown netdevice. From Thomas Graf, Jiri Benc, and a cast of
    others.

    10) Add Identifier Locator Addressing support for ipv6, from Tom
    Herbert.

    11) Support fragmented SKBs in iwlwifi, from Johannes Berg.

    12) Allow perf PMUs to be accessed from eBPF programs, from Kaixu Xia.

    13) Add BQL support to 3c59x driver, from Loganaden Velvindron.

    14) Stop using a zero TX queue length to mean that a device shouldn't
    have a qdisc attached, use an explicit flag instead. From Phil
    Sutter.

    15) Use generic geneve netdevice infrastructure in openvswitch, from
    Pravin B Shelar.

    16) Add infrastructure to avoid re-forwarding a packet in software
    that was already forwarded by a hardware switch. From Scott
    Feldman.

    17) Allow AF_PACKET fanout function to be implemented in a bpf
    program, from Willem de Bruijn"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1458 commits)
    netfilter: nf_conntrack: make nf_ct_zone_dflt built-in
    netfilter: nf_dup{4, 6}: fix build error when nf_conntrack disabled
    net: fec: clear receive interrupts before processing a packet
    ipv6: fix exthdrs offload registration in out_rt path
    xen-netback: add support for multicast control
    bgmac: Update fixed_phy_register()
    sock, diag: fix panic in sock_diag_put_filterinfo
    flow_dissector: Use 'const' where possible.
    flow_dissector: Fix function argument ordering dependency
    ixgbe: Resolve "initialized field overwritten" warnings
    ixgbe: Remove bimodal SR-IOV disabling
    ixgbe: Add support for reporting 2.5G link speed
    ixgbe: fix bounds checking in ixgbe_setup_tc for 82598
    ixgbe: support for ethtool set_rxfh
    ixgbe: Avoid needless PHY access on copper phys
    ixgbe: cleanup to use cached mask value
    ixgbe: Remove second instance of lan_id variable
    ixgbe: use kzalloc for allocating one thing
    flow: Move __get_hash_from_flowi{4,6} into flow_dissector.c
    ixgbe: Remove unused PCI bus types
    ...

    Linus Torvalds
     

02 Sep, 2015

1 commit

  • Pull devicetree updates from Rob Herring:
    - added Frank Rowand as DT maintainer in preparation for Grant's
    retirement.
    - generic MSI binding documentation and a few other minor doc updates
    - fix long standing issue with DT platorm device unregistration
    - fix loop forever bug in of_find_matching_node_by_address()

    * tag 'devicetree-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    MAINTAINERS: Add Frank Rowand as DT maintainer
    mtd: nand: pxa3xx: add optional dma for pxa architecture
    Documentation: DT: cpsw: document missing compatible
    Docs: dt: add generic MSI bindings
    drivercore: Fix unregistration path of platform devices
    of/address: Don't loop forever in of_find_matching_node_by_address().
    of: Add vendor prefix for JEDEC Solid State Technology Association
    of/platform: add function to populate default bus
    of: Add vendor prefix for Sharp Corporation

    Linus Torvalds