20 Aug, 2019

4 commits


09 Jul, 2019

1 commit

  • Pull irq updates from Thomas Gleixner:
    "The irq departement provides the usual mixed bag:

    Core:

    - Further improvements to the irq timings code which aims to predict
    the next interrupt for power state selection to achieve better
    latency/power balance

    - Add interrupt statistics to the core NMI handlers

    - The usual small fixes and cleanups

    Drivers:

    - Support for Renesas RZ/A1, Annapurna Labs FIC, Meson-G12A SoC and
    Amazon Gravition AMR/GIC interrupt controllers.

    - Rework of the Renesas INTC controller driver

    - ACPI support for Socionext SoCs

    - Enhancements to the CSKY interrupt controller

    - The usual small fixes and cleanups"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)
    irq/irqdomain: Fix comment typo
    genirq: Update irq stats from NMI handlers
    irqchip/gic-pm: Remove PM_CLK dependency
    irqchip/al-fic: Introduce Amazon's Annapurna Labs Fabric Interrupt Controller Driver
    dt-bindings: interrupt-controller: Add Amazon's Annapurna Labs FIC
    softirq: Use __this_cpu_write() in takeover_tasklets()
    irqchip/mbigen: Stop printing kernel addresses
    irqchip/gic: Add dependency for ARM_GIC_MAX_NR
    genirq/affinity: Remove unused argument from [__]irq_build_affinity_masks()
    genirq/timings: Add selftest for next event computation
    genirq/timings: Add selftest for irqs circular buffer
    genirq/timings: Add selftest for circular array
    genirq/timings: Encapsulate storing function
    genirq/timings: Encapsulate timings push
    genirq/timings: Optimize the period detection speed
    genirq/timings: Fix timings buffer inspection
    genirq/timings: Fix next event index function
    irqchip/qcom: Use struct_size() in devm_kzalloc()
    irqchip/irq-csky-mpintc: Remove unnecessary loop in interrupt handler
    dt-bindings: interrupt-controller: Update csky mpintc
    ...

    Linus Torvalds
     

19 Jun, 2019

2 commits

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not see http www gnu org
    licenses

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 503 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Reviewed-by: Enrico Weigelt
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190602204653.811534538@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

11 Jun, 2019

1 commit

  • Add support for Amazon Graviton custom variant of GICv2m, where the message
    is encoded using the MSI message address, as opposed to standard
    GICv2m, where the SPI number is encoded in the MSI message data.

    In addition, the Graviton flavor of GICv2m is used along GICv3 (and not
    GICv2).

    Co-developed-by: Benjamin Herrenschmidt
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Zeev Zilberman
    Signed-off-by: Marc Zyngier

    Zeev Zilberman
     

05 Jun, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 of
    the license as published by the free software foundation this
    program is distributed in the hope that it will be useful but
    without any warranty without even the implied warranty of
    merchantability or fitness for a particular purpose see the gnu
    general public license for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 2 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190531081038.470437358@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

31 May, 2019

3 commits

  • Based on 3 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [kishon] [vijay] [abraham]
    [i] [kishon]@[ti] [com] this program is distributed in the hope that
    it will be useful but without any warranty without even the implied
    warranty of merchantability or fitness for a particular purpose see
    the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [graeme] [gregory]
    [gg]@[slimlogic] [co] [uk] [author] [kishon] [vijay] [abraham] [i]
    [kishon]@[ti] [com] [based] [on] [twl6030]_[usb] [c] [author] [hema]
    [hk] [hemahk]@[ti] [com] this program is distributed in the hope
    that it will be useful but without any warranty without even the
    implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 1105 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070033.202006027@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details you
    should have received a copy of the gnu general public license along
    with this program if not write to the free software foundation inc
    59 temple place suite 330 boston ma 02111 1307 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 1334 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070033.113240726@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version you should have received a copy of the
    gnu general public license along with this program if not write to
    the free software foundation inc 675 mass ave cambridge ma 02139 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 35 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Armijn Hemel
    Reviewed-by: Richard Fontana
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070032.655028468@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

20 May, 2019

1 commit

  • Pull IRQ chip updates from Ingo Molnar:
    "A late irqchips update:

    - New TI INTR/INTA set of drivers

    - Rewrite of the stm32mp1-exti driver as a platform driver

    - Update the IOMMU MSI mapping API to be RT friendly

    - A number of cleanups and other low impact fixes"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
    iommu/dma-iommu: Remove iommu_dma_map_msi_msg()
    irqchip/gic-v3-mbi: Don't map the MSI page in mbi_compose_m{b, s}i_msg()
    irqchip/ls-scfg-msi: Don't map the MSI page in ls_scfg_msi_compose_msg()
    irqchip/gic-v3-its: Don't map the MSI page in its_irq_compose_msi_msg()
    irqchip/gicv2m: Don't map the MSI page in gicv2m_compose_msi_msg()
    iommu/dma-iommu: Split iommu_dma_map_msi_msg() in two parts
    genirq/msi: Add a new field in msi_desc to store an IOMMU cookie
    arm64: arch_k3: Enable interrupt controller drivers
    irqchip/ti-sci-inta: Add msi domain support
    soc: ti: Add MSI domain bus support for Interrupt Aggregator
    irqchip/ti-sci-inta: Add support for Interrupt Aggregator driver
    dt-bindings: irqchip: Introduce TISCI Interrupt Aggregator bindings
    irqchip/ti-sci-intr: Add support for Interrupt Router driver
    dt-bindings: irqchip: Introduce TISCI Interrupt router bindings
    gpio: thunderx: Use the default parent apis for {request,release}_resources
    genirq: Introduce irq_chip_{request,release}_resource_parent() apis
    firmware: ti_sci: Add helper apis to manage resources
    firmware: ti_sci: Add RM mapping table for am654
    firmware: ti_sci: Add support for IRQ management
    firmware: ti_sci: Add support for RM core ops
    ...

    Linus Torvalds
     

29 Apr, 2019

2 commits

  • Some definitions of Inner Cacheability attibutes need to be corrected.

    Fixes: 8c828a535e29f ("irqchip/gicv3-its: Restore all cacheability attributes")
    Signed-off-by: Hongbo Yao
    Signed-off-by: Marc Zyngier

    Hongbo Yao
     
  • …inusw/linux-nomadik into arm/soc

    This modernizes the IXP4xx platform and adds initial Device Tree
    Support. We migrate to MULTI_IRQ_HANDLER, bumps the IRQs to
    offset 16, converts to SPARSE_IRQ, then we add proper subsystem
    drivers in each subsystem for irqchip, GPIO and clocksource and
    switch over to using these new drivers.

    Next we modernize the NPE and QMGR drivers and push them down
    into drivers/soc.

    This has been tested on the IXP4xx NSLU2 and the Gateworks
    GW2358-4.

    * tag 'ixp4xx-for-armsoc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik: (31 commits)
    ARM: dts: Add queue manager and NPE to the IXP4xx DTSI
    soc: ixp4xx: qmgr: Add DT probe code
    soc: ixp4xx: qmgr: Add DT bindings for IXP4xx qmgr
    soc: ixp4xx: npe: Add DT probe code
    soc: ixp4xx: Add DT bindings for IXP4xx NPE
    soc: ixp4xx: qmgr: Pass resources
    soc: ixp4xx: Remove unused functions
    soc: ixp4xx: Uninline several functions
    soc: ixp4xx: npe: Pass addresses as resources
    ARM: ixp4xx: Turn the QMGR into a platform device
    ARM: ixp4xx: Turn the NPE into a platform device
    ARM: ixp4xx: Move IXP4xx QMGR and NPE headers
    ARM: ixp4xx: Move NPE and QMGR to drivers/soc
    ARM: dts: Add some initial IXP4xx device trees
    ARM: ixp4xx: Add device tree boot support
    ARM: ixp4xx: Add DT bindings
    gpio: ixp4xx: Add OF probing support
    gpio: ixp4xx: Add DT bindings
    clocksource/drivers/ixp4xx: Add OF initialization support
    clocksource/drivers/ixp4xx: Add DT bindings
    ...

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     

20 Apr, 2019

1 commit

  • The IXP4xx (arch/arm/mach-ixp4xx) is an old Intel XScale
    platform that has very wide deployment and use.

    As part of modernizing the platform, we need to implement a
    proper irqchip in the irqchip subsystem.

    The IXP4xx irqchip is tightly jotted together with the GPIO
    controller, and whereas in the past we would deal with this
    complex logic by adding necessarily different code, we can
    nowadays modernize it using a hierarchical irqchip.

    The actual IXP4 irqchip is a simple active low level IRQ
    controller, whereas the GPIO functionality resides in a
    different memory area and adds edge trigger support for
    the interrupts.

    The interrupts from GPIO lines 0..12 are 1:1 mapped to
    a fixed set of hardware IRQs on this IRQchip, so we
    expect the child GPIO interrupt controller to go in and
    allocate descriptors for these interrupts.

    For the other interrupts, as we do not yet have DT
    support for this platform, we create a linear irqdomain
    and then go in and allocate the IRQs that the legacy
    boards use. This code will be removed on the DT probe
    path when we add DT support to the platform.

    We add some translation code for supporting DT
    translations for the fwnodes, but we leave most of that
    for later.

    Cc: Marc Zyngier
    Cc: Jason Cooper
    Acked-by: Marc Zyngier
    Signed-off-by: Linus Walleij

    Linus Walleij
     

21 Mar, 2019

1 commit


11 Mar, 2019

1 commit


07 Mar, 2019

1 commit

  • Pull ARM SoC late updates from Arnd Bergmann:
    "Here are two branches that came relatively late during the linux-5.0
    development cycle and have dependencies on the other branches:

    - On the TI OMAP platform, the CPSW Ethernet PHY mode selection
    driver is being replaced, this puts the final pieces in place

    - On the DaVinci platform, the interrupt handling code in arch/arm
    gets moved into a regular device driver in drivers/irqchip.

    Since they both had some time in linux-next after the 5.0-rc8 release,
    I'm sending them along with the other updates"

    * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (38 commits)
    net: ethernet: ti: cpsw: deprecate cpsw-phy-sel driver
    ARM: davinci: remove intc related fields from davinci_soc_info
    irqchip: davinci-cp-intc: move the driver to drivers/irqchip
    ARM: davinci: cp-intc: remove redundant comments
    ARM: davinci: cp-intc: drop GPL license boilerplate
    ARM: davinci: cp-intc: use readl/writel_relaxed()
    ARM: davinci: cp-intc: unify error handling
    ARM: davinci: cp-intc: improve coding style
    ARM: davinci: cp-intc: request the memory region before remapping it
    ARM: davinci: cp-intc: use the new-style config structure
    ARM: davinci: cp-intc: convert all hex numbers to lowercase
    ARM: davinci: cp-intc: use a common prefix for all symbols
    ARM: davinci: cp-intc: add the new config structures for da8xx SoCs
    irqchip: davinci-cp-intc: add a new config structure
    ARM: davinci: cp-intc: add a wrapper around cp_intc_init()
    ARM: davinci: cp-intc: remove cp_intc.h
    irqchip: davinci-aintc: move the driver to drivers/irqchip
    ARM: davinci: aintc: remove unnecessary includes
    ARM: davinci: aintc: remove the timer-specific irq_set_handler()
    ARM: davinci: aintc: request memory region before remapping it
    ...

    Linus Torvalds
     

19 Feb, 2019

4 commits

  • Modify the cp-intc driver to take all its configuration from the new
    config structure. Stop referencing davinci_soc_info in any way.
    Move the declaration for davinci_cp_intc_init() to
    irq-davinci-cp-intc.h and make it take the new config structure as
    parameter. Convert all users to the new version.

    Also: since the two da8xx SoCs default all irq priorities to 7, just
    drop the priority configuration at all and hardcode the channels to 7.

    It will simplify the driver code and make our lives easier when it
    comes to device-tree support.

    Reviewed-by: David Lechner
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Sekhar Nori

    Bartosz Golaszewski
     
  • Add a config structure that will be used by cp-intc-based platforms.
    It contains the register range resource and the number of interrupts.

    Acked-by: Marc Zyngier
    Reviewed-by: David Lechner
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Sekhar Nori

    Bartosz Golaszewski
     
  • Modify the aintc driver to take all its configuration from the new
    config structure. Stop referencing davinci_soc_info in any way.
    Move the declaration for davinci_aintc_init() to irq-davinci-aintc.h
    and make it take the new config structure as parameter. Convert all
    users to the new version.

    Signed-off-by: Bartosz Golaszewski
    Reviewed-by: David Lechner
    Signed-off-by: Sekhar Nori

    Bartosz Golaszewski
     
  • Add a config structure that will be used by aintc-based platforms.
    It contains the register range resource, number of interrupts and
    a list of priorities.

    Acked-by: Marc Zyngier
    Reviewed-by: David Lechner
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Sekhar Nori

    Bartosz Golaszewski
     

31 Jan, 2019

1 commit

  • According to ARM IHI 0069C (ID070116), we should use GITS_TYPER's
    bits [7:4] as ITT_entry_size instead of [8:4]. Although this is
    pretty annoying, it only results in a potential over-allocation
    of memory, and nothing bad happens.

    Fixes: 3dfa576bfb45 ("irqchip/gic-v3-its: Add probing for VLPI properties")
    Signed-off-by: Zenghui Yu
    [maz: massaged subject and commit message]
    Signed-off-by: Marc Zyngier

    Zenghui Yu
     

18 Dec, 2018

1 commit

  • The Cirrus Logic Madera codecs (Cirrus Logic CS47L35/85/90/91 and WM1840)
    are highly complex devices containing up to 7 programmable DSPs and many
    other internal sources of interrupts plus a number of GPIOs that can be
    used as interrupt inputs. The large number (>150) of internal interrupt
    sources are managed by an on-board interrupt controller.

    This driver provides the handling for the interrupt controller. As the
    codec is accessed via regmap, we can make use of the generic IRQ
    functionality from regmap to do most of the work. Only around half of
    the possible interrupt source are currently of interest from the driver
    so only this subset is defined. Others can be added in future if needed.

    The KConfig options are not user-configurable because this driver is
    mandatory so is automatically included when the parent MFD driver is
    selected.

    Signed-off-by: Richard Fitzgerald
    Signed-off-by: Charles Keepax
    Signed-off-by: Marc Zyngier

    Richard Fitzgerald
     

26 Oct, 2018

1 commit

  • Pull KVM updates from Radim Krčmář:
    "ARM:
    - Improved guest IPA space support (32 to 52 bits)

    - RAS event delivery for 32bit

    - PMU fixes

    - Guest entry hardening

    - Various cleanups

    - Port of dirty_log_test selftest

    PPC:
    - Nested HV KVM support for radix guests on POWER9. The performance
    is much better than with PR KVM. Migration and arbitrary level of
    nesting is supported.

    - Disable nested HV-KVM on early POWER9 chips that need a particular
    hardware bug workaround

    - One VM per core mode to prevent potential data leaks

    - PCI pass-through optimization

    - merge ppc-kvm topic branch and kvm-ppc-fixes to get a better base

    s390:
    - Initial version of AP crypto virtualization via vfio-mdev

    - Improvement for vfio-ap

    - Set the host program identifier

    - Optimize page table locking

    x86:
    - Enable nested virtualization by default

    - Implement Hyper-V IPI hypercalls

    - Improve #PF and #DB handling

    - Allow guests to use Enlightened VMCS

    - Add migration selftests for VMCS and Enlightened VMCS

    - Allow coalesced PIO accesses

    - Add an option to perform nested VMCS host state consistency check
    through hardware

    - Automatic tuning of lapic_timer_advance_ns

    - Many fixes, minor improvements, and cleanups"

    * tag 'kvm-4.20-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (204 commits)
    KVM/nVMX: Do not validate that posted_intr_desc_addr is page aligned
    Revert "kvm: x86: optimize dr6 restore"
    KVM: PPC: Optimize clearing TCEs for sparse tables
    x86/kvm/nVMX: tweak shadow fields
    selftests/kvm: add missing executables to .gitignore
    KVM: arm64: Safety check PSTATE when entering guest and handle IL
    KVM: PPC: Book3S HV: Don't use streamlined entry path on early POWER9 chips
    arm/arm64: KVM: Enable 32 bits kvm vcpu events support
    arm/arm64: KVM: Rename function kvm_arch_dev_ioctl_check_extension()
    KVM: arm64: Fix caching of host MDCR_EL2 value
    KVM: VMX: enable nested virtualization by default
    KVM/x86: Use 32bit xor to clear registers in svm.c
    kvm: x86: Introduce KVM_CAP_EXCEPTION_PAYLOAD
    kvm: vmx: Defer setting of DR6 until #DB delivery
    kvm: x86: Defer setting of CR2 until #PF delivery
    kvm: x86: Add payload operands to kvm_multiple_exception
    kvm: x86: Add exception payload fields to kvm_vcpu_events
    kvm: x86: Add has_payload and payload to kvm_queued_exception
    KVM: Documentation: Fix omission in struct kvm_vcpu_events
    KVM: selftests: add Enlightened VMCS test
    ...

    Linus Torvalds
     

03 Oct, 2018

1 commit

  • LPIs use the same priority value as other GIC interrupts.

    Make the GIC default priority definition visible to ITS implementation
    and use this same definition for LPI priorities.

    Tested-by: Daniel Thompson
    Signed-off-by: Julien Thierry
    Cc: Thomas Gleixner
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Signed-off-by: Marc Zyngier

    Julien Thierry
     

02 Oct, 2018

2 commits

  • We're currently only tracking the page allocated to contain the
    property table by its struct page. In the future, it is going to
    be convenient to track both PA and VA for that page instead. Let's
    do that.

    Tested-by: Jeremy Linton
    Tested-by: Bhupesh Sharma
    Tested-by: Lei Zhang
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • Pending tables for the redistributors are currently allocated
    one at a time as each CPU boots. This is causing some grief
    for Linux/RT (allocation from within a CPU hotplug notifier is
    frown upon).

    Let's move this allocation to take place at init time, when we
    only have a single CPU. It means we're allocating memory for CPUs
    that are not online yet, but most system will boot all of their
    CPUs anyway, so that's not completely wasted.

    Tested-by: Jeremy Linton
    Tested-by: Bhupesh Sharma
    Tested-by: Lei Zhang
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     

01 Oct, 2018

1 commit

  • Add support for handling 52bit guest physical address to the
    VGIC layer. So far we have limited the guest physical address
    to 48bits, by explicitly masking the upper bits. This patch
    removes the restriction. We do not have to check if the host
    supports 52bit as the gpa is always validated during an access.
    (e.g, kvm_{read/write}_guest, kvm_is_visible_gfn()).
    Also, the ITS table save-restore is also not affected with
    the enhancement. The DTE entries already store the bits[51:8]
    of the ITT_addr (with a 256byte alignment).

    Cc: Marc Zyngier
    Cc: Christoffer Dall
    Reviewed-by: Eric Auger
    Signed-off-by: Kristina Martsenko
    [ Macro clean ups, fix PROPBASER and PENDBASER accesses ]
    Signed-off-by: Suzuki K Poulose
    Signed-off-by: Marc Zyngier

    Kristina Martsenko
     

22 Aug, 2018

1 commit


21 Jul, 2018

2 commits

  • Now when we have a group configuration on the struct IRQ, use this state
    when populating the LR and signaling interrupts as either group 0 or
    group 1 to the VM. Depending on the model of the emulated GIC, and the
    guest's configuration of the VMCR, interrupts may be signaled as IRQs or
    FIQs to the VM.

    Reviewed-by: Andrew Jones
    Signed-off-by: Christoffer Dall
    Signed-off-by: Marc Zyngier

    Christoffer Dall
     
  • Instead of hardcoding the shifts and masks in the GICD_IIDR register
    emulation, let's add the definition of these fields to the GIC header
    files and use them.

    This will make things more obvious when we're going to bump the revision
    in the IIDR when we'll make guest-visible changes to the implementation.

    Reviewed-by: Andrew Jones
    Signed-off-by: Christoffer Dall
    Signed-off-by: Marc Zyngier

    Christoffer Dall
     

16 Jul, 2018

2 commits


13 May, 2018

1 commit

  • GICv3 offers the possibility to signal SPIs using a pair of doorbells
    (SETPI, CLRSPI) under the name of Message Based Interrupts (MBI).
    They can be used as either traditional (edge) MSIs, or the more exotic
    level-triggered flavour.

    Let's implement support for platform MSI, which is the original intent
    for this feature.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Thomas Gleixner
    Cc: Rob Herring
    Cc: Jason Cooper
    Cc: Ard Biesheuvel
    Cc: Srinivas Kandagatla
    Cc: Thomas Petazzoni
    Cc: Miquel Raynal
    Link: https://lkml.kernel.org/r/20180508121438.11301-8-marc.zyngier@arm.com

    Marc Zyngier
     

05 Apr, 2018

1 commit

  • Pull irq updates from Thomas Gleixner:
    "The usual pile of boring changes:

    - Consolidate tasklet functions to share code instead of duplicating
    it

    - The first step for making the low level entry handler management on
    multi-platform kernels generic

    - A new sysfs file which allows to retrieve the wakeup state of
    interrupts.

    - Ensure that the interrupt thread follows the effective affinity and
    not the programmed affinity to avoid cross core wakeups.

    - Two new interrupt controller drivers (Microsemi Ocelot and Qualcomm
    PDC)

    - Fix the wakeup path clock handling for Reneasas interrupt chips.

    - Rework the boot time register reset for ARM GIC-V2/3

    - Better suspend/resume support for ARM GIV-V3/ITS

    - Add missing locking to the ARM GIC set_type() callback

    - Small fixes for the irq simulator code

    - SPDX identifiers for the irq core code and removal of boiler plate

    - Small cleanups all over the place"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
    openrisc: Set CONFIG_MULTI_IRQ_HANDLER
    arm64: Set CONFIG_MULTI_IRQ_HANDLER
    genirq: Make GENERIC_IRQ_MULTI_HANDLER depend on !MULTI_IRQ_HANDLER
    irqchip/gic: Take lock when updating irq type
    irqchip/gic: Update supports_deactivate static key to modern api
    irqchip/gic-v3: Ensure GICR_CTLR.EnableLPI=0 is observed before enabling
    irqchip: Add a driver for the Microsemi Ocelot controller
    dt-bindings: interrupt-controller: Add binding for the Microsemi Ocelot interrupt controller
    irqchip/gic-v3: Probe for SCR_EL3 being clear before resetting AP0Rn
    irqchip/gic-v3: Don't try to reset AP0Rn
    irqchip/gic-v3: Do not check trigger configuration of partitionned LPIs
    genirq: Remove license boilerplate/references
    genirq: Add missing SPDX identifiers
    genirq/matrix: Cleanup SPDX identifier
    genirq: Cleanup top of file comments
    genirq: Pass desc to __irq_free instead of irq number
    irqchip/gic-v3: Loudly complain about the use of IRQ_TYPE_NONE
    irqchip/gic: Loudly complain about the use of IRQ_TYPE_NONE
    RISC-V: Move to the new GENERIC_IRQ_MULTI_HANDLER handler
    genirq: Add CONFIG_GENERIC_IRQ_MULTI_HANDLER
    ...

    Linus Torvalds
     

03 Apr, 2018

1 commit

  • Pul removal of obsolete architecture ports from Arnd Bergmann:
    "This removes the entire architecture code for blackfin, cris, frv,
    m32r, metag, mn10300, score, and tile, including the associated device
    drivers.

    I have been working with the (former) maintainers for each one to
    ensure that my interpretation was right and the code is definitely
    unused in mainline kernels. Many had fond memories of working on the
    respective ports to start with and getting them included in upstream,
    but also saw no point in keeping the port alive without any users.

    In the end, it seems that while the eight architectures are extremely
    different, they all suffered the same fate: There was one company in
    charge of an SoC line, a CPU microarchitecture and a software
    ecosystem, which was more costly than licensing newer off-the-shelf
    CPU cores from a third party (typically ARM, MIPS, or RISC-V). It
    seems that all the SoC product lines are still around, but have not
    used the custom CPU architectures for several years at this point. In
    contrast, CPU instruction sets that remain popular and have actively
    maintained kernel ports tend to all be used across multiple licensees.

    [ See the new nds32 port merged in the previous commit for the next
    generation of "one company in charge of an SoC line, a CPU
    microarchitecture and a software ecosystem" - Linus ]

    The removal came out of a discussion that is now documented at
    https://lwn.net/Articles/748074/. Unlike the original plans, I'm not
    marking any ports as deprecated but remove them all at once after I
    made sure that they are all unused. Some architectures (notably tile,
    mn10300, and blackfin) are still being shipped in products with old
    kernels, but those products will never be updated to newer kernel
    releases.

    After this series, we still have a few architectures without mainline
    gcc support:

    - unicore32 and hexagon both have very outdated gcc releases, but the
    maintainers promised to work on providing something newer. At least
    in case of hexagon, this will only be llvm, not gcc.

    - openrisc, risc-v and nds32 are still in the process of finishing
    their support or getting it added to mainline gcc in the first
    place. They all have patched gcc-7.3 ports that work to some
    degree, but complete upstream support won't happen before gcc-8.1.
    Csky posted their first kernel patch set last week, their situation
    will be similar

    [ Palmer Dabbelt points out that RISC-V support is in mainline gcc
    since gcc-7, although gcc-7.3.0 is the recommended minimum - Linus ]"

    This really says it all:

    2498 files changed, 95 insertions(+), 467668 deletions(-)

    * tag 'arch-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (74 commits)
    MAINTAINERS: UNICORE32: Change email account
    staging: iio: remove iio-trig-bfin-timer driver
    tty: hvc: remove tile driver
    tty: remove bfin_jtag_comm and hvc_bfin_jtag drivers
    serial: remove tile uart driver
    serial: remove m32r_sio driver
    serial: remove blackfin drivers
    serial: remove cris/etrax uart drivers
    usb: Remove Blackfin references in USB support
    usb: isp1362: remove blackfin arch glue
    usb: musb: remove blackfin port
    usb: host: remove tilegx platform glue
    pwm: remove pwm-bfin driver
    i2c: remove bfin-twi driver
    spi: remove blackfin related host drivers
    watchdog: remove bfin_wdt driver
    can: remove bfin_can driver
    mmc: remove bfin_sdh driver
    input: misc: remove blackfin rotary driver
    input: keyboard: remove bf54x driver
    ...

    Linus Torvalds
     

23 Mar, 2018

1 commit

  • Booting with GICR_CTLR.EnableLPI=1 is usually a bad idea, and may
    result in subtle memory corruption. Detecting this is thus pretty
    important.

    On detecting that LPIs are still enabled, we taint the kernel (because
    we're not sure of anything anymore), and try to disable LPIs. This can
    fail, as implementations are allowed to implement GICR_CTLR.EnableLPI
    as a one-way enable, meaning the redistributors cannot be reprogrammed
    with new tables.

    Should this happen, we fail probing the redistributor and warn the user
    that things are pretty dire.

    Signed-off-by: Shanker Donthineni
    [maz: reworded changelog, minor comment and message changes]
    Signed-off-by: Marc Zyngier

    Shanker Donthineni
     

15 Mar, 2018

1 commit

  • The vgic code is trying to be clever when injecting GICv2 SGIs,
    and will happily populate LRs with the same interrupt number if
    they come from multiple vcpus (after all, they are distinct
    interrupt sources).

    Unfortunately, this is against the letter of the architecture,
    and the GICv2 architecture spec says "Each valid interrupt stored
    in the List registers must have a unique VirtualID for that
    virtual CPU interface.". GICv3 has similar (although slightly
    ambiguous) restrictions.

    This results in guests locking up when using GICv2-on-GICv3, for
    example. The obvious fix is to stop trying so hard, and inject
    a single vcpu per SGI per guest entry. After all, pending SGIs
    with multiple source vcpus are pretty rare, and are mostly seen
    in scenario where the physical CPUs are severely overcomitted.

    But as we now only inject a single instance of a multi-source SGI per
    vcpu entry, we may delay those interrupts for longer than strictly
    necessary, and run the risk of injecting lower priority interrupts
    in the meantime.

    In order to address this, we adopt a three stage strategy:
    - If we encounter a multi-source SGI in the AP list while computing
    its depth, we force the list to be sorted
    - When populating the LRs, we prevent the injection of any interrupt
    of lower priority than that of the first multi-source SGI we've
    injected.
    - Finally, the injection of a multi-source SGI triggers the request
    of a maintenance interrupt when there will be no pending interrupt
    in the LRs (HCR_NPIE).

    At the point where the last pending interrupt in the LRs switches
    from Pending to Active, the maintenance interrupt will be delivered,
    allowing us to add the remaining SGIs using the same process.

    Cc: stable@vger.kernel.org
    Fixes: 0919e84c0fc1 ("KVM: arm/arm64: vgic-new: Add IRQ sync/flush framework")
    Acked-by: Christoffer Dall
    Signed-off-by: Marc Zyngier

    Marc Zyngier