15 Feb, 2017

1 commit


01 Feb, 2017

2 commits

  • commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 upstream.

    After emulating an unaligned access in delay slot of a branch, we
    pretend as the delay slot never happened - so return back to actual
    branch target (or next PC if branch was not taken).

    Curently we did this by handling STATUS32.DE, we also need to clear the
    BTA.T bit, which is disregarded when returning from original misaligned
    exception, but could cause weirdness if it took the interrupt return
    path (in case interrupt was acive too)

    One ARC700 customer ran into this when enabling unaligned access fixup
    for kernel mode accesses as well

    Signed-off-by: Vineet Gupta
    Signed-off-by: Greg Kroah-Hartman

    Vineet Gupta
     
  • commit 36425cd67052e3becf325fd4d3ba5691791ef7e4 upstream.

    commit 3c7c7a2fc8811bc ("ARC: Don't use "+l" inline asm constraint")
    modified the inline assembly to setup LP_COUNT register manually and NOT
    rely on gcc to do it (with the +l inline assembler contraint hint, now
    being retired in the compiler)

    However the fix was flawed as we didn't add LP_COUNT to asm clobber list,
    meaning gcc doesn't know that LP_COUNT or zero-delay-loops are in action
    in the inline asm.

    This resulted in some fun - as nested ZOL loops were being generared

    | mov lp_count,250000 ;16 # tmp235,
    | lp .L__GCC__LP14 #
    Signed-off-by: Greg Kroah-Hartman

    Vineet Gupta
     

26 Jan, 2017

1 commit

  • commit eb1357d942e5d96de6b4c20a8ffa55acf96233a2 upstream.

    commit d65283f7b695b5 added mod->arch.secstr under
    CONFIG_ARC_DW2_UNWIND, but used it unconditionally which broke builds
    when the option was disabled. Fix that by adjusting the #ifdef guard.

    And while at it add a missing guard (for unwinder) in module.c as well

    Reported-by: Waldemar Brodkorb
    Fixes: d65283f7b695b5 ("ARC: module: elide loop to save reference to .eh_frame")
    Tested-by: Anton Kolesov
    Reviewed-by: Alexey Brodkin
    [abrodkin: provided fixlet to Kconfig per failure in allnoconfig build]
    Signed-off-by: Vineet Gupta
    Signed-off-by: Greg Kroah-Hartman

    Vineet Gupta
     

09 Jan, 2017

1 commit

  • commit 08fe007968b2b45e831daf74899f79a54d73f773 upstream.

    An ARC700 customer reported linux boot crashes when upgrading to bigger
    L1 dcache (64K from 32K). Turns out they had an aliasing VIPT config and
    current code only assumed 2 colours, while theirs had 4. So default to 4
    colours and complain if there are fewer. Ideally this needs to be a
    Kconfig option, but heck that's too much of hassle for a single user.

    Signed-off-by: Vineet Gupta
    Signed-off-by: Greg Kroah-Hartman

    Vineet Gupta
     

30 Nov, 2016

1 commit

  • commit 1c3c90930392 broke PAE40. Macro pfn_pte(pfn, prot) creates paddr
    from pfn, but the page shift was getting truncated to 32 bits since we lost
    the proper cast to 64 bits (for PAE400

    Instead of reverting that commit, use a better helper which is 32/64 bits
    safe just like ARM implementation.

    Fixes: 1c3c90930392 ("ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS")
    Cc: #4.4+
    Signed-off-by: Yuriy Kolerov
    [vgupta: massaged changelog]
    Signed-off-by: Vineet Gupta

    Yuriy Kolerov
     

29 Nov, 2016

2 commits


12 Nov, 2016

2 commits

  • Pull ARC fixes from Vineet Gupta:

    - mmap handler for dma ops as generic handler no longer works for us
    [Alexey]

    - Fixes for EZChip platform [Noam]

    - Fix RTC clocksource driver build issue

    - ARC IRQ handling fixes [Yuriy]

    - Revert a recent makefile change which doesn't go well with oldish
    tools out in the wild

    * tag 'arc-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARCv2: MCIP: Use IDU_M_DISTRI_DEST mode if there is only 1 destination core
    ARC: IRQ: Do not use hwirq as virq and vice versa
    ARC: [plat-eznps] set default baud for early console
    ARC: [plat-eznps] remove IPI clear from SMP operations
    Revert "ARC: build: retire old toggles"
    ARC: timer: rtc: implement read loop in "C" vs. inline asm
    ARC: change return value of userspace cmpxchg assist syscall
    arc: Implement arch-specific dma_map_ops.mmap
    ARC: [SMP] avoid overriding present cpumask
    ARC: Enable PERF_EVENTS in nSIM driven platforms

    Linus Torvalds
     
  • Traditionally, we have always had warnings about uninitialized variables
    enabled, as this is part of -Wall, and generally a good idea [1], but it
    also always produced false positives, mainly because this is a variation
    of the halting problem and provably impossible to get right in all cases
    [2].

    Various people have identified cases that are particularly bad for false
    positives, and in commit e74fc973b6e5 ("Turn off -Wmaybe-uninitialized
    when building with -Os"), I turned off the warning for any build that
    was done with CC_OPTIMIZE_FOR_SIZE. This drastically reduced the number
    of false positive warnings in the default build but unfortunately had
    the side effect of turning the warning off completely in 'allmodconfig'
    builds, which in turn led to a lot of warnings (both actual bugs, and
    remaining false positives) to go in unnoticed.

    With commit 877417e6ffb9 ("Kbuild: change CC_OPTIMIZE_FOR_SIZE
    definition") enabled the warning again for allmodconfig builds in v4.7
    and in v4.8-rc1, I had finally managed to address all warnings I get in
    an ARM allmodconfig build and most other maybe-uninitialized warnings
    for ARM randconfig builds.

    However, commit 6e8d666e9253 ("Disable "maybe-uninitialized" warning
    globally") was merged at the same time and disabled it completely for
    all configurations, because of false-positive warnings on x86 that I had
    not addressed until then. This caused a lot of actual bugs to get
    merged into mainline, and I sent several dozen patches for these during
    the v4.9 development cycle. Most of these are actual bugs, some are for
    correct code that is safe because it is only called under external
    constraints that make it impossible to run into the case that gcc sees,
    and in a few cases gcc is just stupid and finds something that can
    obviously never happen.

    I have now done a few thousand randconfig builds on x86 and collected
    all patches that I needed to address every single warning I got (I can
    provide the combined patch for the other warnings if anyone is
    interested), so I hope we can get the warning back and let people catch
    the actual bugs earlier.

    This reverts the change to disable the warning completely and for now
    brings it back at the "make W=1" level, so we can get it merged into
    mainline without introducing false positives. A follow-up patch enables
    it on all levels unless some configuration option turns it off because
    of false-positives.

    Link: https://rusty.ozlabs.org/?p=232 [1]
    Link: https://gcc.gnu.org/wiki/Better_Uninitialized_Warnings [2]
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

09 Nov, 2016

5 commits

  • ARC linux uses 2 distribution modes for common interrupts: round robin
    mode (IDU_M_DISTRI_RR) and a simple destination mode (IDU_M_DISTRI_DEST).
    The first one is used when more than 1 cores may handle a common interrupt
    and the second one is used when only 1 core may handle a common interrupt.

    However idu_irq_set_affinity() always sets IDU_M_DISTRI_RR for all affinity
    values. But there is no sense in setting of such mode if only 1 core must
    handle a common interrupt.

    Signed-off-by: Yuriy Kolerov
    Signed-off-by: Vineet Gupta

    Yuriy Kolerov
     
  • This came up when reviewing code to address missing IRQ affinity
    setting in AXS103 platform and/or implementing hierarchical IRQ domains

    - smp_ipi_irq_setup() callers pass hwirq but in turn calls
    request_percpu_irq() which expects a linux virq. So invoke
    irq_find_mapping() to do the conversion
    (also explicitify this in code by renaming the args appropriately)

    - idu_of_init()/idu_cascade_isr() were similarly using linux virq where
    hwirq is expected, so do the conversion using irqd_to_hwirq() helper

    Signed-off-by: Yuriy Kolerov
    [vgupta: made changelog a bit concise a bit]
    Signed-off-by: Vineet Gupta

    Yuriy Kolerov
     
  • For CONFIG_SERIAL_EARLYCON we need 800MHz for NPS SoC
    The early console driver uses BASE_BAUD and not using dtb.

    The default of 50MHz is NOT good for NPS SoC.

    Signed-off-by: Noam Camus
    Signed-off-by: Vineet Gupta

    Noam Camus
     
  • Today we register to plat_smp_ops.clear() method which actually
    is acking the IPI.
    However this is already taking care by our irqchip driver specifically
    by the irq_chip.irq_eoi() method.
    This is perfect timing where it should be done and no special handling
    is needed at plat_smp_ops.clear().

    Signed-off-by: Noam Camus
    Signed-off-by: Vineet Gupta

    Noam Camus
     
  • This has caused a bunch of build failures at a few sites, with GNU
    2015.12 and older as the assembler seems to need -mlock to be able to
    grok llock/scond instructions for ARC700 builds.
    different places since the
    older tools still seem to release
    of tools which most people are using seem to trip with the -mlock flag
    not being passed.

    This reverts commit c3005475889c7c730638f95d13be3360f0b33e98.

    Vineet Gupta
     

08 Nov, 2016

2 commits

  • The current code doesn't even compile as somehow the inline assembly
    can't see the register names defined as ARC_RTC_*
    I'm pretty sure It worked when I first got it merged, but the tools were
    definitely different then.

    So better to write this in "C" anyways.

    CC: stable@vger.kernel.org #4.2+
    Acked-by: Daniel Lezcano
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • The original syscall only used to return errno to indicate if cmpxchg
    succeeded. It was not returning the "previous" value which typical cmpxchg
    callers are interested in to build their slowpaths or retry loops.
    Given user preemption in syscall return path etc, it is not wise to
    check this in userspace afterwards, but should be what kernel actually
    observed in the syscall.

    So change the syscall interface to always return the previous value and
    additionally set Z flag to indicate whether operation succeeded or not
    (just like ARM implementation when they used to have this syscall)
    The flag approach avoids having to put_user errno which is nice given
    the use case for this syscall cares mostly about the "previous" value.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

04 Nov, 2016

1 commit

  • We used to use generic implementation of dma_map_ops.mmap which is
    dma_common_mmap() but that only worked for simpler cached mappings when
    vaddr = paddr.

    If a driver requests uncached DMA buffer kernel maps it to virtual
    address so that MMU gets involved and page uncached status takes into
    account. In that case usage of dma_common_mmap() lead to mapping of
    vaddr to vaddr for user-space which is obviously wrong. For more detals
    please refer to verbose explanation here [1].

    So here we implement our own version of mmap() which always deals
    with dma_addr and maps underlying memory to user-space properly
    (note that DMA buffer mapped to user-space is always uncached
    because there's no way to properly manage cache from user-space).

    [1] https://lkml.org/lkml/2016/10/26/973

    Reviewed-by: Catalin Marinas
    Cc: Marek Szyprowski
    Cc: #4.5+
    Signed-off-by: Alexey Brodkin
    Signed-off-by: Vineet Gupta

    Alexey Brodkin
     

01 Nov, 2016

2 commits

  • At smp_prepare_cpus() we set present cpu mask as part of init
    for all CPUs at range [0-max_cpus].
    This is done without checking if this mask is already being set.
    At platform of eznps this mask is already being initialized at
    smp_init_cpus() by using hook plat_smp_ops.init_early_smp().
    So to avoid overriding of present cpu mask we check the number of
    bits which are set in this mask. At the begin only bit for boot CPU
    is set so if number of bits already set is no more than one we can be
    assure that there is no overriding of this mask.

    Signed-off-by: Noam Camus
    Signed-off-by: Vineet Gupta

    Noam Camus
     
  • Now when we have properly working performance counters in nSIM
    even with interrupt support (fix should be a part of upcoming
    nSIM engineering build 2016.12-005) we may enable perf support
    by default for all platforms that use nSIM for ARC cores simulation.

    Note 1: PCT node was missing for some reason in nsimosci.dts
    while all other nSIM-related .dts files already had
    PCT node for quite some time, so adding it now.

    Note 2: All defconfigs were regenerated with "make savedefconfig"
    which led to some clean-ups in nsimosci_hs_smp_defconfig:
    CONFIG_FRAMEBUFFER_CONSOLE=y was removed because it is
    automatically selected now by DRM.

    Signed-off-by: Alexey Brodkin
    Signed-off-by: Vineet Gupta

    Alexey Brodkin
     

29 Oct, 2016

9 commits

  • Now that we have referece to section name string table in
    apply_relocate_add(), use it to

    - print the name of section being relocated
    - print symbol with NULL name (since it refers to a section)

    before

    | Section to fixup 7000a060
    | =========================================================
    | rela->r_off | rela->addend | sym->st_value | ADDR | VALUE
    | =========================================================
    | 1c 0 7000e000 7000a07c 7000e000 []
    | 40 0 7000a000 7000a0a0 7000a000 []

    after

    | Section to fixup .eh_frame @7000a060
    | =========================================================
    | r_off r_add st_value ADDRESS VALUE
    | =========================================================
    | 1c 0 7000e000 7000a07c 7000e000 [.init.text]
    | 40 0 7000a000 7000a0a0 7000a000 [.exit.text]

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • The loop was really needed in .debug_frame regime where wanted make it
    as SH_ALLOC so that apply_relocate_add() would process it. That's not
    needed for .eh_frame, so we check this in apply_relocate_add() which
    gets called for each section.

    Note that we need to save reference to "section name strings" section in
    module_frob_arch_sections() since apply_relocate_add() doesn't get that

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • ... given that we have perf counters abel to do the same thing non
    intrusively

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • These are really ancient toggles and tools no longer require them to be
    passed. This paves way for deprecating them in long run.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • The motivation is to identify ARC750 vs. ARC770 (we currently print
    generic "ARC700").

    A given ARC700 release could be 750 or 770, with same ARCNUM (or family
    identifier which is unfortunate). The existing arc_cpu_tbl[] kept a single
    concatenated string for core name and release which thus doesn't work
    for 750 vs. 770 identification.

    So split this into 2 tables, one with core names and other with release.
    And while we are at it, get rid of the range checking for family numbers.
    We just document the known to exist cores running Linux and ditch
    others.

    With this in place, we add detection of ARC750 which is
    - cores 0x33 and before
    - cores 0x34 and later with MMUv2

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • This came to light when helping a customer with oldish ARC750 core who
    were getting instruction errors because of lack of SWAPE but boot log
    was incorrectly printing it as being present

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • On older arc700 cores, some of the features configured were not present
    in Build config registers. To print about them at boot, we just use the
    Kconfig option i.e. whether linux is built to use them or not.
    So yes this seems bogus, but what else can be done. Moreover if linux is
    booting with these enabled, then the Kconfig info is a good indicator
    anyways.

    Over time these "hacks" accumulated in read_arc_build_cfg_regs() as well
    as arc_cpu_mumbojumbo(). so refactor and move all of those in a single
    place: read_arc_build_cfg_regs(). This causes some code redcution too:

    | bloat-o-meter2 arch/arc/kernel/setup.o.0 arch/arc/kernel/setup.o.1
    | add/remove: 0/0 grow/shrink: 2/1 up/down: 64/-132 (-68)
    | function old new delta
    | setup_processor 610 670 +60
    | cpuinfo_arc700 76 80 +4
    | arc_cpu_mumbojumbo 752 620 -132

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Previously we would not print the case when IOC existed but was not
    enabled.

    And while at it, reduce one line off boot printing by consolidating
    the Peripheral address space and IO-Coherency which in a way
    applies to them

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

25 Oct, 2016

2 commits

  • if user disables IOC from debugger at startup (by clearing @ioc_enable),
    @ioc_exists is cleared too. This means boot prints don't capture the
    fact that IOC was present but disabled which could be misleading.

    So invert how we use @ioc_enable and @ioc_exists and make it more
    canonical. @ioc_exists represent whether hardware is present or not and
    stays same whether enabled or not. @ioc_enable is still user driven,
    but will be auto-disabled if IOC hardware is not present, i.e. if
    @ioc_exist=0. This is opposite to what we were doing before, but much
    clearer.

    This means @ioc_enable is now the "exported" toggle in rest of code such
    as dma mapping API.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Older ARC700 cores (ARC750 specifically) lack instructions to implement
    atomic r-w-w. This is problematic for userspace libraries such as NPTL
    which need atomic primitives. So enable them by providing kernel assist.
    This is costly but really the only sane soluton (othern than tight
    spinning using the otherwise availiable atomic exchange EX instruciton).

    Good thing is there are only a few of these cores running Linux out in
    the wild.

    This only works on UP systems.

    Reviewed-by: Colin Ian King
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

20 Oct, 2016

2 commits

  • The cast valid since TASK_SIZE * 2 will never actually cause overflow.

    | CC fs/binfmt_elf.o
    | In file included from ../include/linux/elf.h:4:0,
    | from ../include/linux/module.h:15,
    | from ../fs/binfmt_elf.c:12:
    | ../fs/binfmt_elf.c: In function load_elf_binar:
    | ../arch/arc/include/asm/elf.h:57:29: warning: integer overflow in expression [-Woverflow]
    | #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
    | ^
    | ../fs/binfmt_elf.c:921:16: note: in expansion of macro ELF_ET_DYN_BASE
    | load_bias = ELF_ET_DYN_BASE - vaddr;

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • num_possible_cpus() returns how many CPUs may be present on system.
    However we want the highest possible CPU number.
    This may be differ in a sparsed possible CPUs map.
    Such map achived by OF for plat-eznps.

    For example if we have:
    possible cpus mask 0,3

    Then:
    num_possible_cpus() is equal 2
    while
    nr_cpu_ids is equal 4.

    Only for value 4 c_start() will provide correct cpuinfo at procfs.

    Signed-off-by: Noam Camus
    Signed-off-by: Vineet Gupta

    Noam Camus
     

17 Oct, 2016

2 commits

  • Add support for lzma compressed uImage.

    Support for gzip was already available but could not be enabled because
    we were missing CONFIG_HAVE_KERNEL_GZIP in arch/arc/Kconfig.

    Signed-off-by: Daniel Mentz
    Cc: linux-snps-arc@lists.infradead.org
    Cc: Vineet Gupta
    Signed-off-by: Vineet Gupta

    Daniel Mentz
     
  • The IDU intc is technically part of MCIP (Multi-core IP) hence
    historically was only available in a SMP hardware build (and thus only
    in a SMP kernel build). Now that hardware restriction has been lifted,
    so a UP kernel needs to support it.

    This requires breaking mcip.c into parts which are strictly SMP
    (inter-core interrupts) and IDU which in reality is just another
    intc and thus has no bearing on SMP.

    This change allows IDU in UP builds and with a suitable device tree, we
    can have the cascaded intc system

    ARCv2 core intc ARCv2 IDU intc periperals

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

15 Oct, 2016

1 commit


08 Oct, 2016

2 commits

  • When doing an nmi backtrace of many cores, most of which are idle, the
    output is a little overwhelming and very uninformative. Suppress
    messages for cpus that are idling when they are interrupted and just
    emit one line, "NMI backtrace for N skipped: idling at pc 0xNNN".

    We do this by grouping all the cpuidle code together into a new
    .cpuidle.text section, and then checking the address of the interrupted
    PC to see if it lies within that section.

    This commit suitably tags x86 and tile idle routines, and only adds in
    the minimal framework for other architectures.

    Link: http://lkml.kernel.org/r/1472487169-14923-5-git-send-email-cmetcalf@mellanox.com
    Signed-off-by: Chris Metcalf
    Acked-by: Peter Zijlstra (Intel)
    Tested-by: Peter Zijlstra (Intel)
    Tested-by: Daniel Thompson [arm]
    Tested-by: Petr Mladek
    Cc: Aaron Tomlin
    Cc: Peter Zijlstra (Intel)
    Cc: "Rafael J. Wysocki"
    Cc: Russell King
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Metcalf
     
  • Pull PCI updates from Bjorn Helgaas:
    "Summary of PCI changes for the v4.9 merge window:

    Enumeration:
    - microblaze: Add multidomain support for procfs (Bharat Kumar Gogada)

    Resource management:
    - Ignore requested alignment for PROBE_ONLY and fixed resources (Yongji Xie)
    - Ignore requested alignment for VF BARs (Yongji Xie)

    PCI device hotplug:
    - Make core explicitly non-modular (Paul Gortmaker)

    PCIe native device hotplug:
    - Rename pcie_isr() locals for clarity (Bjorn Helgaas)
    - Return IRQ_NONE when we can't read interrupt status (Bjorn Helgaas)
    - Remove unnecessary guard (Bjorn Helgaas)
    - Clean up dmesg "Slot(%s)" messages (Bjorn Helgaas)
    - Remove useless pciehp_get_latch_status() calls (Bjorn Helgaas)
    - Clear attention LED on device add (Keith Busch)
    - Allow exclusive userspace control of indicators (Keith Busch)
    - Process all hotplug events before looking for new ones (Mayurkumar Patel)
    - Don't re-read Slot Status when queuing hotplug event (Mayurkumar Patel)
    - Don't re-read Slot Status when handling surprise event (Mayurkumar Patel)
    - Make explicitly non-modular (Paul Gortmaker)

    Power management:
    - Afford direct-complete to devices with non-standard PM (Lukas Wunner)
    - Query platform firmware for device power state (Lukas Wunner)
    - Recognize D3cold in pci_update_current_state() (Lukas Wunner)
    - Avoid unnecessary resume after direct-complete (Lukas Wunner)
    - Make explicitly non-modular (Paul Gortmaker)

    Virtualization:
    - Mark Atheros AR9580 to avoid bus reset (Maik Broemme)
    - Check for pci_setup_device() failure in pci_iov_add_virtfn() (Po Liu)

    MSI:
    - Enable PCI_MSI_IRQ_DOMAIN support for ARC (Joao Pinto)

    AER:
    - Remove aerdriver.nosourceid kernel parameter (Bjorn Helgaas)
    - Remove aerdriver.forceload kernel parameter (Bjorn Helgaas)
    - Fix aer_probe() kernel-doc comment (Cao jin)
    - Add bus flag to skip source ID matching (Jon Derrick)
    - Avoid memory allocation in interrupt handling path (Jon Derrick)
    - Cache capability position (Keith Busch)
    - Make explicitly non-modular (Paul Gortmaker)
    - Remove duplicate AER severity translation (Tyler Baicar)
    - Send correct severity to calculate AER severity (Tyler Baicar)

    Precision Time Measurement:
    - Add Precision Time Measurement (PTM) support (Jonathan Yong)
    - Add PTM clock granularity information (Bjorn Helgaas)
    - Add pci_enable_ptm() for drivers to enable PTM on endpoints (Bjorn Helgaas)

    Generic host bridge driver:
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
    - Make explicitly non-modular (Paul Gortmaker)

    Altera host bridge driver:
    - Remove redundant platform_get_resource() return value check (Bjorn Helgaas)
    - Poll for link training status after retraining the link (Ley Foon Tan)
    - Rework config accessors for use without a struct pci_bus (Ley Foon Tan)
    - Move retrain from fixup to altera_pcie_host_init() (Ley Foon Tan)
    - Make MSI explicitly non-modular (Paul Gortmaker)
    - Make explicitly non-modular (Paul Gortmaker)
    - Relax device number checking to allow SR-IOV (Po Liu)

    ARM Versatile host bridge driver:
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)

    Axis ARTPEC-6 host bridge driver:
    - Drop __init from artpec6_add_pcie_port() (Niklas Cassel)

    Freescale i.MX6 host bridge driver:
    - Make explicitly non-modular (Paul Gortmaker)

    Intel VMD host bridge driver:
    - Add quirk for AER to ignore source ID (Jon Derrick)
    - Allocate IRQ lists with correct MSI-X count (Jon Derrick)
    - Convert to use pci_alloc_irq_vectors() API (Jon Derrick)
    - Eliminate vmd_vector member from list type (Jon Derrick)
    - Eliminate index member from IRQ list (Jon Derrick)
    - Synchronize with RCU freeing MSI IRQ descs (Keith Busch)
    - Request userspace control of PCIe hotplug indicators (Keith Busch)
    - Move VMD driver to drivers/pci/host (Keith Busch)

    Marvell Aardvark host bridge driver:
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
    - Remove redundant dev_err call in advk_pcie_probe() (Wei Yongjun)

    Microsoft Hyper-V host bridge driver:
    - Use zero-length array in struct pci_packet (Dexuan Cui)
    - Use pci_function_description[0] in struct definitions (Dexuan Cui)
    - Remove the unused 'wrk' in struct hv_pcibus_device (Dexuan Cui)
    - Handle vmbus_sendpacket() failure in hv_compose_msi_msg() (Dexuan Cui)
    - Handle hv_pci_generic_compl() error case (Dexuan Cui)
    - Use list_move_tail() instead of list_del() + list_add_tail() (Wei Yongjun)

    NVIDIA Tegra host bridge driver:
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
    - Remove redundant _data suffix (Thierry Reding)
    - Use of_device_get_match_data() (Thierry Reding)

    Qualcomm host bridge driver:
    - Make explicitly non-modular (Paul Gortmaker)

    Renesas R-Car host bridge driver:
    - Consolidate register space lookup and ioremap (Bjorn Helgaas)
    - Don't disable/unprepare clocks on prepare/enable failure (Geert Uytterhoeven)
    - Add multi-MSI support (Grigory Kletsko)
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
    - Fix some checkpatch warnings (Sergei Shtylyov)
    - Try increasing PCIe link speed to 5 GT/s at boot (Sergei Shtylyov)

    Rockchip host bridge driver:
    - Add DT bindings for Rockchip PCIe controller (Shawn Lin)
    - Add Rockchip PCIe controller support (Shawn Lin)
    - Improve the deassert sequence of four reset pins (Shawn Lin)
    - Fix wrong transmitted FTS count (Shawn Lin)
    - Increase the Max Credit update interval (Rajat Jain)

    Samsung Exynos host bridge driver:
    - Make explicitly non-modular (Paul Gortmaker)

    ST Microelectronics SPEAr13xx host bridge driver:
    - Make explicitly non-modular (Paul Gortmaker)

    Synopsys DesignWare host bridge driver:
    - Return data directly from dw_pcie_readl_rc() (Bjorn Helgaas)
    - Exchange viewport of `MEMORYs' and `CFGs/IOs' (Dong Bo)
    - Check LTSSM training bit before deciding link is up (Jisheng Zhang)
    - Move link wait definitions to .c file (Joao Pinto)
    - Wait for iATU enable (Joao Pinto)
    - Add iATU Unroll feature (Joao Pinto)
    - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
    - Make explicitly non-modular (Paul Gortmaker)
    - Relax device number checking to allow SR-IOV (Po Liu)
    - Keep viewport fixed for IO transaction if num_viewport > 2 (Pratyush Anand)
    - Remove redundant platform_get_resource() return value check (Wei Yongjun)

    TI DRA7xx host bridge driver:
    - Make explicitly non-modular (Paul Gortmaker)

    TI Keystone host bridge driver:
    - Propagate request_irq() failure (Wei Yongjun)

    Xilinx AXI host bridge driver:
    - Keep both legacy and MSI interrupt domain references (Bharat Kumar Gogada)
    - Clear interrupt register for invalid interrupt (Bharat Kumar Gogada)
    - Clear correct MSI set bit (Bharat Kumar Gogada)
    - Dispose of MSI virtual IRQ (Bharat Kumar Gogada)
    - Make explicitly non-modular (Paul Gortmaker)
    - Relax device number checking to allow SR-IOV (Po Liu)

    Xilinx NWL host bridge driver:
    - Expand error logging (Bharat Kumar Gogada)
    - Enable all MSI interrupts using MSI mask (Bharat Kumar Gogada)
    - Make explicitly non-modular (Paul Gortmaker)

    Miscellaneous:
    - Drop CONFIG_KEXEC_CORE ifdeffery (Lukas Wunner)
    - portdrv: Make explicitly non-modular (Paul Gortmaker)
    - Make DPC explicitly non-modular (Paul Gortmaker)"

    * tag 'pci-v4.9-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (105 commits)
    x86/PCI: VMD: Move VMD driver to drivers/pci/host
    PCI: rockchip: Fix wrong transmitted FTS count
    PCI: rockchip: Improve the deassert sequence of four reset pins
    PCI: rockchip: Increase the Max Credit update interval
    PCI: rcar: Try increasing PCIe link speed to 5 GT/s at boot
    PCI/AER: Fix aer_probe() kernel-doc comment
    PCI: Ignore requested alignment for VF BARs
    PCI: Ignore requested alignment for PROBE_ONLY and fixed resources
    PCI: Avoid unnecessary resume after direct-complete
    PCI: Recognize D3cold in pci_update_current_state()
    PCI: Query platform firmware for device power state
    PCI: Afford direct-complete to devices with non-standard PM
    PCI/AER: Cache capability position
    PCI/AER: Avoid memory allocation in interrupt handling path
    x86/PCI: VMD: Request userspace control of PCIe hotplug indicators
    PCI: pciehp: Allow exclusive userspace control of indicators
    ACPI / APEI: Send correct severity to calculate AER severity
    PCI/AER: Remove duplicate AER severity translation
    x86/PCI: VMD: Synchronize with RCU freeing MSI IRQ descs
    x86/PCI: VMD: Eliminate index member from IRQ list
    ...

    Linus Torvalds
     

01 Oct, 2016

2 commits

  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Commit d9676fa152c83b ("ARCv2: Enable LOCKDEP"), changed
    local_save_flags() to not return raw STATUS32 but encoded in the form
    such that it could be fed directly to CLRI/SETI instructions.
    However the STATUS32.E[] was not captured correctly as it corresponds to
    bits [4:1] in the register and not [3:0]

    Fixes: d9676fa152c83b ("ARCv2: Enable LOCKDEP")
    Cc: Evgeny Voevodin
    Signed-off-by: Vineet Gupta

    Vineet Gupta