Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved bcm2836/7 IRQ handling #6359

Open
wants to merge 6 commits into
base: rpi-6.6.y
Choose a base branch
from
Open

Commits on Sep 13, 2024

  1. drivers: irq-bcm2836: preserve unrelated bits in LOCAL_GPU_ROUTING

    Interrupts are dispatched round-robin but doing so trampled FIQ routing.
    Taking a FIQ on a core without a handler installed is fatal.
    
    Only modify bits 1:0 which are the IRQ route bits.
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    200e404 View commit details
    Browse the repository at this point in the history
  2. drivers: irq-bcm283x: swizzle interrupts on ARMv7 too

    BCM2836 with Cortex-A7 cores has almost the same ARM_LOCAL interrupt
    routing logic as BCM2837, so relax the compile guard to CONFIG_SMP not
    CONFIG_ARM64.
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    4f4cf19 View commit details
    Browse the repository at this point in the history
  3. drivers: dwc_otg: move FIQ locking functions to header file

    Also declare as static inline, as they should be.
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    aae05ae View commit details
    Browse the repository at this point in the history
  4. drivers: dwc_otg: add ticket-based spinlock for ARM64

    The ARM64 architecture uses qspinlock which has a fast and slow path.
    This isn't ideal for all claimers of a lock operating in interrupt
    context. Add a ticket-based lock similar to the armv6/7 implementation.
    
    Based on an upstream patch that was abandoned in favour of qspinlock.
    
    Link: https://patchwork.kernel.org/project/linux-arm-kernel/patch/[email protected]/
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    07fa5e7 View commit details
    Browse the repository at this point in the history
  5. drivers: dwc_otg: reduce loglevel for probe messages

    Warning on normal behaviour isn't sensible and is spammy. Demote to info.
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    173bd52 View commit details
    Browse the repository at this point in the history
  6. drivers: dwc_otg: don't call disable_irq on the fake FIQ

    The local spinlock protects the handlers from racing against each other
    on separate cores, hard IRQs don't preempt each other, and
    disabling/enabling the interrupt is more expensive than letting the fake
    FIQ contend the spinlock.
    
    So turn local_fiq_en/disable into no-ops.
    
    Signed-off-by: Jonathan Bell <[email protected]>
    P33M committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    7d13394 View commit details
    Browse the repository at this point in the history