Skip to content

Commit

Permalink
rpi_1247_a3d4f16fed1bcef2e69fdadda03ddfaab2a5461a
Browse files Browse the repository at this point in the history
commit a3d4f16
Author: Phil Elwell <phil@raspberrypi.org>
Date:   Mon May 8 16:43:40 2017 +0100

    irq_bcm2836: Send event when onlining sleeping cores
    
    In order to reduce power consumption and bus traffic, it is sensible
    for secondary cores to enter a low-power idle state when waiting to
    be started. The wfe instruction causes a core to wait until an event
    or interrupt arrives before continuing to the next instruction.
    The sev instruction sends a wakeup event to the other cores, so call
    it from bcm2836_smp_boot_secondary, the function that wakes up the
    waiting cores during booting.
    
    It is harmless to use this patch without the corresponding change
    adding wfe to the ARMv7/ARMv8-32 stubs, but if the stubs are updated
    and this patch is not applied then the other cores will sleep forever.
    
    See: raspberrypi/linux#1989
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>


Gbp-Pq: Topic rpi
Gbp-Pq: Name rpi_1247_a3d4f16fed1bcef2e69fdadda03ddfaab2a5461a.patch
  • Loading branch information
Debian Kernel Team authored and raspbian-autopush committed Nov 9, 2018
1 parent 65bb6b3 commit fd85fd7
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/irqchip/irq-bcm2836.c
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,9 @@ static int __init bcm2836_smp_boot_secondary(unsigned int cpu,
writel(secondary_startup_phys,
intc.base + LOCAL_MAILBOX3_SET0 + 16 * cpu);

dsb(sy); /* Ensure write has completed before waking the other CPUs */
sev();

return 0;
}

Expand Down

0 comments on commit fd85fd7

Please sign in to comment.