08 Aug, 2013

1 commit

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

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

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

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

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

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

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

    Rafael J. Wysocki
     

03 Aug, 2013

1 commit

  • Pull PCI fixes from Bjorn Helgaas:
    "Yinghai fixed a couple regressions: one resource assignment problem
    introduced in v3.10 that showed up with SR-IOV on powerpc, and another
    SR-IOV hot-remove issue related to refcounting changes we merged for
    v3.11.

    Yinghai is still working on another SR-IOV-related fix or two, which
    will be simpler if pciehp is non-modular, so I included the Kconfig
    changes now to get them in earlier.

    Finally, a minor fix for the ARM Marvell EBU host bridge driver that
    was merged for v3.11

    Hotplug:
    PCI: pciehp: Fix null pointer deref when hot-removing SR-IOV device
    PCI: hotplug: Convert to be builtin only, not modular
    PCI: pciehp: Convert pciehp to be builtin only, not modular

    Resource allocation:
    PCI: Retry allocation of only the resource type that failed

    ARM:
    PCI: mvebu: Disable prefetchable memory support in PCI-to-PCI bridge"

    * tag 'pci-v3.11-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: mvebu: Disable prefetchable memory support in PCI-to-PCI bridge
    PCI: Retry allocation of only the resource type that failed
    PCI: pciehp: Convert pciehp to be builtin only, not modular
    PCI: hotplug: Convert to be builtin only, not modular
    PCI: pciehp: Fix null pointer deref when hot-removing SR-IOV device

    Linus Torvalds
     

02 Aug, 2013

1 commit

  • The Marvell PCIe driver uses an emulated PCI-to-PCI bridge to be able
    to dynamically set up MBus address decoding windows for PCI I/O and
    memory regions depending on the PCI devices enumerated by Linux.

    However, this emulated PCI-to-PCI bridge logic makes the Linux PCI
    core believe that prefetchable memory regions are supported (because
    the registers are read/write), while in fact no adress decoding window
    is ever created for such regions. Since the Marvell MBus address
    decoding windows do not distinguish memory regions and prefetchable
    memory regions, this patch takes a simple approach: change the
    PCI-to-PCI bridge emulation to let the Linux PCI core know that we
    don't support prefetchable memory regions.

    To achieve this, we simply make the prefetchable memory base a
    read-only register that always returns 0. Reading/writing all the
    other prefetchable memory related registers has no effect.

    This problem was originally reported by Finn Hoffmann
    , who couldn't get a RTL8111/8168B PCI NIC working
    on the NSA310 Kirkwood platform after updating to 3.11-rc. The problem
    was that the PCI-to-PCI bridge emulation was making the Linux PCI core
    believe that we support prefetchable memory, so the Linux PCI core was
    only filling the prefetchable memory base and limit registers, which
    does not lead to a MBus window being created. The below patch has been
    confirmed by Finn Hoffmann to fix his problem on Kirkwood, and has
    otherwise been successfully tested on the Armada XP GP platform with a
    e1000e PCIe NIC and a Marvell SATA PCIe card.

    Reported-by: Finn Hoffmann
    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Bjorn Helgaas

    Thomas Petazzoni
     

26 Jul, 2013

4 commits

  • Ben Herrenschmidt reported the following problem:

    - The bus has space for all desired MMIO resources, including optional
    space for SR-IOV devices
    - We attempt to allocate I/O port space, but it fails because the bus
    has no I/O space
    - Because of the I/O allocation failure, we retry MMIO allocation,
    requesting only the required space, without the optional SR-IOV space

    This means we don't allocate the optional SR-IOV space, even though we
    could.

    This is related to 0c5be0cb0e ("PCI: Retry on IORESOURCE_IO type
    allocations").

    This patch changes how we handle allocation failures. We will now retry
    allocation of only the resource type that failed. If MMIO allocation
    fails, we'll retry only MMIO allocation. If I/O port allocation fails,
    we'll retry only I/O port allocation.

    [bhelgaas: changelog]
    Reference: https://lkml.kernel.org/r/1367712653.11982.19.camel@pasglop
    Reported-by: Benjamin Herrenschmidt
    Tested-by: Gavin Shan
    Signed-off-by: Yinghai Lu
    Signed-off-by: Bjorn Helgaas
    CC: stable@vger.kernel.org # v3.10+

    Yinghai Lu
     
  • Convert pciehp to be builtin only, with no module option.

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

    Bjorn Helgaas
     
  • Convert CONFIG_HOTPLUG_PCI from tristate to bool. This only affects
    the hotplug core; several of the hotplug drivers can still be modules.

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

    Bjorn Helgaas
     
  • Hot-removing a device with SR-IOV enabled causes a null pointer dereference
    in v3.9 and v3.10.

    This is a regression caused by ba518e3c17 ("PCI: pciehp: Iterate over all
    devices in slot, not functions 0-7"). When we iterate over the
    bus->devices list, we first remove the PF, which also removes all the VFs
    from the list. Then the list iterator blows up because more than just the
    current entry was removed from the list.

    ac205b7bb7 ("PCI: make sriov work with hotplug remove") works around a
    similar problem in pci_stop_bus_devices() by iterating over the list in
    reverse, so the VFs are stopped and removed from the list first, before the
    PF.

    This patch changes pciehp_unconfigure_device() to iterate over the list in
    reverse, too.

    [bhelgaas: bugzilla, changelog]
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=60604
    Signed-off-by: Yinghai Lu
    Signed-off-by: Bjorn Helgaas
    Acked-by: Yijing Wang
    CC: stable@vger.kernel.org # v3.9+

    Yinghai Lu
     

24 Jul, 2013

1 commit


04 Jul, 2013

7 commits

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

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

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

    MSI
    - Conserve interrupt resources on x86 (Alexander Gordeev)

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

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

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

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

    Linus Torvalds
     
  • For the workqueue creation interfaces that do not expect format strings,
    make sure they cannot accidently be parsed that way. Additionally, clean
    up calls made with a single parameter that would be handled as a format
    string. Many callers are passing potentially dynamic string content, so
    use "%s" in those cases to avoid any potential accidents.

    Signed-off-by: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

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

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

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

    Highlights:

    - Hotplug changes to support graceful hot-removal failures.

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

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

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

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

    - Lighter weight freezing of tasks.

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

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

    - cpufreq updates

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

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

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

    - ACPICA update

    A usual bunch of updates from the ACPICA upstream.

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

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

    - cpuidle updates

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

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

    - ACPI power management updates

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

    - ACPI documentation updates

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

    - Assorted ACPI updates

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

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

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

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

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

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

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

    - Assorted power management updates

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

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

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

    PM QoS documentation is updated by Lan Tianyu.

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

    - devfreq updates

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

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

    - OMAP power management updates

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

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

    Linus Torvalds
     
  • …nux/kernel/git/konrad/xen

    Pull Xen bugfixes from Konrad Rzeszutek Wilk:
    - Fix memory leak when CPU hotplugging.
    - Compile bugs with various #ifdefs
    - Fix state changes in Xen PCI front not dealing well with new
    toolstack.
    - Cleanups in code (use pr_*, fix 80 characters splits, etc)
    - Long standing bug in double-reporting the steal time

    * tag 'stable/for-linus-3.11-rc0-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/time: remove blocked time accounting from xen "clockchip"
    xen: Convert printks to pr_<level>
    xen: ifdef CONFIG_HIBERNATE_CALLBACKS xen_*_suspend
    xen/pcifront: Deal with toolstack missing 'XenbusStateClosing' state.
    xen/time: Free onlined per-cpu data structure if we want to online it again.
    xen/time: Check that the per_cpu data structure has data before freeing.
    xen/time: Don't leak interrupt name when offlining.
    xen/time: Encapsulate the struct clock_event_device in another structure.
    xen/spinlock: Don't leak interrupt name when offlining.
    xen/smp: Don't leak interrupt name when offlining.
    xen/smp: Set the per-cpu IRQ number to a valid default.
    xen/smp: Introduce a common structure to contain the IRQ name and interrupt line.
    xen/smp: Coalesce the free_irq calls in one function.
    xen-pciback: fix error return code in pcistub_irq_handler_switch()

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:
    "This is the bulk of the s390 patches for the 3.11 merge window.

    Notable enhancements are: the block timeout patches for dasd from
    Hannes, and more work on the PCI support front. In addition some
    cleanup and the usual bug fixing."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (42 commits)
    s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set
    s390/dasd: Add 'timeout' attribute
    block: check for timeout function in blk_rq_timed_out()
    block/dasd: detailed I/O errors
    s390/dasd: Reduce amount of messages for specific errors
    s390/dasd: Implement block timeout handling
    s390/dasd: process all requests in the device tasklet
    s390/dasd: make number of retries configurable
    s390/dasd: Clarify comment
    s390/hwsampler: Updated misleading member names in hws_data_entry
    s390/appldata_net_sum: do not use static data
    s390/appldata_mem: do not use static data
    s390/vmwatchdog: do not use static data
    s390/airq: simplify adapter interrupt code
    s390/pci: remove per device debug attribute
    s390/dma: remove gratuitous brackets
    s390/facility: decompose test_facility()
    s390/sclp: remove duplicated include from sclp_ctl.c
    s390/irq: store interrupt information in pt_regs
    s390/drivers: Cocci spatch "ptr_ret.spatch"
    ...

    Linus Torvalds
     
  • Pull second set of VFS changes from Al Viro:
    "Assorted f_pos race fixes, making do_splice_direct() safe to call with
    i_mutex on parent, O_TMPFILE support, Jeff's locks.c series,
    ->d_hash/->d_compare calling conventions changes from Linus, misc
    stuff all over the place."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)
    Document ->tmpfile()
    ext4: ->tmpfile() support
    vfs: export lseek_execute() to modules
    lseek_execute() doesn't need an inode passed to it
    block_dev: switch to fixed_size_llseek()
    cpqphp_sysfs: switch to fixed_size_llseek()
    tile-srom: switch to fixed_size_llseek()
    proc_powerpc: switch to fixed_size_llseek()
    ubi/cdev: switch to fixed_size_llseek()
    pci/proc: switch to fixed_size_llseek()
    isapnp: switch to fixed_size_llseek()
    lpfc: switch to fixed_size_llseek()
    locks: give the blocked_hash its own spinlock
    locks: add a new "lm_owner_key" lock operation
    locks: turn the blocked_list into a hashtable
    locks: convert fl_link to a hlist_node
    locks: avoid taking global lock if possible when waking up blocked waiters
    locks: protect most of the file_lock handling with i_lock
    locks: encapsulate the fl_link list handling
    locks: make "added" in __posix_lock_file a bool
    ...

    Linus Torvalds
     

03 Jul, 2013

2 commits

  • Pull ARM SoC specific changes from Arnd Bergmann:
    "These changes are all to SoC-specific code, a total of 33 branches on
    17 platforms were pulled into this. Like last time, Renesas sh-mobile
    is now the platform with the most changes, followed by OMAP and
    EXYNOS.

    Two new platforms, TI Keystone and Rockchips RK3xxx are added in this
    branch, both containing almost no platform specific code at all, since
    they are using generic subsystem interfaces for clocks, pinctrl,
    interrupts etc. The device drivers are getting merged through the
    respective subsystem maintainer trees.

    One more SoC (u300) is now multiplatform capable and several others
    (shmobile, exynos, msm, integrator, kirkwood, clps711x) are moving
    towards that goal with this series but need more work.

    Also noteworthy is the work on PCI here, which is traditionally part
    of the SoC specific code. With the changes done by Thomas Petazzoni,
    we can now more easily have PCI host controller drivers as loadable
    modules and keep them separate from the platform code in
    drivers/pci/host. This has already led to the discovery that three
    platforms (exynos, spear and imx) are actually using an identical PCIe
    host controller and will be able to share a driver once support for
    spear and imx is added."

    * tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (480 commits)
    ARM: integrator: let pciv3 use mem/premem from device tree
    ARM: integrator: set local side PCI addresses right
    ARM: dts: Add pcie controller node for exynos5440-ssdk5440
    ARM: dts: Add pcie controller node for Samsung EXYNOS5440 SoC
    ARM: EXYNOS: Enable PCIe support for Exynos5440
    pci: Add PCIe driver for Samsung Exynos
    ARM: OMAP5: voltagedomain data: remove temporary OMAP4 voltage data
    ARM: keystone: Move CPU bringup code to dedicated asm file
    ARM: multiplatform: always pick one CPU type
    ARM: imx: select syscon for IMX6SL
    ARM: keystone: select ARM_ERRATA_798181 only for SMP
    ARM: imx: Synertronixx scb9328 needs to select SOC_IMX1
    ARM: OMAP2+: AM43x: resolve SMP related build error
    dmaengine: edma: enable build for AM33XX
    ARM: edma: Add EDMA crossbar event mux support
    ARM: edma: Add DT and runtime PM support to the private EDMA API
    dmaengine: edma: Add TI EDMA device tree binding
    arm: add basic support for Rockchip RK3066a boards
    arm: add debug uarts for rockchip rk29xx and rk3xxx series
    arm: Add basic clocks for Rockchip rk3066a SoCs
    ...

    Linus Torvalds
     
  • Pull driver core updates from Greg KH:
    "Here's the big driver core merge for 3.11-rc1

    Lots of little things, and larger firmware subsystem updates, all
    described in the shortlog. Nice thing here is that we finally get rid
    of CONFIG_HOTPLUG, after 10+ years, thanks to Stephen Rohtwell (it had
    been always on for a number of kernel releases, now it's just
    removed)"

    * tag 'driver-core-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (27 commits)
    driver core: device.h: fix doc compilation warnings
    firmware loader: fix another compile warning with PM_SLEEP unset
    build some drivers only when compile-testing
    firmware loader: fix compile warning with PM_SLEEP set
    kobject: sanitize argument for format string
    sysfs_notify is only possible on file attributes
    firmware loader: simplify holding module for request_firmware
    firmware loader: don't export cache_firmware and uncache_firmware
    drivers/base: Use attribute groups to create sysfs memory files
    firmware loader: fix compile warning
    firmware loader: fix build failure with !CONFIG_FW_LOADER_USER_HELPER
    Documentation: Updated broken link in HOWTO
    Finally eradicate CONFIG_HOTPLUG
    driver core: firmware loader: kill FW_ACTION_NOHOTPLUG requests before suspend
    driver core: firmware loader: don't cache FW_ACTION_NOHOTPLUG firmware
    Documentation: Tidy up some drivers/base/core.c kerneldoc content.
    platform_device: use a macro instead of platform_driver_register
    firmware: move EXPORT_SYMBOL annotations
    firmware: Avoid deadlock of usermodehelper lock at shutdown
    dell_rbu: Select CONFIG_FW_LOADER_USER_HELPER explicitly
    ...

    Linus Torvalds
     

29 Jun, 2013

2 commits


28 Jun, 2013

1 commit

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

    Rafael J. Wysocki
     

27 Jun, 2013

5 commits

  • * pci/misc:
    MAINTAINERS: Add ACPI folks for ACPI-related things under drivers/pci
    PCI: Add CircuitCo vendor ID and subsystem ID
    PCI: Use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)

    Bjorn Helgaas
     
  • The disable slot implementation on s390 currently just detaches the
    pci function from the partition - without informing the pci layer.
    Fix this by calling pci_stop_and_remove_bus_device prior to the
    operation.

    Reviewed-by: Gerald Schaefer
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Provide wrappers for the [de]configure operations, add some error
    handling, and use pci_scan_slot instead of pci_scan_single_device.

    Reviewed-by: Gerald Schaefer
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Platforms may want to provide architecture-specific functionality when
    a pci device is released. Add a pcibios_release_device() call that
    architectures can override to do so.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Exynos5440 has a PCIe controller which can be used as Root Complex.
    This driver supports a PCIe controller as Root Complex mode.

    Signed-off-by: Surendranath Gurivireddy Balla
    Signed-off-by: Siva Reddy Kallam
    Signed-off-by: Jingoo Han
    Acked-by: Bjorn Helgaas
    Acked-by: Kukjin Kim
    Cc: Pratyush Anand
    Cc: Mohit KUMAR
    Signed-off-by: Arnd Bergmann

    Jingoo Han
     

24 Jun, 2013

1 commit

  • The interactions between the ACPI dock driver and the ACPI-based PCI
    hotplug (acpiphp) are currently problematic because of ordering
    issues during hot-remove operations.

    First of all, the current ACPI glue code expects that physical
    devices will always be deleted before deleting the companion ACPI
    device objects. Otherwise, acpi_unbind_one() will fail with a
    warning message printed to the kernel log, for example:

    [ 185.026073] usb usb5: Oops, 'acpi_handle' corrupt
    [ 185.035150] pci 0000:1b:00.0: Oops, 'acpi_handle' corrupt
    [ 185.035515] pci 0000:18:02.0: Oops, 'acpi_handle' corrupt
    [ 180.013656] port1: Oops, 'acpi_handle' corrupt

    This means, in particular, that struct pci_dev objects have to
    be deleted before the struct acpi_device objects they are "glued"
    with.

    Now, the following happens the during the undocking of an ACPI-based
    dock station:
    1) hotplug_dock_devices() invokes registered hotplug callbacks to
    destroy physical devices associated with the ACPI device objects
    depending on the dock station. It calls dd->ops->handler() for
    each of those device objects.
    2) For PCI devices dd->ops->handler() points to
    handle_hotplug_event_func() that queues up a separate work item
    to execute _handle_hotplug_event_func() for the given device and
    returns immediately. That work item will be executed later.
    3) hotplug_dock_devices() calls dock_remove_acpi_device() for each
    device depending on the dock station. This runs acpi_bus_trim()
    for each of them, which causes the underlying ACPI device object
    to be destroyed, but the work items queued up by
    handle_hotplug_event_func() haven't been started yet.
    4) _handle_hotplug_event_func() queued up in step 2) are executed
    and cause the above failure to happen, because the PCI devices
    they handle do not have the companion ACPI device objects any
    more (those objects have been deleted in step 3).

    The possible breakage doesn't end here, though, because
    hotplug_dock_devices() may return before at least some of the
    _handle_hotplug_event_func() work items spawned by it have a
    chance to complete and then undock() will cause _DCK to be
    evaluated and that will cause the devices handled by the
    _handle_hotplug_event_func() to go away possibly while they are
    being accessed.

    This means that dd->ops->handler() for PCI devices should not point
    to handle_hotplug_event_func(). Instead, it should point to a
    function that will do the work of _handle_hotplug_event_func()
    synchronously. For this reason, introduce such a function,
    hotplug_event_func(), and modity acpiphp_dock_ops to point to
    it as the handler.

    Unfortunately, however, this is not sufficient, because if the dock
    code were not changed further, hotplug_event_func() would now
    deadlock with hotplug_dock_devices() that called it, since it would
    run unregister_hotplug_dock_device() which in turn would attempt to
    acquire the dock station's hp_lock mutex already acquired by
    hotplug_dock_devices().

    To resolve that deadlock use the observation that
    unregister_hotplug_dock_device() won't need to acquire hp_lock
    if PCI bridges the devices on the dock station depend on are
    prevented from being removed prematurely while the first loop in
    hotplug_dock_devices() is in progress.

    To make that possible, introduce a mechanism by which the callers of
    register_hotplug_dock_device() can provide "init" and "release"
    routines that will be executed, respectively, during the addition
    and removal of the physical device object associated with the
    given ACPI device handle. Make acpiphp use two new functions,
    acpiphp_dock_init() and acpiphp_dock_release(), that call
    get_bridge() and put_bridge(), respectively, on the acpiphp bridge
    holding the given device, for this purpose.

    In addition to that, remove the dock station's list of
    "hotplug devices" and make the dock code always walk the whole list
    of "dependent devices" instead in such a way that the loops in
    hotplug_dock_devices() and dock_event() (replacing the loops over
    "hotplug devices") will take references to the list entries that
    register_hotplug_dock_device() has been called for. That prevents
    the "release" routines associated with those entries from being
    called while the given entry is being processed and for PCI
    devices this means that their bridges won't be removed (by a
    concurrent thread) while hotplug_event_func() handling them is
    being executed.

    This change is based on two earlier patches from Jiang Liu.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=59501
    Reported-and-tested-by: Alexander E. Patrakov
    Tracked-down-by: Jiang Liu
    Tested-by: Illya Klymov
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Yinghai Lu
    Cc: 3.9+

    Rafael J. Wysocki
     

23 Jun, 2013

1 commit

  • On x86 platforms, the kernel respects PCI resource assignments from
    the BIOS and only reassigns resources for unassigned BARs at boot
    time. However, with the ACPI-based hotplug (acpiphp), it ignores the
    BIOS' PCI resource assignments completely and reassigns all resources
    by itself. This causes differences in PCI resource allocation
    between boot time and runtime hotplug to occur, which is generally
    undesirable and sometimes actively breaks things.

    Namely, if there are enough resources, reassigning all PCI resources
    during runtime hotplug should work, but it may fail if the resources
    are constrained. This may happen, for instance, when some PCI
    devices with huge MMIO BARs are involved in the runtime hotplug
    operations, because the current PCI MMIO alignment algorithm may
    waste huge chunks of MMIO address space in those cases.

    On the Alexander's Sony VAIO VPCZ23A4R the BIOS allocates limited
    MMIO resources for the dock station which contains a device
    (graphics adapter) with a 256MB MMIO BAR. An attempt to reassign
    that during runtime hotplug causes the dock station MMIO window to be
    exhausted and acpiphp fails to allocate resources for the majority
    of devices on the dock station as a result.

    To prevent that from happening, modify acpiphp to follow the boot
    time resources allocation behavior so that the BIOS' resource
    assignments are respected during runtime hotplug too.

    [rjw: Changelog]
    References: https://bugzilla.kernel.org/show_bug.cgi?id=56531
    Reported-and-tested-by: Alexander E. Patrakov
    Tested-by: Illya Klymov
    Signed-off-by: Jiang Liu
    Acked-by: Yinghai Lu
    Cc: 3.9+
    Signed-off-by: Rafael J. Wysocki

    Jiang Liu
     

19 Jun, 2013

1 commit


18 Jun, 2013

1 commit


15 Jun, 2013

7 commits

  • * pci/jiang-bus-lock-v3:
    PCI: Return early on allocation failures to unindent mainline code
    PCI: Simplify IOV implementation and fix reference count races
    PCI: Drop redundant setting of bus->is_added in virtfn_add_bus()
    unicore32/PCI: Remove redundant call of pci_bus_add_devices()
    m68k/PCI: Remove redundant call of pci_bus_add_devices()
    PCI: Rename pci_release_bus_bridge_dev() to pci_release_host_bridge_dev()
    PCI: Fix refcount issue in pci_create_root_bus() error recovery path
    ia64/PCI: Clean up pci_scan_root_bus() usage
    PCI: Convert alloc_pci_dev(void) to pci_alloc_dev(bus)
    PCI: Introduce pci_alloc_dev(struct pci_bus*) to replace alloc_pci_dev()
    PCI: Introduce pci_bus_{get|put}() to manage PCI bus reference count

    Conflicts:
    drivers/pci/probe.c

    Bjorn Helgaas
     
  • On allocation failure, return early so the main body of the function
    doesn't have to be indented as the body of an "if" statement. No
    functional change.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Trivial changes to IOV:

    1) use new PCI interfaces to simplify IOV implementation
    2) fix some reference count related race windows

    [bhelgaas: fix virtfn_add() add bus/alloc dev error paths]
    Signed-off-by: Jiang Liu
    Signed-off-by: Bjorn Helgaas
    Cc: Donald Dutile
    Cc: Yinghai Lu
    Cc: Ram Pai

    Jiang Liu
     
  • The flag pci_bus->is_added is used to guard invocation of
    pcibios_fixup_bus(pci_bus). When virtfn_add_bus() is called, the
    pci_bus->is_added flag has already been set, so remove the redundant

    bus->is_added = 1;

    Signed-off-by: Jiang Liu
    Signed-off-by: Bjorn Helgaas
    Cc: Donald Dutile
    Cc: Yinghai Lu
    Cc: Ram Pai

    Jiang Liu
     
  • * pci/misc:
    PCI / ACPI / PM: Use correct power state strings in messages
    PCI: Fix comment typo for pcie_pme_remove()
    PCI: Add pcibios_release_device()

    Bjorn Helgaas
     
  • Make acpi_pci_set_power_state() print the name of the ACPI device
    power state the device has been actually put into instead of printing
    the name of the requested PCI device power state, which need not be
    the same.

    [bhelgaas: use ACPI_STATE_D3_COLD (ACPI_STATE_D3 == ACPI_STATE_D3_COLD)]
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Bjorn Helgaas

    Rafael J. Wysocki
     
  • There are two tool-stack that can instruct the Xen PCI frontend
    and backend to change states: 'xm' (Python code with a daemon),
    and 'xl' (C library - does not keep state changes).

    With the 'xm', the path to disconnect a single PCI device (xm pci-detach
    ) is:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)->5(Closing*).

    The * is for states that the tool-stack sets. For 'xl', it is similar:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)

    Both of them also tear down the XenBus structure, so the backend
    state ends up going in the 3(Initialised) and calls pcifront_xenbus_remove.

    When a PCI device is plugged back in (xm pci-attach )
    both of them follow the same pattern:

    2(InitWait*), 3(Initialized*), 4(Connected*)->4(Connected).

    [xen-pcifront ignores the 2,3 state changes and only acts when
    4 (Connected) has been reached]

    Note that this is for a _single_ PCI device. If there were two
    PCI devices and only one was disconnected 'xm' would show the same
    state changes.

    The problem is that git commit 3d925320e9e2de162bd138bf97816bda8c3f71be
    ("xen/pcifront: Use Xen-SWIOTLB when initting if required") introduced
    a mechanism to initialize the SWIOTLB when the Xen PCI front moves to
    Connected state. It also had some aggressive seatbelt code check that
    would warn the user if one tried to change to Connected state without
    hitting first the Closing state:

    pcifront pci-0: PCI frontend already installed!

    However, that code can be relaxed and we can continue on working
    even if the frontend is instructed to be the 'Connected' state with
    no devices and then gets tickled to be in 'Connected' state again.

    In other words, this 4(Connected)->5(Closing)->4(Connected) state
    was expected, while 4(Connected)->.... anything but 5(Closing)->4(Connected)
    was not. This patch removes that aggressive check and allows
    Xen pcifront to work with the 'xl' toolstack (for one or more
    PCI devices) and with 'xm' toolstack (for more than two PCI
    devices).

    Acked-by: Bjorn Helgaas
    Cc: linux-pci@vger.kernel.org
    Cc: stable@vger.kernel.org
    [v2: Added in the description about two PCI devices]
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     

12 Jun, 2013

1 commit

  • From Alexander Shiyan, this is a series of cleanups of clps711x, movig it
    closer to multiplatform and cleans up a bunch of old code.

    * clps711x/soc:
    ARM: clps711x: Update defconfig
    ARM: clps711x: Add support for SYSCON driver
    ARM: clps711x: edb7211: Control LCD backlight via PWM
    ARM: clps711x: edb7211: Add support for I2C
    ARM: clps711x: Optimize interrupt handling
    ARM: clps711x: Add clocksource framework
    ARM: clps711x: Replace "arch_initcall" in common code with ".init_early"
    ARM: clps711x: Move specific definitions from hardware.h to boards files
    ARM: clps711x: p720t: Define PLD registers as GPIOs
    ARM: clps711x: autcpu12: Move remaining specific definitions to board file
    ARM: clps711x: autcpu12: Special driver for handling memory is removed
    ARM: clps711x: autcpu12: Add support for NOR flash
    ARM: clps711x: autcpu12: Move LCD DPOT definitions to board file
    ARM: clps711x: Set PLL clock to zero if we work from 13 mHz source
    ARM: clps711x: Remove NEED_MACH_MEMORY_H dependency
    ARM: clps711x: Re-add GPIO support
    GPIO: clps711x: Add DT support
    GPIO: clps711x: Rewrite driver for using generic GPIO code
    + Linux 3.10-rc4

    Signed-off-by: Olof Johansson

    Olof Johansson
     

11 Jun, 2013

1 commit


08 Jun, 2013

2 commits