03 Dec, 2013

1 commit

  • Modify tg3_chip_reset() and tg3_close() to check if the PCI network
    adapter device is accessible at all in order to skip poking it or
    trying to handle a carrier loss in vain when that's not the case.
    Introduce a special PCI helper function pci_device_is_present()
    for this purpose.

    Of course, this uncovers the lack of the appropriate RTNL locking
    in tg3_suspend() and tg3_resume(), so add that locking in there
    too.

    These changes prevent tg3 from burning a CPU at 100% load level for
    solid several seconds after the Thunderbolt link is disconnected from
    a Matrox DS1 docking station.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Rafael J. Wysocki
     

28 Nov, 2013

1 commit


23 Nov, 2013

1 commit


21 Nov, 2013

2 commits

  • The pcie_portdrv .probe() method calls pci_enable_device() once, in
    pcie_port_device_register(), but the .remove() method calls
    pci_disable_device() twice, in pcie_port_device_remove() and in
    pcie_portdrv_remove().

    That causes a "disabling already-disabled device" warning when removing a
    PCIe port device. This happens all the time when removing Thunderbolt
    devices, but is also easy to reproduce with, e.g.,
    "echo 0000:00:1c.3 > /sys/bus/pci/drivers/pcieport/unbind"

    This patch removes the disable from pcie_portdrv_remove().

    [bhelgaas: changelog, tag for stable]
    Reported-by: David Bulkow
    Reported-by: Mika Westerberg
    Signed-off-by: Yinghai Lu
    Signed-off-by: Bjorn Helgaas
    CC: stable@vger.kernel.org # v2.6.32+

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

    - ACPI-based device hotplug fixes for issues introduced recently and a
    fix for an older error code path bug in the ACPI PCI host bridge
    driver

    - Fix for recently broken OMAP cpufreq build from Viresh Kumar

    - Fix for a recent hibernation regression related to s2disk

    - Fix for a locking-related regression in the ACPI EC driver from
    Puneet Kumar

    - System suspend error code path fix related to runtime PM and runtime
    PM documentation update from Ulf Hansson

    - cpufreq's conservative governor fix from Xiaoguang Chen

    - New processor IDs for intel_idle and turbostat and removal of an
    obsolete Kconfig option from Len Brown

    - New device IDs for the ACPI LPSS (Low-Power Subsystem) driver and
    ACPI-based PCI hotplug (ACPIPHP) cleanup from Mika Westerberg

    - Removal of several ACPI video DMI blacklist entries that are not
    necessary any more from Aaron Lu

    - Rework of the ACPI companion representation in struct device and code
    cleanup related to that change from Rafael J Wysocki, Lan Tianyu and
    Jarkko Nikula

    - Fixes for assigning names to ACPI-enumerated I2C and SPI devices from
    Jarkko Nikula

    * tag 'pm+acpi-2-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (24 commits)
    PCI / hotplug / ACPI: Drop unused acpiphp_debug declaration
    ACPI / scan: Set flags.match_driver in acpi_bus_scan_fixed()
    ACPI / PCI root: Clear driver_data before failing enumeration
    ACPI / hotplug: Fix PCI host bridge hot removal
    ACPI / hotplug: Fix acpi_bus_get_device() return value check
    cpufreq: governor: Remove fossil comment in the cpufreq_governor_dbs()
    ACPI / video: clean up DMI table for initial black screen problem
    ACPI / EC: Ensure lock is acquired before accessing ec struct members
    PM / Hibernate: Do not crash kernel in free_basic_memory_bitmaps()
    ACPI / AC: Remove struct acpi_device pointer from struct acpi_ac
    spi: Use stable dev_name for ACPI enumerated SPI slaves
    i2c: Use stable dev_name for ACPI enumerated I2C slaves
    ACPI: Provide acpi_dev_name accessor for struct acpi_device device name
    ACPI / bind: Use (put|get)_device() on ACPI device objects too
    ACPI: Eliminate the DEVICE_ACPI_HANDLE() macro
    ACPI / driver core: Store an ACPI device pointer in struct acpi_dev_node
    cpufreq: OMAP: Fix compilation error 'r & ret undeclared'
    PM / Runtime: Fix error path for prepare
    PM / Runtime: Update documentation around probe|remove|suspend
    cpufreq: conservative: set requested_freq to policy max when it is over policy max
    ...

    Linus Torvalds
     

20 Nov, 2013

2 commits


15 Nov, 2013

4 commits

  • This patch enhances the type safety for the kfifo API. It is now safe
    to put const data into a non const FIFO and the API will now generate a
    compiler warning when reading from the fifo where the destination
    address is pointing to a const variable.

    As a side effect the kfifo_put() does now expect the value of an element
    instead a pointer to the element. This was suggested Russell King. It
    make the handling of the kfifo_put easier since there is no need to
    create a helper variable for getting the address of a pointer or to pass
    integers of different sizes.

    IMHO the API break is okay, since there are currently only six users of
    kfifo_put().

    The code is also cleaner by kicking out the "if (0)" expressions.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Stefani Seibold
    Cc: Russell King
    Cc: Hauke Mehrtens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • Since DEVICE_ACPI_HANDLE() is now literally identical to
    ACPI_HANDLE(), replace it with the latter everywhere and drop its
    definition from include/acpi.h.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Greg Kroah-Hartman

    Rafael J. Wysocki
     
  • Modify struct acpi_dev_node to contain a pointer to struct acpi_device
    associated with the given device object (that is, its ACPI companion
    device) instead of an ACPI handle corresponding to it. Introduce two
    new macros for manipulating that pointer in a CONFIG_ACPI-safe way,
    ACPI_COMPANION() and ACPI_COMPANION_SET(), and rework the
    ACPI_HANDLE() macro to take the above changes into account.
    Drop the ACPI_HANDLE_SET() macro entirely and rework its users to
    use ACPI_COMPANION_SET() instead. For some of them who used to
    pass the result of acpi_get_child() directly to ACPI_HANDLE_SET()
    introduce a helper routine acpi_preset_companion() doing an
    equivalent thing.

    The main motivation for doing this is that there are things
    represented by struct acpi_device objects that don't have valid
    ACPI handles (so called fixed ACPI hardware features, such as
    power and sleep buttons) and we would like to create platform
    device objects for them and "glue" them to their ACPI companions
    in the usual way (which currently is impossible due to the
    lack of valid ACPI handles). However, there are more reasons
    why it may be useful.

    First, struct acpi_device pointers allow of much better type checking
    than void pointers which are ACPI handles, so it should be more
    difficult to write buggy code using modified struct acpi_dev_node
    and the new macros. Second, the change should help to reduce (over
    time) the number of places in which the result of ACPI_HANDLE() is
    passed to acpi_bus_get_device() in order to obtain a pointer to the
    struct acpi_device associated with the given "physical" device,
    because now that pointer is returned by ACPI_COMPANION() directly.
    Finally, the change should make it easier to write generic code that
    will build both for CONFIG_ACPI set and unset without adding explicit
    compiler directives to it.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Greg Kroah-Hartman
    Tested-by: Mika Westerberg # on Haswell
    Reviewed-by: Mika Westerberg
    Reviewed-by: Aaron Lu # for ATA and SDIO part

    Rafael J. Wysocki
     
  • Fix whitespace, capitalization, and spelling errors. No functional change.
    I know "busses" is not an error, but "buses" was more common, so I used it
    consistently.

    Signed-off-by: Marta Rybczynska (pci_reset_bridge_secondary_bus())
    Signed-off-by: Bjorn Helgaas
    Acked-by: Rafael J. Wysocki

    Bjorn Helgaas
     

14 Nov, 2013

2 commits

  • Pull PCI changes from Bjorn Helgaas:
    "Resource management
    - Fix host bridge window coalescing (Alexey Neyman)
    - Pass type, width, and prefetchability for window alignment (Wei Yang)

    PCI device hotplug
    - Convert acpiphp, acpiphp_ibm to dynamic debug (Lan Tianyu)

    Power management
    - Remove pci_pm_complete() (Liu Chuansheng)

    MSI
    - Fail initialization if device is not in PCI_D0 (Yijing Wang)

    MPS (Max Payload Size)
    - Use pcie_get_mps() and pcie_set_mps() to simplify code (Yijing Wang)
    - Use pcie_set_readrq() to simplify code (Yijing Wang)
    - Use cached pci_dev->pcie_mpss to simplify code (Yijing Wang)

    SR-IOV
    - Enable upstream bridges even for VFs on virtual buses (Bjorn Helgaas)
    - Use pci_is_root_bus() to avoid catching virtual buses (Wei Yang)

    Virtualization
    - Add x86 MSI masking ops (Konrad Rzeszutek Wilk)

    Freescale i.MX6
    - Support i.MX6 PCIe controller (Sean Cross)
    - Increase link startup timeout (Marek Vasut)
    - Probe PCIe in fs_initcall() (Marek Vasut)
    - Fix imprecise abort handler (Tim Harvey)
    - Remove redundant of_match_ptr (Sachin Kamat)

    Renesas R-Car
    - Support Gen2 internal PCIe controller (Valentine Barshak)

    Samsung Exynos
    - Add MSI support (Jingoo Han)
    - Turn off power when link fails (Jingoo Han)
    - Add Jingoo Han as maintainer (Jingoo Han)
    - Add clk_disable_unprepare() on error path (Wei Yongjun)
    - Remove redundant of_match_ptr (Sachin Kamat)

    Synopsys DesignWare
    - Add irq_create_mapping() (Pratyush Anand)
    - Add header guards (Seungwon Jeon)

    Miscellaneous
    - Enable native PCIe services by default on non-ACPI (Andrew Murray)
    - Cleanup _OSC usage and messages (Bjorn Helgaas)
    - Remove pcibios_last_bus boot option on non-x86 (Bjorn Helgaas)
    - Convert bus code to use bus_, drv_, and dev_groups (Greg Kroah-Hartman)
    - Remove unused pci_mem_start (Myron Stowe)
    - Make sysfs functions static (Sachin Kamat)
    - Warn on invalid return from driver probe (Stephen M. Cameron)
    - Remove Intel Haswell D3 delays (Todd E Brandt)
    - Call pci_set_master() in core if driver doesn't do it (Yinghai Lu)
    - Use pci_is_pcie() to simplify code (Yijing Wang)
    - Use PCIe capability accessors to simplify code (Yijing Wang)
    - Use cached pci_dev->pcie_cap to simplify code (Yijing Wang)
    - Removed unused "is_pcie" from struct pci_dev (Yijing Wang)
    - Simplify sysfs CPU affinity implementation (Yijing Wang)"

    * tag 'pci-v3.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (79 commits)
    PCI: Enable upstream bridges even for VFs on virtual buses
    PCI: Add pci_upstream_bridge()
    PCI: Add x86_msi.msi_mask_irq() and msix_mask_irq()
    PCI: Warn on driver probe return value greater than zero
    PCI: Drop warning about drivers that don't use pci_set_master()
    PCI: Workaround missing pci_set_master in pci drivers
    powerpc/pci: Use pci_is_pcie() to simplify code [fix]
    PCI: Update pcie_ports 'auto' behavior for non-ACPI platforms
    PCI: imx6: Probe the PCIe in fs_initcall()
    PCI: Add R-Car Gen2 internal PCI support
    PCI: imx6: Remove redundant of_match_ptr
    PCI: Report pci_pme_active() kmalloc failure
    mn10300/PCI: Remove useless pcibios_last_bus
    frv/PCI: Remove pcibios_last_bus
    PCI: imx6: Increase link startup timeout
    PCI: exynos: Remove redundant of_match_ptr
    PCI: imx6: Fix imprecise abort handler
    PCI: Fail MSI/MSI-X initialization if device is not in PCI_D0
    PCI: imx6: Remove redundant dev_err() in imx6_pcie_probe()
    x86/PCI: Coalesce multiple overlapping host bridge windows
    ...

    Linus Torvalds
     
  • Pull ACPI and power management updates from Rafael J Wysocki:

    - New power capping framework and the the Intel Running Average Power
    Limit (RAPL) driver using it from Srinivas Pandruvada and Jacob Pan.

    - Addition of the in-kernel switching feature to the arm_big_little
    cpufreq driver from Viresh Kumar and Nicolas Pitre.

    - cpufreq support for iMac G5 from Aaro Koskinen.

    - Baytrail processors support for intel_pstate from Dirk Brandewie.

    - cpufreq support for Midway/ECX-2000 from Mark Langsdorf.

    - ARM vexpress/TC2 cpufreq support from Sudeep KarkadaNagesha.

    - ACPI power management support for the I2C and SPI bus types from Mika
    Westerberg and Lv Zheng.

    - cpufreq core fixes and cleanups from Viresh Kumar, Srivatsa S Bhat,
    Stratos Karafotis, Xiaoguang Chen, Lan Tianyu.

    - cpufreq drivers updates (mostly fixes and cleanups) from Viresh
    Kumar, Aaro Koskinen, Jungseok Lee, Sudeep KarkadaNagesha, Lukasz
    Majewski, Manish Badarkhe, Hans-Christian Egtvedt, Evgeny Kapaev.

    - intel_pstate updates from Dirk Brandewie and Adrian Huang.

    - ACPICA update to version 20130927 includig fixes and cleanups and
    some reduction of divergences between the ACPICA code in the kernel
    and ACPICA upstream in order to improve the automatic ACPICA patch
    generation process. From Bob Moore, Lv Zheng, Tomasz Nowicki, Naresh
    Bhat, Bjorn Helgaas, David E Box.

    - ACPI IPMI driver fixes and cleanups from Lv Zheng.

    - ACPI hotplug fixes and cleanups from Bjorn Helgaas, Toshi Kani, Zhang
    Yanfei, Rafael J Wysocki.

    - Conversion of the ACPI AC driver to the platform bus type and
    multiple driver fixes and cleanups related to ACPI from Zhang Rui.

    - ACPI processor driver fixes and cleanups from Hanjun Guo, Jiang Liu,
    Bartlomiej Zolnierkiewicz, Mathieu Rhéaume, Rafael J Wysocki.

    - Fixes and cleanups and new blacklist entries related to the ACPI
    video support from Aaron Lu, Felipe Contreras, Lennart Poettering,
    Kirill Tkhai.

    - cpuidle core cleanups from Viresh Kumar and Lorenzo Pieralisi.

    - cpuidle drivers fixes and cleanups from Daniel Lezcano, Jingoo Han,
    Bartlomiej Zolnierkiewicz, Prarit Bhargava.

    - devfreq updates from Sachin Kamat, Dan Carpenter, Manish Badarkhe.

    - Operation Performance Points (OPP) core updates from Nishanth Menon.

    - Runtime power management core fix from Rafael J Wysocki and update
    from Ulf Hansson.

    - Hibernation fixes from Aaron Lu and Rafael J Wysocki.

    - Device suspend/resume lockup detection mechanism from Benoit Goby.

    - Removal of unused proc directories created for various ACPI drivers
    from Lan Tianyu.

    - ACPI LPSS driver fix and new device IDs for the ACPI platform scan
    handler from Heikki Krogerus and Jarkko Nikula.

    - New ACPI _OSI blacklist entry for Toshiba NB100 from Levente Kurusa.

    - Assorted fixes and cleanups related to ACPI from Andy Shevchenko, Al
    Stone, Bartlomiej Zolnierkiewicz, Colin Ian King, Dan Carpenter,
    Felipe Contreras, Jianguo Wu, Lan Tianyu, Yinghai Lu, Mathias Krause,
    Liu Chuansheng.

    - Assorted PM fixes and cleanups from Andy Shevchenko, Thierry Reding,
    Jean-Christophe Plagniol-Villard.

    * tag 'pm+acpi-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (386 commits)
    cpufreq: conservative: fix requested_freq reduction issue
    ACPI / hotplug: Consolidate deferred execution of ACPI hotplug routines
    PM / runtime: Use pm_runtime_put_sync() in __device_release_driver()
    ACPI / event: remove unneeded NULL pointer check
    Revert "ACPI / video: Ignore BIOS initial backlight value for HP 250 G1"
    ACPI / video: Quirk initial backlight level 0
    ACPI / video: Fix initial level validity test
    intel_pstate: skip the driver if ACPI has power mgmt option
    PM / hibernate: Avoid overflow in hibernate_preallocate_memory()
    ACPI / hotplug: Do not execute "insert in progress" _OST
    ACPI / hotplug: Carry out PCI root eject directly
    ACPI / hotplug: Merge device hot-removal routines
    ACPI / hotplug: Make acpi_bus_hot_remove_device() internal
    ACPI / hotplug: Simplify device ejection routines
    ACPI / hotplug: Fix handle_root_bridge_removal()
    ACPI / hotplug: Refuse to hot-remove all objects with disabled hotplug
    ACPI / scan: Start matching drivers after trying scan handlers
    ACPI: Remove acpi_pci_slot_init() headers from internal.h
    ACPI / blacklist: fix name of ThinkPad Edge E530
    PowerCap: Fix build error with option -Werror=format-security
    ...

    Conflicts:
    arch/arm/mach-omap2/opp.c
    drivers/Kconfig
    drivers/spi/spi.c

    Linus Torvalds
     

12 Nov, 2013

1 commit

  • Pull devicetree updates from Rob Herring:
    "DeviceTree updates for 3.13. This is a bit larger pull request than
    usual for this cycle with lots of clean-up.

    - Cross arch clean-up and consolidation of early DT scanning code.
    - Clean-up and removal of arch prom.h headers. Makes arch specific
    prom.h optional on all but Sparc.
    - Addition of interrupts-extended property for devices connected to
    multiple interrupt controllers.
    - Refactoring of DT interrupt parsing code in preparation for
    deferred probe of interrupts.
    - ARM cpu and cpu topology bindings documentation.
    - Various DT vendor binding documentation updates"

    * tag 'devicetree-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (82 commits)
    powerpc: add missing explicit OF includes for ppc
    dt/irq: add empty of_irq_count for !OF_IRQ
    dt: disable self-tests for !OF_IRQ
    of: irq: Fix interrupt-map entry matching
    MIPS: Netlogic: replace early_init_devtree() call
    of: Add Panasonic Corporation vendor prefix
    of: Add Chunghwa Picture Tubes Ltd. vendor prefix
    of: Add AU Optronics Corporation vendor prefix
    of/irq: Fix potential buffer overflow
    of/irq: Fix bug in interrupt parsing refactor.
    of: set dma_mask to point to coherent_dma_mask
    of: add vendor prefix for PHYTEC Messtechnik GmbH
    DT: sort vendor-prefixes.txt
    of: Add vendor prefix for Cadence
    of: Add empty for_each_available_child_of_node() macro definition
    arm/versatile: Fix versatile irq specifications.
    of/irq: create interrupts-extended property
    microblaze/pci: Drop PowerPC-ism from irq parsing
    of/irq: Create of_irq_parse_and_map_pci() to consolidate arch code.
    of/irq: Use irq_of_parse_and_map()
    ...

    Linus Torvalds
     

11 Nov, 2013

1 commit

  • Pull ARM driver updates from Olof Johansson:
    "Updates of SoC-near drivers and other driver updates that makes more
    sense to take through our tree. In this case it's involved:

    - Some Davinci driver updates that has required corresponding
    platform code changes (gpio mostly)
    - CCI bindings and a few driver updates
    - Marvell mvebu patches for PCI MSI support (could have gone through
    the PCI tree for this release, but they were acked by Bjorn for
    3.12 so we kept them through arm-soc).
    - Marvell dove switch-over to DT-based PCIe configuration
    - Misc updates for Samsung platform dmaengine drivers"

    * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (32 commits)
    ARM: S3C24XX: add dma pdata for s3c2410, s3c2440 and s3c2442
    dmaengine: s3c24xx-dma: add support for the s3c2410 type of controller
    ARM: S3C24XX: Fix possible dma selection warning
    PCI: mvebu: make local functions static
    PCI: mvebu: add I/O access wrappers
    PCI: mvebu: Dynamically detect if the PEX link is up to enable hot plug
    ARM: mvebu: fix gated clock documentation
    ARM: dove: remove legacy pcie and clock init
    ARM: dove: switch to DT probed mbus address windows
    ARM: SAMSUNG: set s3c24xx_dma_filter for s3c64xx-spi0 device
    ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and s3c2443
    dmaengine: add driver for Samsung s3c24xx SoCs
    ARM: S3C24XX: number the dma clocks
    PCI: mvebu: add support for Marvell Dove SoCs
    PCI: mvebu: add support for reset on GPIO
    PCI: mvebu: remove subsys_initcall
    PCI: mvebu: increment nports only for registered ports
    PCI: mvebu: move clock enable before register access
    PCI: mvebu: add support for MSI
    irqchip: armada-370-xp: implement MSI support
    ...

    Linus Torvalds
     

08 Nov, 2013

5 commits

  • Pull s390 updates from Martin Schwidefsky:
    "The bulk of the patches for the 3.13 merge window.

    Heiko spent quite a bit of work to improve the code generation for the
    kernel. That includes the exploitation of the interlocked-access
    facility for the atomics and bitops implementation and the improvement
    for the -march and -mtune compiler settings.

    Another important change is the removal of the user_mode=home option,
    user processes now always run in primary space. The storage keys are
    not initialized at system startup any more, with that the storage key
    removal work is complete. For the PCI support the hibernation hooks
    have been implemented.

    And as usual cleanup and fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (62 commits)
    s390/scm_blk: fix endless loop for requests != REQ_TYPE_FS
    s390/mm,tlb: correct tlb flush on page table upgrade
    s390/mm: page_table_realloc returns failure
    s390: allow to set gcc -mtune flag
    s390/percpu: remove this_cpu_xor() implementation
    s390/vtime: correct idle time calculation
    s390/time: fix get_tod_clock_ext inline assembly
    tty/hvc_iucv: remove redundant NULL check
    s390/dasd: Write to profile data area only if it is available
    s390: convert use of typedef ctl_table to struct ctl_table
    s390/pci: cleanup function information block
    s390/pci: remove CONFIG_PCI_DEBUG dependancy
    s390/pci: message cleanup
    Update default configuration
    s390: add a couple of useful defconfigs
    s390/percpu: make use of interlocked-access facility 1 instructions
    s390/percpu: use generic percpu ops for CONFIG_32BIT
    s390/compat: make psw32_user_bits a constant value again
    s390: fix handling of runtime instrumentation psw bit
    s390: fix save and restore of the floating-point-control register
    ...

    Linus Torvalds
     
  • * pci/misc:
    PCI: Enable upstream bridges even for VFs on virtual buses
    PCI: Add pci_upstream_bridge()
    PCI: Add x86_msi.msi_mask_irq() and msix_mask_irq()

    Bjorn Helgaas
     
  • Previously we enabled the upstream PCI-to-PCI bridge only when
    "dev->bus->self != NULL". In the case of a VF on a virtual bus, where
    "bus->self == NULL", we didn't enable the upstream bridge.

    This fixes that by enabling the upstream bridge of the PF corresponding to
    the VF.

    Signed-off-by: Bjorn Helgaas
    Acked-by: Yinghai Lu

    Bjorn Helgaas
     
  • * acpi-hotplug:
    ACPI / hotplug: Consolidate deferred execution of ACPI hotplug routines
    ACPI / hotplug: Do not execute "insert in progress" _OST
    ACPI / hotplug: Carry out PCI root eject directly
    ACPI / hotplug: Merge device hot-removal routines
    ACPI / hotplug: Make acpi_bus_hot_remove_device() internal
    ACPI / hotplug: Simplify device ejection routines
    ACPI / hotplug: Fix handle_root_bridge_removal()
    ACPI / hotplug: Refuse to hot-remove all objects with disabled hotplug
    ACPI / scan: Start matching drivers after trying scan handlers
    ACPI: Remove acpi_pci_slot_init() headers from internal.h

    Conflicts:
    include/acpi/acpiosxf.h (with the 'acpica' branch)

    Rafael J. Wysocki
     
  • There are two different interfaces for queuing up work items on the
    ACPI hotplug workqueue, alloc_acpi_hp_work() used by PCI and PCI host
    bridge hotplug code and acpi_os_hotplug_execute() used by the common
    ACPI hotplug code and docking stations. They both are somewhat
    cumbersome to use and work slightly differently.

    The users of alloc_acpi_hp_work() have to submit a work function that
    will extract the necessary data items from a struct acpi_hp_work
    object allocated by alloc_acpi_hp_work() and then will free that
    object, while it would be more straightforward to simply use a work
    function with one more argument and let the interface take care of
    the execution details.

    The users of acpi_os_hotplug_execute() also have to deal with the
    fact that it takes only one argument in addition to the work function
    pointer, although acpi_os_execute_deferred() actually takes care of
    the allocation and freeing of memory, so it would have been able to
    pass more arguments to the work function if it hadn't been
    constrained by the connection with acpi_os_execute().

    Moreover, while alloc_acpi_hp_work() makes GFP_KERNEL memory
    allocations, which is correct, because hotplug work items are
    always queued up from process context, acpi_os_hotplug_execute()
    uses GFP_ATOMIC, as that is needed by acpi_os_execute(). Also,
    acpi_os_execute_deferred() queued up by it waits for the ACPI event
    workqueues to flush before executing the work function, whereas
    alloc_acpi_hp_work() can't do anything similar. That leads to
    somewhat arbitrary differences in behavior between various ACPI
    hotplug code paths and has to be straightened up.

    For this reason, replace both alloc_acpi_hp_work() and
    acpi_os_hotplug_execute() with a single interface,
    acpi_hotplug_execute(), combining their behavior and being more
    friendly to its users than any of the two.

    Signed-off-by: Rafael J. Wysocki
    Tested-by: Mika Westerberg

    Rafael J. Wysocki
     

07 Nov, 2013

4 commits

  • Pull driver core / sysfs patches from Greg KH:
    "Here's the big driver core / sysfs update for 3.13-rc1.

    There's lots of dev_groups updates for different subsystems, as they
    all get slowly migrated over to the safe versions of the attribute
    groups (removing userspace races with the creation of the sysfs
    files.) Also in here are some kobject updates, devres expansions, and
    the first round of Tejun's sysfs reworking to enable it to be used by
    other subsystems as a backend for an in-kernel filesystem.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'driver-core-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (83 commits)
    sysfs: rename sysfs_assoc_lock and explain what it's about
    sysfs: use generic_file_llseek() for sysfs_file_operations
    sysfs: return correct error code on unimplemented mmap()
    mdio_bus: convert bus code to use dev_groups
    device: Make dev_WARN/dev_WARN_ONCE print device as well as driver name
    sysfs: separate out dup filename warning into a separate function
    sysfs: move sysfs_hash_and_remove() to fs/sysfs/dir.c
    sysfs: remove unused sysfs_get_dentry() prototype
    sysfs: honor bin_attr.attr.ignore_lockdep
    sysfs: merge sysfs_elem_bin_attr into sysfs_elem_attr
    devres: restore zeroing behavior of devres_alloc()
    sysfs: fix sysfs_write_file for bin file
    input: gameport: convert bus code to use dev_groups
    input: serio: remove bus usage of dev_attrs
    input: serio: use DEVICE_ATTR_RO()
    i2o: convert bus code to use dev_groups
    memstick: convert bus code to use dev_groups
    tifm: convert bus code to use dev_groups
    virtio: convert bus code to use dev_groups
    ipack: convert bus code to use dev_groups
    ...

    Linus Torvalds
     
  • Certain platforms do not allow writes in the MSI-X BARs to setup or tear
    down vector values. To combat against the generic code trying to write to
    that and either silently being ignored or crashing due to the pagetables
    being marked R/O this patch introduces a platform override.

    Note that we keep two separate, non-weak, functions default_mask_msi_irqs()
    and default_mask_msix_irqs() for the behavior of the arch_mask_msi_irqs()
    and arch_mask_msix_irqs(), as the default behavior is needed by x86 PCI
    code.

    For Xen, which does not allow the guest to write to MSI-X tables - as the
    hypervisor is solely responsible for setting the vector values - we
    implement two nops.

    This fixes a Xen guest crash when passing a PCI device with MSI-X to the
    guest. See the bugzilla for more details.

    [bhelgaas: add bugzilla info]
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=64581
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bjorn Helgaas
    CC: Sucheta Chakraborty
    CC: Zhenzhong Duan

    Konrad Rzeszutek Wilk
     
  • * pci/misc:
    PCI: Warn on driver probe return value greater than zero
    PCI: Drop warning about drivers that don't use pci_set_master()
    PCI: Workaround missing pci_set_master in pci drivers
    PCI: Update pcie_ports 'auto' behavior for non-ACPI platforms

    Bjorn Helgaas
     
  • Ages ago, drivers could return values greater than zero from their probe
    function and this would be regarded as success.

    But after f3ec4f87d607 ("PCI: change device runtime PM settings for probe
    and remove") and 967577b06241 ("PCI/PM: Keep runtime PM enabled for unbound
    PCI devices"), we set dev->driver to NULL if the driver's probe function
    returns a value greater than zero.

    __pci_device_probe() treats this as success, and drivers can still mostly
    work even with dev->driver == NULL, but PCI power management doesn't work,
    and we don't call the driver's remove function on rmmod.

    To help catch these driver problems, issue a warning in this case.

    [bhelgaas: changelog]
    Signed-off-by: Stephen M. Cameron
    Signed-off-by: Bjorn Helgaas

    Stephen M. Cameron
     

06 Nov, 2013

2 commits

  • f41f064cf4 ("PCI: Workaround missing pci_set_master in pci drivers") made
    pci_enable_bridge() turn on bus mastering if the driver hadn't done so
    already. It also added a warning in this case. But there's no reason to
    warn about it unless it's actually a problem to enable bus mastering here.

    This patch drops the warning because I'm not aware of any such problem.

    Signed-off-by: Bjorn Helgaas
    CC: Paul Bolle

    Bjorn Helgaas
     
  • Ben Herrenschmidt found that commit 928bea964827 ("PCI: Delay enabling
    bridges until they're needed") breaks PCI in some powerpc environments.

    The reason is that the PCIe port driver will call pci_enable_device() on
    the bridge, so the device is enabled, but skips pci_set_master because
    pcie_port_auto and no acpi on powerpc.

    Because of that, pci_enable_bridge() later on (called as a result of the
    child device driver doing pci_enable_device) will see the bridge as
    already enabled and will not call pci_set_master() on it.

    Fixed by add checking in pci_enable_bridge, and call pci_set_master
    if driver skip that.

    That will make the code more robot and wade off problem for missing
    pci_set_master in drivers.

    Reported-by: Benjamin Herrenschmidt
    Signed-off-by: Yinghai Lu
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     

01 Nov, 2013

8 commits

  • The pcie_ports parameter, which defaults to 'auto', allows a user
    to specify if PCIe port services are disabled ('compat'), always
    enabled ('native'), or only used when allowed by the BIOS
    ('auto').

    Where CONFIG_ACPI isn't enabled, as is often the case for non
    x86/ia64 platforms, the 'auto' behavior results in that of
    'compat'. Thus in order to use port services on these platforms
    'pcie_ports=native' must be added to the kernel command line.

    This patch results in the 'native' behavior being followed where
    'auto' is selected and ACPI is not enabled.

    Signed-off-by: Andrew Murray
    Signed-off-by: Bjorn Helgaas

    Andrew Murray
     
  • * pci/misc:
    PCI: Report pci_pme_active() kmalloc failure
    mn10300/PCI: Remove useless pcibios_last_bus
    frv/PCI: Remove pcibios_last_bus
    PCI: Fail MSI/MSI-X initialization if device is not in PCI_D0
    x86/PCI: Coalesce multiple overlapping host bridge windows
    MAINTAINERS: Add arch/x86/pci to PCI file patterns
    PCI/PM: Remove pci_pm_complete()
    PCI: Add pci_dev_show_local_cpu() to simplify code
    mn10300/PCI: Remove unused pci_mem_start
    cris/PCI: Remove unused pci_mem_start
    PCI: Make pci_dev_pm_ops static

    Conflicts:
    drivers/pci/pci-sysfs.c

    Bjorn Helgaas
     
  • * pci/yijing-mps-v1:
    drm/radeon: use pcie_get_readrq() and pcie_set_readrq() to simplify code
    staging: et131x: Use pci_dev->pcie_mpss and pcie_set_readrq() to simplify code
    IB/qib: Drop qib_tune_pcie_caps() and qib_tune_pcie_coalesce() return values
    IB/qib: Use pcie_set_mps() and pcie_get_mps() to simplify code
    IB/qib: Use pci_is_root_bus() to check whether it is a root bus
    tile/PCI: use cached pci_dev->pcie_mpss to simplify code
    PCI: Export pcie_set_mps() and pcie_get_mps()

    Bjorn Helgaas
     
  • * pci/host-rcar:
    PCI: Add R-Car Gen2 internal PCI support

    Bjorn Helgaas
     
  • * pci/host-imx6:
    PCI: imx6: Probe the PCIe in fs_initcall()
    PCI: imx6: Remove redundant of_match_ptr
    PCI: imx6: Increase link startup timeout
    PCI: imx6: Fix imprecise abort handler
    PCI: imx6: Remove redundant dev_err() in imx6_pcie_probe()

    Bjorn Helgaas
     
  • * pci/host-exynos:
    PCI: exynos: Remove redundant of_match_ptr
    PCI: designware: Add irq_create_mapping()
    PCI: designware: Make dw_pcie_rd_own_conf(), etc., static
    PCI: designware: Add header guards
    PCI: exynos: Add missing clk_disable_unprepare() on error path

    Bjorn Helgaas
     
  • * pci/gregkh-driver-core:
    PCI: Make pci_bus_attrs, pci_dev_attrs, dev_rescan_attr, dev_remove_attr, vga_attr static
    PCI: convert bus code to use dev_groups
    PCI: convert bus code to use drv_groups
    PCI: convert bus code to use bus_groups

    Bjorn Helgaas
     
  • Probe the PCIe driver in fs_initcall() instead of module_init()
    to assure that pci_assign_unassigned_resources() will be called
    early. This function is called in dw_pcie_host_init(), which is
    in turn called from imx6_add_pcie_port(), which is called from
    imx6_pcie_probe(). If this is not called early, we will hit
    resource collisions since pcieport driver is then probed way too
    late.

    Signed-off-by: Marek Vasut
    Signed-off-by: Bjorn Helgaas
    Acked-by: Shawn Guo
    Cc: Frank Li
    Cc: Jingoo Han
    Cc: Mohit KUMAR
    Cc: Pratyush Anand
    Cc: Richard Zhu
    Cc: Sascha Hauer
    Cc: Sean Cross
    Cc: Siva Reddy Kallam
    Cc: Srikanth T Shivanand
    Cc: Tim Harvey
    Cc: Troy Kisky
    Cc: Yinghai Lu

    Marek Vasut
     

31 Oct, 2013

2 commits

  • This adds internal PCI controller driver for R-Car Gen2 SoC. There are
    three PCI controllers available with only a single EHCI/OHCI device
    built-in on each PCI bus. This gives us three USB channels. Channel 0 is
    shared with the USBHS device, while channel 2 is shared with the USBSS.

    The PCI controllers do not support I/O port space mapping, and it is not
    needed here.

    Signed-off-by: Valentine Barshak
    Signed-off-by: Bjorn Helgaas

    Valentine Barshak
     
  • imx6_pcie_of_match is always compiled in because PCI_IMX6 depends on
    SOC_IMX6Q, which only supports OF build. Hence of_match_ptr is not
    required.

    [bhelgaas: add changelog details from Shawn]
    Signed-off-by: Sachin Kamat
    Signed-off-by: Bjorn Helgaas
    Acked-by: Shawn Guo
    Cc: Sean Cross

    Sachin Kamat
     

30 Oct, 2013

4 commits

  • Commit 2dc4128 (ACPI / hotplug / PCI: Avoid doing too much for
    spurious notifies) changed the enable_slot() to check return value of
    pci_scan_slot() and if it is zero return early from the function. It
    means that there were no new devices in this particular slot.

    However, if a device appeared deeper in the hierarchy the code now
    ignores it causing things like Thunderbolt chaining fail to recognize
    new devices.

    The problem with Alex Williamson's machine was solved with commit
    a47d8c8 (ACPI / hotplug / PCI: Avoid parent bus rescans on spurious
    device checks) and hence we should be able to restore the original
    functionality that we always rescan on bus check notification.

    On a device check notification we still check what acpiphp_rescan_slot()
    returns and on zero bail out early.

    Fixes: 2dc41281b1d1 (ACPI / hotplug / PCI: Avoid doing too much for spurious notifies)
    Signed-off-by: Mika Westerberg
    Tested-by: Alex Williamson
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     
  • Previously, if kmalloc() failed, we claimed "PME# enabled" in dmesg,
    even though we didn't add the device to the pci_pme_list. This prints
    a more correct warning.

    Signed-off-by: Bjorn Helgaas
    Acked-by: Rafael J. Wysocki

    Bjorn Helgaas
     
  • A longer link startup timeout is required when certain PCI switches are
    attached to the root complex. This was tested with a Pericom switch
    and a PLX switch.

    Signed-off-by: Marek Vasut
    Signed-off-by: Bjorn Helgaas
    Acked-by: Tim Harvey
    Acked-by: Shawn Guo

    Marek Vasut
     
  • This driver is DT only. Hence of_match_ptr is not required.

    Signed-off-by: Sachin Kamat
    Signed-off-by: Bjorn Helgaas
    Acked-by: Jingoo Han

    Sachin Kamat