lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0536/1039] mailbox: pcc: Handle all PCC subtypes correctly in pcc_mbox_irq
    Date
    From: Sudeep Holla <sudeep.holla@arm.com>

    [ Upstream commit 7215a7857e796c655ae1184b313556102fa8bc40 ]

    Commit c45ded7e1135 ("mailbox: pcc: Add support for PCCT extended PCC
    subspaces(type 3/4)") enabled the type3/4 of PCCT, but the change in
    pcc_mbox_irq breaks the other PCC subtypes.

    The kernel reports a warning on an Ampere eMag server

    -->8
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.16.0-rc4 #127
    Hardware name: MiTAC RAPTOR EV-883832-X3-0001/RAPTOR, BIOS 0.14 02/22/2019
    Call trace:
    dump_backtrace+0x0/0x200
    show_stack+0x20/0x30
    dump_stack_lvl+0x68/0x84
    dump_stack+0x18/0x34
    __report_bad_irq+0x54/0x17c
    note_interrupt+0x330/0x428
    handle_irq_event_percpu+0x90/0x98
    handle_irq_event+0x4c/0x148
    handle_fasteoi_irq+0xc4/0x188
    generic_handle_domain_irq+0x44/0x68
    gic_handle_irq+0x84/0x2ec
    call_on_irq_stack+0x28/0x34
    do_interrupt_handler+0x88/0x90
    el1_interrupt+0x48/0xb0
    el1h_64_irq_handler+0x18/0x28
    el1h_64_irq+0x7c/0x80

    Fixes: c45ded7e1135 ("mailbox: pcc: Add support for PCCT extended PCC subspaces(type 3/4)")
    Reported-by: Justin He <justin.he@arm.com>
    Tested-by: Justin He <justin.he@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/mailbox/pcc.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c
    index e0a1ab3861f0d..ed18936b8ce68 100644
    --- a/drivers/mailbox/pcc.c
    +++ b/drivers/mailbox/pcc.c
    @@ -241,9 +241,11 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p)
    if (ret)
    return IRQ_NONE;

    - val &= pchan->cmd_complete.status_mask;
    - if (!val)
    - return IRQ_NONE;
    + if (val) { /* Ensure GAS exists and value is non-zero */
    + val &= pchan->cmd_complete.status_mask;
    + if (!val)
    + return IRQ_NONE;
    + }

    ret = pcc_chan_reg_read(&pchan->error, &val);
    if (ret)
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:11    [W:4.026 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site