1. 17 Sep, 2020 4 commits
    • David Lechner's avatar
      irqchip/irq-pruss-intc: Implement irq_{get, set}_irqchip_state ops · b1026e8a
      David Lechner authored
      This implements the irq_get_irqchip_state and irq_set_irqchip_state
      callbacks for the TI PRUSS INTC driver. The set callback can be used
      by drivers to "kick" a PRU by injecting a PRU system event.
      Co-developed-by: default avatarSuman Anna <s-anna@ti.com>
      Co-developed-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Signed-off-by: default avatarDavid Lechner <david@lechnology.com>
      Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Reviewed-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      b1026e8a
    • Suman Anna's avatar
      irqchip/irq-pruss-intc: Add logic for handling reserved interrupts · 6016f32d
      Suman Anna authored
      The PRUSS INTC has a fixed number of output interrupt lines that are
      connected to a number of processors or other PRUSS instances or other
      devices (like DMA) on the SoC. The output interrupt lines 2 through 9
      are usually connected to the main Arm host processor and are referred
      to as host interrupts 0 through 7 from ARM/MPU perspective.
      
      All of these 8 host interrupts are not always exclusively connected
      to the Arm interrupt controller. Some SoCs have some interrupt lines
      not connected to the Arm interrupt controller at all, while a few others
      have the interrupt lines connected to multiple processors in which they
      need to be partitioned as per SoC integration needs. For example, AM437x
      and 66AK2G SoCs have 2 PRUSS instances each and have the host interrupt 5
      connected to the other PRUSS, while AM335x has host interrupt 0 shared
      between MPU and TSC_ADC and host interrupts 6 & 7 shared between MPU and
      a DMA controller.
      
      Add logic to the PRUSS INTC driver to ignore both these shared and
      invalid interrupts.
      Co-developed-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      6016f32d
    • Grzegorz Jaszczyk's avatar
      irqchip/irq-pruss-intc: Add a PRUSS irqchip driver for PRUSS interrupts · 04e2d1e0
      Grzegorz Jaszczyk authored
      The Programmable Real-Time Unit Subsystem (PRUSS) contains a local
      interrupt controller (INTC) that can handle various system input events
      and post interrupts back to the device-level initiators. The INTC can
      support upto 64 input events with individual control configuration and
      hardware prioritization. These events are mapped onto 10 output interrupt
      lines through two levels of many-to-one mapping support. Different
      interrupt lines are routed to the individual PRU cores or to the host
      CPU, or to other devices on the SoC. Some of these events are sourced
      from peripherals or other sub-modules within that PRUSS, while a few
      others are sourced from SoC-level peripherals/devices.
      
      The PRUSS INTC platform driver manages this PRUSS interrupt controller
      and implements an irqchip driver to provide a Linux standard way for
      the PRU client users to enable/disable/ack/re-trigger a PRUSS system
      event. The system events to interrupt channels and output interrupts
      relies on the mapping configuration provided either through the PRU
      firmware blob (for interrupts routed to PRU cores) or via the PRU
      application's device tree node (for interrupt routed to the main CPU).
      In the first case the mappings will be programmed on PRU remoteproc
      driver demand (via irq_create_fwspec_mapping) during the boot of a PRU
      core and cleaned up after the PRU core is stopped.
      
      Reference counting is used to allow multiple system events to share a
      single channel and to allow multiple channels to share a single host
      event.
      
      The PRUSS INTC module is reference counted during the interrupt
      setup phase through the irqchip's irq_request_resources() and
      irq_release_resources() ops. This restricts the module from being
      removed as long as there are active interrupt users.
      
      The driver currently supports and can be built for OMAP architecture
      based AM335x, AM437x and AM57xx SoCs; Keystone2 architecture based
      66AK2G SoCs and Davinci architecture based OMAP-L13x/AM18x/DA850 SoCs.
      All of these SoCs support 64 system events, 10 interrupt channels and
      10 output interrupt lines per PRUSS INTC with a few SoC integration
      differences.
      
      NOTE:
      Each PRU-ICSS's INTC on AM57xx SoCs is preceded by a Crossbar that
      enables multiple external events to be routed to a specific number
      of input interrupt events. Any non-default external interrupt event
      directed towards PRUSS needs this crossbar to be setup properly.
      Co-developed-by: default avatarSuman Anna <s-anna@ti.com>
      Co-developed-by: default avatarAndrew F. Davis <afd@ti.com>
      Co-developed-by: default avatarRoger Quadros <rogerq@ti.com>
      Co-developed-by: default avatarDavid Lechner <david@lechnology.com>
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarDavid Lechner <david@lechnology.com>
      Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      04e2d1e0
    • Suman Anna's avatar
      dt-bindings: irqchip: Add PRU-ICSS interrupt controller bindings · 8a1b09ed
      Suman Anna authored
      The Programmable Real-Time Unit and Industrial Communication Subsystem
      (PRU-ICSS or simply PRUSS) contains an interrupt controller (INTC) that
      can handle various system input events and post interrupts back to the
      device-level initiators. The INTC can support up to 64 input events on
      most SoCs with individual control configuration and h/w prioritization.
      These events are mapped onto 10 output interrupt lines through two levels
      of many-to-one mapping support. Different interrupt lines are routed to
      the individual PRU cores or to the host CPU or to other PRUSS instances.
      
      The K3 AM65x and J721E SoCs have the next generation of the PRU-ICSS IP,
      commonly called ICSSG. The ICSSG interrupt controller on K3 SoCs provide
      a higher number of host interrupts (20 vs 10) and can handle an increased
      number of input events (160 vs 64) from various SoC interrupt sources.
      
      Add the bindings document for these interrupt controllers on all the
      applicable SoCs. It covers the OMAP architecture SoCs - AM33xx, AM437x
      and AM57xx; the Keystone 2 architecture based 66AK2G SoC; the Davinci
      architecture based OMAPL138 SoCs, and the K3 architecture based AM65x
      and J721E SoCs.
      Co-developed-by: default avatarAndrew F. Davis <afd@ti.com>
      Co-developed-by: default avatarRoger Quadros <rogerq@ti.com>
      Co-developed-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      8a1b09ed
  2. 07 Sep, 2020 1 commit
  3. 06 Sep, 2020 4 commits
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.9-2020-09-06' of git://git.kernel.dk/linux-block · a8205e31
      Linus Torvalds authored
      Pull more io_uring fixes from Jens Axboe:
       "Two followup fixes. One is fixing a regression from this merge window,
        the other is two commits fixing cancelation of deferred requests.
      
        Both have gone through full testing, and both spawned a few new
        regression test additions to liburing.
      
         - Don't play games with const, properly store the output iovec and
           assign it as needed.
      
         - Deferred request cancelation fix (Pavel)"
      
      * tag 'io_uring-5.9-2020-09-06' of git://git.kernel.dk/linux-block:
        io_uring: fix linked deferred ->files cancellation
        io_uring: fix cancel of deferred reqs with ->files
        io_uring: fix explicit async read/write mapping for large segments
      a8205e31
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 2ccdd9f8
      Linus Torvalds authored
      Pull iommu fixes from Joerg Roedel:
      
       - three Intel VT-d fixes to fix address handling on 32bit, fix a NULL
         pointer dereference bug and serialize a hardware register access as
         required by the VT-d spec.
      
       - two patches for AMD IOMMU to force AMD GPUs into translation mode
         when memory encryption is active and disallow using IOMMUv2
         functionality.  This makes the AMDGPU driver work when memory
         encryption is active.
      
       - two more fixes for AMD IOMMU to fix updating the Interrupt Remapping
         Table Entries.
      
       - MAINTAINERS file update for the Qualcom IOMMU driver.
      
      * tag 'iommu-fixes-v5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu/vt-d: Handle 36bit addressing for x86-32
        iommu/amd: Do not use IOMMUv2 functionality when SME is active
        iommu/amd: Do not force direct mapping when SME is active
        iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE
        iommu/amd: Restore IRTE.RemapEn bit after programming IRTE
        iommu/vt-d: Fix NULL pointer dereference in dev_iommu_priv_set()
        iommu/vt-d: Serialize IOMMU GCMD register modifications
        MAINTAINERS: Update QUALCOMM IOMMU after Arm SMMU drivers move
      2ccdd9f8
    • Linus Torvalds's avatar
      Merge tag 'x86-urgent-2020-09-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 015b3155
      Linus Torvalds authored
      Pull x86 fixes from Ingo Molnar:
      
       - more generic entry code ABI fallout
      
       - debug register handling bugfixes
      
       - fix vmalloc mappings on 32-bit kernels
      
       - kprobes instrumentation output fix on 32-bit kernels
      
       - fix over-eager WARN_ON_ONCE() on !SMAP hardware
      
       - NUMA debugging fix
      
       - fix Clang related crash on !RETPOLINE kernels
      
      * tag 'x86-urgent-2020-09-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/entry: Unbreak 32bit fast syscall
        x86/debug: Allow a single level of #DB recursion
        x86/entry: Fix AC assertion
        tracing/kprobes, x86/ptrace: Fix regs argument order for i386
        x86, fakenuma: Fix invalid starting node ID
        x86/mm/32: Bring back vmalloc faulting on x86_32
        x86/cmdline: Disable jump tables for cmdline.c
      015b3155
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.9-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 68beef57
      Linus Torvalds authored
      Pull xen updates from Juergen Gross:
       "A small series for fixing a problem with Xen PVH guests when running
        as backends (e.g. as dom0).
      
        Mapping other guests' memory is now working via ZONE_DEVICE, thus not
        requiring to abuse the memory hotplug functionality for that purpose"
      
      * tag 'for-linus-5.9-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen: add helpers to allocate unpopulated memory
        memremap: rename MEMORY_DEVICE_DEVDAX to MEMORY_DEVICE_GENERIC
        xen/balloon: add header guard
      68beef57
  4. 05 Sep, 2020 28 commits
  5. 04 Sep, 2020 3 commits